Commit Graph

7562 Commits

Author SHA1 Message Date
Vincent Koc
b729806758 fix(release): preserve ClawHub fixture across restart (#120709) 2026-08-09 05:26:16 +08:00
Peter Steinberger
21a9428a8a fix(identity): prevent cross-runtime device identity races (#120643)
* fix(identity): coordinate SQLite ownership across runtimes

* fix(ci): route changed-scope fixture tests
2026-08-08 13:55:15 -07:00
Vincent Koc
e455cafa13 fix(release): run ClawHub prepublish fixture from isolated cwd (#120692) 2026-08-09 04:36:14 +08:00
Peter Steinberger
da4a656cdb improve: doctor migration checks no longer load every bundled plugin runtime (#120678)
* perf(plugins): declare doctor contract surfaces

* perf(doctor): slim migration import closures

* perf(plugins): narrow doctor declaration record surface and wire owner-test lane

Registry records carry only the doctorContract declaration instead of the whole
parsed manifest, and check:changed now selects the src/plugins-owned declaration
honesty and closure-guard tests for extension module/manifest changes so
cross-lane drift cannot pass PR classification.

* fix(doctor): keep control-plane dist imports require-safe

Keep doctor and channel control-plane chunks off exec-class dependencies, and enforce native require(esm) loading during postbuild.

* chore(plugin-sdk): regenerate API baseline

* chore(plugin-sdk): sync export ordering

* fix(plugins): satisfy doctor contract CI boundaries

* perf(doctor): make qqbot doctor closure dependency-light

qqbot was the last plugin above 5s in doctor state-migration enumeration
(~8s under tsx/jiti). The cost was not the state-key builder (already a
leaf): its doctor closure value-imported the runtime-doctor SDK barrel,
whose plugin-state-store/state-db re-exports pull kysely (~330 modules),
plus security-runtime for one fileExists (~200 modules), all resolved
per-module by jiti during enumeration.

Split the migration-define helpers and light re-exports into a new
private-local plugin-sdk/runtime-doctor-migrations subpath; runtime-doctor
re-exports it so its public surface is byte-identical (API baseline hash
unchanged). qqbot's doctor-contract and state-migrations now import only
the light subpath, swapping fileExists for the equivalent async
legacyStateFileExists already in the closure.

qqbot enumeration: ~8.0s/531 modules -> ~0.25s/18 modules.

* chore(plugin-sdk): drop private-local subpath from API baseline

runtime-doctor-migrations is private-local-only; the baseline tracks public
modules, and the earlier line was generated before the classification.

* fix(plugins): register runtime-doctor-migrations boundary paths

The private-local subpath list feeds the extension package boundary map;
the shared paths config and xai's derived overrides must carry the same
entry or the boundary contract test fails.
2026-08-08 13:29:18 -07:00
Vincent Koc
33a5f37937 fix(release): repair survivor fixture assertion quoting (#120680) 2026-08-09 03:53:51 +08:00
Vincent Koc
38039f5ea8 fix(secrets): preserve Windows ACL diagnostics (#120211)
* fix(secrets): preserve Windows ACL diagnostics

* fix(secrets): make Windows path security proof deterministic

* test(secrets): isolate Windows ACL tool failures

* test(secrets): preserve ACL preload process contract

* test(ci): route Doctor ACL proof to Windows

* test(qa): normalize Clack note borders

* test(ci): register Windows ACL preload for deadcode checks
2026-08-09 03:48:42 +08:00
Vincent Koc
b40f846757 fix(release): keep survivor plugin repair hermetic (#120677) 2026-08-09 03:34:42 +08:00
Peter Steinberger
0487b6812c fix(qa): honor Crabbox SSH fallback ports (#120539) 2026-08-08 12:01:30 -07:00
Vincent Koc
e81d7e62e8 fix(release): scope upgrade plugin credentials (#120666) 2026-08-09 03:00:36 +08:00
Peter Steinberger
47f78a32eb fix(ai): preserve long Responses sessions after server compaction (#120457)
* fix(ai): preserve Responses server compaction state

Persist opaque Responses compaction items as fenced provider replay state so long stateless sessions can resume authoritative compressed history without exposing it in display or diagnostics. Carry state through worker transcripts and prune replay prefixes without splitting tool pairs.

Release note: Preserve long OpenAI Responses sessions across server-side compaction and worker restarts.

Related: #95788

* test(ai): align long-context fixtures with CI contracts

Make tool-result fixtures type-complete, use the canonical model selector helper, remove unused test-helper exports, and route the paid long-context live probe through the dedicated Gateway profile shard.

* test(ai): type mocked Responses terminal events

Give the mock SSE event collection an explicit open event shape so terminal response events coexist with output-item events under the root test typecheck.

* fix(ai): suppress rejected compaction replay

Persist a route-fenced suppression tombstone when encrypted-content recovery rejects a compaction item, so later turns do not retry the same opaque state. Preserve the tombstone through transcript redaction and cover successful fallback followed by the next turn.

* fix(ai): keep compaction suppression transport-private

Keep the suppression contract local to its sole Responses transport owner and make the regression fixture satisfy root type and lint checks without widening the Plugin SDK surface.

* refactor(ai): remove compaction suppression re-export

* fix(ai): scope compaction suppression to replay route

Keep foreign-route rejection tombstones from hiding the newest compatible Responses compaction while preserving same-route suppression.

* fix(ai): harden Responses replay recovery

Stage encrypted replay recovery so compaction is only suppressed after an attributable rejection. Preserve terminal ordering and keep provider replay within worker frame budgets without truncating opaque state.

* refactor(ai): centralize Responses output indexes

Keep normalized output identity tracking in the stream-slot owner, move response failure state to its diagnostic owner, and remove the obsolete replay clone export so exact-head static gates remain shrink-only.

* fix(ai): retain idless terminal tool identity

Use the canonical empty identity only when a provider supplies neither call nor item id, preventing terminal recovery from duplicating a done-only tool call while preserving stronger identities when available.

* fix(sessions): hide provider replay from public events

* fix(ai): stage encrypted replay recovery

* fix(ai): keep replay attempt kind internal

* fix(ai): route Azure through replay recovery

Use the shared encrypted-content retry owner for Azure Responses so compaction suppression and prompt-observer variants stay coherent across transports.

* fix(ai): harden replay persistence boundaries

Fence Azure replay by the resolved request endpoint, drop invalid replay during transcript sanitization, and surface worker-launch replay omissions through the existing redacted diagnostic path.
2026-08-08 11:55:26 -07:00
Peter Steinberger
e3de98a451 feat(update): scheduled update campaigns with countdown, dev-channel auto-update, and Updates settings page (#120506)
* feat(update): scheduled update campaigns with countdown, dev-channel auto-update, and Updates settings page

* fix(ui): satisfy update campaign deadcode checks

* feat(update): extend scheduled update campaigns

* test(ui): include Updates page in settings sidebar search expectations

* fix(update): end campaigns when apply fails

* fix(update): pin dev campaign applies to the announced commit

* test(ui): align update e2e fixtures

* fix(update): pin adopted dev updates to the announced commit

* docs(update): document automatic dev update campaigns

* fix(ui): gate automatic dev updates on git installs

* fix(gateway): scope detailed update metadata to read-capable clients

* fix(gateway): break post-attach madge cycle with a leaf client-lookup type

* chore(protocol): regenerate clients after rebase

* test(gateway): update method tail after rebase

* fix(update): preserve campaign target and hold state

* test(update): align adoption mocks and split handoff suite

* test(update): route split handoff suites on Windows
2026-08-08 11:19:53 -07:00
Vincent Koc
0d45efd5da fix(ci): retry transient artifact API reads (#120654) 2026-08-09 02:05:04 +08:00
Peter Steinberger
eecbfcc960 fix(infra): unify env-truthiness, missing-path, realpath, and abort-sleep semantics (#120359)
* fix(infra): unify environment truthiness

* fix(infra): unify missing path classification

* refactor(infra): unify realpath fallbacks

* fix(infra): unify abortable sleep errors

* docs(infra): clarify path fallback semantics

* fix(infra): route realpaths through policy wrapper

* fix(infra): ratchet plugin SDK wildcard budget

* fix(agents): preserve zero-delay abort precedence

* fix(infra): preserve fallback and media recovery contracts

* fix(plugins): share quarantine path resolution
2026-08-08 10:58:57 -07:00
Vincent Koc
a07d0e249d fix(maintainers): parse merge comment URL structurally (#120649) 2026-08-09 01:58:11 +08:00
Vincent Koc
49161dee60 fix(release): unblock deferred Telegram beta validation (#120630)
* fix(release): allow deferring package Telegram validation

* fix(qa): mount taxonomy in package Telegram harness

* fix(release): restrict Telegram deferral to beta
2026-08-09 01:03:02 +08:00
Vincent Koc
6f06fb2949 fix(deps): register missing ownership metadata (#120615) 2026-08-09 00:50:45 +08:00
Vincent Koc
13322b2adc fix(ci): run every changed-scope routing suite (#120625) 2026-08-09 00:50:17 +08:00
Vincent Koc
7fd1f731a6 fix(release): make tar extraction portable on Windows (#120619) 2026-08-09 00:47:20 +08:00
Peter Steinberger
2bce06e1e7 refactor(pr): remove unreachable fork push retry (#120565)
* refactor(pr): remove unreachable fork push retry

* refactor(pr): simplify missing fork branch handling
2026-08-08 08:48:44 -07:00
Peter Steinberger
7ecdef6e2e fix: prefer Crabbox inspect SSH host (#120611) 2026-08-08 08:30:07 -07:00
Peter Steinberger
18dd70cec0 fix(release): dispatch validation through a client-pushed target ref (#120613) 2026-08-08 08:22:17 -07:00
Vincent Koc
b5180b6816 fix(codex): support app-server 0.147.0 (#120594)
* fix(codex): support app-server 0.147.0

* docs(codex): clarify marketplace version provenance
2026-08-08 23:07:05 +08:00
Peter Steinberger
bc3bf842c9 fix(sessions): preserve context provenance across retries [AI] (#120509)
* fix(protocol): preserve checkpoint token version casing

* fix(agents): preserve retry usage chronology

* test(sessions): relax transcript estimate assertion

* fix(agents): preserve omitted harness attempt provenance

* test(sessions): cover retry and Swift provenance

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* test(agents): cover hook-block usage chronology

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 07:06:36 -07:00
Peter Steinberger
9a2f91a79a fix(release): keep prerelease companions exact in cross-OS checks (#120556)
* fix(release): install exact cross-os companion artifacts

* fix(release): derive companion package type from resolver

* fix(release): produce provider-owned companion registries

* fix(release): preserve companions for npm candidates

* refactor(release): simplify companion registry flow

* test(release): align package acceptance contracts

* fix(release): guard optional registry JSON parsing

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 21:45:16 +08:00
Vincent Koc
4eec51a276 merge: align Fish Audio extension directory (#120084) 2026-08-08 20:46:55 +08:00
Peter Steinberger
d1dea39bbb fix(maintainers): route PR reads through Octopool (#120525)
* fix(maintainers): route PR reads through Octopool

* test(maintainers): cover PR transport ownership

* fix(maintainers): scope merge wait to CI run
2026-08-08 03:56:36 -07:00
Vincent Koc
67618e273d fix(docs): preserve legacy plugin reference links 2026-08-08 02:21:33 -07:00
Peter Steinberger
d9080cfff8 fix(agents): transfer requester wake ownership across yield and deflake survivor registry setup (#120538) 2026-08-08 01:42:33 -07:00
Peter Steinberger
ea50fe8453 fix(ui): open mock catalog sessions without crashing (#120444) 2026-08-07 23:21:54 -07:00
Peter Steinberger
733512b612 fix(e2e): expose beta companions in survivor registries and unbind ReDoS timing from shell startup (#120479) 2026-08-07 22:12:00 -07:00
Peter Steinberger
263ad629c1 fix(build): keep CLI help fallback asynchronous (#120454) 2026-08-07 21:28:52 -07:00
Dallin Romney
2f1692c955 fix(release): accept verified companion plugin packages (#120186) 2026-08-07 19:18:20 -07:00
Gio Della-Libera
7774f9a36c feat(claws): apply schema-v1 profile requirements (#115962)
* test(claws): model provenance columns in CLI state mock

* fix(claws): normalize owned upgrade preflight

* fix(claws): normalize owned upgrade preflight

* fix(claws): normalize owned upgrade preflight

* fix(claws): satisfy current validation gates
2026-08-07 18:51:45 -07:00
Peter Steinberger
67f1baea58 fix(ci): honor env- and config-selected Windows targets in crabbox run transforms (#120395) 2026-08-07 18:50:54 -07:00
Peter Steinberger
48639663b0 chore(release): prepare 2026.8.1 (#120375) 2026-08-07 18:44:12 -07:00
Peter Steinberger
cd53ac012d fix(ci): harden hydrated dead-export scans (#120365)
* fix(ci): harden hydrated dead-export scans

* fix(ci): satisfy lint and test-type gates for hydrated scan hardening
2026-08-07 17:20:05 -07:00
joshavant
026f4045b7 Revert "fix(protocol): preserve gateway session attribution across node runs"
This reverts commit 735f176b01.
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
2c8923fe94 Revert "fix(packaging): recognize owner-restricted plugin aliases"
This reverts commit a90c8d81df.
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
Peter Steinberger
fb0812c857 fix(qa): prevent false update-restart package failures (#120300)
* test(qa): expose update restart process exits

* test(qa): supervise update restart gateway

* test(qa): isolate supervised gateway environment

* test(qa): diagnose restart plugin convergence

* test(qa): mount trusted upgrade harness

* test(qa): include upgrade runtime companions

* test(qa): remove temporary restart diagnostics

* test(qa): enforce systemd restart budget

* test(qa): honor systemd stop timeout

* test(qa): tighten package fixture ownership

* test(qa): preserve unrelated lane shapes

* test(qa): complete service fixture boundaries
2026-08-07 14:46:59 -07: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
Vincent Koc
3a0216ce29 fix(ci): accept neutral draft gate runs (#120310)
* fix(ci): accept neutral draft gate runs

* fix(ci): retain decisive gate success

* fix(ci): keep pending gate runs authoritative

* fix(ci): order hosted gates by creation
2026-08-08 04:53:10 +08:00
Vincent Koc
8c68f74ef9 fix(ci): align hosted gates with workflow applicability (#120313) 2026-08-08 03:59:27 +08:00
Peter Steinberger
2fa9a29c77 test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call (#120303)
* test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call

* fix(test): wire Agent Plugins gateway E2E and assert activation
2026-08-07 11:47:07 -07:00
Peter Steinberger
aa7cf44c75 fix(install): Windows installer no longer reports failed doctor migration as complete (#120033)
* fix(install): Windows installer surfaces doctor migration failures

Invoke-OpenClawCommand ignored the child exit code, so a failed
'openclaw doctor --non-interactive' still printed '[OK] Migration complete'.
The wrapper now throws on nonzero exit and Run-Doctor reports the failure
with the exact command to rerun instead of claiming success.

* chore: re-fire CI

* chore: re-fire CI against fixed main baseline
2026-08-07 01:19:59 -07:00
Vincent Koc
79b8775bc9 feat(audit): preserve exact agent execution provenance 2026-08-07 15:27:14 +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
a0deb8edae fix(release): provide prerelease plugin companions to package QA (#120107) 2026-08-07 13:31:41 +08:00