Commit Graph

365 Commits

Author SHA1 Message Date
Peter Steinberger 73ae583263 refactor(tasks): simplify subagent activity tracking (#122198)
* refactor(tasks): simplify subagent activity tracking

* fix(android): single-source subagent activity expiry clock

* chore(i18n): refresh native source baseline
2026-08-11 12:30:49 -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 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 e6b356f35a fix(tasks): stream Codex subagent activity (#121899)
* fix(tasks): stream Codex subagent activity

* fix(tasks): honor registry access boundary
2026-08-11 00:32:08 -07: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 b985d5a1ed feat: stream live subagent progress in task events (#121549)
* feat(tasks): stream live subagent activity

* fix(tasks): correlate edit activity from start events

* fix(gateway): sanitize live task activity

* test(reply): align custody harnesses with lifecycle

* fix(outbound): preserve post-send recovery evidence

* fix(types): align reply harnesses with current contracts

* fix(tasks): preserve activity liveness and SDK parity

* test(sdk): avoid unsafe task summary assertion

* chore(contracts): refresh Plugin SDK API baseline
2026-08-10 18:37:58 -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 6dc77a37d9 refactor(agents): render failover user copy from one reason-keyed module (#121717)
* refactor(agents): centralize failover user copy

* refactor(agents): route failure callers through user copy

* refactor(qa): carry typed reply failure markers

* refactor(agents): keep failover copy import-light

* refactor(agents): pass structured failure copy context

* refactor(agents): isolate copy rendering from runtime state

* refactor(agents): separate copy rendering from sanitization

* refactor(agents): keep failover copy internals private

* fix(qa-channel): type failure markers on bus sends

* style(agents): brace failover copy conditions

* test(qa-lab): avoid map spread in failure cases

* chore(plugin-sdk): refresh failover closure hashes

* fix(agents): preserve generic runner fallback

* fix(qa): preserve text-only failure markers

* test(qa): type failure delivery fixture
2026-08-10 16:43:51 -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 815494955d feat: stream live edit diff progress (#121528)
* feat(agents): stream live edit diff progress

* fix(agents): keep live diff state internal

* fix(lint): remove unused import breaking main lint

* perf(agents): throttle live diff parsing
2026-08-10 02:38:25 -07:00
Peter Steinberger 8430fc0e3b refactor(agents): move spawn family into subagents/spawn (#121350)
* refactor(agents): move spawn family into subagents/spawn

* refactor(agents): keep spawn imports within lint budget
2026-08-09 19:51:29 -07:00
Peter Steinberger cb50289e28 fix(agents): keep removed background processes alive until exit (#113860)
* fix(agents): keep removed processes live until exit

* test(agents): isolate process registry lifecycle coverage

* chore(plugin-sdk): refresh API closure baseline
2026-08-09 06:04:40 -07:00
Peter Steinberger c9b346e216 fix(sessions): fence transcript writes by admitted run (#121003)
* fix(sessions): fence transcript writes by admitted run

* fix(agents): break terminal outcome import cycle

* test(sessions): cover writer fence propagation

* fix(sessions): complete admitted writer fence
2026-08-09 03:32:01 -07:00
Peter Steinberger e7a9f33d89 refactor(core): adopt normalization-core leaf helpers across production (#120350)
* refactor(core): adopt normalization-core leaf helpers across production

* fix(ci): keep plugin contract source-resolvable

* fix(errors): preserve adapter-owned error fields

* fix(errors): short-circuit existing errors before stringifying

* fix(errors): skip throwing structured getters

* ci: retrigger checks on current base

* fix(errors): guard structured error enumeration

* fix: harden error detail copying
2026-08-08 12:00:49 -07:00
Vincent Koc 1be662aa9d test(tasks): cover TaskFlow registry lifecycle (#118983) 2026-08-04 06:38:41 +08:00
Vincent Koc 622b5eaf8e test(tasks): add durable task operations QA (#118943) 2026-08-04 05:20:12 +08:00
Vincent Koc d29b9ad083 test(tasks): cover plugin-managed flows (#118919) 2026-08-04 04:51:00 +08:00
joshavant d0439b9ce0 fix: distinguish dismissed task delivery 2026-08-03 02:48:34 -05:00
joshavant 649d7d99f1 fix: route task publication through runtime facade 2026-08-03 02:48:34 -05:00
joshavant c5d275f8d6 refactor: internalize completion delivery seams 2026-08-03 02:48:34 -05:00
joshavant d9393bd3cb fix: make subagent completion delivery durable 2026-08-03 02:48:34 -05:00
Peter Steinberger d7f909c5f8 test(tasks): reuse registry state fixture (#118522)
Co-authored-by: Peter Steinberger <steipete@mac-studio-sf2.local>
2026-08-02 23:15:21 -07:00
Peter Steinberger 3a555d5956 refactor(agents): centralize terminal lifecycle outcomes (#118254)
* refactor(agents): centralize terminal lifecycle outcomes

* fix(agents): preserve terminal projection contracts

* refactor(agents): split terminal error boundary

* test(gateway): align stale lifecycle projection
2026-08-02 19:17:30 -07:00
Peter Steinberger 88d6a2c8d6 perf(gateway): reduce sessions.list read amplification under streaming load (#118207)
* perf(gateway): reduce sessions list read amplification

* test(gateway): stabilize title batch perf proof

* fix(gateway): satisfy sessions list CI contracts

* perf(gateway): reuse warm batch title fields

* fix(gateway): satisfy strict title cache types

* test(gateway): use transcript write scope in cache test

* fix(gateway): fence session list cache on active runs

* refactor(infra): extract agent run registry

* fix(infra): keep run-registry context types module-local
2026-08-02 16:08:07 -07:00
Peter Steinberger 14322647cd fix(tasks): keep process listener singleton (#117766)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 20:19:35 -07:00
Peter Steinberger 34348d8af3 fix(cron): link active tasks to execution transcripts (#117679)
* fix(cron): link tasks to execution sessions

Fixes #117678

* fix(tasks): preserve canonical cron cancellation state
2026-08-01 16:54:37 -07:00
Peter Steinberger 17eafa7162 fix(tasks): retain blocked flows until they end (#117606)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 13:10:11 -07:00
Peter Steinberger 4d6a63b7ee fix(tasks): validate notification policy before persistence (#117554)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-08-01 12:18:11 -07:00
Peter Steinberger e4d1b7e0d3 refactor(plugins): move plugin contributions into the registry bundle (#117372)
* refactor(plugins): move plugin contributions into the registry bundle

* fix(plugins): guard embedding owner union and drop unused test-util imports

* fix(plugins): break registry facade import cycles

* fix(plugins): remove obsolete registry snapshot seams

* test(gateway): preserve plugin runtime mock exports

* test(auto-reply): install builder registry in diagnostics fixture

* test(plugins): activate registry-backed capability fixtures
2026-08-01 06:57:01 -07:00
LZY3538 57f8240800 fix(tasks): clone only the requested task page (#114277)
* fix(tasks): clone only paginated task records

* fix(tasks): keep page queries registry-owned

* fix(tasks): keep update timestamp helper private

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-29 01:35:42 +08:00
Peter Steinberger 124911aee0 fix: prevent cron and Workboard lifecycle regressions (#114865)
* fix: harden cron and Workboard lifecycle races

* fix: use canonical card identity for Workboard drops
2026-07-27 23:17:15 -04:00
Peter Steinberger fafe7d9dad fix: prevent cron and Workboard execution races (#114808) 2026-07-27 20:33:53 -04:00
Peter Steinberger 313daad549 perf(gateway): warm handler families and cache identity avatars (#114754)
* perf(gateway): warm handler families and cache identity avatars

* chore: drop changelog edit (release-generation-owned)

* fix(ci): regenerate protocol models, satisfy knip, absorb sidecar drift

- commit regenerated Swift GatewayModels for the additive cron.list param
- split the avatar data-url cache into assistant-avatar-cache.ts so its
  factory has a production consumer (knip production scan)
- de-export prewarm family names/type; test now drives fake families only
- postReadySidecarCount 2 -> 3: main added a post-ready sidecar in parallel
2026-07-27 19:37:13 -04:00
Peter Steinberger 37182b9050 refactor(channels): declare thread addressing as a channel trait (#114245)
* refactor(channels): declare thread addressing as a channel trait

* fix(tasks): require declared thread capability for direct parent-review delivery

* docs(tasks): record the no-target-parsing tradeoff at the delivery gate
2026-07-26 23:05:13 -04:00
Peter Steinberger 4859d524ed refactor(tasks): classify harness-owned subagent rows without plugin ids (#113964)
* refactor(tasks): classify harness-owned subagent rows without plugin ids

* refactor(plugin-sdk): require taskKind for harness-owned subagent runtimes

* docs(tasks): record harness-ownership invariant at the predicate

* test(plugin-sdk): declare harness task kind in scope fixtures
2026-07-25 18:41:13 -07:00
Peter Steinberger b233faa057 refactor(tasks): split task registry internals (#113279)
* refactor(tasks): split task registry internals

* test(tasks): align registry ownership boundary
2026-07-24 02:09:04 -07:00
Peter Steinberger ce1db4e94e refactor(tasks): reduce task registry test duplication (#113239)
* test(tasks): consolidate task registry fixtures

* test(tasks): keep fixture helper behind boundary
2026-07-24 00:51:15 -07:00
Peter Steinberger 6f29fc88e9 refactor(sessions): migrate pure readers to read-only session accessors (#112568)
* refactor(sessions): migrate pure readers to read-only session accessors

* test(sessions): teach mocks and declarations the read-only accessors

* test(sessions): align remaining harnesses with read-only accessors
2026-07-22 01:16:35 -07:00
mikasa a6960f864d fix(tasks): reset omitted lifecycle start time (#104278)
* fix(tasks): reset omitted lifecycle start time

* fix(events): require lifecycle start timestamps

* fix(tasks): persist accepted zero start times

* test(gateway): timestamp lifecycle fixture

* fix(tasks): preserve finite lifecycle timestamps

Restore the contributor finalization fixes after rebasing: preserve accepted timestamps on non-finite terminal input and update the remaining lifecycle fixtures.

Co-authored-by: mikasa0818 <0668001030@xydigit.com>

* refactor(events): share lifecycle start validation

Keep host and bundled-plugin finite timestamp admission on one predicate while respecting the agent-events line budget.

Co-authored-by: mikasa0818 <0668001030@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-21 01:12:52 -07:00
Peter Steinberger 4ff2cdd215 fix(sessions): reconcile client-abandoned running sessions on restart (#111699) 2026-07-20 19:39:41 -07:00
Peter Steinberger 09963412d1 fix(exec): track background commands as tasks (#110468) 2026-07-18 08:51:23 +01:00
wm0018 8c292ccd7d fix(cron): batch pending-media snapshot in session reaper to avoid O(SxT) loop (#105903)
* fix(cron): batch pending-media lookup in session reaper to avoid O(SxT) loop

* fix(cron): make pending-media snapshot lazy to avoid regressing idle sweeps

* fix(cron): defer unsorted pending-media snapshot

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-18 00:23:44 +01:00
Peter Steinberger 56791a4806 improve: speed up async lifecycle test suites (#110117)
* test: speed up async lifecycle suites

* test: speed up gateway health waits

* test: speed up cron notification waits
2026-07-17 22:24:21 +01:00
Peter Steinberger a9f82837a1 feat: inspect background tasks across web and mobile (#109150)
* feat: add background task details across clients

* fix: refresh background task clients and translations

* fix: keep background task details fresh

* fix: ignore deleted background task details

* refactor: split background task rendering

* fix: use canonical background task ids

* refactor: extract background task view types

* fix(apps): regenerate task localizations

* fix(ios): remove unused task screen import

* fix(apps): refresh task localization inventory
2026-07-16 13:08:42 -07:00
Peter Steinberger 6f8c759b4c refactor(cron): share task history timestamp (#108914) 2026-07-16 03:55:39 -07:00
mushuiyu886 4b9c78a674 fix(cron): preserve same-id history across stores (#108730) 2026-07-16 03:28:11 -07:00
clawsweeper[bot] 15a304d6e1 fix(agents): wake owning session after generated-media direct delivery (#108024)
* fix(agents): wake owning session after generated-media direct delivery

When a background media generation (image/music/video) completes but the
requester's agent turn cannot be woken, delivery falls back to sending the
media straight to the channel. The owning session never learned about it,
leaving the attachment orphaned with no agent follow-up.

Queue a system event plus a scoped heartbeat wake after both direct
fallback paths (announce delivery and the shared background lifecycle) so
the agent continues the conversation in its own voice. Subagent requester
sessions skip the heartbeat since their completions route via announce.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(agents): persist generated media session handoffs

Co-authored-by: Molty <steipete@gmail.com>

* chore: prune max-lines baseline

* fix(agents): harden durable media handoffs

* fix(agents): charge media retries once

* chore: refresh max-lines baseline

* fix(agents): persist delivery settlement cleanup

* fix(agents): fence interrupted media delivery

* fix(agents): fence durable handoff admission

* fix(agents): reconcile terminal handoffs at retry limit

* fix(agents): align durable handoff types

* test(agents): type durable handoff fixtures

* fix: satisfy session delivery lint

* fix: avoid payload map spreads

* fix: satisfy durable handoff gates

* test: align generated media handoff expectations

* fix: avoid serializing session recovery state during load

---------

Co-authored-by: Molty <steipete@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 12:54:12 -07:00
Peter Steinberger c41f46260c test(tasks): update registry boundary seams (#108347) 2026-07-15 07:52:36 -07:00
Peter Steinberger 3d76a4af92 refactor(deadcode): privatize runtime test seams (#108338)
* refactor(sessions): privatize runtime test seams

* refactor(commitments): privatize extraction test seams

* refactor(flows): privatize doctor health seams

* refactor(tasks): privatize registry test seams

* build(commitments): bundle Docker test support

* chore(deadcode): shrink runtime export baseline
2026-07-15 07:27:10 -07:00
Peter Steinberger f1e2e5bc25 fix: clear stale task and OAuth doctor warnings (#108123)
* fix(doctor): repair taskflow and oauth warnings

* chore: keep release changelog out of PR
2026-07-15 01:03:53 -07:00