Commit Graph
9801 Commits
Author SHA1 Message Date
can1357 f13164e464 Merge PR #5158: fix(tui): display Cursor final answers after tool output (@roboomp)
# Conflicts:
#	packages/coding-agent/src/modes/controllers/event-controller.ts
2026-07-14 18:37:31 +02:00
can1357 37cf23eb65 fix(tui): sanitize remaining task renderer fields 2026-07-14 18:36:54 +02:00
roboomp d3f4830ceb fix(tui): deferred command output during streaming
- Queued transcript command panels until the active agent turn ends.

- Added regression coverage for slash-command output mounting exactly once.

Fixes #4806
2026-07-14 16:35:18 +00:00
can1357 c658c6ed6e Merge PR #5162: fix(tui): sanitize subagent progress output (@roboomp) 2026-07-14 18:34:33 +02:00
can1357 353bb5c8e1 Merge PR #5239: fix(tui): compact transcript retention without losing resize history (@RensTillmann) 2026-07-14 18:34:14 +02:00
roboomp c8039d1e48 fix(github): added repository file reads
- Added a read-only file_read operation backed by GitHub's contents API.

- Routed GitHub repository file requests away from curl and wget.

- Covered branch-aware file reads with a regression test.

Fixes #4805
2026-07-14 16:32:10 +00:00
can1357 7f9a2777f9 Merge PR #5170: fix(ai): scope Anthropic credential identity by organization, not just email (@chan1103) 2026-07-14 18:29:14 +02:00
can1357 8a5e73902c Merge PR #5247: Fix automatic rollover across quota-limited accounts (@jeffscottward) 2026-07-14 18:29:14 +02:00
roboomp f697837659 fix(tools): stopped column cap from faking window truncation
Per-line column cap trims individual lines with a `…` marker but does not
truncate the output window. OutputSink.dump() nonetheless set truncated=true
whenever a line was capped, and truncationFromSummary then reported a byte
tail-window truncation, appending a bogus "Showing lines X-Y of Z (…B limit).
Read artifact://N for full output" footer even though every line was shown.

- OutputSink no longer flips #truncated on column-cap-only drops.
- OutputSummary carries columnMax; truncationFromSummary surfaces it as the
  "Some lines truncated to N chars" limit notice regardless of window state.

Fixes #4735
2026-07-14 16:27:06 +00:00
roboomp 0eda288b99 fix(tui): updated nerd session icon codepoint
Replaced the removed Nerd Fonts v2 Material Design glyph with its Nerd Fonts v3 mapping and covered the preset contract.

Fixes #4795
2026-07-14 16:22:55 +00:00
roboomp 953859d956 fix(acp): awaited teardown on stdio disconnect
Registered ACP session disposal with postmortem and replaced the hard EOF exit with the awaited graceful shutdown path.

Classified stdio-write EPIPE separately from worker IPC EPIPE so ACP peer loss exits successfully after cleanup.

Fixes #4788
2026-07-14 16:20:48 +00:00
roboomp b6b947bdbe fix(openai): rendered native response images
- Normalized completed image_generation_call results into assistant image blocks.
- Persisted image bytes through the session blob store and rendered them in live, replay, ACP, proxy, telemetry, and HTML paths.
- Added response normalization, persistence, and TUI rendering regressions.

Fixes #4768
2026-07-14 16:15:53 +00:00
roboomp 43a89d20bd fix(editor): accepted upstream-pi editor constructor in CustomEditor
Plugins subclass CustomEditor/Editor and forward the upstream-pi
super(tui, theme, keybindings) constructor, which is the arg order
setEditorComponent's factory contract advertises. omp's base
constructor is constructor(theme), so the TUI landed in the theme
slot and every render threw
"undefined is not an object (evaluating 'this.#theme.symbols.boxRound')".

CustomEditor now resolves the real EditorTheme by shape rather than
position and captures a leading TUI so plugin overrides calling
this.tui.requestRender() keep working.

Fixes #4766
2026-07-14 16:03:44 +00:00
roboomp e9dc1616b7 fix(tui): anchored IME cursors in interactive inputs
Preserved the editor cursor marker under autocomplete and forwarded dialog focus into Other-response editors.

Fixes #4760
2026-07-14 16:01:09 +00:00
Vu Anh Nguyen 570f8af57c fix(coding-agent): support GPT-5.6 Codex web search 2026-07-14 17:51:33 +07:00
djdembeck aa470b9e34 fix(coding-agent): forward sessionId to getApiKey in subagent auth fallback
The pre-flight auth check in resolveModelOverrideWithAuthFallback called
getApiKey without a session id. For providers with session-sticky OAuth
credentials, this returned undefined even though the credential was
usable once the subagent session started, causing the auth fallback to
silently replace the configured model with the parent's (#5325).

The subagent's id is now forwarded as the session id so session-sticky
credentials resolve during the pre-flight check. Genuinely broken auth
(stale OAuth, revoked tokens) still falls back as before.

Also propagate model resolution warnings through resolveModelOverride
and log them in the executor so users see why a pattern didn't match.
2026-07-14 00:28:42 -05:00
DarkPhilosophy 05d1e43308 fix(advisor): optional-chain getAdvisorStatusOverview for session double compatibility 2026-07-14 04:36:20 +03:00
DarkPhilosophy 6e8a7620de fix(advisor): add getAdvisorStatusOverview mock to status-line component test 2026-07-14 04:01:44 +03:00
DarkPhilosophy fb971d2493 Merge remote-tracking branch 'can1357/main' into feat/advisor-per-agent-toggle 2026-07-14 03:45:44 +03:00
can1357 3047c27c33 fix(test): skip real-browser tab.evaluate test when chromium cannot exec
- Exported ensureChromiumExecutable so the test can probe launchability.
- CI runner holds the downloaded Chrome but lacks libnspr4 & co., so the
  binary fails at dynamic-link time; probe --version and skipIf instead
  of failing the release run.
2026-07-14 02:12:21 +02:00
Mathews-Tom 37cc50f2a2 Merge remote-tracking branch 'upstream/main' into feat/error-notify 2026-07-14 05:18:35 +05:30
can1357 da24614d5a feat: added scrollback rebuild controls and prewalk status-line visibility
- Added `tui.scrollbackRebuild` configuration with interactive startup/controller wiring to apply `setScrollbackRebuild`.
- Exposed prewalk session state in `SegmentContext` and rendered a dedicated prewalk segment/icon in the status line.
- Added divergence-aware TUI full-paint logic that enables scrollback erase-and-replay rebuilds for non-multiplexer divergence cases.
- Updated rendering and streaming tests to verify rebuild behavior (`3J`) and eliminate stale marker expectations under drift scenarios.
2026-07-14 00:39:34 +02:00
DarkPhilosophy f5dc002363 fix(advisor): expose provider sessionId in stats + show failure status in formatAdvisorStatus 2026-07-14 01:25:02 +03:00
DarkPhilosophy 600682d447 fix(advisor): classify switched-retry errors before pausing quota
When onTurnError signals a switched sibling credential (switched=true),
the retry error is now classified via isQuotaError:
- Second quota: marks the sibling via onTurnError, then enters quota pause
- Non-quota transient: routes through onTurnError and the generic
  failure/requeue/notify path instead of unconditionally pausing
2026-07-14 00:52:00 +03:00
Mathews-Tom b72a320d2d Merge remote-tracking branch 'upstream/main' into feat/error-notify
# Conflicts:
#	packages/coding-agent/src/session/agent-session.ts
2026-07-14 03:12:29 +05:30
DarkPhilosophy b85d64f9cd Revert "fix(coding-agent): use ctx.settings instead of global settings proxy in renderInitialMessages"
This reverts commit b096de735d.
2026-07-14 00:28:13 +03:00
can1357 f9f6ed9e8d feat(coding-agent): replaced legacy pi/ role alias prefix with
- Replaced legacy `pi/` role alias prefix with canonical `@` syntax across model resolution, documentation, and tests.
- Added support for bare `*` default alias and multiple alias prefix detection with custom role resolution in `resolveConfiguredRolePattern()`.
- Enhanced thinking suffix parsing to accept unambiguous abbreviations (minimum 2 characters) for effort and level selectors.
- Extended `resolveCliModel()` and `filterAvailableModelsByEnabledPatterns()` to accept settings parameter for role alias resolution from `--model` flag.
2026-07-13 23:26:33 +02:00
DarkPhilosophy cc2831e0f0 fix(advisor): signal-based quota retry + bare-model provider resolution
- onTurnError returns Promise<boolean|undefined> signaling credential switch
- agent-session returns markUsageLimitReached().switched from the hook
- runtime retries once when switched===true, otherwise preserves quota pause
- advisor-config uses liveStat model provider for bare (slash-less) selectors
- 2 regression tests: switched=true (retry succeeds) and switched=false (pause)
2026-07-14 00:13:55 +03:00
DarkPhilosophy b096de735d fix(coding-agent): use ctx.settings instead of global settings proxy in renderInitialMessages
Global settings proxy throws "Settings not initialized" when accessed
without Settings.init(), which breaks interactive-mode-status tests
under certain test ordering. Use this.ctx.settings like all other
access points in the method.
2026-07-14 00:01:54 +03:00
DarkPhilosophy 4db2d9617b Merge remote-tracking branch 'can1357/main' into feat/advisor-per-agent-toggle 2026-07-13 23:16:26 +03:00
can1357 4c1c5f40d8 feat(launch): rendered launch logs from daemon terminal byte streams
- Changed daemon log reads to return both sanitized display text and a raw `terminalText` slice, and included it on log RPC responses for PTY runs when grep was not used.
- Extended the logs result contract and launch tool rendering to consume `terminalText`, reconstruct terminal output, and display it in framed, preview-capped sections.
- Kept terminal row layout stable by writing space characters for empty cells when reading rows, preserving spacing during output reconstruction.
2026-07-13 19:21:45 +02:00
can1357 f80fb4836f feat: updated prewalk-plan guidance and added hot-reload marker
- Refined the coding-agent prewalk-plan system prompt to require 5-9 meaningful todo steps with concrete targets and verification, and removed the requirement for a super-detailed single-reply plan format.
- Added a `hot-reload-probe` marker comment at the end of Harbor Manager's `server.ts`.
2026-07-13 19:13:00 +02:00
can1357 896c4bb17b fix(coding-agent/tools): capped expanded streaming diff previews to a viewport-sized tail
- Bounded expanded partial edit diff rendering in `formatStreamingDiff` to `previewWindowRows()` instead of an unbounded budget, preventing runaway preview growth during live updates.
- Updated streaming diff tests to simulate terminal height and verify expanded previews stay full only within the viewport, then switch to a truncated tail with the `more lines above` marker when too tall.
- Reinitialized in-memory `Settings` before each initial-messages test since the test suite reads global display configuration and needs isolation.
2026-07-13 19:00:26 +02:00
can1357 59ecd2a4d8 refactor(coding-agent/modes): added ACP type guards for elicitation narrowing
- Added `isAcceptedElicitation` in the ACP agent to narrow accepted elicitations before accessing response content.
- Added `isFormElicitation` in ACP tests and used it to narrow form-mode requests before assertions.
2026-07-13 18:53:19 +02:00
can1357 a5673c90f8 feat(ai): removed legacy Google interactions routing from AI providers
- Removed the Google Interactions transport and deleted interaction-specific request options from the shared AI stream typing/API surface.
- Simplified Google provider routing to eliminate interactions auto-selection logic and keep `streamGoogle` on the `:streamGenerateContent` path.
- Updated Vertex request handling to use resolved stream hosts without `/interactions`/`Api-Revision` and removed related interaction constants.
- Deleted obsolete Interactions tests and updated remaining Google stream tests to no longer reference `useInteractionsApi`/`storeInteraction`/`previousInteractionId`.
2026-07-13 18:43:52 +02:00
can1357 acc0211cfd feat(tools): integrated terminal rendering into launch tool output
- Updated `launch` tool to utilize `renderTerminalOutput` for improved log formatting.
- Added `terminalRows` to `LaunchToolDetails` to support structured virtual terminal rendering.
- Refactored `BashInteractiveOverlayComponent` to consolidate terminal line reading and styling logic.
- Applied sanitization to log text in `toolContent` to prevent rendering issues.
- Integrated `styleTerminalRow` in the `launch` tool renderer to maintain consistent UI theme application.
2026-07-13 18:27:26 +02:00
can1357 6fcb1b3008 chore(test): synchronized test expectations with output and cleanup formatting
- Updated `hashline` test expectations to match new recovery message strings.
- Initialized settings in `interactive-mode-status` tests to prevent state leakage.
- Added ANSI color code verification to `launch` tool tests to align with updated output.
- Cleaned up whitespace in `tan-context-switch.md` system prompt.
2026-07-13 18:27:25 +02:00
can1357 96cc9caa66 feat(launch): enabled pty terminal rendering with standardized dimensions and serialization
- Introduce `DAEMON_PTY_COLUMNS` and `DAEMON_PTY_ROWS` to `protocol.ts` for consistent PTY dimension management.
- Implement `renderTerminalOutput` in `launch/terminal-output.ts` to utilize headless xterm for accurate terminal state replay.
- Add `readTerminalRows` and `styleTerminalRow` in `tools/terminal-output.ts` to serialize terminal buffers while preserving safe ANSI styles.
- Update `broker.ts` to use standardized PTY dimensions and ensure terminal output is properly sanitized and well-formed during stream processing.
2026-07-13 18:27:24 +02:00
Colin Mason ffa879ba2c keep process cwd while other cells are live 2026-07-13 09:57:20 -04:00
Colin Mason a83f461b35 lazy load js eval process entry in cli 2026-07-13 09:57:20 -04:00
Colin Mason 640d7c83b9 propagate ipc clone errors to eval cells 2026-07-13 09:57:20 -04:00
Colin Mason 95620ccd6c preserve async js fallback ladder 2026-07-13 09:57:20 -04:00
Colin Mason 55d9fcfd14 fall back to bun worker on eval spawn failure 2026-07-13 09:57:20 -04:00
Colin Mason 1a527d9a2f mirror session cwd in js eval subprocess 2026-07-13 09:57:19 -04:00
Colin Mason 9c9da2387d harden js eval subprocess 2026-07-13 09:57:19 -04:00
Colin Mason c40ccdc684 isolate eval runtimes from terminal 2026-07-13 09:57:19 -04:00
can1357 017fd641d4 feat(harbor-manager): added support for apple-container backend
- Added an environment configuration option to choose between docker and apple-container backends.
- Updated the server to default to apple-container when the container CLI is detected.
- Removed unused auto_compaction_end event handling in the coding-agent print mode.
2026-07-13 15:28:03 +02:00
can1357 64dfb98c23 feat: stabilized runner lifecycle and output processing for agent operations
- Sanitized CLI JSON output by stripping sensitive payload data and implementing incremental delta extraction.
- Optimized log parsing in the harbor-manager by using tail-scanning and streaming file handles to prevent OOM errors.
- Enhanced process management to support persistent runs across manager restarts and improved orphan process handling.
- Added incremental cost probing for live trials and verified status transitions for runner lifecycle events.
2026-07-13 15:24:19 +02:00
can1357 4df6f6683d chore: finalizing the new /prewalk 2026-07-13 15:18:31 +02:00
can1357 edd959a381 build: removed generation of docs index
- Remove the `gen:docs` step from the Docker build process and the developer documentation.
- Update documentation in `docs-index.ts` to reflect that the index is now injected via environment variable instead of a generated file.
- Update error messaging to point to binary or bundle rebuilds rather than the deprecated generation script.
2026-07-13 14:22:08 +02:00