Commit Graph

7547 Commits

Author SHA1 Message Date
can1357 b47e3e8e35 Merge PR #8403: fix(discovery): bound WSL host-home probe with a hard timeout (@roboomp) 2026-08-13 06:49:19 +02:00
can1357 006ea27fbd fix(hashline): replaced delimiter heuristics with tree-sitter validation
- Replaced heuristic delimiter-balance boundary repairs with tree-sitter guided variants.
- Added combinatorial search over replacement boundary keep/drop variants and syntax-essential row validation.
- Removed obsolete `CloserSpareAmbiguityError` along with custom JSX parsing and delimiter counting helpers.
- Updated warning and error messages to include unified boundary diagnostics.
2026-08-13 06:47:29 +02:00
can1357 2d512cb253 refactor: generalized thinking loop guard for multiple model families
- Generalized thinking loop guard and helper functions to support Gemini, DeepSeek, and Grok model families.
- Replaced `withGeminiThinkingLoopGuard` and related Gemini-specific symbols with generalized counterparts.
- Removed deprecated `enableGeminiThinkingLoopGuard` options and associated tests.
- Updated test suites and agent session logic to use the generalized thinking loop guard and model family tokens.
2026-08-13 06:15:00 +02:00
can1357 cd72f22552 fix(lsp): restored overwritten rename target when move fails
- Displace overwritten destination into a temporary sibling directory during workspace renames.
- Restore the displaced file and clean up the temp directory if the main rename operation fails.
2026-08-13 06:05:20 +02:00
can1357 74f5f610c6 fix(lsp): reconciled executed prefix when workspace edit fails partway
- applyWorkspaceEdit takes an onExecuted callback fired after each
  filesystem mutation, so callers hold the executed prefix even when a
  later op throws.
- applyWorkspaceEditWithLsp reconciles overlays/watchers for that prefix
  best-effort before rethrowing the original apply error.
2026-08-13 05:58:40 +02:00
can1357 f52891fb82 fix(lsp): reconciled overlays from executed workspace-edit ops
- applyWorkspaceEdit now returns { applied, executed }; ops skipped via
  ignoreIfExists/ignoreIfNotExists are excluded from executed.
- applyWorkspaceEditWithLsp derives didClose/refresh/watched-file
  notifications from executed ops, so a skipped rename no longer closes
  the old URI overlay or emits phantom Deleted/Created events.
2026-08-13 05:54:28 +02:00
roboomp 4561bdc39a fix(discovery): bound WSL host-home probe with a hard timeout
resolveWindowsUserProfile() ran Bun.spawnSync(cmd.exe echo %USERPROFILE%)
with no timeout during startup discovery. When the WSL->Windows interop
pipe is wedged, cmd.exe never returns and the synchronous spawn blocks
the JS thread forever, so the TUI never paints and no log is written.

Route both best-effort probes (cmd.exe and wslpath) through a shared
runHostProbe() helper that spawns under a 500ms hard timeout with SIGKILL
and reports a killed/non-zero exit as "host home unavailable", so
discovery falls back to the Linux $HOME/~/.omp candidates instead of
hanging.

Fixes #8402
2026-08-13 03:52:31 +00:00
can1357 0af778ea54 Merge PR #8392: fix(lsp): isolate document overlays across sessions (@roboomp) 2026-08-13 05:48:27 +02:00
can1357 d8924d055b Merge PR #8399: fix(lsp): synchronize applied workspace edits (@roboomp) 2026-08-13 05:48:27 +02:00
can1357 2e6d81b528 Merge PR #8395: fix(lsp): roll back rename_file edits when the move fails (@roboomp) 2026-08-13 05:48:00 +02:00
can1357 e3771992a7 Merge PR #8396: fix(lsp): abort rename_file when willRenameFiles fails on a supporting server (@roboomp) 2026-08-13 05:47:21 +02:00
can1357 3bc181d042 Merge PR #8393: fix(lsp): preserve workspace resource options (@roboomp) 2026-08-13 05:46:42 +02:00
can1357 926228a821 Merge PR #8394: fix(lsp): reject unsupported rust-analyzer snippet edits (@roboomp) 2026-08-13 05:46:37 +02:00
can1357 c4bc106486 Merge PR #8397: fix(lsp): fail diagnostics when every applicable server fails (@roboomp) 2026-08-13 05:46:31 +02:00
can1357 3d9649fbfa Merge PR #8391: fix(lsp): correct workspace edit failure handling (@roboomp) 2026-08-13 05:46:26 +02:00
roboomp d1278762f8 fix(lsp): deferred idle reuse until cleanup
Kept closing sessions attached to their server until orphan document closes and pending request cancellations are queued.

Added coverage that reopens the last orphan URI after reuse and verifies the replacement overlay remains active.

Fixes #8371
2026-08-13 03:15:29 +00:00
roboomp fb5c852384 fix(lsp): synchronized applied workspace edits
Reconciled open document overlays and watched files after committed WorkspaceEdits so later semantic requests observe disk state.

Fixes #8372
2026-08-13 03:13:00 +00:00
roboomp a776d9570b fix(lsp): guarded same-file rename against target removal
Skipped destination removal when an overwrite rename resolves both paths to the same inode (case-only rename on case-insensitive filesystems), so the source is no longer deleted before fs.rename runs.

Fixes #8373
2026-08-13 03:10:38 +00:00
can1357 a53e4e790d feat(coding-agent/modes): introduced fullscreen agents hub and creation flow
- Replace the obsolete agent dashboard control center with a new fullscreen agents hub component.
- Integrate AI-assisted agent creation architect flow using model sessions.
- Provide interactive property strips and model browser integration for agent configuration.
- Update tests and documentation to support the redesigned agents hub.
2026-08-13 05:09:58 +02:00
roboomp 6381a1daad fix(lsp): pre-validated rename buckets before writing
Reject snippet-formatted or overlapping rename edits across all accepted URIs before applying any, so a later snippet edit cannot leave earlier files half-applied.

Fixes #8376
2026-08-13 03:09:11 +00:00
roboomp fc37f20dea fix(lsp): abort rename_file when willRenameFiles fails on a supporting server
The willRenameFiles loop caught every non-abort, non-method-not-found
error into serverNotes and fell through to fs.rename, so a genuine
failure from a server that supports the request moved the path without
its semantic edits, leaving references dangling. Split client acquisition
from the request, track hard failures, and abort before any mutation when
a supporting server errors. Servers replying method-not-found are still
skipped without blocking.

Fixes #8380
2026-08-13 03:07:16 +00:00
roboomp dce0216bcb fix(lsp): fail diagnostics when every applicable server fails
The direct diagnostics loop caught non-abort server errors without recording them, so a file whose every applicable server failed produced an empty aggregate rendered as OK with success: true — a false-negative hiding a total diagnostics failure.

Track per-file and global success/failure counts: zero successful server responses now yields success: false with an explicit failure line, while partial success still surfaces diagnostics and names the servers that failed.

Fixes #8377
2026-08-13 03:07:07 +00:00
roboomp 4a6519f07f fix(lsp): roll back rename_file edits when the move fails
rename_file wrote server-provided reference edits before creating the
destination parent and moving the source, with no rollback. A failed
mkdir/rename (e.g. EXDEV across mounts, EACCES) left the reference files
rewritten while the source stayed put, violating the atomic "moves file
AND rewrites all imports/references" contract.

Extract applyEditsThenRename in lsp/edits.ts: snapshot each edited file,
apply edits, then mkdir+rename; on failure restore every snapshot before
rethrowing. Rewire the rename_file handler to build the summary and hand
the edits to the helper.

Fixes #8379
2026-08-13 03:05:29 +00:00
roboomp ec7b6ed85c fix(lsp): rejected unsupported snippet text edits
Stopped advertising rust-analyzer snippet edit support and reject unexpected snippet-formatted edits before source is written.

Fixes #8376
2026-08-13 03:04:35 +00:00
roboomp f6e2b6c2e1 fix(lsp): preserved workspace resource options
Propagated CreateFile, RenameFile, and DeleteFile options through workspace edit planning and enforced their overwrite, ignore, and recursive semantics during execution.

Fixes #8373
2026-08-13 03:04:31 +00:00
roboomp 757066e965 fix(lsp): isolated document overlays across sessions
Assigned concurrent mux links separate language-server processes while retaining idle processes for later reuse.

Added regression coverage for session-specific open-document content and updated mux lifecycle expectations.

Fixes #8371
2026-08-13 03:03:36 +00:00
roboomp 448cff19bc fix(lsp): corrected workspace edit failure handling
Advertised abort semantics because multi-file text edits are applied sequentially and cannot satisfy textOnlyTransactional.

Added initialization capability coverage and documented the fix.

Fixes #8375
2026-08-13 03:01:45 +00:00
can1357 e8eed95130 feat(coding-agent): introduced fine grained per agent advisor configuration
- Replaced blanket subagent advisor global settings with fine-grained per-agent configuration and frontmatter support.
- Added dashboard keybindings and inline override editors for managing agent advisor patterns.
- Implemented settings migration logic to convert legacy global options into per-agent settings.
- Updated session persistence and execution layers to restore and enforce per-agent advisor behaviors.
2026-08-13 04:59:50 +02:00
can1357 1132c3e31c feat: implemented anthropic keep-alive and migration support for updates
- Added Anthropic prompt-cache refresh scheduling and state management to keep prompts warm across idle sessions.
- Updated pricing models and database stats tracking to calculate and store cost-weighted cache savings.
- Integrated cache savings metrics and efficiency displays into the stats CLI, dashboard routes, and UI components.
- Added support for package renaming, manifest pointer tracking, and installation migration during CLI updates.
2026-08-13 04:59:33 +02:00
can1357 b60bef961c feat: introduced nix packaging and path-based binary resolution
- Add comprehensive Nix flake definitions, derivations, modules, and CI workflows.
- Update tests and executables to resolve binaries from PATH rather than absolute paths.
- Ensure byte reproducibility and zeroed timestamps in embedded dashboard archives.
- Add handling for Nix-managed installations in CLI update checks.
2026-08-13 03:52:47 +02:00
can1357 3e28a1afb4 feat(coding-agent): implemented threshold for demoting interrupted thinking
- Added a 60-character minimum length threshold for demoting interrupted thinking into hidden continuity context in agent-session.ts.
- Updated LLM message conversion in messages.ts to strip incomplete thinking from user-interrupted assistant turns regardless of continuity note presence.
- Added test coverage in agent-session-interrupted-thinking.test.ts verifying behavior for reasoning lengths below and at the threshold.
2026-08-13 02:16:08 +02:00
can1357 f9c8519b68 test(mcp): removed timing-flaky abrupt-drop resumption case
- Raw chunked-TCP write/end race made the failure mode load-dependent (pre-existing since before the sweep; transport source unchanged). Owner approved removal; GET-listener and 401-resume coverage keeps Last-Event-ID resumption defended.
2026-08-13 02:11:00 +02:00
can1357 077aec0e7d test: updated shake fixtures for protected tail 2026-08-13 02:09:30 +02:00
can1357 caae3601ee Revert "test(coding-agent): stabilize MCP stream resumption"
This reverts commit dc283c0deb.
2026-08-13 02:09:16 +02:00
can1357 2f68fa6ebe feat(coding-agent): reframed interrupted thinking prompt template
- Reframe interrupted-thinking prompt template to present preserved text as a natural user interruption.
- Update interrupted thinking session tests to match the new prompt format.
2026-08-13 02:09:09 +02:00
pickpocket dc283c0deb test(coding-agent): stabilize MCP stream resumption
(cherry picked from commit 88bbd031b2230fc51ebc0ab38a953cefc722e4e8)
2026-08-13 02:08:40 +02:00
can1357 34bebbc72f test: aligned hindsight project casing 2026-08-13 02:08:30 +02:00
can1357 ad2dee6351 feat(coding-agent): improved title generation quality and accuracy
- Set generation temperature to zero for online title generation to prevent garbled names.
- Update system prompt to instruct exact copying of technical terms and names.
- Reject generated titles containing no word characters to prevent punctuation-only sessions.
2026-08-13 02:07:57 +02:00
pickpocket e7e280a6fb fix(catalog): complete GPT-5.6 off and pricing support
(cherry picked from commit fc034d61ff69e8ad1870f674c72ff3f761741862)
2026-08-13 02:00:59 +02:00
can1357 61e12988fe Merge PR #8283: fix(coding-agent): skip idle mid-turn persistence waits (@ethancawse) 2026-08-13 02:00:50 +02:00
can1357 b70bb7aced Merge PR #8186: feat(lsp): add Astral ty as built-in Python primary LSP server (@FNDEVVE) 2026-08-13 02:00:50 +02:00
can1357 92b1aa9854 Merge PR #8159: fix(coding-agent): lowercase the hindsight project label (@alvorithm) 2026-08-13 02:00:50 +02:00
can1357 c25b008f4a Merge PR #8067: fix(compaction): manual /shake keeps a recent tail of tool results (@zhang17-24) 2026-08-13 02:00:49 +02:00
can1357 7fde9493c7 test(prompts): aligned tool-inventory assertions with compressed verification wording 2026-08-13 01:34:31 +02:00
can1357 25e30bfd0b fix(tests): typed evaluator regression tests for strict check 2026-08-13 01:25:50 +02:00
can1357 ea10cce8d8 style: applied biome formatting to merged pull request sources 2026-08-13 01:23:48 +02:00
can1357 d8ef25ff67 fix(coding-agent): forward images and propagate skill dispatch failures in mode prompts
- Pass draft images into inline /plan and /vibe skill invocations so attachments reach the skill message.
- Propagate dispatch errors so runWithDetachedModeDraft restores the detached command draft.
- Cover image delivery and rejected dispatch in the issue-8137 regression file.
2026-08-13 01:23:02 +02:00
can1357 2481c5c30d fix(coding-agent): consume mode command drafts before skill turns 2026-08-13 01:21:57 +02:00
can1357 e1039f6a34 Merge PR #8138: fix(coding-agent): interpret inline skill directive in mode-command prompts (@roboomp)
# Conflicts:
#	packages/coding-agent/src/modes/interactive-mode.ts
2026-08-13 01:20:47 +02:00
can1357 bbe0c6fafd test(plan-mode): aligned availability-gate assertions with compressed prompt wording 2026-08-13 01:19:22 +02:00