Commit Graph
5496 Commits
Author SHA1 Message Date
can1357 45df1a0fd5 Merge PR #6286: fix(catalog): restore cached Copilot 1M models via requestModelId (@roboomp) 2026-07-22 21:13:12 +02:00
can1357 45d00ad296 Merge PR #6266: fix(catalog): union Codex models across OAuth accounts (@roboomp) 2026-07-22 21:13:12 +02:00
can1357 06f2ae96f6 Merge PR #6139: fix(ai): retry provider connection failures (@usr-bin-roygbiv) 2026-07-22 21:12:21 +02:00
roboomp b823c18837 fix(catalog): guarded request-model header recovery
Versioned request-header restoration metadata inside v10 cache rows so only markers written by the old id-only matcher can bypass an unrestorable marker through requestModelId. Current aliases whose live headers differ from their static base remain unresolved and are refetched or dropped.

Added catalog and startup-registry regressions for custom-header aliases while preserving legacy Copilot -1m cache recovery.

Fixes #6284
2026-07-22 11:10:23 +00:00
roboomp d9bab7ce8b fix(catalog): restore cached request-model variants via requestModelId
Copilot -1m long-context variants are synthesized with transport
headers and a requestModelId to a bundled base. The v10 cache omits
headers; the writer only matched a same-id static entry, so these
variants were flagged unrestorable and dropped on the next offline
read, vanishing from the picker with a "Could not restore model"
warning. The startup registry loader dropped them the same way.

Restore/match headers through requestModelId in the cache writer, the
model-manager restore path, and the coding-agent startup loader, and
bypass a stale unrestorable marker written by the old id-only writer.

Fixes #6284
2026-07-22 10:59:10 +00:00
roboomp dfeaa7aed1 fix(catalog): aborted codex discovery on failed account refresh
resolveCodexDiscoveryAccounts now returns null when any stored Codex OAuth
account fails to resolve (e.g. a transient refresh failure), and the manager's
resolveAccounts callback propagates null to skip discovery. Previously a failed
account was silently dropped before unionCodexModels saw it, so the remaining
accounts were unioned and cached as the authoritative catalog, hiding the
failed account's models for the cache TTL. Aborting keeps the previous/bundled
catalog.

Add a ModelRegistry regression test with one refreshable and one failing Codex
account asserting discovery makes no /models call and bundled models survive.

Fixes #6265
2026-07-22 07:19:11 +00:00
roboomp 2eff59e060 fix(catalog): preserved codex discovery token fallback
Keep the bearer resolved by the discovery preflight when it is not among the
stored OAuth account resolutions. This preserves Codex discovery for env,
runtime/config override, and stored non-OAuth credential sources while still
unioning all configured OAuth account catalogs.

Add a ModelRegistry regression test that drives runtime-key discovery and
asserts the resolved bearer reaches the Codex models endpoint.

Fixes #6265
2026-07-22 07:08:22 +00:00
can1357andMatheus Gois 5b798685ef fix(catalog): preserve opaque gateway model ids
Co-authored-by: Matheus Gois <matheus.gois@doordash.com>
2026-07-21 21:46:09 +02:00
usr_bin_roygbiv cbe28fc305 fix(ai): retry provider connection failures 2026-07-20 19:02:13 -05:00
can1357 89d6a8f6d1 fix(coding-agent): gate print-mode plan arming on settings before session context
- runPrintMode dereferenced session.sessionManager before checking whether
  plan.defaultOnStartup was even enabled, crashing partial-session harnesses;
  the settings check now short-circuits first.
- Extended the print-mode session fakes with the settings/sessionManager
  members every real session provides.
- Scoped the rpc-stdin-lock stderr assertion to non-load-notice lines: the
  adversarial fixture's load failure is now legitimately surfaced (#4954)
  and mentions the locked stream by design.
2026-07-21 00:16:45 +02:00
can1357 1bf08608a4 Merge PR #4964: fix(cli): resolve bundled extension imports (@roboomp)
# Conflicts:
#	packages/coding-agent/src/extensibility/plugins/legacy-pi-compat.ts
#	packages/coding-agent/src/main.ts
#	packages/coding-agent/src/prompts/system/workflow-notice.md
#	packages/coding-agent/test/extensibility/legacy-pi-bundled-virtual.test.ts
2026-07-20 22:53:16 +02:00
pr-evalandcan1357 f5bd6bbe0e fix(agent): count malformed yields after incremental sections
Narrow the invalid-yield guard to !abortSent so array-typed incremental
yield sections no longer suppress the infinite-submit-loop abort; add
regression coverage for incremental yield followed by repeated malformed
terminal yields.
2026-07-20 22:51:53 +02:00
can1357 a87d7d35cd Merge PR #4961: fix(agent): stop malformed subagent yield loops (@roboomp)
# Conflicts:
#	packages/coding-agent/src/prompts/system/workflow-notice.md
#	packages/coding-agent/src/task/executor.ts
#	packages/coding-agent/src/tools/yield.ts
2026-07-20 22:51:53 +02:00
can1357 024497995c Merge PR #4882: fix(catalog): collapse Devin GLM-5.2 variants so free 200K model works when quota is exhausted (@oldschoola)
# Conflicts:
#	packages/catalog/src/models.json
2026-07-20 22:50:16 +02:00
can1357 d8e137abdd Merge PR #6079: fix(status-line): aggregate vibe worker tok/s into the status-line badge (@oldschoola) 2026-07-20 22:50:06 +02:00
can1357 f9826dc2b3 Merge PR #5977: fix(coding-agent): bound RPC output and reap failed workers (@wolfiesch) 2026-07-20 22:50:05 +02:00
can1357 3c6ade647b Merge PR #4784: fix(coding-agent): persist bash shortcut cwd changes (@jeffscottward) 2026-07-20 22:50:05 +02:00
can1357 60cbcc8c9d Merge PR #5055: feat(coding-agent): add timestamp to per-turn token-usage row (@zommiommy) 2026-07-20 22:50:05 +02:00
can1357 7e49a95d41 Merge PR #5982: fix(setup): add default model selection (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 4577f064cb Merge PR #5736: fix(session): persist /new boundary so autoResume does not resume pre-/new transcript (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 4b7377bd5b Merge PR #5974: fix(tools): keep web_search top-level under xdev (@roboomp) 2026-07-20 22:50:05 +02:00
can1357 a973556558 Merge PR #6045: fix(coding-agent): run fish user shell interactively instead of as a login shell (@iacore) 2026-07-20 22:50:04 +02:00
can1357 091dad0f90 Merge PR #6088: fix(thinking): persist auto selector receipt (@moomooskycow) 2026-07-20 22:50:04 +02:00
can1357 29f25f537e Merge PR #6020: fix(coding-agent): enable plan mode for print prompts (@roboomp) 2026-07-20 22:50:04 +02:00
can1357 936fdbe4a7 Merge PR #6013: fix(coding-agent): preserve plan exit rollback state (@any-victor) 2026-07-20 22:50:03 +02:00
can1357 1aa70ddc9e Merge PR #6023: fix(coding-agent): preserve model when resuming plan mode (@roboomp) 2026-07-20 22:50:03 +02:00
phrazzld f04741eac2 fix(thinking): persist auto selector receipt 2026-07-19 19:11:30 -05:00
oldschoola 4a065e3d89 fix(status-line): aggregate vibe worker tok/s into the status-line badge
In /vibe mode the director is often idle while workers stream, so the
status-line tok/s badge showed a stale/zero rate even while parallel
workers were actively generating tokens. The badge now aggregates the
main session's live tok/s with every live vibe worker's tok/s, and
falls back to the main session's own cached rate when no workers are
streaming.

- Extract calculateTokensPerSecond to utils/token-rate.ts (neutral
  location) so vibe/runtime.ts can depend on it without the render
  layer depending on the heavy vibe/task graph.
- Add aggregateVibeWorkerTokensPerSecond to vibe/runtime.ts: sums
  each live worker's rate via the shared calculator, returns null
  when no workers are streaming so the main rate shines through.
- StatusLineComponent takes the aggregator via an injected
  setVibeWorkerTokenRateProvider callback (wired in interactive-mode)
  keeping the render layer off the vibe/task dependency graph.
- #getTokensPerSecond splits into #getMainSessionTokensPerSecond
  (preserves the sticky per-assistant-message cache) plus the
  worker-aggregation path, so the director-idle case no longer
  short-circuits to null.
2026-07-19 13:03:38 -07:00
Victor Araújo 1d667039d1 refactor(coding-agent): share tool presentation apply path 2026-07-19 14:45:41 -03:00
Victor Araújo 7f10e13bbe fix(coding-agent): preserve plan tool presentation 2026-07-19 14:45:41 -03:00
Victor Araújo 8a8ff498b3 fix(coding-agent): preserve plan exit rollback state 2026-07-19 14:45:41 -03:00
vmcall 46c936564c fix(coding-agent): corrected workflowz recursion guidance
Document unlimited negative recursion settings accurately and provide JavaScript budget-loop guidance.
2026-07-19 14:39:56 +02:00
vmcall 21e8db496b test(coding-agent): activated eval in skill workflow fixture
Keep the skill keyword workflowz contract on the active eval-and-task path.
2026-07-19 14:29:21 +02:00
vmcall c9e11dbb87 test(coding-agent): corrected workflowz backend assertions
Assert the restored Python and JavaScript example headings instead of denying backend-specific guidance.
2026-07-19 14:23:12 +02:00
vmcall 4088c20ecb fix(coding-agent): gated workflowz on eval
Require active eval and task tools before injecting Workflowz notices, and provide Python and JavaScript eval examples.
2026-07-19 13:16:08 +02:00
vmcall f20d0b9968 test(coding-agent): updated workflow notice contracts
Aligned rendered workflowz notice expectations with the restored eval-specific, backend-agnostic wording.
2026-07-19 13:07:37 +02:00
iacore 1f1e046411 style(coding-agent): fix biome formatting in bash-executor test 2026-07-19 14:45:59 +08:00
iacore eb6ba80420 fix(coding-agent): run fish user shell interactively instead of as a login shell
The interactive !/!! shortcut wrapped commands as `fish -l -c '…'`:
resolveUserShellConfig swaps in $SHELL but inherits the bash-oriented
["-l", "-c"] args, and ensureInteractiveShellArgs injected -i only
for zsh. A login fish fires `status is-login` blocks in user config
(agent/keychain setup, PATH mutation) on every command.

fish sources the same config.fish/conf.d files for interactive shells
as for login shells, so give fish -i and strip the inherited -l: user
aliases and functions (#1816) keep working without login-shell side
effects. zsh keeps -l -i since .zprofile is login-only.
2026-07-19 14:34:10 +08:00
Wolfgang Schoenberger e0712265f2 fix(coding-agent): reconstruct compacted RPC prompt histories 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger f8cc72ff36 fix(coding-agent): preserve small RPC terminal frames 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 63c8cc189a fix(coding-agent): retain active RPC run snapshots 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 627a697e05 fix(coding-agent): bound terminal RPC frames 2026-07-18 15:13:09 -07:00
Wolfgang Schoenberger 7e6a9f5d5d fix(coding-agent): await RPC worker reaping 2026-07-18 15:13:08 -07:00
Wolfgang Schoenberger 2e90458a79 fix(coding-agent): bound RPC output and reap failed workers 2026-07-18 15:13:08 -07:00
roboomp 3f67489a9f fix(coding-agent): preserved model on plan resume
Plan-mode reconciliation now keeps the model restored from the session journal instead of reapplying the current plan role.

Fixes #6015
2026-07-18 22:07:22 +00:00
roboomp c4053918fe fix(coding-agent): handled headless plan proposals
Installed the normal plan proposal handler in print mode, persisted the resolved plan artifact, and silently stopped the completed planning turn for later review.

Shared plan proposal validation with interactive mode and added regression coverage.

Fixes #6017
2026-07-18 21:46:03 +00:00
roboomp a5ff9f9a30 fix(coding-agent): enabled plan mode for print prompts
Applied the startup plan default before headless prompts and persisted the mode for later interactive review.

Added regression coverage for the exact -p startup path.

Fixes #6017
2026-07-18 21:34:30 +00:00
can1357 29aefbca4a test: restored read-tool context-expansion contract tests
The exact-bounds rewrite matched reverted PR #5812; the ±context expansion
(1 leading + 3 trailing line) around explicit selectors is intended behavior
so edit anchors at range boundaries stay fresh.
2026-07-18 22:05:14 +02:00
can1357 8f2cd23e39 Revert "Merge PR #5812: fix(read): honor exact line selector bounds (@roboomp)"
This reverts commit 58c71d5b50, reversing
changes made to 7c7227bc8e.
2026-07-18 22:04:43 +02:00
can1357 32dc282517 test: aligned read-tool and logout tests with landed contracts
- tools.test.ts still asserted the pre-#5812 ±context expansion for offset/
  limit and archive-entry reads; updated to the exact-bounds contract.
- selector-controller-logout.test.ts mocked the old modelRegistry.refresh;
  #5786 switched logout to a provider-scoped refreshProvider(id, 'online'),
  so the mock never resolved and the test timed out.
2026-07-18 21:58:03 +02:00