Commit Graph
21 Commits
Author SHA1 Message Date
can1357 fbdc064186 feat(lsp): added session-scoped LSP diagnostics deduplication
- Added `DiagnosticsLedger` to track diagnostics already surfaced per file, suppressing repeats within a session.
- Wired dedup into both edit and write tools via a `transformDiagnostics` hook on the writethrough pipeline.
- Added `lsp.diagnosticsDeduplicate` setting (default: true) to control the behavior.
2026-06-01 18:04:05 +02:00
oldschoola 4be57358dd fix(coding-agent/lsp): accept $-prefixed identifiers; apply documentChanges in declared order
- BARE_IDENTIFIER_RE accepts $-prefixed names ($store, $count, RxJS/Svelte/
  Angular). Word-boundary check now fires on those names, so searches no
  longer return the offset inside a compound identifier like bar$store.
- applyWorkspaceEdit walks documentChanges in declared order, flushing
  per-URI text edits immediately before any subsequent resource op for the
  same URI. Folder rename/delete ops flush every pending URI under the
  affected subtree. Rename ops also flush pending edits queued against
  renameOp.newUri (and descendants) before fs.rename runs.
- Legacy changes-map-only WorkspaceEdit payloads are unchanged.
2026-05-26 01:54:22 -07:00
can1357andCan Bölük fcd38b7143 fix(coding-agent): require symbol, distinguish timeout, coalesce lsp edits
Three independent lsp fixes that share the action dispatcher and import
graph in lsp/index.ts:

- symbol-required: project-aware references/rename/definition now reject
  an omitted symbol with a structured error pointing at symbol=<name>
  (and symbol#N for repeats). resolveSymbolColumn used to fall back to
  the first non-whitespace column and the server happily answered for
  whatever identifier sat there. findSymbolMatchIndexes also enforces
  word boundaries for bare identifiers.

- timeout-distinguish: the outer catch around dispatched LSP actions
  rethrew new ToolAbortError() for both an internal timeoutSignal abort
  and a caller signal abort, so callers got an opaque "Operation
  aborted". Timeouts now map to a ToolError that names the action and
  the elapsed budget; caller cancels stay ToolAbortError.

- edit-coalesce: rename and rename_file collected edits from every
  project-aware server and applied them sequentially, but each server
  computed positions against pre-edit text. Once server A wrote, server
  B's edits had stale offsets and produced malformed imports. Merge
  per-uri edits across servers, sort by descending position, and throw
  on overlap so the model retries instead of silently corrupting.
2026-05-19 19:24:16 +09:00
can1357 cb2119ef4d feat(coding-agent/lsp): added symbol occurrence selectors via #N suffix
- Parsed symbol occurrences inline via a new `name#N` symbol spec and defaulted missing occurrences to 1.
- Updated LSP symbol column resolution to derive occurrence from the symbol spec, removing the separate occurrence argument.
- Synchronized prompts, tool schema rendering, and regression tests to document and verify `#N` occurrence selection instead of a standalone occurrence field.
2026-04-29 23:37:39 +02:00
can1357 c6a11079f5 feat: added compact atom-mode parser and execution support
- Added compact Lark grammar processing and applied it to OpenAI custom-format tools before conversion.
- Reworked atom mode into `---PATH` compact commands with new grammar, parser, and rm/mv file operations.
- Updated `hline`/`href`/`hrefr` helper behavior and hashline mismatch guidance using shared anchor state.
- Standardized path formatting with `formatPathRelativeToCwd` across LSP, prompts, and edit/search/write tools.
- Added benchmark run-path handling, including `.gitignore` runs mapping, absolute reports, and safer snapshot output.
- Added tests for compact grammar payloads, atom parsing/execution, renderer streaming, and path-list outputs.
2026-04-29 01:16:33 +02:00
can1357 c8d6efa395 style(coding-agent/tools): removed tree glyph from grouped file headers
- Simplified diagnostic grouping output in the LSP utility to use plain `## file` headers.
- Adjusted AstEdit, AstGrep, and Grep tools to emit file headings without the `└─` tree prefix.
- Removed the GrepTool context legend text and its related guard variable from output construction.
2026-04-26 19:16:36 +02:00
can1357 23e0952876 refactor(lsp): extracted diagnostic target resolution into utility function
- Extracted diagnostic target resolution logic into new `resolveDiagnosticTargets()` utility function with glob pattern support.
- Consolidated glob pattern detection and file matching logic by replacing conditional branches with unified utility call.
- Added file existence checking with stat before glob expansion to handle bracket paths as literal targets.
- Added test coverage for bracket path handling in diagnostic target resolution.
2026-04-10 20:12:19 +02:00
can1357 55e27e842e refactor(coding-agent): extracted language detection into dedicated module
- Extracted language detection logic into dedicated module for reusability across LSP and theme subsystems.
- Unified extension-to-language mapping with dual identifiers (highlight and LSP) to eliminate duplication.
- Consolidated detectLanguageId and getLanguageFromPath into single source of truth in lang-from-path module.
2026-04-10 10:42:50 +02:00
can1357 a5fa614f1a feat(lsp): added deferred diagnostics and workspace-scoped LSP actions
- Added deferred diagnostics support in LSP writethrough: `onDeferredDiagnostics` callback and `deferredSignal` in `WritethroughOptions` allow callers to receive diagnostics that arrive after the main 5-second timeout.
- Added language detection for `.pm` (Perl modules), `.astro` (Astro framework), and special filenames `containerfile` and `justfile`.
- Added workspace-scoped diagnostics and reload actions via `*` file parameter; `diagnostics` action now supports `*` for workspace-wide diagnostics across all configured servers.
- Reduced LSP diagnostics timeout from 10 seconds to 5 seconds for faster feedback; slow diagnostics now fetch in background via deferred mechanism.
2026-04-08 04:18:15 +02:00
can1357 b5dfbe28ac feat(natives): add TLA+/PlusCal and Handlebars language support 2026-04-06 18:40:45 +02:00
can1357 bf0b6de4fa refactor(lsp): extracted diagnostic formatting into reusable utility
- Extracted diagnostic message formatting into reusable `formatGroupedDiagnosticMessages()` utility function.
- Consolidated diagnostic output formatting across lsp/index.ts and tools/output-meta.ts to use shared utility.
- Added `DIAG_PATH_RE` regex pattern to parse diagnostic message format with file path, line, and column.
2026-03-11 03:18:01 +01:00
can1357 400fdac6b1 fix lsp diagnostics timeout and symbol targeting correctness 2026-02-28 05:27:46 +01:00
can1357 aed5c8de15 feat(lsp): added occurrence parameter to symbol resolution for disambiguating repeated matches
- Added `occurrence` parameter to symbol resolution for disambiguating repeated matches on the same line.
- Fixed code action application to execute command-based actions via `workspace/executeCommand` protocol.
- Fixed diagnostics glob pattern detection to recognize bracket character class patterns.
- Fixed LSP render metadata sanitization to prevent tab and newline characters from breaking layout.
- Refactored symbol resolution and code action handling into reusable utility functions with improved error handling.
- Added comprehensive regression test suite covering glob patterns, symbol resolution, code actions, and text sanitization.
2026-02-28 05:27:46 +01:00
can1357 a2a7e2acfd feat(lsp): added type_definition, implementation, and code_actions LSP operations with source context
- Added type_definition, implementation, and code_actions LSP operations with source context display.
- Replaced column/end_line/end_character parameters with symbol parameter for unified position specification.
- Enhanced definition and references operations to include 3-line source context in results.
- Added glob pattern support in file parameter for diagnostics action.
- Implemented code_actions operation with query matching and apply mode for automated fixes.
2026-02-28 05:27:45 +01:00
can1357 abf8c1efc9 refactor: unslop common utilities 2026-02-22 11:01:11 +01:00
can1357 5339369abd style: replaced ASCII ellipsis with Unicode character for improved typography
- Replaced ASCII ellipsis characters (three dots '...') with Unicode ellipsis character ('...') throughout the codebase for improved typography.
- Adjusted string truncation logic to account for single-character Unicode ellipsis instead of three-character ASCII ellipsis, reducing reserved space from 3 to 1 character in truncation calculations.
- Updated truncation offsets in multiple files (session-manager, agent, executor, footer) to preserve 2 additional characters before ellipsis due to more compact Unicode representation.
2026-02-06 02:51:07 +01:00
can1357 a1786ce3b5 feat(coding-agent): added diagnostic sorting by severity, location, and message for consistent output
- Added `sortDiagnostics()` utility function to sort diagnostics by severity, location, and message for consistent output ordering.
- Changed diagnostic output to sort results by severity (errors first), then by file location and message for improved readability.
- Added `getSeverityRank()` helper function in render-utils to map diagnostic severity levels to numeric ranks for sorting.
- Integrated diagnostic sorting in LSP index module to apply consistent ordering before formatting diagnostics.
2026-02-05 08:11:07 +01:00
can1357 779ca4872b style(deps): migrated from Prettier to Biome and updated formatting rules
- Removed Prettier configuration files (.prettierignore and .prettierrc) and migrated formatting to Biome.
- Updated Biome configuration from version 2.3.11 to 2.3.12 and changed arrowParentheses rule from 'always' to 'asNeeded'.
- Pinned @biomejs/biome dependency to exact version 2.3.12 in package.json and bun.lock.
- Applied consistent arrow function formatting across 489 files by removing unnecessary parentheses around single parameters.
- Removed blank lines after comment blocks and reorganized imports for consistency across the codebase.
2026-01-24 04:20:19 +01:00
can1357 f66e5dba9b build(config): refactored build and TypeScript configuration with Bun loaders
- Removed WASM generation script; use Bun `wasm?raw` loader for imports.
- Added bunfig.toml with loaders for `.md`, `.py`, and `.wasm?raw` text imports.
- Added types/assets/index.d.ts for global TypeScript module declarations.
- Unified TypeScript configuration with tsgo-based checking across monorepo.
- Removed build and WASM steps from install and publish pipelines.
2026-01-24 00:03:52 +01:00
can1357 0fe761dc4b build(deps): refactored TypeScript and package configuration across monorepo
- Added tsconfig.publish.json files to all packages with optimized publish-time configuration.
- Updated all package.json scripts with prepublishOnly hooks for correct type checking during publish.
- Added @oh-my-pi/omp-stats path mappings to root tsconfig.json for consistent imports.
- Added WASM generation script for photon module and integrated into install:dev script.
2026-01-23 13:46:06 +01:00
can1357 cb5bbbf382 refactor(coding-agent): flattened directory structure, eliminated core/ folder
- Eliminated core/ directory (252 files, 23 subdirs → distributed)
- Reduced max nesting from 9 levels to 5 levels
- Promoted tool subdirs to top level: exa/, lsp/, patch/, task/, web/
- Merged web-scrapers/ + web-search/ into web/{scrapers,search}/
- Flattened modes/interactive/ to modes/
- Split execution/ into: ipy/ (python), exec/ (bash), ssh/
- Renamed ipy/python-*.ts to ipy/*.ts (executor, kernel, etc.)
- Flattened cursor/exec-bridge.ts to cursor.ts
- Created logical groupings: config/, session/, extensibility/, export/
- Updated all imports across 500+ files
2026-01-23 12:24:47 +01:00