Commit Graph

78555 Commits

Author SHA1 Message Date
joshavant acb61d365e fix(cron): preserve authority during validated updates 2026-08-11 04:47:10 -05:00
joshavant 1d43aa7693 refactor(cron): remove obsolete authority wrapper 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 c913d6e126 refactor(codex): use shared coercion helpers 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 5c52a34c73 refactor(gateway): prepare cron authority at entry 2026-08-11 04:47:10 -05:00
joshavant 9827ec2a94 fix(cron): preserve combined authority 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 38fabc4e03 refactor(state): retire tenant-free agent lease schema (#121943)
* refactor(state): retire agent lease schema

* chore(plugin-sdk): refresh schema version closure

* test(state): preserve v17 migration fixtures

* docs(state): align lease schema inventory
2026-08-11 02:42:56 -07:00
Peter Steinberger 30530ae2a3 improve: speed up test project routing tests (#121968)
* test(tooling): delete routing inventory reassertions

* test(tooling): preserve full-suite ownership guard

* test(tooling): remove dead fs scan helper

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 02:40:19 -07:00
Peter Steinberger a4c7b1b7b5 refactor(agents): split embedded-agent subscribe tool handlers into concept modules (#121974) 2026-08-11 02:37:48 -07:00
Peter Steinberger 1016ebe56e fix(meetings): classify Teams probe mode errors (#121975)
Return INVALID_REQUEST for incompatible Teams testSpeech/testListen modes while preserving UNAVAILABLE for browser failures. Consolidate duplicated Teams and Zoom probe mechanics into the shared meeting-bot owner suite.
2026-08-11 02:36:16 -07:00
qingminlong 59799d965a fix(scripts): honor repeated response content lengths (#110126)
Punchcard-Session: clear-valley-meadow-4p
2026-08-11 17:33:57 +08:00
Peter Steinberger b067a4dce3 fix(secrets): reject empty secret values and classify oversized input as validation (#121947) 2026-08-11 02:30:04 -07:00
Peter Steinberger 0e45646550 fix(agents): contain memory flush maintenance failures (#121157) 2026-08-11 02:29:12 -07:00
Peter Steinberger 53407b154d fix(agents): remove stale media completion reply mechanics (#121937)
* fix(agents): remove stale media completion reply mechanics

Make generated image, music, and video completion wakes follow the current tool-agnostic visible-reply contract, preserving every structured attachment without NO_REPLY or transport-specific instructions.

Refs #121933.

* test(agents): remove stale media helper

Delete the unused assertion helper left behind by the table-driven generated-media completion coverage.\n\nRefs #121933.

* test(tooling): wait for profiler descendant pid

Require the PID file to contain a valid positive process ID before asserting profiler descendant cleanup, closing the create-before-write CI race.\n\nRefs #121971.
2026-08-11 02:29:05 -07:00
Ayaan Zaidi 73d4c07bd5 fix(delivery): record ambiguous final loss as durable notice debt (#121833)
A final reply whose platform send was accepted but whose response was lost
previously ended in silence. Custody that stays unknown after a claimed send
now records durable pendingDeliveryNotice debt; the next same-route turn
delivers one "could not confirm delivery" notice and acknowledges it into the
transcript. Restart recovery completes ambiguous sessions with the same debt
instead of a fire-and-forget notice; the debt survives reset and rollover, and
suppressed notice sends retain it instead of faking delivery. Permanent typed
no-send rejections settle as terminal suppression (no replay, no false
notice); retryable ones restore prepared custody for safe replay. Google Chat
media-only rejections use the typed no-send contract; Telegram native-command
replies join pending-final custody.

Fixes #80362

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-11 09:25:04 +00:00
juyaohuidt 2a96a48791 fix(qa-lab): close stalled upgrade sockets (#111784)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: xydt-juyaohui <266015826+xydt-juyaohui@users.noreply.github.com>
2026-08-11 17:16:30 +08:00
Vincent Koc 0f6885141b fix(ci): use Node 24.16 for release workflows (#121967) 2026-08-11 17:11:35 +08:00
Peter Steinberger 0fbb382921 fix(doctor): surface warning-only channel results (#121956)
* fix(doctor): surface warning-only channel results

Preserve channel Doctor warnings independently from config changes and emit stale-cleanup warnings without applying warning-only config payloads.\n\nRefs #121948.

* test(doctor): avoid shadowed cleanup config

Rename the stale-cleanup test callback parameter so exact-head lint accepts the owner-boundary regression.\n\nRefs #121948.
2026-08-11 02:09:22 -07:00
Peter Steinberger e71d56d557 feat(cloud): let cloud sessions spawn and message cloud children (#121846)
* feat(cloud): add nested worker session capabilities

Amp-Thread-ID: https://ampcode.com/threads/T-019feaaa-c7ed-769e-9f29-a3612bec72e7

* fix(cloud): harden nested worker sessions

Amp-Thread-ID: https://ampcode.com/threads/T-019feaaa-c7ed-769e-9f29-a3612bec72e7

* fix(cloud): repair exact-head integration

Amp-Thread-ID: https://ampcode.com/threads/T-019feaaa-c7ed-769e-9f29-a3612bec72e7

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 02:07:49 -07:00
Peter Steinberger 25e711313a refactor(gateway): centralize dispatch gate ownership (#121961) 2026-08-11 02:04:31 -07:00
Peter Steinberger a96fba6ff6 test(ios): remove preview source mirrors (#121960) 2026-08-11 02:03:07 -07:00
Vyctor H. Brzezowski d91b3970b4 fix(ui): show mobile toasts above the drawer (#121858)
* fix(ui): keep toasts above modal overlays

* fix(ui): route toasts through open modal state

* fix(ui): simplify modal toast routing

* fix(ui): preserve modal toasts with atomic moves

* fix(ui): route toasts across modal roots

* test(ui): cover nested shadow modal toasts

* fix(ui): keep modal toast lifecycle internal
2026-08-11 05:53:57 -03:00
Peter Steinberger 3d707a9b96 refactor(daemon): split launchd into concept modules (#121929)
* refactor(agents): split launchd into concept modules

* fix(daemon): restore launchd service environment type

* refactor(daemon): keep launchd probe result internal
2026-08-11 01:49:23 -07:00
Peter Steinberger f0d6cc4ade fix(ui): keep composer pickers usable on mobile (#121881)
* fix(ui): keep composer pickers usable on mobile

* fix(ui): right-align mobile composer controls

* fix(ui): isolate mobile composer sizing

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 01:46:47 -07:00
Peter Steinberger a9edd8b58c test(voyage): move bounded reads to public runner (#121957) 2026-08-11 01:45:51 -07:00
Ayaan Zaidi ba9e72c17f fix(heartbeat): deliver to the last conversation by default (#121892)
Unset heartbeat.target silently collapsed into the explicit "none" opt-out: heartbeats ran every 30m by default, elected notifications were dropped with only an in-memory event, and health read fine. Unset now resolves to "last" (the most recent conversation); explicit target: "none" keeps its internal-only contract. Polls skip pre-model with reason no-route while no route exists yet, and status/doctor surface the waiting-for-route state. Deliberate maintainer-owned default cutover: existing installs without a configured target start receiving heartbeat alerts in their last conversation after upgrade.

Fixes #121880

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 08:45:30 +00:00
Peter Steinberger 9ea0b4288d fix(system-agent): show retryable error when AI detection times out (#121940)
* fix(system-agent): reject empty detection timeouts instead of claiming nothing found

* test(system-agent): give partial-timeout detection tests CI-safe deadlines

The 50-100ms timeouts raced worker-thread startup on loaded CI runners:
the partial message could miss the deadline, hitting the empty-timeout
rejection and flaking two tests that expect a partial resolve. Timeouts
that must be beaten by worker startup are now 3-5s; tight deadlines
remain only where no worker message is required.
2026-08-11 01:44:20 -07:00
Peter Steinberger e0b195690b fix(telegram): preserve finalized preview on late media failure (#121903)
* fix(telegram): preserve finalized preview on late media failure

* test(telegram): assert final preview delivery custody
2026-08-11 01:37:48 -07:00
Peter Steinberger 2abed88c5e test(sqlite): avoid duplicate reliability proof run (#121952)
* test(sqlite): avoid duplicate reliability proof run

Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Peter Steinberger <steipete@gmail.com>

* test(sqlite): retain restore count contract

Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Peter Steinberger <steipete@gmail.com>

* test(sqlite): retain reliability CLI markers

Amp-Thread-ID: https://ampcode.com/threads/T-019fee8d-665d-707b-a380-23f2a6a1ce03
Co-authored-by: Peter Steinberger <steipete@gmail.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 01:36:48 -07:00
Ayaan Zaidi c63b1caa42 fix(skills): strengthen authoring guidance and accept invocation frontmatter (#121955)
Rewrite the bundled skill-creator SKILL.md workflow-first with checkable completion criteria, tighten the runtime skill-authoring standards prompt, dedupe keep/drop policy out of the collection-only skill_workshop tool description (collection-review.ts remains the sole owner), and teach quick_validate.py the documented invocation frontmatter keys (disable-model-invocation, command-dispatch, command-tool, command-arg-mode) it previously rejected.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-11 08:36:00 +00:00
Peter Steinberger d7df852bb4 docs(onboard): fix non-interactive command examples (#121954)
Align copyable onboarding commands with the mandatory risk acknowledgement and an explicit health disposition for config-only automation.\n\nRefs #121951.
2026-08-11 01:35:00 -07:00
Peter Steinberger 64e3712e82 refactor(skills): split workspace loading into concept modules (#121916)
* refactor(skills): split workspace loading into concept modules

* refactor(skills): delete dead seams and duplicate helpers

* chore(lint): ratchet max-lines baseline after workspace split

* chore(plugin-sdk): refresh API baseline

* refactor(skills): internalize discovery result type

* test(tooling): drop stale unit-fast fixtures
2026-08-11 01:28:20 -07:00
Peter Steinberger 248cef3646 test(gateway): remove helper self-test wrapper (#121889)
* test(gateway): remove helper self-test wrapper

* test(infra): refresh unit-fast isolation fixtures
2026-08-11 01:24:29 -07:00
Peter Steinberger 2046dbcd6f refactor(gateway): split connection state from HTTP transport (#121931)
* refactor(gateway): split connection state from HTTP transport

* test(ci): drop stale unit-fast helper expectations
2026-08-11 01:22:16 -07:00
Peter Steinberger 4841e4e6b9 improve(ui): declutter narrow session headers (#121935)
* improve(ui): declutter narrow session headers

* test: drop stale unit-fast helper expectations

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 01:19:25 -07:00
Peter Steinberger 1af6d3051d test(outbound): drop retired poll routing fixtures (#121942) 2026-08-11 01:17:01 -07:00
Peter Steinberger df72781ed4 fix(macos): make the whole AI candidate row clickable and clear stale exhausted verdicts (#121928)
* fix(macos): make the whole AI candidate row clickable and clear stale exhausted verdicts

Live-testing pick-during-testing on 2026-08-11 showed clicks on a candidate
row's blank stretch (between the title/subtitle texts or over the spacer)
silently doing nothing: plain-style buttons only hit-test opaque label
pixels. A user trying to pick Claude Code while Codex auto-tests can click
the visually highlighted row and get no outcome. .contentShape(Rectangle())
makes the full row hit-test.

Also, after auto-candidates exhaust, a user-picked retest left the stale
"None of the found options worked" card up while the new test visibly ran;
userSelect now clears exhaustedAutoCandidates when a fresh attempt begins.

* test(tooling): drop stateless poll tests from stateful-helper fixtures

Main went red when #121923 rewrote the outbound poll tests to be
order-independent and removed their stateful helper import/file; this
lane-config test hardcoded both as stateful-helper classification
fixtures. Folded into this PR per red-main landing policy.
2026-08-11 01:10:12 -07:00
Peter Steinberger 00d65b69af fix(gateway): release wizard owners after settlement failures (#121915)
Ensure detached Gateway admission and cancelled-session cleanup runs when setup lock settlement rejects, while keeping the original rejection observable and preserving normal terminal-response ordering.
2026-08-11 01:08:37 -07:00
Peter Steinberger ca0d89ef07 fix(outbound): keep poll validation coverage stable (#121926)
* test(outbound): stabilize shared message action mocks

* test(outbound): keep stateful poll fixtures isolated
2026-08-11 01:07:15 -07:00
Josh Lehman a8839a8923 fix(ui): Ctrl/Cmd+F search renders at normal size and restores focus (#121910)
* fix(ui): stabilize transcript search layout and focus

* fix(ui): satisfy transcript search lint

* test(ui): assert search focus outline properties
2026-08-11 00:59:59 -07:00
Peter Steinberger 6e851103dc refactor(system-agent): split chat engine into concept modules (#121884)
* refactor(system-agent): split chat engine into concept modules

* refactor(system-agent): deduplicate hosted setup flows

* fix(system-agent): record interactive exit as a fact

* chore(lint): ratchet max-lines baseline after chat-engine split

* fix(system-agent): clear sensitive wizard state between sessions
2026-08-11 00:55:30 -07:00
Peter Steinberger 579c38dc68 test(core): remove session heartbeat test seams (#121913) 2026-08-11 00:55:04 -07:00
Peter Steinberger a12e0decd6 refactor(ui): simplify terminal replay lifecycle (#121925)
Behavior-preserving follow-up cleanup related to #121637.

Make replay a required structured contract, move stream currentness into AbortSignal ownership, keep controller construction private to the session owner, and remove the optional replay fallback, exported factory, tab factory state, and nested currentness callbacks.
2026-08-11 00:54:43 -07:00
Peter Steinberger 465aad50a7 test(outbound): make poll coverage order-independent (#121923) 2026-08-11 00:42:17 -07:00
Ayaan Zaidi 210aca6de3 fix(gateway): prevent restart replay after final delivery (#121908)
Re-lands the reverted #121507 on the current custody contracts. The reply dispatcher now owns direct-send pending-final custody: claim before provider I/O, terminal settlement for delivered/suppressed/failed outcomes, proven no-send stays replayable, ambiguous evidence fails closed — so Gateway restarts can no longer duplicate an already-accepted final reply.

Proof: ClawSweeper local review clean, exact-head ci-gate green, live Telegram E2E (one turn, one final, no duplicates).

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-11 13:09:59 +05:30
Peter Steinberger cc99646601 refactor(agents): unify subagent registry read surface (#121918)
* refactor(agents): unify subagent registry read surface

* test(agents): preserve registry read mock exports
2026-08-11 00:37:34 -07:00