Peter Steinberger
c23d66e3b5
refactor: consolidate coercion ownership ( #122692 )
...
* refactor: consolidate coercion ownership
* test: align shard check with weighted planning
* chore: refresh plugin SDK API baseline
2026-08-12 09:25:28 -07:00
Peter Steinberger
67dd56c51e
test(cron): focus direct delivery coverage ( #122621 )
...
Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Amp <amp@ampcode.com >
2026-08-12 05:43:18 -07:00
Peter Steinberger
b080dd1e76
refactor: consolidate coercion contracts ( #122458 )
...
* refactor: consolidate coercion contracts
Centralize exact string, record, numeric, date, Boolean, argument, and structured-error coercions while preserving call-site semantics.
Migrate canonical-name collisions and deprecated internal SDK bypasses, deleting 55 net production/tooling lines. Expand declaration ownership enforcement to 101 allowed helpers and add a narrow export-completeness audit.
* fix: preserve standalone script coercions
Keep copied Control UI tooling self-contained and retain the trusted release harness module-relative source seam when the harness runs against an old target cwd.
2026-08-11 23:26:37 -07:00
Peter Steinberger
964c8c84c1
refactor: consolidate coercion ownership ( #122299 )
...
* refactor: consolidate coercion ownership
Centralize four canonical coercion helpers, migrate exact core and plugin duplicates through narrow Plugin SDK facades, and enforce declaration and plugin-normalization ownership boundaries.
The sweep adds eight focused SDK exports while deleting more production and tooling code than it adds. User-visible behavior is unchanged except for safer equivalent object and UI parsing at existing boundaries.
* fix: guard integer option ownership
Register resolveIntegerOption with the canonical function owner and extend the declaration-guard fixture so future local duplicates fail validation.
* fix: keep integer helpers on numeric facade
Remove the unshipped duplicate string-coerce exports and route every affected plugin consumer through the existing number-runtime contract.
* fix: point numeric coercion to number runtime
Make boundary and declaration diagnostics recommend the canonical numeric facade, with failing-before coverage for both guidance paths.
2026-08-11 17:14:53 -07:00
Peter Steinberger
e74be5d41d
refactor: eliminate final wrapper-shadowing hazards ( #122157 )
...
* refactor: disambiguate wrapper-shadowed exports
* test: align renamed session and facade boundaries
* test: cover renamed runtime mock exports
* refactor: align remaining wrapper owner call sites
* test: align overlap-rebased runtime mocks
* refactor: preserve public SDK names after overlap rebase
* chore: regenerate wrapper shadowing baselines
* test: align cron model selection mocks
2026-08-11 13:34:24 -07:00
Peter Steinberger
4f6a6d9819
fix(cron): record stream failures before alerts ( #122187 )
...
Ensure exhausted stream-source restarts finalize durable cron run history before the existing generic failure alert is delivered.
2026-08-11 11:27:10 -07:00
Peter Steinberger
3d76246792
refactor: eliminate final export name collisions ( #122083 )
...
* refactor: resolve final export name collisions
* refactor: update remaining collision rename consumers
* style: format rebased auth helpers
* test: update remaining session entry mocks
* test: update remaining runtime mock exports
* test: update delivery info path mock
* refactor: reconcile combined collision sweeps
* chore: regenerate collision and sdk baselines
2026-08-11 11:18:24 -07:00
Peter Steinberger
ebb2770000
refactor: eliminate export name collisions ( #122084 )
...
* refactor: eliminate export name collisions
* chore(scripts): burn resolved collision baselines
* refactor: narrow legacy session load options
* chore: refresh SDK and session debt baselines
* refactor: adopt upstream secrets collision fix
* test(plugin-sdk): mock renamed session store core
* fix(scripts): track renamed session accessor core
2026-08-11 10:41:50 -07:00
Peter Steinberger
cad77fb39c
refactor: consolidate remaining coercion helpers ( #122020 )
2026-08-11 10:22:01 -07:00
Peter Steinberger
e390781534
refactor: burn cross-directory export name collisions ( #121893 )
...
* refactor: name subsystem logger exports
* refactor(test): distinguish exported test doubles
* refactor: consolidate canonical owner helpers
* refactor: give cross-domain helpers distinct names
* chore(lint): ratchet collision debt baselines
* fix(test): complete collision rename consumers
* fix(test): update remaining collision mock consumers
* fix(test): update transcript reader mock export
* refactor: keep embedded logger name at its owner
* fix(test): align embedded logger mock with owner
* refactor: name shared assistant phase extraction
* fix(ui): update assistant phase extractor import
* chore(generated): refresh collision and SDK baselines
* style(test): format merged plugin mocks
* chore(sdk): refresh API content hashes
2026-08-11 06:50:22 -07:00
Peter Steinberger
dd55770715
fix(channels): preserve plugin reply suppression across delivery paths ( #121159 )
...
* fix(channels): preserve reply transform suppression
* test: split ACP channel transform coverage
* chore: refresh plugin SDK API baseline
2026-08-11 06:28:20 -07:00
Peter Steinberger
12165769c7
refactor(agents): move OpenRouter failover ownership to its plugin and derive reason schemas from one tuple ( #121898 )
...
* refactor(agents): centralize failover ownership and reasons
* test(agents): move OpenRouter failover cases to plugin owner
* fix(agents): preserve prepared provider failover ownership
* test(agents): avoid failover mock shadowing
* fix(agents): preserve provider owner in error copy
* fix(agents): complete provider owner propagation
* chore(plugins): refresh failover type closure hashes
2026-08-11 04:30:18 -07:00
joshavant
4b08d9aa75
test(cron): narrow declarative add results
2026-08-11 04:47:10 -05:00
joshavant
acb61d365e
fix(cron): preserve authority during validated updates
2026-08-11 04:47:10 -05:00
joshavant
8bc7dbb07a
fix(gateway): carry cron authority through agent RPC
2026-08-11 04:47:10 -05:00
joshavant
13330e3c82
fix(cron): validate fallback authority before persistence
2026-08-11 04:47:10 -05:00
joshavant
5932e1a93d
fix(cron): persist normalized authority identity
2026-08-11 04:47:10 -05:00
joshavant
41f1c9bc75
fix(cron): preserve authority across downgrades
2026-08-11 04:47:10 -05:00
joshavant
bb873c8806
fix(cron): preserve Codex app authority
2026-08-11 04:47:10 -05:00
Peter Steinberger
fa03d9b913
refactor: consolidate coercion helpers ( #121366 )
...
* refactor: consolidate coercion helpers
* fix: remove duplicate coercion imports
* fix: preserve serialized coercion guard
* chore: ratchet coercion helper carve-outs
* fix(test): keep gauntlet subprocess startup lean
* fix: preserve imported session timestamp semantics
* fix: preserve catalog timestamp string semantics
* chore: align plugin SDK surface ratchet
* fix: preserve trajectory and SDK string contracts
* fix(test): preserve QA record assertion semantics
* fix: complete standalone record guard rename
* refactor(cron): use canonical string coercion
* fix(acpx): preserve Pi timestamp parsing
* test(channels): adapt custody test harnesses
* test(telegram): classify media harness as test support
* test(acpx): split timestamp contract coverage
* test(channels): support generated custody contracts
* chore: ban the full coercion helper name set
Extends the declaration guard to all eleven consolidated helper names and
renames the cron schedule-identity readNumber wrapper to readScheduleInteger
so the banned generic name cannot regrow.
* fix(scripts): repair release-validation guard drift and lint cause
Restores the renamed isJsonRecord guard in assertTrustedWorkflowHarness after
main added isRecord call sites in parallel, and attaches the caught YAML error
as the thrown error cause (preserve-caught-error was red on main).
* fix: preserve Claude timestamp string semantics
* fix: preserve persisted timestamp string semantics
* fix: preserve date-first timestamp contracts
* fix(openai): harden delegation failure formatting
* chore: close coercion helper guard gaps
* test(openai): model non-error delegation rejection
* chore: refresh plugin SDK API contract
* fix(tasks): use canonical string field reader
* fix(ai): use canonical provider error field coercion
* fix(browser): migrate native bootstrap coercion
* docs(plugin-sdk): clarify text record export compatibility
* fix(gateway): normalize approval execution identity
* test(outbound): isolate message action poll harness
2026-08-11 00:02:18 -07:00
Peter Steinberger
36fbd869ed
refactor(agents): eliminate export name collisions ( #121768 )
...
* refactor(auth): consolidate profile helper owners
* refactor(agents): consolidate subagent registry reads
* refactor(agents): disambiguate runtime placement helpers
* refactor(agents): disambiguate helper exports
* chore(scripts): burn export collision debt
* test(agents): follow moved subagent read owner
2026-08-10 22:24:33 -07:00
Peter Steinberger
aba8f10bc3
fix(agents): stop reporting undelivered subagent results as delivered ( #121837 )
...
* fix(agents): record intentional non-delivery truthfully
* fix(agents): stop reporting sinkless cron completions as delivered
The inactive-cron guard runs before requester-agent dispatch. Its regression now asserts the recorded intentional non-outcome before verifying that queue, gateway, and message sends remain untouched.
* test(agents): migrate announce outcome fixtures
* chore: drop changelog edit per repo policy
2026-08-10 22:04:29 -07:00
Josh Avant
73a9eed95b
refactor(audit): add canonical admitted-run context ( #120534 )
...
* feat(audit): carry canonical admitted execution context
* fix(agents): preserve admitted context across retries
* fix(worker): fence legacy launch dialect
* test(gateway): track approval temp dirs
* fix(plugin-sdk): preserve harness attempt compatibility
* fix: close delegated run authority at owner boundaries
* fix: internalize delegated authority validators
* refactor: split delegated authority proof surfaces
* refactor: centralize command admission identity
* test: claim runtime tool authority
* fix(gateway): keep lifecycle cleanup within static budgets
* fix(agents): revalidate harness policy authority
* fix(agents): fence awaited approval capability results
* test(copilot): supply required harness capability fixtures
* fix(agent): preserve scoped embedded run admission
* fix(agent): preserve keyless and worker authority
* test(agent): bind incomplete-turn authority
* docs: preserve execution authority invariants
* chore(plugin-sdk): regenerate API baseline
* fix(gateway): notify pending claim closure
* fix(gateway): revalidate delegated tool authority
* fix(plugin-sdk): keep source guard internal
* fix: close delegated authority races
* fix: revalidate delegated side effects
* fix: close harness authority projection gaps
* fix: align authority integration types
* fix: isolate settled harness finalization
* fix: fence recovery identity finalization
* fix: preserve committed session worktrees
* fix: preserve worker placement agent identity
* fix: fence active harness tool work
* fix(plugins): restore embedded run admission owner
* chore(plugin-sdk): compose integrated surface budgets
* fix(copilot): keep finalization attempt type internal
* fix(plugins): complete admission owner type imports
* test(harness): use settled finalization attempt shape
* fix(security): retain exact side-run and approval authority
* fix(security): preserve protected authority through terminal sweep
* fix(agents): follow moved recovery store owner
* fix(ci): align integrated authority owners with gates
* fix(plugins): distinguish embedded agent adapter export
* chore(plugin-sdk): regenerate API baseline after rolling integration
* refactor(gateway): keep session authority within owner budgets
* fix(gateway): keep session helpers private
* docs(plugin-sdk): name the V2 parameter subpath
* chore(integration): reconcile worker and SDK surfaces
* docs(plugin-sdk): require the V2 host API floor
* chore(plugin-sdk): regenerate after proxy-auth integration
2026-08-10 23:15:20 -05:00
Peter Steinberger
58a538767c
fix(security): centralize provider diagnostic redaction ( #121599 )
...
* fix(security): centralize provider diagnostic redaction
* fix(workers): redact finishing diagnostics
* fix(security): fail closed on malformed diagnostics
* fix(security): redact media wrapper diagnostics
* fix(security): normalize diagnostic field redaction
* fix(security): redact diagnostic media URIs
* fix(ai): preserve diagnostic compatibility in error projection
* refactor(ai): simplify diagnostic error handling
* fix(security): redact credential query diagnostics
* fix(security): redact diagnostic media arrays
* fix(security): redact diagnostic credential headers
* test: align shared expectations with current runtime contracts
* test(ui): align managed media and picker expectations
* fix(security): redact plural media diagnostics
* fix(ai): preserve bracketed provider errors
* fix(security): cover generic diagnostic credentials
* fix(security): redact prefixed diagnostic JSON
* fix(security): redact embedded diagnostic JSON
* test(agents): align cache trace media redaction
* fix(security): redact cookie diagnostics
* refactor(ai): isolate diagnostic host policy
* refactor(ai): narrow diagnostic helper exports
* fix(security): bound diagnostic descriptor reads
* fix(security): bound diagnostic graph traversal
2026-08-10 18:53:45 -07:00
Peter Steinberger
dd2aedf08f
refactor: burn export name collision debt ( #121767 )
...
* refactor(tasks): disambiguate lifecycle helpers
* refactor(channels): clarify account and id helpers
* refactor(media): separate SDK facades from cores
* refactor(auto-reply): consolidate command helpers
* refactor(cli): disambiguate registration helpers
* refactor(gateway): clarify runtime and test helpers
* chore(scripts): burn resolved collision debt
* fix(refactor): update remaining core callers
* fix(refactor): update remaining UI callers
* chore(plugin-sdk): refresh API baseline
2026-08-10 18:17:13 -07:00
Peter Steinberger
3cd034f7a8
fix(ci): release workflow checks fail on macOS Bash 3.2 ( #121669 )
...
* fix(ci): keep release workflow checks portable on macOS
* fix(ci): repair current main compact shard regressions
* fix(ci): repair latest main validation drift
* fix(approvals): restore native account ownership gates
* fix(ci): repair skill workshop validation drift
* fix(ci): align approval route selection with main
* fix(ci): remove stale skill workshop test exports
* fix(ci): align repairs with latest main
2026-08-10 16:11:53 -07:00
Peter Steinberger
1ced7441eb
refactor(agents): move announce, completion, recovery, and registry families into concept directories ( #121553 )
...
* refactor(agents): move announce family into subagents/announce/
* refactor(agents): move completion and main-session recovery families
* refactor(agents): move registry family into subagents/registry
* refactor(agents): update registry state type imports
* style(agents): format moved subagent imports
* test(agents): preserve isolated registry test routing
* fix(scripts): recognize relocated subagent announce seams
2026-08-10 16:06:39 -07:00
Peter Steinberger
21e7f200aa
test(cron): align alert assertions with generic failure messages
2026-08-10 11:35:13 -07:00
Ayaan Zaidi
4c951398ef
fix(messages): keep runtime details out of chat alerts ( #121600 )
...
Keep raw commands, paths, and provider errors out of ordinary chat while preserving explicit raw diagnostics and structured admin history.
Default command progress is status-only; `/verbose full` and `commandText: "raw"` retain diagnostic detail.
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-10 21:37:48 +05:30
Peter Steinberger
8e1c238c1c
fix(cron): prevent invalid timestamps from stranding jobs ( #121394 )
...
* fix(cron): harden scheduling timestamp boundaries
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* test(prompts): refresh cron tool snapshots
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* test(cron): keep config revision fixture Date-valid
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* refactor(cron): consolidate scheduling lifecycle
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* refactor(cron): keep task history dependencies acyclic
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* fix(cron): canonicalize timestamp auto-disable
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* test(cron): verify startup overflow notifications
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
* chore(ci): repair main baseline gates
Amp-Thread-ID: https://ampcode.com/threads/T-019fe949-92e4-76bd-8cfa-aea44fcfaebe
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-10 03:20:23 -07:00
Peter Steinberger
145ec3778f
refactor(agents): consolidate failover classification into one substrate ( #121341 )
...
* refactor(agents): consolidate failover classification substrate
* chore(agents): align failover refactor guards
* fix(agents): preserve leading 429 status handling
* perf(agents): retain lazy failover hook gating
* chore(agents): refresh failover guard artifacts
2026-08-09 23:58:44 -07:00
Peter Steinberger
3d5f916523
fix(protocol): align fallback reason schemas ( #121334 )
...
Worker live events rejected tls_certificate fallback payloads because duplicated closed reason lists had drifted. Establish one canonical dependency-light fallback vocabulary and share its explicit TypeBox schema across worker and cron protocol boundaries.
2026-08-09 19:02:23 -07:00
Peter Steinberger
42283cb609
fix: completed tasks no longer block gateway suspension ( #121267 )
...
* fix(gateway): close task terminals at run end
* refactor(agents): keep terminal task ownership internal
* test(gateway): type task-owned terminal fixtures
* test(infra): split agent run task ownership coverage
2026-08-09 15:45:44 -07:00
Peter Steinberger
e86512f93b
fix(cron): honor permanent provider classifications ( #114113 )
2026-08-09 11:40:24 -07:00
Ayaan Zaidi
be6f4c3d6a
fix(telegram): make expired Codex automation alerts actionable ( #121067 )
...
* fix(cron): make Codex auth alerts actionable
* fix(telegram): authorize Codex login callbacks centrally
* fix(telegram): make callback outcomes explicit
* fix(telegram): use typed callback result
* test(cron): assert typed delivery payloads
* test(cron): require captured reply payload
* test(cron): require captured reply text
* fix(telegram): authorize login callbacks as commands
* chore(plugin-sdk): refresh API baseline
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-08-09 21:52:23 +05:30
Peter Steinberger
efb02a0671
fix(cron): prevent jobs disappearing during paginated refreshes ( #121084 )
...
* fix(cron): keep paged consumers on one snapshot
* test(cron): type malformed UI fixture
* test(cron): update canonical list fixtures
2026-08-09 09:05:30 -07:00
Peter Steinberger
0303af17f3
test: remove low-value implementation assertions ( #121085 )
...
* test: remove low-value implementation assertions
* test: refresh native i18n inventory
2026-08-09 08:48:48 -07:00
Peter Steinberger
8abefef5d5
fix(cron): prune scratch after durable job removal ( #121024 )
2026-08-09 08:23:48 -07:00
Peter Steinberger
2433fa213c
fix(cron): preserve canonical failure alert routes ( #116933 )
2026-08-09 07:17:56 -07:00
Peter Steinberger
8616c0c374
refactor: finish shared test helper migrations ( #120996 )
...
* test: finish shared helper migrations
* test: fix helper migration CI
* style: fix test import ordering
* test(acpx): restore deferred void types
* test: fix helper migrations after rebase
2026-08-09 06:00:06 -07:00
Peter Steinberger
2d33a15e3e
refactor(sessions): consolidate batch patch mutation ownership ( #121017 )
...
* refactor(sessions): consolidate batch patch mutation ownership
Related to #120873 .
* refactor(sessions): preserve SDK contracts in shared mutation owner
Related to #120873 .
2026-08-09 05:20:52 -07:00
Peter Steinberger
05e534eae5
fix(cron): deliver final results after heartbeat acknowledgements ( #113924 )
2026-08-09 04:27:23 -07:00
Peter Steinberger
135278c896
fix(cron): avoid no-op writes and unbounded page copies ( #120910 )
...
* fix(cron): avoid no-op writes and unbounded page copies
* fix(cron): preserve read maintenance invariants
2026-08-09 02:40:47 -07:00
Goutam Adwant
13cb098cab
fix(cron): remove deleted job sessions ( #119520 )
...
* fix(cron): remove deleted job sessions
* fix(cron): guard deferred session cleanup
* test(cron): remove invalid cleanup await
* fix(cron): fence deferred session cleanup
* fix(cron): share removal cleanup fence
Co-authored-by: Goutam Adwant <workwithgoutam@gmail.com >
* fix(cron): preserve stored add result type
Co-authored-by: Goutam Adwant <workwithgoutam@gmail.com >
* fix(cron): release lock before session cleanup
Co-authored-by: Goutam Adwant <workwithgoutam@gmail.com >
* fix(cron): avoid materializing cleanup store
Co-authored-by: Goutam Adwant <workwithgoutam@gmail.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-09 00:49:54 -07:00
Peter Steinberger
1fc9d15804
refactor: simplify message channel routing ( #120925 )
...
* refactor: simplify message channel routing
* test: complete message channel resolution mocks
2026-08-08 23:32:01 -07:00
Peter Steinberger
7a8eee4a36
perf(agents): keep turn-path model catalog reads off the full live build ( #120834 )
...
* perf(agents): keep turn-path model catalog reads off the full live build
First agent turns (embedded and cron) resolved thinking capability through
loadPreparedModelCatalogSnapshot without readOnly, which materialized the
full live model-runtime catalog: ambient synthetic-auth discovery fanned out
to every registered provider and loaded plugin discovery modules through
jiti source transform (3,172 TS modules, 36s event-loop block, +600MB heap,
58.7s model-selection on a cold gateway).
- add loadProviderScopedThinkingCatalog: manifest metadata first, then a
provider-scoped read-only static catalog, then scoped live discovery only
for runtime-discovery providers (preserves #116584 Ollama semantics)
- route scopedLiveProviderDiscovery through the scoped read-only loader
- scope live-mode ambient synthetic-auth refs to the requested providers
- bound the last-resort synthetic-auth sweep to discovery entry modules
- memoize per-turn plugin skill dir resolution/republish (single-slot,
lifecycle-cleared; was a full walk + symlink republish every turn)
Cold first turn 72.7s -> ~22s wall (remaining cost is provider prefill of
the ~19.5k-token default prompt); model-selection 58,726ms -> 124ms.
* test(agents): align model-catalog.runtime mocks with scoped thinking catalog seam
Explicit vi.mock factories must export every binding prod touches; the new
loadProviderScopedThinkingCatalog export is now mocked everywhere the module
is stubbed, and the live-model-switch Ollama hydration test asserts the new
provider-scoped seam instead of the retired unscoped snapshot call shape.
* test(agents): export scoped thinking catalog from every prepared-catalog mock; split synthetic-auth helpers
- add loadProviderScopedThinkingCatalog to all explicit prepared-model-catalog
and model-catalog.runtime mock factories (vi.mock factories must export every
binding prod touches)
- move synthetic-auth ref scoping/resolution into
prepared-model-runtime.synthetic-auth.ts; keeps facts under the max-lines cap
* test(agents): prove scoped thinking hydration for runtime-only models
Boundary proof for the ClawSweeper review gap: the three-tier helper stops at
manifest or scoped-static when they resolve, and runs provider-scoped live
discovery (no broad fanout) only for runtime-only models; cron selection
hydrates through the same scoped helper and skips it entirely for thinking=off.
* test(agents): accept rest args in scoped thinking catalog mocks
2026-08-08 22:48:40 -07:00
Peter Steinberger
4b7454bb1c
fix(sessions): batch archives no longer repeat full-store work ( #120873 )
...
* perf(sessions): batch session patch storage work
Batch archive patches now share store projection, persistence, cron scanning, and direct audit appends so multi-session archives complete without repeated full-store work.
Refs #120871
* fix(ci): remove unused batch archive exports
* test(sessions): inject failures through append-only audit path
2026-08-08 22:12:08 -07:00
Peter Steinberger
7b076155d0
refactor: clarify message channel validation ( #120872 )
2026-08-08 21:30:22 -07:00
Josh Avant
a345ede685
fix(codex): preserve configured MCP tools in scheduled turns ( #120366 )
2026-08-08 19:25:39 -05:00
Victor Sumner
417f3ace5c
fix(cron): isolated heartbeat recovers after session archival ( #120314 )
...
* fix(cron): recover archived heartbeat sessions
* fix(cron): preserve heartbeat initialization guard
2026-08-08 12:50:16 -07:00