Peter Steinberger
c1ea0ae9c8
build: update deps and align pi sdk usage
2026-03-31 22:56:20 +09:00
Peter Steinberger
5a93344d82
fix: ship bundled runtime support packages
2026-03-31 14:25:32 +01:00
Jacob Tomlinson
2ce44ca6a1
fix(plugins): guard marketplace archive downloads ( #58267 )
...
* Plugins: guard marketplace archive downloads
* Plugins: harden marketplace download cleanup
* Plugins: bound marketplace archive downloads
* Plugins: harden marketplace archive failures
* Plugins: reject drive-relative marketplace archives
* Plugins: stream marketplace archive downloads
2026-03-31 12:59:42 +01:00
Vincent Koc
8dfbcaa200
fix(ci): default local low-memory checks
2026-03-31 15:05:04 +09:00
Ayaan Zaidi
3059eadca2
test: fix provider runtime mocks and test planner load shedding
2026-03-31 11:04:28 +05:30
Vincent Koc
ab8d999917
docs: fix sandbox scope default (session -> agent per resolveSandboxScope)
2026-03-31 14:24:19 +09:00
fuller-stack-dev
235908c30e
fix: support multi-kind plugins for dual slot ownership ( #57507 ) (thanks @fuller-stack-dev)
...
* feat(plugins): support multi-kind plugins for dual slot ownership
* fix: address review feedback on multi-kind plugin support
- Use sorted normalizeKinds() for kind-mismatch comparison in loader.ts
(fixes order-sensitive JSON.stringify for arrays)
- Derive slot-to-kind reverse mapping from SLOT_BY_KIND in slots.ts
(removes hardcoded ternary that would break for future slot types)
- Use shared hasKind() helper in config-state.ts instead of inline logic
* fix: don't disable dual-kind plugin that still owns another slot
When a new plugin takes over one slot, a dual-kind plugin that still
owns the other slot must not be disabled — otherwise context engine
resolution fails at runtime.
* fix: exempt dual-kind plugins from memory slot disablement
A plugin with kind: ["memory", "context-engine"] must stay enabled even
when it loses the memory slot, so its context engine role can still load.
* fix: address remaining review feedback
- Pass manifest kind (not hardcoded "memory") in early memory gating
- Extract kindsEqual() helper for DRY kind comparison in loader.ts
- Narrow slotKeyForPluginKind back to single PluginKind with JSDoc
- Reject empty array in parsePluginKind
- Add kindsEqual tests
* fix: use toSorted() instead of sort() per lint rules
* plugins: include default slot ownership in disable checks and gate dual-kind memory registration
2026-03-31 10:06:48 +05:30
Josh Avant
44674525f2
feat(tts): add structured provider diagnostics and fallback attempt analytics ( #57954 )
...
* feat(tts): add structured fallback diagnostics and attempt analytics
* docs(tts): document attempt-detail and provider error diagnostics
* TTS: harden fallback loops and share error helpers
* TTS: bound provider error-body reads
* tts: add double-prefix regression test and clean baseline drift
* tests(tts): satisfy error narrowing in double-prefix regression
* changelog
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
---------
Signed-off-by: joshavant <830519+joshavant@users.noreply.github.com>
2026-03-30 22:55:28 -05:00
Josh Avant
c918ab4faf
fix(tts): restore 3.28 schema compatibility and fallback observability ( #57953 )
...
* fix(tts): restore legacy config compatibility and fallback observability
* fix(tts): surface fallback attempts in status and telephony
* test(tts): cover /tts audio to /tts status fallback flow
* docs(tts): align migration and fallback observability guidance
* TTS: redact fallback logs and scope legacy plugin migration
* Infra: dedupe UV_EXTRA_INDEX_URL in host env policy
* Docs: scope doctor TTS migration to voice-call
* voice-call: restore strict known TTS provider validation
2026-03-30 22:05:03 -05:00
Peter Steinberger
6b6ddcd2a6
test: speed up core runtime suites
2026-03-31 02:25:02 +01:00
Gustavo Madeira Santana
bbd495ed63
plugins: quiet scoped manifest id warnings
2026-03-30 19:35:09 -04:00
Dinakar Sarbada
62d6cfedee
fix(doctor/plugins): skip unused Matrix inspector loads and honor enabledByDefault startup plugins ( #57931 )
...
Merged via squash.
Prepared head SHA: 634794b954
Co-authored-by: dinakars777 <250428393+dinakars777@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-30 17:06:04 -04:00
Jacob Tomlinson
8deb9522f3
Guard marketplace and Ollama network requests ( #57850 )
...
* Plugins: guard marketplace and Ollama fetches
* Ollama: pin guarded host allowlist
2026-03-30 20:08:38 +01:00
Shakker
8746e2e216
fix: restore cli registry side-effect option
2026-03-30 18:10:08 +01:00
Ayaan Zaidi
1b557ffe65
fix(plugins): keep snapshot hook loads isolated
2026-03-30 22:00:54 +05:30
joelnishanth
f849b8de97
hooks: default hooks.internal.enabled to true so bundled hooks load on fresh installs
...
Made-with: Cursor
2026-03-30 22:00:54 +05:30
Jacob Tomlinson
7a953a5227
Plugins: block install when source scan fails ( #57729 )
...
* Plugins: block unsafe install scan fallthrough
* Tests: normalize install scanner formatting
* Plugins: avoid duplicate scan failure messaging
* Plugins: preserve hook install block codes
2026-03-30 15:36:08 +01:00
Gustavo Madeira Santana
0e078e8bc0
Runtime: dedupe typing lease logic
2026-03-30 00:58:04 -04:00
Gustavo Madeira Santana
16b452040b
Memory: fix QMD doctor contract typing
2026-03-30 00:54:41 -04:00
Gustavo Madeira Santana
b33a18e280
Runtime: remove dead telegram typing lease
2026-03-30 00:52:57 -04:00
Peter Steinberger
fec51572a3
fix: stabilize gate and extension boundary checks
2026-03-30 02:37:36 +01:00
Peter Steinberger
9857d40923
fix(runtime): stabilize image generation auth/runtime loading
2026-03-30 01:14:29 +01:00
Gustavo Madeira Santana
cc04153d01
Agents: reuse shared subagent hook runner type
2026-03-29 20:06:05 -04:00
Peter Steinberger
63cbc097b5
refactor(channels): route core through registered plugin capabilities
2026-03-30 01:03:42 +01:00
Peter Steinberger
471e059b69
refactor(plugin-sdk): remove channel-specific sdk shims
2026-03-30 01:03:24 +01:00
Peter Steinberger
193f781fad
fix: stabilize ci and serial test gate
2026-03-30 00:43:01 +01:00
Gustavo Madeira Santana
b0077904a7
Plugins: align CLI metadata loader behavior
2026-03-29 19:20:42 -04:00
Gustavo Madeira Santana
e5dac0c39e
CLI: keep root help plugin descriptors non-activating ( #57294 )
...
Merged via squash.
Prepared head SHA: c8da48f689
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-29 18:49:57 -04:00
Peter Steinberger
2e0682d930
refactor: finish decoupling plugin sdk seams
2026-03-29 22:42:06 +01:00
Peter Steinberger
d014f173f1
test: trim stale legacy coverage and repair mocks
2026-03-29 22:00:56 +01:00
Peter Steinberger
aed87a608e
fix: stabilize bundled plugin ci lanes
2026-03-30 05:35:53 +09:00
Gustavo Madeira Santana
9b4f26e70a
Plugins/CLI: add descriptor-backed lazy root command registration ( #57165 )
...
Merged via squash.
Prepared head SHA: ad1dee32eb
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-29 16:02:59 -04:00
Peter Steinberger
855878b4f0
fix: stabilize serial test suite
2026-03-30 04:46:04 +09:00
George Zhang
2607191d04
refactor(plugins): centralize before_install context shaping
2026-03-29 12:35:01 -07:00
George Zhang
b5d48d311c
test(plugins): cover before_install policy metadata
2026-03-29 12:35:01 -07:00
George Zhang
150faba8d1
plugins: enrich before_install policy context
2026-03-29 12:35:01 -07:00
George Zhang
ac3951d731
test(plugins): cover before_install install flows
2026-03-29 12:35:01 -07:00
George Zhang
7cd9957f62
plugins: add before_install hook for install scanners
2026-03-29 12:35:01 -07:00
Peter Steinberger
fc5fdcb091
refactor(plugin-sdk): remove bundled provider setup shims
2026-03-29 20:23:20 +01:00
George Zhang
e133924047
[codex] harden clawhub plugin publishing and install ( #56870 )
...
* fix: harden clawhub plugin publishing and install
* fix(process): preserve windows shim exit success
2026-03-29 11:59:19 -07:00
Peter Steinberger
56640a6725
fix(plugin-sdk): break vllm setup recursion
2026-03-29 17:55:09 +01:00
Keith Elliott
2d2e386b94
fix(matrix): resolve crypto bootstrap failure and multi-extension idHint warning ( #53298 )
...
Merged via squash.
Prepared head SHA: 6f5813ffff
Co-authored-by: keithce <2086282+keithce@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-29 12:38:10 -04:00
Peter Steinberger
edc58a6864
refactor: generalize provider transport hooks
2026-03-29 23:05:58 +09:00
Vincent Koc
7c50138f62
fix(plugins): keep built cli metadata scans lightweight
2026-03-29 17:55:17 +09:00
Peter Steinberger
8e0ab35b0e
refactor(plugins): decouple bundled plugin runtime loading
2026-03-29 09:10:38 +01:00
Peter Steinberger
f4d60478c9
test: reset plugin runtime state in optional tools tests
2026-03-29 08:52:12 +01:00
Peter Steinberger
c48e0f8e6a
style: normalize import order and formatting
2026-03-29 16:33:22 +09:00
Peter Steinberger
c664b67796
fix: apply Mistral compat across proxy transports
2026-03-29 16:32:31 +09:00
GodsBoy
bc9c074b2c
fix(channels): use pinned channel registry for outbound adapter resolution
...
loadChannelOutboundAdapter (via createChannelRegistryLoader) was reading
from getActivePluginRegistry() — the unpinned active registry that gets
replaced whenever loadOpenClawPlugins() runs (config schema reads, plugin
status queries, tool listings, etc.).
After replacement, the active registry may omit channel entries or carry
them in setup mode without outbound adapters, causing:
Outbound not configured for channel: telegram
The channel inbound path already uses the pinned registry
(getActivePluginChannelRegistry) which is frozen at gateway startup and
survives all subsequent registry replacements. This commit aligns the
outbound path to use the same pinned surface.
Adds a regression test that pins a registry with a telegram outbound
adapter, replaces the active registry with an empty one, then asserts
loadChannelOutboundAdapter still resolves the adapter.
Fixes #54745
Fixes #54013
2026-03-29 12:54:14 +05:30
Jakub Rusz
7e7e45c2f3
feat(matrix): add draft streaming (edit-in-place partial replies) ( #56387 )
...
Merged via squash.
Prepared head SHA: 53e566bf30
Co-authored-by: jrusz <55534579+jrusz@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-29 01:43:02 -04:00
Ayaan Zaidi
e3faa99c6a
fix(plugins): preserve gateway-bindable registry reuse
...
# Conflicts:
# src/agents/runtime-plugins.test.ts
# src/agents/runtime-plugins.ts
# src/plugins/loader.ts
# src/plugins/tools.ts
2026-03-29 09:59:06 +05:30
Dewaldt Huysamen
27188fa39f
fix: scope subagent registry reuse to tool loading ( #56240 ) (thanks @GodsBoy)
...
* fix(plugins): reuse active registry for sub-agent tool resolution
* test(plugins): harden resolveRuntimePluginRegistry with per-field, caller-shape, and cold-start tests
Add 11 regression tests covering:
- R1: Per-field isolation (coreGatewayHandlers, includeSetupOnlyChannelPlugins,
preferSetupRuntimeForChannelPlugins each independently prevent fallback;
empty onlyPluginIds[] treated as non-gateway-scoped)
- R2: Caller-shape regression (tools.ts, memory-runtime.ts,
channel-resolution.ts shapes fall back; web-search-providers.runtime.ts
with onlyPluginIds does not)
- R3: Cold-start path (null active registry falls through to loadOpenClawPlugins)
Add debug logging to resolveRuntimePluginRegistry recording which exit path
was taken (no-options, cache-key-match, non-gateway-scoped fallback, fresh load).
* refactor: simplify plugin registry resolution tests and trim happy-path debug logs
* fix(plugins): address review comments on registry fallback
- Fix cold-start test assertion: loadOpenClawPlugins always activates
the registry (shouldActivate defaults to true), so getActivePluginRegistry()
is not null after the call. Updated assertion to match actual behavior.
- Add safety comment documenting why the non-gateway-scoped fallback is
safe despite cache-key mismatch: single-gateway-per-process model means
sub-agents share workspaceDir, config, and env with the gateway.
* test(plugins): restructure per-field isolation tests to avoid load timeouts
Test isGatewayScopedLoad directly instead of going through the full
resolveRuntimePluginRegistry path which triggers expensive plugin
discovery. This fixes the includeSetupOnlyChannelPlugins test timing
out in CI while providing more precise coverage of the predicate.
* fix(plugins): expand safety comment to address startup-scoped registry concern
* fix(plugins): scope subagent registry reuse to tool loading
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-29 09:36:09 +05:30
Tak Hoffman
38d7e808d9
test: refresh bundled plugin metadata
2026-03-28 21:07:36 -05:00
Masato Hoshino
9449e54f4f
feat(line): add outbound media support for image, video, and audio
...
pnpm install --frozen-lockfile
pnpm build
pnpm check
pnpm vitest run extensions/line/src/channel.sendPayload.test.ts extensions/line/src/send.test.ts extensions/line/src/outbound-media.test.ts
Co-authored-by: masatohoshino <246810661+masatohoshino@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-28 20:51:16 -05:00
Peter Steinberger
f9b1079283
build: cut 2026.3.28 stable
2026-03-29 02:33:41 +01:00
Harold Hunt
fcee6fa047
Docs: add boundary AGENTS guides ( #56647 )
2026-03-28 20:22:03 -04:00
Vignesh Natarajan
c3a0304f63
chore(test): fix stale web search audit coverage
2026-03-28 17:18:57 -07:00
Peter Steinberger
5872f860c9
feat(xai): add plugin-owned x_search onboarding
2026-03-29 00:12:37 +00:00
Gustavo Madeira Santana
ebb4794952
Tests: reuse paired provider contract aliases
2026-03-28 20:08:38 -04:00
Gustavo Madeira Santana
680c30bc5d
Tests: shim config runtime for capability contracts
2026-03-28 20:02:28 -04:00
Gustavo Madeira Santana
d0e0150129
Tests: retry scoped contract registry loads
2026-03-28 19:53:21 -04:00
Gustavo Madeira Santana
5289e8f0fe
Tests: lazy-load web search contract registries
2026-03-28 19:24:38 -04:00
Gustavo Madeira Santana
bd1c48e4d9
Tests: lazy-load extension contract registries
2026-03-28 19:09:49 -04:00
Peter Steinberger
587e18cd3f
chore: prepare 2026.3.28-beta.1 release
2026-03-28 22:24:51 +00:00
Peter Steinberger
8a24cbf450
chore: bump version to 2026.3.28
2026-03-28 22:05:21 +00:00
huntharo
b7ab0ddb55
refactor(xai): move code_execution into plugin
2026-03-28 21:35:13 +00:00
Peter Steinberger
46c2928234
fix(plugins): stabilize provider contract loading
2026-03-28 21:35:13 +00:00
Peter Steinberger
2a950157b1
refactor(xai): move x_search into plugin
2026-03-28 21:35:13 +00:00
huntharo
c8ed1638ea
xAI: restore generic auth and x_search seams
2026-03-28 21:35:13 +00:00
huntharo
df61660a26
xAI: centralize fallback auth resolution
2026-03-28 21:35:13 +00:00
huntharo
9dd08a49a4
xAI: reuse fallback auth for runtime and discovery
2026-03-28 21:35:13 +00:00
Robin Waslander
31112d5985
fix(security): audit web search keys for all bundled providers ( #56540 )
...
hasWebSearchKey() was hardcoded to only check Brave and Perplexity
credentials. Replace with provider-aware check using
resolveBundledPluginWebSearchProviders() so Gemini, Grok/XAI, Kimi,
Moonshot, and OpenRouter credentials are recognized by the audit.
Add focused regression tests for each provider.
Fixes #34509
2026-03-28 18:55:38 +01:00
Peter Steinberger
02d4c1f2c3
refactor: derive channel metadata from plugin manifests
2026-03-28 17:17:10 +00:00
Peter Steinberger
5194cf2019
refactor: load bundled provider catalogs dynamically
2026-03-28 16:57:36 +00:00
Peter Steinberger
e34a770b8a
fix: keep provider discovery on mockable lazy runtime paths
2026-03-28 11:40:40 +00:00
Peter Steinberger
85b3c1db30
fix: defer tts provider resolution until needed
2026-03-28 11:35:33 +00:00
Ayaan Zaidi
c06dcf6b8b
fix(plugins): preserve active capability providers
2026-03-28 15:46:24 +05:30
Peter Steinberger
a955537a61
fix: slim provider sdk surfaces
2026-03-28 09:35:42 +00:00
Ayaan Zaidi
7320973ab0
fix(provider-wizard): avoid hook-time model normalization
2026-03-28 14:46:12 +05:30
Peter Steinberger
a631604247
fix(ci): stabilize browser bundled integration tests
2026-03-28 08:34:18 +00:00
Peter Steinberger
7d000088a4
fix(ci): use process env for provider compat fallback
2026-03-28 08:10:47 +00:00
Peter Steinberger
71a3ad153a
fix(ci): stabilize bundled capability contract loading
2026-03-28 07:33:19 +00:00
Peter Steinberger
d042192c7c
refactor(plugins): move provider policy hooks into plugins
2026-03-28 06:11:13 +00:00
Peter Steinberger
7206ddea6f
test: dedupe plugin contract suites
2026-03-28 06:04:51 +00:00
Peter Steinberger
48b2291b1e
test: dedupe plugin provider runtime suites
2026-03-28 06:04:51 +00:00
Peter Steinberger
89bb2cf03e
test: dedupe plugin bundle discovery suites
2026-03-28 06:04:50 +00:00
Peter Steinberger
b236f39104
refactor(agents): generalize tool schema compat cleanup
2026-03-28 05:42:46 +00:00
Peter Steinberger
c7883fe892
refactor(plugins): register provider model id hooks
2026-03-28 05:42:46 +00:00
Peter Steinberger
d5841f6412
refactor: centralize plugin API assembly
2026-03-28 05:24:25 +00:00
Tak Hoffman
26789db868
Fix TTS contract registry test context
2026-03-28 00:23:26 -05:00
Gustavo Madeira Santana
21c00165ef
test: fix gateway handler and typing lease helper types
2026-03-28 01:11:24 -04:00
Ayaan Zaidi
16f8616d9d
test(plugins): simplify typing pulse mock helper
2026-03-28 10:33:05 +05:30
Peter Steinberger
c4e6fdf94d
refactor(xai): move bundled xai runtime into plugin
...
Co-authored-by: Harold Hunt <harold@pwrdrvr.com>
2026-03-28 05:02:41 +00:00
Tak Hoffman
85064256a2
Refresh bundled plugin metadata snapshot
2026-03-28 00:00:14 -05:00
Peter Steinberger
02b8d47c6c
test: align slots helper types
2026-03-28 04:58:53 +00:00
Tak Hoffman
a790f63056
Fix typing lease background failure tests
2026-03-27 23:57:27 -05:00
Peter Steinberger
dc87ffa46d
fix(ci): guard telegram native command auth typing
2026-03-28 04:55:26 +00:00
Tak Hoffman
3e8bad0d31
Refresh bundled plugin metadata snapshot
2026-03-27 23:52:32 -05:00
Tak Hoffman
b8012221d2
fix(regression): restore slots test helper typing
2026-03-27 23:52:08 -05:00
Peter Steinberger
222ba9f174
fix(ci): tighten telegram and typing test types
2026-03-28 04:49:21 +00:00