hxy91819
815bbd1fb1
fix(onboarding): use scoped plugin snapshots to prevent OOM on low-memory hosts
...
Onboarding and channel-add flows previously loaded the full plugin registry,
which caused OOM crashes on memory-constrained hosts. This patch introduces
scoped, non-activating plugin registry snapshots that load only the selected
channel plugin without replacing the running gateway's global state.
Key changes:
- Add onlyPluginIds and activate options to loadOpenClawPlugins for scoped loads
- Add suppressGlobalCommands to plugin registry to avoid leaking commands
- Replace full registry reloads in onboarding with per-channel scoped snapshots
- Validate command definitions in snapshot loads without writing global registry
- Preload configured external plugins via scoped discovery during onboarding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 15:35:49 -07:00
Vincent Koc
51631e5797
Plugins: reserve context engine ownership
2026-03-15 12:27:29 -07:00
Nimrod Gutman
e2dac5d5cb
fix(plugins): load bundled extensions from dist ( #47560 )
2026-03-15 21:16:27 +02:00
xiaoyi
bbb0c3e5d7
CLI/completion: fix generator OOM and harden plugin registries ( #45537 )
...
* fix: avoid OOM during completion script generation
* CLI/completion: fix PowerShell nested command paths
* CLI/completion: cover generated shell scripts
* Changelog: note completion generator follow-up
* Plugins: reserve shared registry names
---------
Co-authored-by: Xiaoyi <xiaoyi@example.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-03-15 12:14:30 -07:00
Vincent Koc
8d44b16b7c
Plugins: preserve scoped ids and reserve bundled duplicates ( #47413 )
...
* Plugins: preserve scoped ids and reserve bundled duplicates
* Changelog: add plugin scoped id note
* Plugins: harden scoped install ids
* Plugins: reserve scoped install dirs
* Plugins: migrate legacy scoped update ids
2026-03-15 09:07:10 -07:00
Tak Hoffman
f00db91590
fix(plugins): prefer explicit installs over bundled duplicates ( #46722 )
...
* fix(plugins): prefer explicit installs over bundled duplicates
* test(feishu): mock structured card sends in outbound tests
* fix(plugins): align duplicate diagnostics with loader precedence
2026-03-14 21:08:32 -05:00
Tak Hoffman
e81442ac80
Fix full local gate on main
2026-03-14 15:52:11 -05:00
Vincent Koc
bcbfbb831e
Plugins: fail fast on channel and binding collisions ( #45628 )
...
* Plugins: reject duplicate channel ids
* Bindings: reject duplicate adapter registration
* Plugins: fail on export id mismatch
2026-03-13 19:13:35 -07:00
Peter Steinberger
60d308cff0
test: fix CI type regressions
2026-03-13 19:53:40 +00:00
Vincent Koc
cc5168b5c3
Fix plugin update dependency failures and dedupe warnings
2026-03-13 11:26:14 -07:00
Peter Steinberger
3cf06f7939
docs(plugins): clarify workspace shadowing
2026-03-13 13:15:46 +00:00
Peter Steinberger
ec3c20d96d
test: harden plugin fixture permissions on macos
2026-03-13 03:13:25 +00:00
Peter Steinberger
21fa50f564
test: harden plugin env-scoped fixtures
2026-03-13 03:01:47 +00:00
Vincent Koc
3e28e10c2f
Plugins: require explicit trust for workspace-discovered plugins ( #44174 )
...
* Plugins: disable implicit workspace plugin auto-load
* Tests: cover workspace plugin trust gating
* Changelog: note workspace plugin trust hardening
* Plugins: keep workspace trust gate ahead of memory slot defaults
* Tests: cover workspace memory-slot trust bypass
2026-03-12 12:12:41 -04:00
Gustavo Madeira Santana
e6897c800b
Plugins: fix env-aware root resolution and caching ( #44046 )
...
Merged via squash.
Prepared head SHA: 6e8852a188
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-12 15:31:31 +00:00
Peter Steinberger
25d0aa7296
refactor: simplify plugin sdk compatibility aliases
2026-03-08 18:40:14 +00:00
Peter Steinberger
c70151e873
test: isolate legacy plugin-sdk root import check
2026-03-08 18:40:14 +00:00
Peter Steinberger
a007bed375
test: isolate plugin loader from mocked module cache
2026-03-08 18:40:14 +00:00
Peter Steinberger
e758d49361
refactor(plugins): extract alias candidate resolution
2026-03-08 00:48:56 +00:00
Peter Steinberger
bda035768f
fix(plugins): fall back to src plugin-sdk aliases
2026-03-08 00:18:45 +00:00
Peter Steinberger
ac86deccee
fix(gateway): harden plugin HTTP route auth
2026-03-07 19:55:06 +00:00
Vincent Koc
d4021f4b92
Plugins: clarify registerHttpHandler migration errors ( #36794 )
...
* Changelog: note plugin HTTP route migration diagnostics
* Tests: cover registerHttpHandler migration diagnostics
* Plugins: clarify registerHttpHandler migration errors
* Tests: cover registerHttpHandler diagnostic edge cases
* Plugins: tighten registerHttpHandler migration hint
2026-03-05 23:23:24 -05:00
Gustavo Madeira Santana
688b72e158
plugins: enforce prompt hook policy with runtime validation ( #36567 )
...
Merged via squash.
Prepared head SHA: 6b9d883b6a
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-05 18:15:54 -05:00
Gustavo Madeira Santana
802b9f6b19
Plugins: add root-alias shim and cache/docs updates
2026-03-04 01:20:48 -05:00
Gustavo Madeira Santana
1278ee9248
plugin-sdk: add channel subpaths and migrate bundled plugins
2026-03-03 22:07:03 -05:00
Igal Tabachnik
a4850b1b8f
fix(plugins): lazily initialize runtime and split plugin-sdk startup imports ( #28620 )
...
Merged via squash.
Prepared head SHA: 8bd7d6c13b
Co-authored-by: hmemcpy <601206+hmemcpy@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-03 19:58:48 -05:00
markfietje
49687d313c
fix(plugins): allow hardlinks for bundled plugins ( fixes #28175 , #28404 ) (openclaw#32119) thanks @markfietje
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: markfietje <4325889+markfietje@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-02 16:10:31 -06:00
Peter Steinberger
7a7eee920a
refactor(gateway): harden plugin http route contracts
2026-03-02 16:48:00 +00:00
Peter Steinberger
8611fd67b5
test(perf): remove duplicate bundled memory slot loader case
2026-03-02 16:46:17 +00:00
Peter Steinberger
2fd8264ab0
refactor(gateway): hard-break plugin wildcard http handlers
2026-03-02 16:24:06 +00:00
Peter Steinberger
60b8d645de
test(perf): standardize loader fixtures to cjs
2026-03-02 13:43:55 +00:00
Peter Steinberger
02bd7a2249
test(perf): use CJS fixtures in plugin loader tests
2026-03-02 13:36:17 +00:00
Peter Steinberger
43bffe7bdc
test(perf): cache plugin fixtures and streamline shell tests
2026-03-02 11:35:13 +00:00
Peter Steinberger
04030ddf68
test(runtime): trim timer-heavy regression suites
2026-03-02 09:47:29 +00:00
Peter Steinberger
45888276a3
test(integration): dedupe messaging, secrets, and plugin test suites
2026-03-02 07:13:11 +00:00
Peter Steinberger
c0bf42f2a8
refactor: centralize delivery/path/media/version lifecycle
2026-03-02 04:04:36 +00:00
Peter Steinberger
577becf1ad
fix(plugins): prioritize bundled duplicates in auto-discovery
...
Landed from contributor PR #29710 by @Sid-Qin.
Co-authored-by: SidQin-cyber <sidqin0410@gmail.com>
2026-03-01 23:48:30 +00:00
Peter Steinberger
4b71de384c
fix(core): unify session-key normalization and plugin boundary checks
2026-02-26 12:41:23 +00:00
Peter Steinberger
eac86c2081
refactor: unify boundary hardening for file reads
2026-02-26 13:04:37 +01:00
Onur Solmaz
a7d56e3554
feat: ACP thread-bound agents ( #23580 )
...
* docs: add ACP thread-bound agents plan doc
* docs: expand ACP implementation specification
* feat(acp): route ACP sessions through core dispatch and lifecycle cleanup
* feat(acp): add /acp commands and Discord spawn gate
* ACP: add acpx runtime plugin backend
* fix(subagents): defer transient lifecycle errors before announce
* Agents: harden ACP sessions_spawn and tighten spawn guidance
* Agents: require explicit ACP target for runtime spawns
* docs: expand ACP control-plane implementation plan
* ACP: harden metadata seeding and spawn guidance
* ACP: centralize runtime control-plane manager and fail-closed dispatch
* ACP: harden runtime manager and unify spawn helpers
* Commands: route ACP sessions through ACP runtime in agent command
* ACP: require persisted metadata for runtime spawns
* Sessions: preserve ACP metadata when updating entries
* Plugins: harden ACP backend registry across loaders
* ACPX: make availability probe compatible with adapters
* E2E: add manual Discord ACP plain-language smoke script
* ACPX: preserve streamed spacing across Discord delivery
* Docs: add ACP Discord streaming strategy
* ACP: harden Discord stream buffering for thread replies
* ACP: reuse shared block reply pipeline for projector
* ACP: unify streaming config and adopt coalesceIdleMs
* Docs: add temporary ACP production hardening plan
* Docs: trim temporary ACP hardening plan goals
* Docs: gate ACP thread controls by backend capabilities
* ACP: add capability-gated runtime controls and /acp operator commands
* Docs: remove temporary ACP hardening plan
* ACP: fix spawn target validation and close cache cleanup
* ACP: harden runtime dispatch and recovery paths
* ACP: split ACP command/runtime internals and centralize policy
* ACP: harden runtime lifecycle, validation, and observability
* ACP: surface runtime and backend session IDs in thread bindings
* docs: add temp plan for binding-service migration
* ACP: migrate thread binding flows to SessionBindingService
* ACP: address review feedback and preserve prompt wording
* ACPX plugin: pin runtime dependency and prefer bundled CLI
* Discord: complete binding-service migration cleanup and restore ACP plan
* Docs: add standalone ACP agents guide
* ACP: route harness intents to thread-bound ACP sessions
* ACP: fix spawn thread routing and queue-owner stall
* ACP: harden startup reconciliation and command bypass handling
* ACP: fix dispatch bypass type narrowing
* ACP: align runtime metadata to agentSessionId
* ACP: normalize session identifier handling and labels
* ACP: mark thread banner session ids provisional until first reply
* ACP: stabilize session identity mapping and startup reconciliation
* ACP: add resolved session-id notices and cwd in thread intros
* Discord: prefix thread meta notices consistently
* Discord: unify ACP/thread meta notices with gear prefix
* Discord: split thread persona naming from meta formatting
* Extensions: bump acpx plugin dependency to 0.1.9
* Agents: gate ACP prompt guidance behind acp.enabled
* Docs: remove temp experiment plan docs
* Docs: scope streaming plan to holy grail refactor
* Docs: refactor ACP agents guide for human-first flow
* Docs/Skill: add ACP feature-flag guidance and direct acpx telephone-game flow
* Docs/Skill: add OpenCode and Pi to ACP harness lists
* Docs/Skill: align ACP harness list with current acpx registry
* Dev/Test: move ACP plain-language smoke script and mark as keep
* Docs/Skill: reorder ACP harness lists with Pi first
* ACP: split control-plane manager into core/types/utils modules
* Docs: refresh ACP thread-bound agents plan
* ACP: extract dispatch lane and split manager domains
* ACP: centralize binding context and remove reverse deps
* Infra: unify system message formatting
* ACP: centralize error boundaries and session id rendering
* ACP: enforce init concurrency cap and strict meta clear
* Tests: fix ACP dispatch binding mock typing
* Tests: fix Discord thread-binding mock drift and ACP request id
* ACP: gate slash bypass and persist cleared overrides
* ACPX: await pre-abort cancel before runTurn return
* Extension: pin acpx runtime dependency to 0.1.11
* Docs: add pinned acpx install strategy for ACP extension
* Extensions/acpx: enforce strict local pinned startup
* Extensions/acpx: tighten acp-router install guidance
* ACPX: retry runtime test temp-dir cleanup
* Extensions/acpx: require proactive ACPX repair for thread spawns
* Extensions/acpx: require restart offer after acpx reinstall
* extensions/acpx: remove workspace protocol devDependency
* extensions/acpx: bump pinned acpx to 0.1.13
* extensions/acpx: sync lockfile after dependency bump
* ACPX: make runtime spawn Windows-safe
* fix: align doctor-config-flow repair tests with default-account migration (#23580 ) (thanks @osolmaz)
2026-02-26 11:00:09 +01:00
Peter Steinberger
75423a00d6
refactor: deduplicate shared helpers and test setup
2026-02-23 20:40:44 +00:00
chilu18
3cadc3eed1
fix(plugins): honor channels.<id>.enabled for bundled channels
2026-02-23 18:16:58 +00:00
Peter Steinberger
7a27e2648a
refactor(test): dedupe plugin env overrides via env helpers
2026-02-21 13:03:41 +00:00
Peter Steinberger
81b19aaa1a
fix(security): enforce plugin and hook path containment
2026-02-19 15:37:29 +01:00
Peter Steinberger
3561442a9f
fix(plugins): harden discovery trust checks
2026-02-19 15:14:12 +01:00
Peter Steinberger
f717a13039
refactor(agent): dedupe harness and command workflows
2026-02-16 14:59:30 +00:00
Peter Steinberger
c25026f2b3
perf(plugins): lazy-create jiti loader
2026-02-15 19:29:27 +00:00
Peter Steinberger
caebe70e9a
perf(test): cut setup/import overhead in hot suites
2026-02-13 21:23:50 +00:00
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00