Commit Graph

42441 Commits

Author SHA1 Message Date
joshavant 2d80e78886 Revert "refactor(agents): centralize exact execution attribution"
This reverts commit e628b42a49.
2026-08-07 18:40:17 -05:00
joshavant c6a03a5853 Revert "fix(gateway): defer attribution until admission succeeds"
This reverts commit 8893c93558.
2026-08-07 18:40:17 -05:00
joshavant ec33064d8c Revert "test(agents): exercise execution attribution ingress guard"
This reverts commit 22ae9bd368.
2026-08-07 18:40:17 -05:00
joshavant 07680362ff Revert "refactor(agents): propagate exact attribution across runtimes"
This reverts commit df31882c38.
2026-08-07 18:40:17 -05:00
joshavant 54ea39d553 Revert "fix(agents): refresh rebound run admission time"
This reverts commit 0611c2ea87.
2026-08-07 18:40:17 -05:00
joshavant b573e21abc Revert "fix(agents): restore runtime check cleanliness"
This reverts commit 6b246ff3b8.
2026-08-07 18:40:17 -05:00
joshavant 87bb835910 Revert "fix(agents): reject private attribution recovery by run id"
This reverts commit 94381bad86.
2026-08-07 18:40:17 -05:00
joshavant 95f43c2696 Revert "fix(agents): reject CLI attribution collisions"
This reverts commit 374e05f092.
2026-08-07 18:40:17 -05:00
joshavant 5fbcad6cbe Revert "fix(agents): reject attribution collisions before capture"
This reverts commit 51fc5aa3db.
2026-08-07 18:40:17 -05:00
joshavant d76af5b2fb Revert "fix(agents): reserve execution attribution atomically"
This reverts commit 65d449d4c1.
2026-08-07 18:40:17 -05:00
joshavant 16963d1091 Revert "fix(agents): clear btw attribution reservations"
This reverts commit e2402208e0.
2026-08-07 18:40:17 -05:00
joshavant ceeb02d7e1 Revert "refactor(agents): bind tool policy to exact execution identity"
This reverts commit d863dd5f5e.
2026-08-07 18:40:17 -05:00
joshavant 2751bc8991 Revert "fix(agents): restrict harness tool authority"
This reverts commit aacbcaacc8.
2026-08-07 18:40:17 -05:00
joshavant 3b5f5f98f1 Revert "fix(plugins): keep harness authority owner-restricted"
This reverts commit 994ba9b32a.
2026-08-07 18:40:17 -05:00
joshavant 4bdec77639 Revert "fix(plugins): verify installed harness authority owners"
This reverts commit dfdc71322c.
2026-08-07 18:40:17 -05:00
joshavant ad591ff4a0 Revert "fix(plugins): keep loader authority type private"
This reverts commit 62aff372ec.
2026-08-07 18:40:17 -05:00
joshavant bc197e1b66 Revert "fix(plugins): inject harness tool authority"
This reverts commit 228478bffe.
2026-08-07 18:40:17 -05:00
joshavant 941f4a3ec6 Revert "fix(agents): satisfy tool authority lint"
This reverts commit 63c6cd9a02.
2026-08-07 18:40:17 -05:00
joshavant d4c9a4d8f1 Revert "feat(audit): preserve exact agent execution provenance"
This reverts commit 79b8775bc9.
2026-08-07 18:40:17 -05:00
joshavant 62d899a841 Revert "fix(acp): bind audit callbacks to admitted lifecycle"
This reverts commit 0703ed6be5.
2026-08-07 18:40:17 -05:00
joshavant 9dc4a358d3 Revert "fix(audit): keep source adoption schema first-use"
This reverts commit 4244630ccf.
2026-08-07 18:40:17 -05:00
joshavant 77fce5028b Revert "fix(acp): preserve caller lifecycle admission"
This reverts commit eba5530b70.
2026-08-07 18:40:17 -05:00
joshavant 3e2e75f631 Revert "test(acp): preserve lifecycle wrapper in dispatch harness"
This reverts commit bb7aff140b.
2026-08-07 18:40:17 -05:00
joshavant 5c4e95ed33 Revert "fix(acp): capture caller lifecycle before setup"
This reverts commit 58d08dedd3.
2026-08-07 18:40:17 -05:00
joshavant 3ca9583f13 Revert "fix(acp): narrow admitted lifecycle generation"
This reverts commit ea4466e5dc.
2026-08-07 18:40:17 -05:00
zengLingbiao 0f147d18d4 fix(gateway): send Content-Length on probe and fallthrough HEAD responses (#120210) 2026-08-08 06:50:10 +08:00
Peter Steinberger bc0c3fcd63 refactor(providers): shared generated-media download guard and binary-response adoption (#120351)
* fix(agents): cancel rejected provider binary bodies

* refactor(providers): share generated media downloads

* refactor(providers): adopt payload patch stream wrapper

* fix(providers): preserve generated media helper contracts
2026-08-07 15:45:53 -07:00
Peter Steinberger 8bf62e7007 refactor(ui): derive gateway types from protocol and consolidate navigation/error helpers (#120348)
* refactor(protocol): derive shared gateway types

* refactor(ui): consolidate navigation click handling

* refactor(ui): centralize UI state and error helpers
2026-08-07 15:25:07 -07:00
Peter Steinberger 0aa85c7f83 perf(gateway): reuse lifecycle plugin metadata instead of per-turn rescans (#120344)
* perf(gateway): reuse lifecycle plugin metadata

* test(commands): expect workspace-scoped snapshot reuse in sessions metadata prep
2026-08-07 14:20:21 -07:00
joshavant 87156bab23 fix(typing): keep long active turns visible 2026-08-07 16:11:52 -05:00
Peter Steinberger 10e60fa0ce refactor(plugins): shared legacy-state doctor migration and simple secret contracts (#120346)
* refactor(plugins): share legacy JSON doctor migration

* refactor(discord): share account token inspection cascade

* refactor(plugins): share simple channel secret contracts

* refactor(discord): keep token inspector private
2026-08-07 13:55:31 -07:00
Josh Avant c691f2e41c fix(progress): preserve callback acceptance results (#120171)
* fix(progress): preserve callback acceptance results

* fix(progress): require transport acknowledgements

* fix(progress): preserve direct acceptance outcomes
2026-08-07 14:40:33 -05:00
Peter Steinberger 5a795f4dda fix(qa): require a fresh reply and real tool use after switching models (#119662)
* fix(qa): require a fresh reply after switching models

* fix(qa): prove successful tool use after model switching

* fix(qa): wait for the new persisted model-switch tool result

* fix(qa): authenticate canonical model-switch attempt evidence

* fix(ai): preserve effective response model evidence

Punchcard-Session: golden-valley-workshop-br

* fix(agent): publish run-owned terminal receipts

Punchcard-Session: golden-valley-workshop-br

* fix(qa): require run-owned model-switch evidence

Punchcard-Session: golden-valley-workshop-br

* fix(agent): record explicit tool completion outcomes

Punchcard-Session: golden-valley-workshop-br

* fix(agent): exclude unavailable approvals from receipts

Punchcard-Session: golden-valley-workshop-br

* fix(agent): derive receipt visibility from terminal reply

Punchcard-Session: golden-valley-workshop-br

* fix(qa): bind model-switch continuity to terminal reply

Punchcard-Session: golden-valley-workshop-br

* fix(qa): project Crabline Telegram visible text

Punchcard-Session: golden-valley-workshop-br

* fix(qa): record run-owned delivery evidence

Punchcard-Session: golden-valley-workshop-br

* fix(qa): bind primary model-switch delivery

Punchcard-Session: golden-valley-workshop-br

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 03:05:32 +08:00
Peter Steinberger b12616b444 fix(agents): quota suspension resolves the real owning agent instead of no-opping (#120262)
* fix(agents): session quota suspension resolves the real owning agent

suspendSession derived the agent id from path.basename(agentDir), which is
always the literal 'agent' in the default <state>/agents/<id>/agent layout —
the quota-suspension marker landed in a nonexistent agent's store and the
suspension silently no-opped. Callers now pass the explicit agentId through
runWithModelFallback/throwFallbackFailureSummary, with the agent-dir registry
as fallback for dir-only callers.

* fix(agents): embedded failure suspensions carry the run's agent id
2026-08-07 11:56:15 -07:00
Peter Steinberger d448a25a8a refactor(test): compress repetitive fixtures in mega-tests, batch 3 (#120294)
* refactor(test): compress subagent lifecycle fixtures

* refactor(test): compress model resolution fixtures

* refactor(test): compress Telegram bot fixtures

* refactor(test): compress reply-agent e2e fixtures

* refactor(test): compress Matrix SDK fixtures

* refactor(test): compress QMD manager fixtures

* refactor(test): compress gateway chat fixtures

* refactor(test): compress gateway reload fixtures

* fix(test): preserve raw Telegram secret fixture

* fix(test): retain session fixture key type

* fix(test): preserve raw reload secrets fixture

* fix(test): retain gateway fixture parameter types
2026-08-07 11:48:46 -07:00
Peter Steinberger c93b3f7045 fix(agents): failed compaction no longer zeroes live assistant usage (#120264)
* fix(agents): failed compaction no longer zeroes live assistant usage

* test(agents): pin usage-zeroing to completed compaction ends
2026-08-07 11:12:26 -07:00
wanyongstar fcdc8460e3 fix(plugins): reject malformed percent-encoding in local JSON Schema $ref anchors (#120254)
…$ref anchors

resolveLocalRef decoded plain-anchor fragments with a bare
decodeURIComponent while the pointer branch already tolerated bad
escapes via decodePointerSegment's try/catch. A schema carrying
$ref: "#%" (a single typo'd hand-written anchor) made
findJsonSchemaShapeError throw a raw URIError that escaped
validateJsonSchemaValue, crashing plugin/channel config validation,
doctor, and gateway startup with a message that pointed nowhere near
the offending schema.

Decode anchor fragments with the same tolerance: a malformed escape
now resolves to { found: false } and surfaces as the intended
"<path>.$ref: unresolved ref" diagnostic.

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-08-07 13:11:49 -05:00
Peter Steinberger 824cf2dcd9 fix(cron): isolate post-persist notification failures from the store write (#120266) 2026-08-07 11:09:54 -07:00
Peter Steinberger 4188f6892d refactor(test): replace logic-bearing vi.mock factories with boundary fakes, batch 3 (#120291)
* refactor(test): exercise real session rewind policy

* refactor(test): use real Telegram media policy

* refactor(test): exercise real HTTP cancellation lifecycle

* test(gateway): prove mutations clear queued session work
2026-08-07 10:54:58 -07:00
Peter Steinberger dcb125d202 fix: remove retired insecure auth guidance (#120295) 2026-08-07 09:45:48 -07:00
Ayaan Zaidi 5e477aff2a feat(status): render /status as a native rich card and declutter the plain body (#120167)
* feat(status): render /status as native rich tables on channels that support them
* feat(status): tighten rich /status layout into a titled native table card
* feat(status): trim rich /status tail to one clock-and-uptime context line
* feat(status): context meter, hot-window warning, and default-noise trim in rich card
* test(status): satisfy SessionEntry sessionId in meter fixture
* fix(telegram): gate rich table islands off legacy HTML sends and cover payload sends
* test(telegram): split outbound-adapter presentation tests to satisfy max-lines
* fix(outbound): make presentation capability resolution formatting-aware
* fix(telegram): defer presentation canonicalization on rich accounts until send
* feat(status): one fact per line in the plain status body
* feat(status): group the plain status body into blank-line sections
* feat(status): lead the rich status card with the version title

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 20:46:52 +05:30
Sally O'Malley 4cbbfc2159 fix(systemd): apply dotenv changes on gateway restart (#119441)
* fix(systemd): load state dotenv at gateway startup

Signed-off-by: sallyom <somalley@redhat.com>

* fix(systemd): refresh managed dotenv values on restart

Signed-off-by: sallyom <somalley@redhat.com>

* fix(gateway): clear removed managed dotenv values

Signed-off-by: sallyom <somalley@redhat.com>

* fix(dotenv): canonicalize managed override keys

Signed-off-by: sallyom <somalley@redhat.com>

* fix(secrets): preserve providerless env refs

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
2026-08-07 10:04:04 -04:00
Peter Steinberger 01cc71060d test(tui): gate built CLI PTY cases (#120221) 2026-08-07 04:25:47 -07:00
Gio Della-Libera 60fc2fe64d feat(claws): adopt portable profiles and native bootstrap (#115237) 2026-08-07 04:04:51 -07:00
Peter Steinberger 8994c7799b fix(agents): subagent hard-deny list cannot be overridden by allow config (#120025)
* fix(agents): make subagent hard-deny list non-overridable and deny message tool

The always-deny list for subagent sessions (gateway, cron, message, sessions_send,
conversations_*) could be overridden by ordinary allow/alsoAllow config entries,
letting a configured subagent profile re-enable direct user delivery outside the
announce chain. The hard-deny layer now applies unconditionally; message joins the
list so resumed/visible subagent sessions cannot send directly either (hidden
launches already disabled it at spawn time).

* chore: re-fire CI

* chore: re-fire CI against fixed main baseline

* test(agents): workspace authority reflects non-overridable subagent deny list

The delegating-worker rejection case relied on alsoAllow bypassing the
subagent hard-deny list; with the bypass closed the policy owner blocks
sessions_spawn and the worker stays confined, so the guard has nothing to
reject.
2026-08-07 03:58:02 -07:00
Peter Steinberger e910324f10 fix(gateway): redact credentials from gateway URLs in status and logs diagnostics (#120024)
* fix(gateway): redact credentials from gateway URLs in status and logs diagnostics

Gateway URLs can carry basic-auth credentials or token query params. Status
output, status-all JSON, and logs-cli error diagnostics now project connection
details through a single diagnostics projection (projectGatewayConnectionDetailsForDiagnostics /
projectGatewayUrlForDiagnostics) so no diagnostic surface prints a raw URL;
the probe itself keeps using the unredacted URL.

* chore: re-fire CI

* fix(gateway): close remaining credential-leak paths in status diagnostics

ClawSweeper P1s: probe failure text (close reasons/transport errors) now
redacts URL-like credentials before status renderers print it; the status-all
remote-missing fallback line projects the environment gateway URL; gateway
transport-error JSON redacts the remote-controlled close reason and derived
message.
2026-08-07 03:57:08 -07:00
Peter Steinberger 44a5c40e11 fix(cron): on-exit watcher retries transient failures instead of silently dropping the watch (#120023)
* fix(cron): retry on-exit watcher spawn/wait failures with backoff

A transient supervisor failure while arming or waiting on an on-exit watch
previously dropped the watch with only a log line: the job would never fire
and nothing recorded why. Failures now persist lastError/consecutiveErrors on
job state via the gateway cron service and re-arm with bounded backoff
(1s/5s/30s/5m); cancel clears any pending retry timer.

* chore: re-fire CI

* fix(cron): guard watcher-state writes against replaced on-exit jobs

ClawSweeper P1: an old watcher's failure write could land on a job that was
edited or converted to a different schedule, pushing the replacement into
failure backoff or auto-disable. Watcher-state persistence now uses the same
identity precondition as persistCompletion (enabled, on-exit, updatedAtMs
match) and treats a mismatch as a no-op.
2026-08-07 03:56:16 -07:00
Peter Steinberger 75a3cf298d feat(plugins): read the ai.openclaw Agent Plugins extension namespace (#120214) 2026-08-07 03:49:12 -07:00
Peter Steinberger f4387b7a5e feat(plugins): support the Agent Plugins bundle format (#120115)
* feat(plugins): support the Agent Plugins bundle format

* docs(plugins): document the Agent Plugins bundle format

* test(agents): preserve agent bundle runtime discovery

* fix(plugins): isolate Agent Plugins data-dir failures and align MCP support reporting

* docs(plugins): list Agent Plugins in the canonical plugin-format guides

* fix(plugins): gate Agent Plugins detection on schema, pure inspection, root-relative cwd

* fix(plugins): record Agent Plugins data-dir ownership explicitly

* docs(plugins): cover Agent Plugins in the CLI install detection guide

* fix(plugins): carry Agent Plugins data-dir and transport contracts through external MCP projections
2026-08-07 02:55:08 -07:00
Peter Steinberger 06d5e4457f fix(gateway): refresh session lists after external identity writes (#120203)
* fix(gateway): invalidate session lists on external mutations

* test(sessions): cover identity mutation fence
2026-08-07 02:45:14 -07:00