Commit Graph

4802 Commits

Author SHA1 Message Date
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 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
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 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
SunnyShu 4d87263b1b fix(plugins): warn when registerHook uses a typed hook event name (#118601)
* [AI] fix(plugins): warn when registerHook uses a typed hook event name

api.registerHook registers into the legacy internal-hook path, while typed
lifecycle events (before_tool_call, message_received, ...) are dispatched
exclusively by the typed hook runner. Registrations under typed names
silently never fired since #117372 moved the write to legacyInternalHooks.
Emit a registration diagnostic pointing to the public api.on(...) API so
plugin authors see the no-op at load time instead of trusting a false
"loaded".

Related to #116965

Co-Authored-By: deepseek-v4-flash <noreply@anthropic.com>

* [AI] fix(plugins): point registerHook comment at public api.on API

Condense the inline comment in createToolHookRegistrars and replace the
internal registerTypedHook migration reference with the public api.on(...)
API, matching the emitted warning and hooks docs. Behavior and tests
unchanged.

---------

Co-authored-by: deepseek-v4-flash <noreply@anthropic.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-06 18:59:27 -07:00
Peter Steinberger 804ae7f121 fix(security): stop recommending retired install-policy bypasses (#120011)
* fix(security): align install policy path contract

* test(security): align install policy wording

* style(security): format install policy test

* fix(security): identify failing install policy path

* test(security): track Windows ACL temp dirs
2026-08-06 18:45:18 -07:00
Dallin Romney b5369f8e5d fix(qa): replace false Codex pin compatibility evidence (#118012)
* test(qa): replace synthetic Codex pin evidence

* test(qa): update core runtime-pair count

* test(qa): cover official Codex plugin drift

* test(qa): preserve frozen candidate scenario ids
2026-08-07 08:45:26 +08:00
Peter Steinberger 0b849a316d refactor(plugins): single-source interactive dispatch and its auth downgrade via plugin SDK (#120062) 2026-08-06 16:31:04 -07:00
Peter Steinberger b4a26783f7 refactor(test): consolidate duplicated requireRecord and provider HTTP mock helpers (#119982)
* refactor(test): consolidate duplicated test helpers

* test: remove stale record guard import

* fix(test): remove orphaned record guards

* refactor(test): keep record requirement messages exhaustively typed

* fix(test): keep packages/ai record guard package-local
2026-08-06 14:48:01 -07:00
Patrick Erichsen 05e3ce11ac fix(release): restore Fish Audio ClawHub publishing 2026-08-06 11:31:37 -07:00
Vincent Koc 52b8f9be80 fix(plugins): migrate Fish Audio plugin identity (#119900)
* fix(plugins): migrate Fish Audio plugin identity

* fix(plugins): tighten Fish Audio identity migration

* fix(plugins): follow catalog selector for id replacements

* fix(plugins): reject replacement install collisions

* refactor(plugins): reuse skipped update outcomes
2026-08-06 20:50:36 +08:00
Vincent Koc c4292bc8b2 fix(diagnostics): report exporter health in doctor and status (#119816)
* fix(diagnostics): report exporter health transitions

* fix(diagnostics): retire exporter health on shutdown

* test(diagnostics): enforce OTLP protobuf content type

* test(diagnostics): satisfy exporter test type contracts

* fix(diagnostics): redact endpoint-like exporter codes

* fix(diagnostics): coordinate exporter route health

* test(diagnostics): satisfy exporter health static gates

* fix(diagnostics): keep exporter health internal
2026-08-06 20:50:18 +08:00
w33d 2ea567972c fix(diagnostics): attribute plugin LLM usage spans (#107937)
Emit usage once at the shared plugin completion boundary and expose host-derived plugin identity only on OTel usage spans. Preserve aggregate metric labels and cover the redacted Gateway path end to end.

Refs #98968

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com>
2026-08-06 16:55:53 +08:00
clawsweeper[bot] ed40d0599b fix(plugins): keep targeted official updates on the core channel (#119799)
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-08-06 15:06:49 +08:00
joshavant 9702134882 fix: settle Gemini CLI auth preparation failures 2026-08-06 01:48:09 -05:00
Ayaan Zaidi 874c63318b fix(skills): remove regex correction capture; self-learning is reviewer-only
Deletes the deterministic regex capture path that templated raw chat text into skill proposals (junk like a proposal whose whole procedure was one slugified user message). All autonomous learning now flows through the isolated experience reviewer: it sees a bounded workspace skill list, prefers revising pending proposals or updating the governing skill over creating new ones, and treats durable user corrections as first-class evidence. Update proposals are reviewer-only (explicit opt-in) and never auto-apply, since the reviewer drafts them without the live skill body. Removes the producerless pending-suggestion session machinery. Regression test proves the junk path is gone; real-Telegram E2E verdict in the PR body.
2026-08-06 11:01:59 +05:30
HughTang a1064adb68 fix(diagnostics-otel): propagate exported span context (#112283)
* fix(diagnostics-otel): harness.run root span adopts diagnostic trace context

Fall back to internalOrTrustedParentContext when there is no active
tracked parent, so the openclaw.harness.run root span (and its whole
OTel subtree) adopts the diagnostic traceId instead of minting a new
OTel root. This lets spans propagated via the diagnostic traceparent
(e.g. a2a-gateway a2a.call / downstream a2a.task) share one trace with
the run internals.

* fix(diagnostics-otel): propagate exported span context

Co-authored-by: HughTang <44694613+HughTang@users.noreply.github.com>

* fix(diagnostics): break propagation import cycle

* fix(diagnostics): preserve trace propagation contracts

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-06 08:41:20 +08:00
Patrick Erichsen 678a3c18a9 fix(gateway): finish successful sessions after timestamp races (#119752)
* fix(gateway): correlate session lifecycle by run

* test(qa): expect settled handoffs to survive restart quietly

* test(agents): split embedded run persistence coverage
2026-08-05 17:24:12 -07:00
Vincent Koc 397a60582a fix(diagnostics): preserve OTEL startup failure (#119747) 2026-08-06 06:41:24 +08:00
Vincent Koc 880dde979b fix(diagnostics): preserve telemetry during service shutdown (#119705)
* fix(diagnostics): preserve otel service shutdown lifecycle

* test(diagnostics): type OTEL unsubscribe callback

* test(diagnostics): normalize async stop assertion

* fix(plugins): preserve ordinary stop handling
2026-08-06 03:58:06 +08:00
Vincent Koc 5eb7eddce6 fix(memory): keep post-ready RPCs responsive (#119710)
Punchcard-Session: coral-workshop-workshop-3f
2026-08-06 03:35:32 +08:00
Vincent Koc 824d170680 fix(memory): keep gateway RPCs responsive during startup (#119676)
* fix(memory): defer startup manager warmup

* test(plugins): register memory stop hook contract
2026-08-06 02:07:57 +08:00
Vincent Koc eba4487b3a improve(anthropic): reduce session catalog startup memory (#119619)
* perf(anthropic): lazy-load session catalog runtime

Punchcard-Session: coral-workshop-workshop-3f

* fix(anthropic): keep session catalog helpers private

Punchcard-Session: coral-workshop-workshop-3f

* docs(plugin-sdk): document catalog create target

Punchcard-Session: coral-workshop-workshop-3f

* fix(plugins): continue catalog target selection

Punchcard-Session: coral-workshop-workshop-3f
2026-08-06 00:28:56 +08:00
Vincent Koc 80da61668e improve(doctor): avoid repeated plugin metadata scans (#119482)
* perf(doctor): reuse plugin metadata snapshot

Punchcard-Session: coral-workshop-workshop-3f

* test(doctor): update legacy issue mock

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): refresh metadata after repairs

* test(doctor): type legacy issue mock arguments

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): invalidate scoped plugin metadata

Punchcard-Session: coral-workshop-workshop-3f

* fix(doctor): keep snapshot scope type private

Punchcard-Session: coral-workshop-workshop-3f

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-05 19:06:08 +08:00
Vincent Koc eb39ac8cac fix(plugins): keep install fixtures registry-valid (#119489)
Punchcard-Session: amber-workshop-river-yr
2026-08-05 13:26:02 +08:00
Vincent Koc fd1662f49c fix(cli): retire invalid secret flags and prove doctor recovery (#118926)
* test(qa): add doctor CLI recovery coverage

* test(qa): secure doctor exec SecretRef proof

* test(qa): gate doctor systemd recovery proof

* test(qa): normalize doctor terminal output

* test(qa): close doctor probe sockets

* test(qa): classify doctor probe as foreign

* test(qa): track doctor probe sockets

* test(qa): retain doctor instance narrowing

* test(qa): preserve observed doctor recovery proof

* test(qa): keep doctor recovery on stable dist

* test(qa): honor Windows exec ACL blocking

* test(qa): use canonical home for systemd recovery

* test(qa): follow bounded gateway recovery

* test(qa): accept lifecycle service label

* test(qa): align doctor recovery contract

Punchcard-Session: crisp-lantern-orchard-nv

* docs(secrets): remove retired provider bypasses

Punchcard-Session: crisp-lantern-orchard-nv

* test(qa): isolate doctor recovery target

Punchcard-Session: crisp-lantern-orchard-nv

* fix(cli): retire invalid secret provider flags

Punchcard-Session: crisp-lantern-orchard-nv

* test(qa): isolate doctor supervisor mode

Punchcard-Session: crisp-lantern-orchard-nv

* fix(plugins): remove dead secret path bypass

Punchcard-Session: crisp-lantern-orchard-nv

* chore: drop release-owned changelog entry

Punchcard-Session: crisp-lantern-orchard-nv

* test(qa): isolate doctor sudo scope

Punchcard-Session: crisp-lantern-orchard-nv

* fix(secrets): remove dead path bypass

Punchcard-Session: crisp-lantern-orchard-nv

* test(qa): isolate systemd user bus

Punchcard-Session: crisp-lantern-orchard-nv
2026-08-05 11:20:23 +08:00
Peter Steinberger 1f3d45b76f refactor(plugins): consolidate lifecycle hook dispatch (#119429) 2026-08-04 20:11:22 -07:00
Vincent Koc 1ee0564b09 fix(discord): avoid doctor runtime loading (#119391)
* fix(discord): publish doctor capability metadata

Punchcard-Session: amber-workshop-river-yr

* fix(doctor): read packaged channel metadata

Punchcard-Session: amber-workshop-river-yr
2026-08-05 11:05:35 +08:00
mikasa 722dfb3d64 fix(status): status --all slows down with missing plugins (#119203)
* fix(status): avoid repeated discovery for missing channels

* fix(status): batch missing plugin repair hints

* fix(status): type missing plugin channel ids

* fix(status): preserve required channel ids

* fix(status): keep batch hint type internal

* fix(status): preserve batch repair laziness

---------

Co-authored-by: daily-fix[bot] <daily-fix[bot]@users.noreply.github.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-08-04 19:41:31 -07:00
Vincent Koc 832459d2ae perf(agents): reuse provider policy manifest registry (#119305) 2026-08-05 02:25:11 +08:00
Vincent Koc ef11eae39b fix(plugins): preserve install index state across failures (#119228)
* fix(plugins): preserve install index policy config

* fix(plugins): restore complete install index state

* fix(plugins): fence install index rollback

* fix(plugins): fence generic install index rollback

* fix(plugins): keep lifecycle lease context private

* test(cli): align plugin index rollback mocks

* test(plugins): enforce index rollback receipts

* fix(plugins): serialize install rollback with config commit

* test(plugins): keep legacy index writer mock private
2026-08-05 01:04:17 +08:00
Vincent Koc 1aedd8f37e fix(memory): load configured providers for CLI search (#119186)
* fix(memory): activate configured providers in CLI commands

* fix(memory): resolve configured embedding provider owners

* test(memory): keep metadata mock unset by default

* fix(memory): preserve plugin allowlist policy

* test(memory): classify plugin-owned root command
2026-08-04 22:31:10 +08:00
Vincent Koc e4aab26d01 fix(cli): avoid repeated migration scans during local agent turns (#119051)
* fix(cli): avoid repeated state migration scans

* fix(build): preserve source runtime provenance

* fix(cli): persist state checkpoint before plugin convergence

* fix(cli): invalidate migration checkpoints on input changes

* fix(plugins): refresh changed doctor contracts

* fix(plugins): preserve warm Doctor contract indexes

* test(plugins): align manifest registry fixtures

* test(cli): isolate ACP process state

* fix(doctor): persist refreshed plugin indexes

* fix(doctor): verify persisted plugin index from disk

* fix(doctor): fence plugin index persistence

* fix(doctor): retain validated migration lease

* fix(plugins): canonicalize persisted build metadata

* fix(plugins): preserve config policy during install repair
2026-08-04 20:28:16 +08:00
Vincent Koc c3f148f6b7 fix(plugins): preserve metadata reloads during models status (#119183)
* fix(plugins): preserve newer metadata publications

* test(plugins): type metadata snapshot fixture
2026-08-04 19:24:30 +08:00
Vincent Koc 32c5f02050 merge: keep llama.cpp completions on native transport
* https://github.com/openclaw/openclaw:
  fix(ai): preserve Google simple completion sanitation
  fix(tts): use prepared completion transport
  fix(ai): prefer provider-owned completion streams
2026-08-04 15:20:56 +08:00
joshavant d636f5f8e0 fix(agents): gate Claude live session protocol 2026-08-04 02:08:23 -05:00
Vincent Koc ea90866916 fix(tts): use prepared completion transport 2026-08-04 11:11:55 +08:00
Vincent Koc 84d9e93dbb chore(qa): cover plugin testing harness contracts (#118933)
* test(qa): cover plugin testing harness contracts

* test(qa): narrow plugin harness tool factory
2026-08-04 09:07:27 +08:00
Peter Steinberger e16bc0108c fix(gateway): keep plugin model allowlists static (#118854) 2026-08-03 17:39:45 -07:00
Patrick Erichsen 1aea2df935 fix(plugins): refresh bundled channel skills (#119020) 2026-08-03 17:31:00 -07:00
Michael Christenson II 7f7a709b1d fix: Ollama missing from onboarding when its service is reachable (#118020) 2026-08-03 17:49:31 -06:00
Peter Steinberger a78f2c40bf test(plugins): align tool fixtures with owner policy (#118959) 2026-08-03 16:09:05 -07:00
Vincent Koc 1d446ad2cc fix(plugins): remove stale load paths during uninstall (#118930)
* test(qa): prove marketplace plugin updates

* fix(plugins): clean exact install load paths on uninstall

* fix(ci): register marketplace lifecycle assertions
2026-08-03 21:57:54 +00:00
Peter Steinberger 25aa29d7a1 refactor: delete dead post-landing plugin/hooks scaffolding (#118920)
* refactor: delete dead post-landing plugin/hooks scaffolding

* fix(security): resolve fast-uri and undici HIGH advisories
2026-08-04 04:26:22 +08:00