Commit Graph

7619 Commits

Author SHA1 Message Date
can1357 65ee481aa2 fix(agent): delivered checkpoint reminder to active loop 2026-08-16 02:03:16 +02:00
can1357 958a88b25a Merge PR #8503: fix(agent): optimize checkpoint/rewind prompt rendering (@szavadsky) 2026-08-16 02:03:16 +02:00
can1357 a58e73de12 Merge PR #8626: fix(tui): refresh token usage rows when toggled (@notnotype) 2026-08-16 02:03:16 +02:00
can1357 5cc9aa74bc fix(ask): used full dialog width for wrapped labels 2026-08-16 02:03:15 +02:00
can1357 565a21bfb4 Merge PR #8654: fix(ask): wrap long option labels in the rich ask dialog instead of truncating (@szavadsky) 2026-08-16 02:03:15 +02:00
can1357 0e76766f9a Merge PR #8550: fix(vibe): distinguish wait abort from timeout (@Capslockb) 2026-08-16 02:03:15 +02:00
can1357 8dddee7578 Merge PR #8664: fix(coding-agent): preserve artifacts in CLI forks (@anatoli-tsinovoy) 2026-08-16 02:03:15 +02:00
can1357 1f2fc72812 Merge PR #8665: perf(coding-agent): bound completed diff rendering (@lemonleks) 2026-08-16 02:03:15 +02:00
can1357 ca297741cb Merge PR #8538: fix(coding-agent): keep the system prompt byte-stable across date/cwd changes (@MertSoylu) 2026-08-16 02:03:14 +02:00
Anatoli Tsinovoy 62f59c86eb fix(coding-agent): guard fork artifact paths 2026-08-15 21:18:23 +03:00
Aleksandr Khaustov 006c5371ea perf(coding-agent): bound completed diff rendering 2026-08-15 20:39:36 +04:00
Anatoli Tsinovoy ea93012be4 fix(coding-agent): preserve artifacts in CLI forks 2026-08-15 19:24:54 +03:00
MertSoylu 98ef44bdb6 Merge remote-tracking branch 'upstream/main' into prompt-merge-test 2026-08-15 17:50:40 +03:00
Slava Zavadsky 00043ef3ba fix(ask): wrap long option labels in the rich ask dialog instead of truncating
The rich AskDialogComponent (merged in PR #4375) hard-truncated every
option row via truncateToWidth(firstLine, width, Ellipsis.Unicode),
clipping the disambiguating tail of long labels with no way to read it.
The legacy HookSelector dialog has wrapped labels since June 1
(3c7d50d292), so the rich dialog was the remaining truncation path.

renderRowLabel now wraps the label with wrapTextWithAnsi, indenting
continuation lines under the radio/checkbox marker so the cursor stays
visually anchored; the body ScrollView carries vertical overflow. The
note marker is reserved on the first line. Fixes #1243, #8594.
2026-08-15 09:11:32 -04:00
notnotype da29b12112 fix(tui): refresh token usage rows when toggled 2026-08-15 15:39:42 +08:00
Yang Yang ca2fa4f5f6 fix(ai): do not treat XAI_API_KEY as SuperGrok availability
Paid-key-only setups were marked signed in for xai-oauth, so the shared
grok-4.5 default picker preferred SuperGrok over xai/grok-4.5.
2026-08-14 22:00:50 -07:00
can1357 a3c15d2dec feat(coding-agent/tools): implemented pdf page screenshot rendering
- Add `renderPdfPageScreenshot` to render PDF pages via headless Chromium.
- Update `ReadTool` to intercept legacy PDF image paths and return page screenshots.
- Ensure daemon clients are closed on read command exit.
2026-08-14 14:37:56 +02:00
can1357 85acb9ab70 fix(rpc): surface drained stderr when startup fails under load
- RpcClient: when stdout closes before ready, race child.exited (which settles only after ptree drains the stderr tail for nonzero exits) for 250ms before rejecting, so the earlier-registered exit watcher rejects with the real stderr text instead of an empty 'Stderr:'.
- mock-rpc-agent fixture: await the stderr pipe write callback before process.exit so failure text cannot be dropped unflushed.
- sdk-tool-activation: restore the default extension-handler budget once the intentionally stalled activation times out, so full-suite machine load cannot also time out the genuine recovery registration.
Both tests flaked only under concurrent full-suite chunk load; 10 concurrent stress runs pass post-fix.
2026-08-14 14:23:15 +02:00
can1357 56efdfc4db Merge PR #8546: fix(coding-agent): restore Windows external editor launch (@roboomp) 2026-08-14 14:12:00 +02:00
can1357 d445f987da Merge PR #8515: fix(mcp): initialize sessions before opening sse stream (@roboomp) 2026-08-14 14:11:30 +02:00
can1357 04fab5ecb4 feat: replaced custom mupdf wasm pipeline with native function
- Replaced the custom MuPDF-WASM PDF extraction and rendering pipeline with the new `pdfToMarkdown` native function from `@oh-my-pi/pi-natives`.
- Removed legacy MuPDF extraction modules, WASM embedding scripts, and PDF image extraction tools.
- Added OCR warnings and browser/text redirection for unsupported PDF image reads.
- Updated native package definitions, documentation, and test suites for the new PDF inspection capability.
2026-08-14 14:08:28 +02:00
CAPSLOCKB 1f0c2366d0 fix(vibe): distinguish wait abort from timeout 2026-08-14 14:06:49 +02:00
roboomp a9075ae509 fix(coding-agent): restored Windows external editor launch
Passed the cmd.exe /s /c command line through Bun verbatim so configured editors and temporary paths retain their quotes.

Added command-line regression coverage and documented the fix.

Fixes #8544
2026-08-14 11:27:13 +00:00
Slava Zavadsky c7dde59f65 fix(agent): set checkpoint runtime state synchronously with the active notice
Address review: #checkpointState is now assigned in the pre-await section alongside the reminder append, so a model that calls rewind immediately after seeing the notice finds an active checkpoint instead of 'No active checkpoint'. The entry id is backfilled post-await once the checkpoint toolResult entry is persisted; #applyRewind runs on a later rewind turn, never before the backfill.
2026-08-14 06:50:31 -04:00
MertSoylu 30f92ad986 fix(coding-agent): keep the system prompt byte-stable across date/cwd changes
Move the per-request date/cwd line out of the system prompt into a
first-turn system-reminder so open-weight providers keep their tool-schema
prefix cache; the reminder refreshes itself at midnight. Closes #7404.

Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-08-14 13:16:54 +03:00
roboomp 83d08936ae fix(mcp): initialized sessions before opening sse stream
Moved the optional Streamable HTTP GET listener after the initialized notification so stateful servers do not terminate the session during setup.

Added regression coverage for a server that rejects pre-initialization GET traffic.

Fixes #8514
2026-08-14 05:33:38 +00:00
can1357 1e1ee2c330 test(coding-agent): updated model cache tests to resolve provider ids
- Import and use `resolveModelCacheProviderId` for github-copilot in model discovery and cache header tests.
2026-08-14 07:31:12 +02:00
Slava Zavadsky 0b294ead5b fix(agent): deliver checkpoint-active reminder synchronously from a prompt file
Address review: move the reminder text into a static prompt file rendered via prompt.render (no inline prompt strings); append it to agent.state synchronously before any await in the message_end handler so the next provider call within the same tool loop always sees it; persist it via the interrupted-thinking pattern; locate the checkpoint entry by message identity since the reminder entry now follows it; collapse the rewind tool description to one line (the MUST-rewind rule lives in the notice).
2026-08-14 01:11:05 -04:00
Slava Zavadsky 24779714e6 fix(agent): optimize checkpoint/rewind prompt rendering
Move the rewind instruction out of the permanent checkpoint tool result into a transient post-checkpoint notice that is branch-cut away on rewind; rewrite the rewind-report prompt forward-looking (no negation); collapse the rewind tool description to one line. Closes #8499.
2026-08-14 01:11:05 -04:00
usr-bin-roygbiv ed108dec8b test(gemini): keep retry assertion behavioral 2026-08-14 02:54:25 +00:00
usr-bin-roygbiv fe33232298 fix(gemini): preserve retry and rendering boundaries 2026-08-14 02:48:18 +00:00
usr-bin-roygbiv bdbea3f7f3 fix(tui): recover reports after orphan fences 2026-08-14 02:15:22 +00:00
usr-bin-roygbiv b1ce77c109 fix(gemini): recover malformed and thought-only turns 2026-08-14 01:35:21 +00:00
can1357 642d6c0b31 fix(coding-agent): preserved linked update ownership
Detected npm and Bun ownership from the bin link immediate target within each precise global node_modules root. Foreign aliases now update their resolved standalone binary without replacing the alias.

Fixes #8468
2026-08-14 00:27:16 +02:00
can1357 15981329d6 refactor(coding-agent): migrated external editor and removed obsolete tests
- Replaced child_process spawn with Bun.spawn in packages/coding-agent/src/utils/external-editor.ts.
- Removed the browser tab evaluation test suite from packages/coding-agent/test/tools/browser-tab-evaluate.test.ts.
2026-08-14 00:14:29 +02:00
can1357 6ecb1e3383 Revert "fix(coding-agent): routed foreign aliases to binary updates"
This reverts commit 834002adc5.
2026-08-14 00:13:49 +02:00
can1357 0d6a7146a3 feat(coding-agent): supported allSettled and any promise combinators in browser scope
- Added `allSettled` and `any` to tracked promise combinators in run scope.
- Updated browser cancellation tests to cover new promise combinators.
2026-08-14 00:11:04 +02:00
roboomp a02f88994b fix(tools): preserve workspace-relative path in read hashline headers
formatReadHashlineHeader collapsed every relative in-workspace path to its
basename, so reading a nested file (e.g. src/settings.json) emitted
[settings.json#tag]. When a same-basename file existed at the session cwd,
a verbatim follow-up edit resolved against the cwd file; Patcher.prepare only
runs snapshot-tag path recovery when the authored path is missing, so the
valid edit was deterministically rejected with "hash is not from this
session". Keep the workspace-relative path, which names the file uniquely and
stays directly resolvable against cwd. Out-of-workspace absolute paths remain
shortened; root-level files are unchanged.

Fixes #8482
2026-08-14 00:04:59 +02:00
can1357 5dd0aca4b8 refactor: removed markit converters test suite
- Removed markit-converters.test.ts from packages/coding-agent.
- Updated google-gemini-cli provider to ensure antigravity version during stream execution.
- Updated antigravity discovery options to use fetcher fallback.
2026-08-14 00:04:34 +02:00
roboomp 834002adc5 fix(coding-agent): routed foreign aliases to binary updates
Resolved npm and bun bin-entry symlinks before selecting the update method, and preserved foreign aliases by replacing their standalone target.

Fixes #8468
2026-08-14 00:03:33 +02:00
roboomp 6fc50c3e41 fix(coding-agent): prevented post-yield TUI stalls
Kept the Bun event loop live across subagent yield drains and delayed parent result flushes. Added a timer-lifecycle regression for the idle flush.

Fixes #8462
2026-08-14 00:01:31 +02:00
can1357 de99219db0 test(coding-agent): revert fake-timer rewrite of session_shutdown cap test
- The b279db1790 rewrite wrapped runner.emit() in vi.useFakeTimers() and
  hand-advanced the clock, but the runner registers its cap setTimeout after
  more microtask turns than the test advances (emit defers the timeout
  machinery to the first matching handler and hops through Bun.sleep(0)),
  so the cap timer never fires, emit never settles, and fake timers also
  neutralize bun's per-test timeout — the singleton/global-state CI bucket
  hung silently until the 600s watchdog SIGKILL (exit 137).
- Restored the pre-refactor real-time version: it has no sleeps or polling
  loops, runs the hung handlers against a 100ms cap, and asserts bounded
  wall-clock plus the per-extension timeout warnings.
- Verified the full 79-file singleton bucket passes (867 tests) and the
  restored file passes on Linux bun 1.3.14 in Docker.
- Restored the original 17.3.1 status-line changelog bullet (released
  sections stay immutable).
2026-08-13 20:56:15 +02:00
can1357 6563b16424 fix(coding-agent): stat-poll git HEAD instead of fs.watch for branch display
- Bun's inotify-backed fs.watch permanently stops delivering events after
  observing git's atomic HEAD.lock -> HEAD rename in the watched directory
  (oven-sh/bun#24875), so the directory-watch fix for issue #8412 still froze
  the status-line branch on Linux after the first switch; CI caught it as a
  30s timeout in status-line-vcs-refresh.test.ts.
- Added git.head.watch: fs.watchFile stat-poll of the HEAD path (reftable dir
  for reftable repos) with a disposer; path-based polling survives inode swaps
  on every platform.
- Status line and footer now consume the helper; the footer previously bound
  fs.watch to the HEAD file inode and died after one switch on all platforms.
- Dropped the FSWatcher error-listener plumbing (StatWatcher has no error
  mode) and reworked the watcher lifecycle tests to the stat-poll contract;
  verified the atomic-rename regression test passes on Linux bun 1.3.14 in
  Docker where it previously timed out.
2026-08-13 20:20:49 +02:00
can1357 3ce33d436b feat(catalog): added Gemini Flash model definitions and routing
- Added Gemini 3.7 Flash model definitions and reasoning effort routing configurations.
- Implemented geminiLevelFlashFamily in variant-collapse.ts to manage 3.6+ flash thinking levels.
- Added test coverage for Gemini 3.7 Flash variant collapse and discovery routing.
2026-08-13 19:36:51 +02:00
can1357 b279db1790 test: refactored test suites to eliminate time-based sleeps and polling loops
- Replaced time-based sleeps and polling loops with event-driven promise resolvers and fake timers across agent and tool tests.
- Migrated test suites to share in-memory auth storage and fixtures using lifecycle hooks.
- Updated catalog model definitions, metadata, and configurations.
2026-08-13 19:32:22 +02:00
can1357 28997c0d46 refactor(coding-agent): restructured transcript rendering during initialization
- Stage transcript initialization inside a detached TranscriptContainer to keep existing messages visible during incremental rendering.
- Add fallback state restoration in InteractiveMode.renderInitialMessages when chat rendering is aborted or fails.
- Update render-initial-messages tests to assert that old transcripts remain visible until replacements are fully committed.
2026-08-13 18:55:36 +02:00
can1357 778dfaccca test(coding-agent): align browser probes with linux scope 2026-08-13 18:46:18 +02:00
can1357 a32cf5f30a Merge PR #8446: fix(coding-agent): confine browser executable probe to Linux (@roboomp) 2026-08-13 18:46:18 +02:00
can1357 23aff5ae3f test(tui): model direct HerdR in-place resize in stress oracle
The HerdR flicker fix routed direct HerdR panes onto the in-place
multiplexer resize path, but the randomized render-stress oracle still
modeled them as ED3 replaying direct terminals. The width-epoch ledger
now applies to any in-place-resize scenario (multiplexer + direct HerdR)
via a dedicated resizeRepaintsInPlace trait, keeping HerdR's direct
scrollback semantics intact. Adds a deterministic replay regression
(seed 0xcafed00d, 24 iterations) that fails without the oracle update.
2026-08-13 18:39:29 +02:00
roboomp cf1ff14f5f fix(coding-agent): confine browser executable probe to linux
The executable version probe added in ecb22957 ("validate Linux browser
executables") replaced the file-only check in resolveSystemChromium with
isChromiumExecutable, which spawns the candidate `--version` for every
platform. On Windows chrome.exe is a GUI-subsystem binary: `--version`
does not print to a detached stdout and can hand off to a running
instance, opening/activating the user's normal browser window, after
which the probe rejects the candidate and falls back to cached Chrome
for Testing.

Gate the spawn probe on process.platform === "linux" (its intended
platform, where non-Chromium PATH wrappers are the real risk) and trust
the executable-file check on Windows and macOS.

Fixes #8445
2026-08-13 16:28:57 +00:00