Commit Graph

6762 Commits

Author SHA1 Message Date
Sunil Srivatsa 980ab4fd0a fix(coding-agent): harden archived stats cleanup 2026-08-01 17:17:46 -04:00
Sunil Srivatsa f3a555ac78 fix(coding-agent): reconcile archived session stats 2026-08-01 14:43:59 -04:00
Sunil Srivatsa 5f35e40a5f fix(coding-agent): preserve retained session stats 2026-08-01 13:21:36 -04:00
Sunil Srivatsa 1550ae5a98 fix(coding-agent): prune archived session stats 2026-08-01 12:38:01 -04:00
can1357 f94c8809e5 Merge remote-tracking branch 'origin/farm/101aa6fd/codex-search-preserve-sse-error' 2026-08-01 08:33:48 +02:00
can1357 126c3804e3 Merge remote-tracking branch 'origin/farm/41d773e1/ask-dialog-question-undefined-crash' 2026-08-01 08:33:30 +02:00
can1357 03f5eb7acf Merge remote-tracking branch 'origin/farm/c5198f90/fix-effective-prompt-cache-key' 2026-08-01 08:33:25 +02:00
can1357 2b8546faa0 Merge remote-tracking branch 'origin/farm/8f2adac9/bash-auto-background-clearable-timer' 2026-08-01 08:33:11 +02:00
can1357 71c755d5f6 feat: introduced aiand provider registry entry and model catalog
- Implement the ai& provider registry entry with API-key authentication and login support.
- Add model descriptors, static model seeding, and openai-compatible model discovery for the ai& provider.
- Update the model catalog with ai& provider models, pricing, and updated provider model names.
- Add unit tests for the ai& provider environment resolution, metadata, and dynamic model mapping.
2026-08-01 08:30:37 +02:00
roboomp fe4e553be3 fix(coding-agent): clear bash auto-background threshold timer
waitForManagedBashJob raced job completion against a bare
Bun.sleep(thresholdMs), which cannot be cancelled. When completion,
abort, or steering won the race, the losing Bun.sleep timer stayed
scheduled and ref'd, keeping Bun's event loop alive until the threshold
expired — delaying SDK/headless shutdown and accumulating timers under
fast command rates.

Replace the Bun.sleep with a Promise.withResolvers settled by a
cancellable setTimeout, and route every outcome (including the former
no-signal early return) through one try/finally that clears the timer
and removes the abort/steer listeners.

Add a child-process regression test that runs the real auto-background
path for a fast command against a 30s threshold and asserts the process
exits promptly instead of being held for the full threshold.

Fixes #7235
2026-08-01 05:14:43 +00:00
roboomp 838d120249 fix(coding-agent): reused effective prompt cache key
- Reused the agent's explicit or inherited cache identity for ephemeral side turns.
- Forwarded the same effective key through manual and automatic native compaction.
- Added regression coverage for all three secondary request paths.

Fixes #7218
2026-08-01 03:44:59 +00:00
roboomp 8a059e3027 fix(coding-agent): normalize ask dialog questions to prevent render crash
The live AskDialog trusted question.question while its render helpers
(replaceTabs, renderQuestionTitle, questionTabLabel) assume a string. A
question reaching AskDialogComponent without a string question field threw
an uncaught TypeError that escaped the TUI render loop and killed the
session. The transcript renderer already normalizes the same malformed
data via normalizeRenderQuestions; the live path did not.

Normalize the questions array at dialog entry (new normalizeDialogQuestions),
coercing question/id/label to strings and options to a well-formed array,
matching the transcript path.

Fixes #7211
2026-08-01 00:11:21 +00:00
roboomp d4cb024b57 fix(coding-agent): preserve codex web search backend error diagnostics
The Codex SSE `type:"error"` branch read only top-level `code`/`message`,
so backend rejections emitted under a nested `error` or `response.error`
object collapsed to `Codex error (): Unknown error`, hiding the cause
(e.g. a regional/model-snapshot rejection). `response.failed` similarly
dropped the error code.

Add a shared `extractCodexSseError` that reads top-level, nested `error`,
and `response.error` envelopes, and wire both error paths through it so
the backend code and message survive in `SearchProviderError`. The
existing `web_search_call` requirement is untouched.

Fixes #7200
2026-07-31 20:56:54 +00:00
can1357 80627462b4 test(browser): gated real-Chromium attach tests behind launch probe
- Extracted the chromiumCanLaunch probe from browser-tab-evaluate into a
  shared test/tools/chromium-probe.ts helper.
- The two attached-navigation tests from PR #7006 launch real headless
  Chrome; CI runners without Chrome system libraries (libnspr4 & co.)
  cannot exec the downloaded binary, failing the native/unit bucket.
- Gave both tests 30s timeouts to survive CI cold starts.
2026-07-31 21:25:48 +02:00
can1357 b3e0bde7b7 refactor(coding-agent): adjusted block resolution formatting and update tests
- Update hashline block resolution formatting to correctly incorporate anchor lines within operation labels.
- Fix and update test assertions and mock contexts across coding agent tests.
2026-07-31 20:55:37 +02:00
can1357 06649b7407 feat(coding-agent): rewrote codex saved-reset trigger algorithm
- Replaced the reactive weekly-only auto-redeem predicate with a pool-wide
  planner: an expiry-salvage sweep piggybacks on the 5-minute usage
  heartbeat and spends any account's reset that would otherwise expire
  within codexResets.salvageHorizonHours, and the blocked-turn path scans
  all stored accounts with eligibility built from the exact exhausted
  5h/weekly windows (openai/codex#28525), unblocking at the latest reset
  among them.
- Made the live 429's parsed unblock timestamp authoritative for the
  active account (pre-block snapshots survive cache invalidation via
  in-flight adoption and last-good fallback), synthesizing the candidate
  when no usable report exists, and overlaying live credit counts from
  the dedicated credits route since a stale /wham/usage zero is never
  corrected upstream.
- Treated nothing_to_reset, credit_list_failed, and thrown consumes as
  non-terminal: the episode key is released and deferred 30 minutes
  instead of burying a banked credit; redeemResetCredit now spends the
  soonest-expiring credit.
- Added planner unit fixtures plus integration regressions driving the
  real triggers end to end, with an injectable per-session coordinator
  seam and a sweep settlement handle.
2026-07-31 20:39:12 +02:00
can1357 c565e6fb44 feat(catalog): migrated model catalog endpoints to stencil.so with ETag and ZStd
- Migrated model catalog fetching and documentation references from the models.dev API to the stencil.so well-known models endpoint.
- Added support for zstd decompression and session-based caching with ETag conditional requests and stale fallback handling.
- Updated test suites, mock URLs, and constants across catalog and coding-agent packages to target stencil.so.
2026-07-31 20:38:49 +02:00
can1357 f76ce86966 Merge PR #6840: feat(extensions): add ctx.invokeTool for native built-in delegation (@psyrendust) 2026-07-31 20:17:32 +02:00
can1357 ccc9b900cf fix(eval): forked subagent kernel resets away from shared sessions
- Subagents inherit the parent's eval session id, so a child's
  reset: true destroyed the co-owned kernel and every sibling's
  interpreter state mid-session.
- resolveOwnerScopedSessionKey now routes a reset from a non-exclusive
  owner onto a deterministic per-owner fork key: the requester gets a
  fresh private kernel, co-owners keep the shared one, and the fork
  stays sticky for that owner until its teardown reaps it.
- Applied across Python, JavaScript, Ruby, and Julia executors; JS
  contexts gained an owner registry plus disposeVmContextsByOwner,
  wired into EvalRunner.disposeKernels and SDK session teardown.
- Covered by pure key-resolution contracts and an end-to-end JS test:
  co-owner reset forks, shared state survives, fork is sticky, and
  per-owner dispose reaps only the fork.
2026-07-31 20:13:23 +02:00
can1357 dea8cf04a7 test(coding-agent): restored pipe-based probes in telemetry and snapshot suites
- The earlier EBADF 'hardening' was chasing a Bun 1.4-canary quirk that
  only triggers when bun test runs workspace-package files from the repo
  root; the canonical runner (scripts/ci-test-ts.ts) always uses the
  package cwd, where the original PR-authored pipe-based assertions pass.
- Restores the stronger stdout contracts from PRs #7135 and #7141.
2026-07-31 20:02:15 +02:00
can1357 dff1224767 test(task): moved IRC observer stubs into session fake literals 2026-07-31 19:53:31 +02:00
can1357 a6c6257574 chore: applied formatter and deduplicated observer stubs in task fixtures 2026-07-31 19:51:52 +02:00
can1357 aa5b11f03f Merge PR #7063: test(coding-agent): avoid MCP startup race (@GratefulDave) 2026-07-31 19:42:43 +02:00
can1357 63d6bd3064 Merge PR #7060: fix(browser): own headless Chromium profile dir to survive Windows EBUSY cleanup (@roboomp) 2026-07-31 19:42:43 +02:00
can1357 f46af54f9c fix(browser): preserve screenshot correctness when attached 2026-07-31 19:42:42 +02:00
can1357 ce1ec2103f Merge PR #7006: fix(tools): stop browser automation from stealing focus in an attached browser (@terrxo)
# Conflicts:
#	packages/coding-agent/src/tools/browser/tab-supervisor.ts
2026-07-31 19:42:12 +02:00
can1357 9c1facec10 test(browser): cover attached tab navigation 2026-07-31 19:41:44 +02:00
can1357 a9573cbf28 test(task): stubbed setIrcWakeTurnObserver on executor session fakes
- The IRC wake monitor from PR #7108 calls the observer on every kept-alive
  subagent finalize; fakes across the executor suites predate the method
  and threw during finalization (69 failures).
2026-07-31 19:41:38 +02:00
can1357 f564b36086 test(coding-agent): fixed launch-startup fake cast and telemetry probe stdio 2026-07-31 19:34:40 +02:00
can1357 e9dda1f867 chore: applied biome formatting to merged pull request sources 2026-07-31 19:32:42 +02:00
can1357 dcf0fd3f3a Merge PR #7111: fix(web-search): honor lang: directive in DuckDuckGo kl param (@roboomp)
# Conflicts:
#	packages/coding-agent/src/web/search/providers/duckduckgo.ts
2026-07-31 19:30:18 +02:00
can1357 bd96752b83 fix(rpc): serialize IRC wake finalization 2026-07-31 19:28:43 +02:00
can1357 e02510f8c9 Merge PR #7108: fix(rpc): restore frames for IRC-revived subagents (@roboomp) 2026-07-31 19:28:42 +02:00
can1357 74b7c0d786 Merge PR #7103: fix(test): gave CLI-spawning tests explicit timeouts (@psyrendust) 2026-07-31 19:28:42 +02:00
can1357 1f4312bfcb Merge PR #7100: fix(commit): load extension-provided models (@roboomp) 2026-07-31 19:28:42 +02:00
can1357 563f00fe31 chore: drop unrelated test changes from ACP fix 2026-07-31 19:28:41 +02:00
can1357 977b5d4281 Merge PR #7079: acp: wire ctx.ui.editor through elicitFromAcpClient (@marton78) 2026-07-31 19:28:41 +02:00
can1357 b2784c5823 chore(coding-agent): keep LSP fix scope focused 2026-07-31 19:27:35 +02:00
can1357 7205ed78c1 Merge PR #7069: fix(coding-agent): prevent stale LSP batch writes (@Ant39140) 2026-07-31 19:27:35 +02:00
can1357 4ab609a0e7 fix(secrets): redact lazily resolved key before credentials 2026-07-31 19:27:35 +02:00
can1357 371a2349aa Merge PR #7067: fix(secrets): exact-match edits failing on files with credential-shaped tokens (@iacore) 2026-07-31 19:27:35 +02:00
can1357 9663df02cf test(coding-agent): hardened spawn-based suites against Bun pipe EBADF
- Bun 1.4 canary's posix_spawn intermittently rejects pipe-backed child
  stdio (EBADF) inside test workers, failing telemetry-export and
  shell-snapshot probes before their assertions ran.
- Probes now spawn with ignored stdio and capture output via exit status
  or temp-file redirection; all behavioral assertions retained.
2026-07-31 19:27:26 +02:00
can1357 c458b6e4bc fix(session): suppressed cross-loop duplicate dead-end warning after context reconstruction
- #7163's context-token anchoring re-triggered #7153's dead-end warning on
  the pre-prompt pass; a one-shot marker now spans agent loops and re-arms
  only when a persisted cut point appears.
- Updated scrollback tests to the Alt+L display-reset binding main adopted.
2026-07-31 19:23:33 +02:00
can1357 7c0ba657d5 Merge PR #7141: fix(bash): scope shell snapshots per uid so shared-/tmp accounts don't EACCES (@dangreco) 2026-07-31 19:16:57 +02:00
can1357 03c923d376 Merge PR #7140: fix(agent): suppress redundant xd:// mount notice after catalog rebuild (@roboomp) 2026-07-31 19:16:57 +02:00
can1357 2a89eec73e Merge PR #7135: fix(telemetry): merge OTEL_RESOURCE_ATTRIBUTES into export resource (@roboomp) 2026-07-31 19:16:57 +02:00
can1357 71c6585bb4 Merge PR #7129: perf(tui): batch persistence work off the render path (@wolfiesch) 2026-07-31 19:16:56 +02:00
can1357 305ad95a20 fix(task): guard deferred launch work 2026-07-31 19:16:56 +02:00
can1357 48fce3aa85 fix(web-search): scope DuckDuckGo dates to metadata 2026-07-31 19:16:52 +02:00
can1357 060ae77d21 Merge PR #7122: fix(web-search): extract duckduckgo result timestamps for date bounds (@roboomp)
# Conflicts:
#	packages/coding-agent/src/web/search/providers/duckduckgo.ts
#	packages/coding-agent/test/tools/web-search-duckduckgo.test.ts
2026-07-31 19:16:52 +02:00