Commit Graph

78555 Commits

Author SHA1 Message Date
Peter Steinberger 681076c491 fix(outbound): provider abort without send evidence keeps the queued message (#120031)
* fix(outbound): preserve queued delivery custody on provider abort without send evidence

A provider-side abort with no platform send evidence acked the durable queue
entry (dropping the message) whenever no producer claim id existed. Send
evidence is now computed once (delivered results, pre/post-send marks,
sentBeforeError, stable outcomes); aborts with evidence keep the
platform_send failure path, aborts without evidence preserve the queued
entry as failed for retry unless the operator's own abort signal fired.

* chore: re-fire CI

* chore: re-fire CI against fixed main baseline
2026-08-07 01:19:00 -07:00
Peter Steinberger a672065d5e fix(daemon): legacy systemd unit removal reloads the user manager and stops masking failures (#120027)
* fix(daemon): reload systemd user manager after removing legacy units

uninstallLegacySystemdUnits removed unit files without a daemon-reload, so the
user manager kept the deleted unit definitions loaded and startable until an
unrelated reload. Legacy-unit removal now reuses the shared
disable-or-tolerate-missing helper, surfaces non-ENOENT unlink failures instead
of swallowing them, and reloads the user manager once after any unit file was
removed (matching uninstallUserSystemdGatewayUnit).

* chore: re-fire CI

* chore: re-fire CI against fixed main baseline
2026-08-07 01:17:58 -07:00
Peter Steinberger 441a9b94cf fix(plugins): multi-entry pack identity and safe managed-install compensation (#120026)
* fix(plugins): preserve multi-entry pack identity and safe install compensation

Multi-entry plugin packs registered every entry under the single manifest id,
so only one entry survived registry normalization; discovery now records an
entry-scoped effectivePluginId that the manifest registry honors. Managed
install compensation no longer silences runtime cache invalidation on the
success path, and local linked installs never delete operator-owned source
directories on persistence failure.

* fix(plugins): reject colliding derived entry ids in multi-entry packs

ClawSweeper P1: ./a/index.ts and ./b/index.ts both derived pack/index and one
entry silently lost same-root dedupe. Colliding entries now emit an error
diagnostic naming the sources and register no candidate; docs note the
entry-scoped plugins.entries key for multi-entry packs.
2026-08-07 01:13:34 -07:00
Peter Steinberger 5a913fa453 fix(acpx): stop/start races cannot resurrect a stopped embedded runtime (#120029)
* fix(acpx): stop/start races cannot resurrect a stopped runtime backend

The deferred acpx runtime service published its lazily started backend without
lifecycle ownership checks: a stop during in-flight activation let the stale
service become the active runtime, and stop cleared shared state while startup
still used it. Start/stop now use a lifecycle revision; only the current
revision may publish a runtime, stop invalidates every deferred proxy before
awaiting in-flight startup, and restart waits for the previous stop to settle.

* chore: re-fire CI

* fix(acpx): fence deferred runtime ownership

* refactor(acpx): centralize backend lifecycle ownership

* fix(acpx): annotate deferred runtime cycle
2026-08-07 01:09:23 -07:00
Peter Steinberger 40ef8c5e68 test(gateway): restore startup environment after servers (#120137)
* fix(test): restore gateway startup environment

* fix(test): centralize gateway startup env cleanup

* test(gateway): restore live startup environment

* fix(test): complete gateway startup env lifecycle

* test(gateway): restore raw server owner environment

* test(qa): restore gateway producer environment
2026-08-07 01:06:16 -07:00
Peter Steinberger 9752d183a0 fix(gateway): heal session list after projection rebuild (#120165)
* fix(gateway): degrade session list during projection rebuild

* test(gateway): reuse projection rebuild fixture
2026-08-07 01:02:13 -07:00
Vincent Koc ea4466e5dc fix(acp): narrow admitted lifecycle generation 2026-08-07 15:27:14 +08:00
Vincent Koc 58d08dedd3 fix(acp): capture caller lifecycle before setup 2026-08-07 15:27:14 +08:00
Vincent Koc bb7aff140b test(acp): preserve lifecycle wrapper in dispatch harness 2026-08-07 15:27:14 +08:00
Vincent Koc eba5530b70 fix(acp): preserve caller lifecycle admission 2026-08-07 15:27:14 +08:00
Vincent Koc 4244630ccf fix(audit): keep source adoption schema first-use 2026-08-07 15:27:14 +08:00
Vincent Koc 0703ed6be5 fix(acp): bind audit callbacks to admitted lifecycle 2026-08-07 15:27:14 +08:00
Vincent Koc 79b8775bc9 feat(audit): preserve exact agent execution provenance 2026-08-07 15:27:14 +08:00
Dallin Romney 1574723997 fix(cua-computer): load the ESM driver on node hosts (#120169)
* fix(cua-computer): load ESM driver asynchronously

* fix(cua-computer): register computer invoke policy

* test(gateway): cover CUA command allowlist

---------

Co-authored-by: Francesco Bonacci <f@trycua.com>
2026-08-07 15:15:48 +08:00
Vincent Koc 63c6cd9a02 fix(agents): satisfy tool authority lint 2026-08-07 15:07:12 +08:00
Vincent Koc 228478bffe fix(plugins): inject harness tool authority 2026-08-07 15:07:12 +08:00
Vincent Koc 62aff372ec fix(plugins): keep loader authority type private 2026-08-07 15:07:12 +08:00
Vincent Koc dfdc71322c fix(plugins): verify installed harness authority owners 2026-08-07 15:07:12 +08:00
Vincent Koc 994ba9b32a fix(plugins): keep harness authority owner-restricted 2026-08-07 15:07:12 +08:00
Vincent Koc a90c8d81df fix(packaging): recognize owner-restricted plugin aliases 2026-08-07 15:07:12 +08:00
Vincent Koc aacbcaacc8 fix(agents): restrict harness tool authority 2026-08-07 15:07:12 +08:00
Vincent Koc d863dd5f5e refactor(agents): bind tool policy to exact execution identity 2026-08-07 15:07:12 +08:00
Dallin Romney 2a0bbd23f5 feat: expose session classification facts (#106832)
* feat: expose session presentation metadata

* fix: restrict session titles to safe display metadata

* fix: preserve saved session display names

* fix(protocol): tolerate future session presentation values

* fix(gateway): keep direct peer names out of presentation

* fix(protocol): connect session presentation to native rows

* fix(gateway): canonicalize session presentation metadata

* fix(gateway): satisfy session presentation CI checks

* feat(gateway): flatten session classification facts

* fix: repair session classification generated models

* fix(gateway): canonicalize session classification keys

* fix(gateway): classify spawned delivery sessions

* fix(android): retain session classification facts

* test(android): make scripted gateway calls concurrency-safe

* test(live-updater): isolate fixture git commands
2026-08-07 14:56:56 +08:00
Dallin Romney 1f1333dfec fix(ci): allow frozen target scenario omissions in candidate prep (#120166) 2026-08-07 14:56:42 +08:00
Peter Steinberger 0796106cfa refactor(test): table-drive near-duplicate cases in agent and auto-reply suites (#120109)
* refactor(test): table-drive CLI output cases

* refactor(test): table-drive OpenAI transport stream cases

* refactor(test): table-drive model selection cases

* refactor(test): table-drive status cases

* refactor(test): table-drive embedded runner extra-param cases
2026-08-06 23:54:27 -07:00
Joseph Krug 08529d444d fix(agents): align cron subagent model precedence with native spawning (#58823)
* fix(agents): align subagent model precedence

* test(cron): align subagent fallback harness precedence

---------

Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-08-07 14:52:43 +08:00
Peter Steinberger 4a47cd18b7 fix(qqbot): partial config edits no longer resurrect backed-up credentials (#120028)
* fix(qqbot): recover credentials from backup deterministically at startup

Credential recovery previously keyed off a loose truthiness check that
misclassified partially configured accounts; recovery state is now a closed
discriminated union (configured/recoverable/partial/missing) so a live-config
wipe restores from the per-account backup only when the account is actually
recoverable, and partial configs surface a clear diagnostic instead of a
silent skip.

* chore: re-fire CI
2026-08-06 23:48:31 -07:00
Peter Steinberger 8a6e1c30f9 fix(gateway): leave sessions without human-derived titles untitled (#120160)
deriveSessionTitle no longer falls back to an 8-hex session-id prefix
plus date; derived titles are human content only, so consumers'
key-based fallbacks (Control UI "New thread", TUI formatted key, ACP
displayName/label/key) render instead of an opaque machine title.
2026-08-06 23:44:53 -07:00
Dirk 675c60f56e fix(gateway): preserve plugin icon 404 metadata on HEAD (#120133)
Reuse the canonical Control UI plain-text responder so plugin and catalog icon HEAD misses retain the same Content-Length metadata as GET without duplicating response policy.


Punchcard-Session: cobalt-harbor-harbor-2b

Co-authored-by: Vincent Koc <vincentkoc@users.noreply.github.com>
2026-08-07 14:38:01 +08:00
Peter Steinberger cbe1319969 fix(gateway): degrade sessions.list per-session while a transcript projection rebuilds (#120159) 2026-08-06 23:37:41 -07:00
Vincent Koc bb612cbe4c fix(qa): bound Matrix scenario preparation separately (#119996)
* fix(qa): bound Matrix scenario preparation separately

Punchcard-Session: cobalt-valley-meadow-mg

* fix(qa): enforce Matrix preparation deadline

Punchcard-Session: cobalt-valley-meadow-mg
2026-08-07 13:52:59 +08:00
Vincent Koc 5f585a57bd test(msteams): cover occupied webhook port (#120158)
Punchcard-Session: silver-willow-harbor-px
2026-08-07 13:46:41 +08:00
Vincent Koc e2402208e0 fix(agents): clear btw attribution reservations 2026-08-07 13:44:39 +08:00
Vincent Koc 65d449d4c1 fix(agents): reserve execution attribution atomically 2026-08-07 13:44:39 +08:00
Vincent Koc 51fc5aa3db fix(agents): reject attribution collisions before capture 2026-08-07 13:44:39 +08:00
Vincent Koc 374e05f092 fix(agents): reject CLI attribution collisions 2026-08-07 13:44:39 +08:00
Vincent Koc 94381bad86 fix(agents): reject private attribution recovery by run id 2026-08-07 13:44:39 +08:00
Vincent Koc 6b246ff3b8 fix(agents): restore runtime check cleanliness 2026-08-07 13:44:39 +08:00
Vincent Koc 0611c2ea87 fix(agents): refresh rebound run admission time 2026-08-07 13:44:39 +08:00
Vincent Koc df31882c38 refactor(agents): propagate exact attribution across runtimes 2026-08-07 13:44:39 +08:00
Vincent Koc a0deb8edae fix(release): provide prerelease plugin companions to package QA (#120107) 2026-08-07 13:31:41 +08:00
Vincent Koc aea8b4f565 test(macos): stabilize gateway session negotiation tests (#120141)
Fixes #120130

Punchcard-Session: golden-meadow-timber-8g
2026-08-07 13:30:58 +08:00
Peter Steinberger 9aa24e8f2e refactor(test): replace logic-bearing vi.mock factories with boundary fakes, batch 2 (#120117)
* refactor(test): exercise real Teams monitor lifecycle

* refactor(test): use real gateway lifecycle state

* refactor(test): use real restart delivery queue

* test: type Teams SDK boundary fixture
2026-08-06 22:02:50 -07:00
Peter Steinberger f87d8bb72d refactor(test): compress repetitive fixtures in mega-tests, batch 2 (#120124)
* refactor(test): compress incomplete-turn fixtures

* refactor(test): compress Discord voice fixtures

* refactor(test): compress restart recovery fixtures

* refactor(test): compress CLI attempt fixtures

* refactor(test): compress subagent registry fixtures

* refactor(test): compress workboard fixtures

* refactor(test): compress TUI event fixtures

* refactor(test): compress Codex turn-watch fixtures

* fix(test): tighten CLI attempt fixture types

* fix(test): widen restart transcript fixture content

* fix(test): preserve workboard status fixture type
2026-08-06 20:50:20 -07:00
Peter Steinberger 843474ba22 refactor(ui): adopt shared chat-host fixture across chat suites (#120120)
* refactor(ui): reuse chat host in history tests

* refactor(ui): reuse chat host in chat state tests

* refactor(ui): simplify chat stream lifecycle tests

* refactor(ui): simplify background task tests

* refactor(ui): simplify chat view tests

* refactor(ui): simplify chat thread tests

* refactor(ui): simplify chat gateway tests

* refactor(ui): simplify chat message tests
2026-08-06 20:46:28 -07:00
Vincent Koc 1823be79ce fix(ci): provision native Android resources for frozen current-contract targets (#120081) 2026-08-07 11:37:04 +08:00
Peter Steinberger 47640e06be fix: preserve agent delivery identity (#120108) 2026-08-06 20:30:07 -07:00
metaforismo b47fb954fb fix(qqbot): add cause-specific setup guidance (#119780)
* fix(qqbot): add cause-specific setup guidance

* fix(qqbot): recognize expired-token business errors

* fix(qqbot): retry structured token failures

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-06 20:27:26 -07:00
metaforismo 2e0fe80c80 fix(venice): replay Gemini tool signatures by turn occurrence (#119783)
* fix(venice): replay Gemini tool-call signatures

* fix(venice): preserve Gemini signatures in transcripts

* fix(venice): handle mixed Gemini tool history

* fix(venice): downgrade unsigned Gemini tool history

* fix(venice): scope Gemini tool replay by turn

* fix(venice): narrow replay occurrence guards

---------

Co-authored-by: Wen-Yong Lim <cheng@Wen-4-Mac-mini.local>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-06 20:27:16 -07:00
metaforismo fcae540d30 fix(gateway): yield before TTS status diagnostics (#119788)
* fix(gateway): yield before TTS status diagnostics

* fix(tts): preserve aliases outside provider inventory

* test(tts): isolate inventory alias regression

* fix(gateway): reuse prepared TTS provider facts

* fix(tts): drop unused core barrel export

---------

Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-06 20:27:05 -07:00