Commit Graph

66940 Commits

Author SHA1 Message Date
Ayaan Zaidi
0e154d0467 fix(auto-reply): keep typed overloaded failures on the surfaced-copy path
Shipped behavior pins overloaded FailoverErrors to immediate dedicated copy
(agent-runner-execution.test.ts 'surfaces typed overloaded failures'); only
timeout and server_error reasons join the transient retry gate.
2026-07-12 10:06:26 +05:30
Ayaan Zaidi
57e0ea8f75 fix(auto-reply): honor structured FailoverError reasons in terminal catch classification
context_overflow and transient (timeout/server_error/overloaded) FailoverError
reasons now classify structurally like billing/rate_limit already do, instead
of relying on message text that may lack overflow or HTTP-status tokens. A
typed transient failure without a leading status token now takes the single
transient retry; typed context overflow suppresses the generic failure reply.
Part of #104219 (row 12).
2026-07-12 10:06:26 +05:30
Ayaan Zaidi
d03defb8b4 refactor(plugins): single-source CORE_BUILT_IN_MODEL_APIS and add provider auth-literal parity test
gateway-startup-plugin-ids duplicated the built-in model-API set byte-for-byte
with nothing enforcing sync; provider-config-owner now owns it. New parity
test proves bundled provider manifests and runtime provider.auth declare the
same optionKey/cliFlag/envVar/method literals, guarding against silent
wizard-vs-runtime auth drift. Part of #104219 (row 12).
2026-07-12 10:06:26 +05:30
Ayaan Zaidi
596603f7d3 refactor(sessions): route get-reply-run session refresh through the accessor
Drops the last non-doctor whole-store resolveSessionStoreEntry read in the
reply pipeline; exact working-set key plus accessor disk read match the
sibling refresh sites in runPreparedReply. Part of #104219 (seam 8).
2026-07-12 10:06:11 +05:30
Vincent Koc
f7e0a6147c refactor(pr): centralize prepare gate planning (#104961) 2026-07-12 12:32:20 +08:00
Vincent Koc
5d03825597 refactor(qa): isolate scenario command lifecycle (#104958) 2026-07-12 12:27:29 +08:00
Vincent Koc
a378f7970b chore: refresh plugin SDK API baseline (#104954) 2026-07-12 12:21:54 +08:00
Peter Steinberger
f802a6f8bc fix: update managed macOS Gateways from runtime snapshots (#104946)
* fix(updater): migrate validated gateway snapshots

* test(updater): declare snapshot maintenance helpers
2026-07-11 21:20:08 -07:00
Vincent Koc
46aa7aed3a fix(sqlite): validate state before writable setup (#104952) 2026-07-12 12:13:37 +08:00
Vincent Koc
ef13c2fe98 refactor(codex): unify protocol artifact staging (#104948) 2026-07-12 12:09:17 +08:00
Vincent Koc
982efe51e4 refactor: remove dead UI and parser helpers (#104944)
* refactor(tool-call-repair): remove unused parser wrapper

* refactor(ui): remove dead private helper surfaces
2026-07-12 12:08:56 +08:00
Vincent Koc
bd0ae71ebe test(release): declare ledger reference helper 2026-07-12 12:08:10 +08:00
Vincent Koc
d290f40000 style(release): format ledger repair test 2026-07-12 12:08:10 +08:00
Vincent Koc
e4a9398396 fix(release): allow generated ledger repair 2026-07-12 12:08:10 +08:00
Vincent Koc
b1cda07878 fix(release): preserve original PRs for named backports 2026-07-12 12:08:10 +08:00
WhatsSkiLL
86b10ffb8e Android: polish workspace file navigation (#104873)
* fix(android): polish workspace file navigation

* fix(android): serialize workspace file requests

---------

Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
Co-authored-by: Colin Johnson <colin@solvely.net>
2026-07-12 00:03:46 -04:00
Vincent Koc
ec11440176 refactor(i18n): extract locale sync planning (#104943) 2026-07-12 12:02:34 +08:00
Vincent Koc
a4cc24d113 fix(sqlite): reject corrupt backup and compact sources (#104938) 2026-07-12 11:53:03 +08:00
Vincent Koc
32631fdfac refactor(android): remove retired voice wake stack (#104914)
* refactor(android): remove retired voice wake stack

* chore(android): refresh native i18n inventory
2026-07-12 11:52:51 +08:00
Vincent Koc
630a8c256e test(cli): require numeric retry timeouts 2026-07-12 11:49:18 +08:00
Vincent Koc
97d4ee9c51 refactor(agents): centralize attempt terminal outcome (#104936) 2026-07-12 11:49:09 +08:00
Peter Steinberger
6b95f98fe7 fix(core): make indexed access explicit across remaining src (NUIA phase 3b) (#104773)
* fix(core): make indexed access explicit in auto-reply, infra, and config

Part 1/3 of the src NUIA phase-3b burn-down (#104600): iteration and
destructuring over index reads, boundary guards on parsed input, and
named invariants. Config path walkers bind the path head once; SQLite
migration key handling is hoisted without query-shape changes.

* fix(core): make indexed access explicit in cli, gateway, commands, security, shared

Part 2/3: argv/token selection restructured, gateway event/attachment
invariants named, security parsers stay fail-closed (invariant
violations throw), edit-distance matrices access checked entries.

* fix(core): make indexed access explicit across remaining src surfaces

Part 3/3: channels, plugins, process, cron, plugin-sdk, media, logging,
tui, hooks, daemon, and small directories. Latent bug fixed: a tailnet
resolver could leak undefined through a string|null contract and now
fails with a descriptive local error.

* fix(core): keep optional boundaries optional after per-commit review

Review findings: expectDefined misused where absence is a legitimate
state. CLI --profile/route-args missing next tokens take their existing
miss paths; help normalization compares --help against the last
positional again; first-time plugin install spreads absent cfg.plugins;
denylist scan iterates manifest dependency entries instead of throwing
on omitted sections; tailnet resolver returns a guaranteed string at
the source instead of a caller-side undefined throw.

* refactor(core): closed-key provider labels and honest optional passthroughs

PROVIDER_LABELS becomes a satisfies-typed closed record (static reads
provably defined; dynamic lookups go through providerUsageLabel with
honest string|undefined). Status-scan overview passes its optional
params through unchanged instead of asserting them.

* fix(channels): make getChatChannelMeta honestly optional

The original signature claimed ChatChannelMeta while leaking undefined
on bundled channel id metadata drift; three of four callers already
handled absence. The return type now says so, and the one assuming
caller falls back to the raw channel label.

* fix(core): index-safety for post-rebase main drift

Covers the sqlite-sessions flip and auth-source-plan code that landed
mid-phase, plus the channel-validation test consuming the now honestly
optional getChatChannelMeta.

* refactor(channels): split chat-meta accessors along the SDK contract

getChatChannelMeta keeps its shipped plugin-SDK signature (defined for
bundled ids, fail-loud on impossible misses); new findChatChannelMeta
carries the drift-tolerant optional contract for core auto-enable and
formatting paths.

* fix(qa-channel): own channel metadata instead of a guaranteed-undefined catalog lookup

qa-channel spread getChatChannelMeta over an id that is never in the
bundled catalog, shipping an empty setup meta by accident; the fail-loud
SDK accessor exposed it. The channel now declares its metadata once.

* fix(gateway): heartbeat projection lookahead is optional at the transcript tail

expectDefined wrapped messages[i + 1] whose absence on the final message
is the normal case; the adjacent ternary already handled it. Restores
the plain optional read with an explicit guard in the pair condition.

* fix(plugin-sdk): channel plugin factory tolerates non-bundled channel ids again

createChannelPluginBase spreads bundled catalog meta for ANY channel id,
where absence is the normal case for external plugins; the resolver is
honestly optional again while the exported bundled-id accessor keeps the
fail-loud contract.

* fix(core): spreads of optional config sections stay optional

Fresh-setup and first-install paths (crestodian setup inference, hook
installs, agent config base, target agent models) legitimately lack the
section being rebuilt; spreading undefined is the shipped {} semantics.
Removes the remaining gratuitous assertion wraps found by tree audit.
2026-07-11 20:47:34 -07:00
Vincent Koc
6bc5fc2a36 docs(qa): require a tool coverage summary path 2026-07-12 05:44:23 +02:00
Peter Steinberger
5b29c37137 ci: accept trusted unsigned release merge heads (#104838) 2026-07-11 20:42:03 -07:00
Peter Steinberger
a79554c281 ci: bound QA smoke profile runtime (#104909) 2026-07-11 20:41:18 -07:00
Vincent Koc
ddbec923d4 fix(plugin-sdk): cover the full public API baseline 2026-07-12 05:38:05 +02:00
Vincent Koc
350bac4e0e improve(sqlite): harden state lifecycle and snapshots (#104859)
* fix(sqlite): enable bounded vacuum and hot indexes

* fix(sqlite): serialize shared schema upgrades

* fix(sessions): reject stale transcript rewrites

* fix(sqlite): surface busy checkpoints and refresh registry

* fix(backup): verify sqlite snapshots

* feat(doctor): compact shared sqlite state

* test(sqlite): align hardening helpers

* fix(backup): respect plugin sqlite ownership

* fix(backup): snapshot plugin sqlite opaquely

* fix(doctor): reject mixed sqlite actions

* fix(backup): reject unsafe sqlite snapshots

* fix(sessions): track unconditional transcript replacements

* fix(backup): reject page-aligned sqlite truncation

* fix(backup): reject state-root case aliases

* docs: refresh sqlite maintenance map

* fix(sqlite): register doctor compaction boundary

* fix(sqlite): serialize fresh database initialization

* fix(sqlite): prove main v5 agent upgrade

* perf(sqlite): seek latest transcript messages

* test(sessions): align terminal freshness fixtures with SQLite

* docs: refresh generated map
2026-07-12 11:35:22 +08:00
Peter Steinberger
a74fb334a7 test(live): retry GPT-5.6 nonce mismatches (#104905) 2026-07-11 20:33:49 -07:00
Peter Steinberger
274f12493e test(cli): tolerate bounded usage-cost retries (#104883) 2026-07-11 20:32:38 -07:00
Vincent Koc
9443a5914e chore(apps): refresh native i18n inventory 2026-07-12 05:28:28 +02:00
Vincent Koc
26731eb403 docs: refresh generated docs map (#104926) 2026-07-12 11:26:51 +08:00
Vincent Koc
c55ea0b453 docs: refresh generated docs map 2026-07-12 11:24:30 +08:00
Vincent Koc
7984973a8c test(sessions): align terminal freshness fixtures with SQLite (#104925) 2026-07-12 11:21:07 +08:00
Alix-007
d0764f3566 fix(browser): preserve own profile entries (#101694)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 20:10:59 -07:00
Peter Steinberger
9ea1fe9450 fix(docs): preserve fenced translation literals 2026-07-11 23:04:34 -04:00
Peter Steinberger
ac89350327 feat(apps): review durable approvals on mobile (#104913)
* feat(apps): Android, iPhone, and Watch approval clients

Squash-rebased #103912 segment onto the deep-links tip on current main.
Native approval surfaces: iOS approval presentation with gateway-switch
lease preservation and resolution fencing, watchOS inbox + approval
actions with shipped-shape payload codec, Android approval notices with
publication-tokened dismissal. Native i18n inventory regenerated.

(cherry picked from commit 428a76670ffeede54248b7bd7aa4438e2589851b)
(cherry picked from commit 80225d5707c3645eeea5435f266131037b50ede6)
(cherry picked from commit 2a23b714dc30d773a294aa45adc617e46b80732e)
(cherry picked from commit 9ff1153827769e2cbab7c11c153f0f8634662c28)
(cherry picked from commit 5b25723525bd562e5f97478af492f7b46ad30fd1)
(cherry picked from commit 8c80e8467b5fe89aad0d4c74a0573f1600ed3af9)
(cherry picked from commit ad4037bc9846bf6f082b41c129ee68aa344576c3)
(cherry picked from commit fdf767dd662cff3c8a5a6d571f38f153410651ca)
(cherry picked from commit 00c120376ffd992ea68ce29254a9bc0a25ed1740)
(cherry picked from commit f36a95213e)
(cherry picked from commit e2c25cbe2baacab44d21871d8cb6734704f065ac)
(cherry picked from commit 7c4fda519080486d341a9f4df36d63f9e24b1235)
(cherry picked from commit 1b3d4eda3dc5988012124597f9454ae21fb187a1)
(cherry picked from commit 2a60619722)
(cherry picked from commit 6f0c386567)
(cherry picked from commit 784a5857b7)
(cherry picked from commit cbf294e026841c9bc2799da0fc7db666a69c52db)

* fix(apps): harden approval reconciliation and watch states
2026-07-11 19:59:07 -07:00
Peter Steinberger
9c33a5acfb fix(ui): render session catalogs inside the shared sessions scroller (#104808)
External session catalog groups (Claude/Codex) now render inside the
sidebar's sessions scroller instead of stacking as sibling scroll-less
sections below it. This restores one scrollable sessions list, aligns
catalog heads/rows with the main list's insets, and stops squeezed
catalog sections from painting over each other under the shell body's
overflow clip.
2026-07-11 19:58:39 -07:00
Peter Lee
5e064bb7b4 chore: remove dead sanitizeThinkingSignatures field from transcript policy (#99880)
* chore: remove dead sanitizeThinkingSignatures field from transcript policy

The sanitizeThinkingSignatures field on TranscriptPolicy and
AgentRuntimeTranscriptPolicy was orphaned when the google-antigravity
provider was removed in 382fe8009a. That commit deleted the only
consumer (sanitizeSessionHistory in google.ts) but left the field
declaration in both types and the default value, plus stale
references across test fixtures.

Remove the field from:
- TranscriptPolicy type and DEFAULT_TRANSCRIPT_POLICY (transcript-policy.ts)
- AgentRuntimeTranscriptPolicy (runtime-plan/types.ts)
- All test/mock/compact-harness references (14 sites)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* chore: remove blank lines from transcript policy cleanup

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Colin <colin@solvely.net>
2026-07-11 22:47:40 -04:00
scoootscooob
f5eafc1515 Recover cron tool warnings with final text (#104908) 2026-07-11 19:45:33 -07:00
Vincent Koc
2f946506bb fix(sessions): restore SQLite terminal freshness 2026-07-12 04:43:33 +02:00
Vincent Koc
2236246a43 refactor(android): remove unreachable chat code (#104887) 2026-07-12 10:41:42 +08:00
Vincent Koc
d2ad471a8c refactor(plugins): centralize registration rollback (#104902) 2026-07-12 10:39:15 +08:00
Peter Steinberger
d54722fbce test(sessions): stabilize reply init timestamps (#104900) 2026-07-11 19:37:46 -07:00
pick-cat
b874258ace fix(browser): invalidate stale roleRefs on main-frame navigation (#104308)
* fix(browser): bind refs to document lifecycle

Co-authored-by: Pick-cat <huang.ting3@xydigit.com>

* fix(browser): guard absent ref cache entries

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-11 19:32:00 -07:00
Vincent Koc
c37c8d5671 fix(plugin-sdk): resolve surface counts from source graph 2026-07-12 04:28:22 +02:00
Vincent Koc
5019d378af fix(e2e): install lifecycle signal handlers before sampling 2026-07-12 04:28:22 +02:00
Peter Steinberger
2b49020793 chore: ignore trajectory exports (#104858) 2026-07-11 19:27:01 -07:00
Vincent Koc
a5b70c5abe refactor(ci): centralize changed-path facts (#104897) 2026-07-12 10:26:32 +08:00
Peter Steinberger
68f0eee5ae fix(ui): harden workspace file editing (#104885)
* fix(ui): retain unsaved workspace file drafts

* fix(ui): reset restored draft hash

* fix(ui): keep all unsaved file drafts

* fix(ui): harden workspace file editing

* fix(ui): canonicalize workspace file identity

* fix(gateway): serialize workspace file saves globally

* chore: keep release notes in PR body

* docs: refresh generated docs map
2026-07-11 19:25:47 -07:00
Vincent Koc
01fc1ed02a refactor(scripts): extract legacy-store path domain (#104894) 2026-07-12 10:19:26 +08:00