Vincent Koc
2ac71d9488
fix(config): split plugin auto enable types
2026-04-09 08:13:41 +01:00
Peter Steinberger
1afa076cfa
refactor: simplify plugin auto-enable structure
2026-04-05 09:34:16 +01:00
Peter Steinberger
23275edef1
refactor: simplify web provider plugin discovery
2026-04-05 08:50:01 +01:00
Peter Steinberger
fff7e610df
feat(plugins): auto-load provider plugins from model support
2026-04-04 04:52:25 +01:00
Peter Steinberger
41ce3269f4
refactor(plugins): split activation snapshot and compat flow
2026-04-04 00:42:11 +09:00
Peter Steinberger
8b6c224554
refactor(plugins): share activation context for provider runtimes
2026-04-04 00:29:09 +09:00
Peter Steinberger
ef86edacf7
fix: harden plugin auto-enable empty config handling
2026-04-02 15:19:53 +01:00
Vincent Koc
4f692190b4
fix(config): tolerate missing facade boundary config
2026-04-02 23:04:53 +09:00
Vincent Koc
3e4de956c0
!refactor(xai): move x_search config behind plugin boundary ( #59674 )
...
* refactor(xai): move x_search config behind plugin boundary
* chore(changelog): note x_search config migration
* fix(xai): include x_search migration helpers
2026-04-02 22:08:59 +09:00
Vincent Koc
9823833383
fix(plugins): preserve activation provenance ( #59641 )
...
* fix(plugins): preserve activation provenance
* fix(gateway): preserve activation reason metadata
* fix(plugins): harden activation state policy
2026-04-02 20:57:14 +09:00
Vincent Koc
38d2faee20
!feat(plugins): add web fetch provider boundary ( #59465 )
...
* feat(plugins): add web fetch provider boundary
* feat(plugins): add web fetch provider modules
* refactor(web-fetch): remove remaining core firecrawl fetch config
* fix(web-fetch): address review follow-ups
* fix(web-fetch): harden provider runtime boundaries
* fix(web-fetch): restore firecrawl compare helper
* fix(web-fetch): restore env-based provider autodetect
* fix(web-fetch): tighten provider hardening
* fix(web-fetch): restore fetch autodetect and compat args
* chore(changelog): note firecrawl fetch config break
2026-04-02 20:25:19 +09:00
Peter Steinberger
855878b4f0
fix: stabilize serial test suite
2026-03-30 04:46:04 +09:00
Peter Steinberger
2dd29db464
fix: ease bundled browser plugin recovery
2026-03-29 22:39:30 +09:00
huntharo
216796f1e3
fix(xai): wire plugin-owned codeExecution config
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
Peter Steinberger
02d4c1f2c3
refactor: derive channel metadata from plugin manifests
2026-03-28 17:17:10 +00:00
Peter Steinberger
ef1784d264
refactor: move bundled plugin policy into manifests
2026-03-27 16:40:27 +00:00
Peter Steinberger
417b3dd5e0
refactor: move channel prefer-over metadata into manifests
2026-03-27 02:36:56 +00:00
pomelo
dad68d319b
Remove Qwen OAuth integration (qwen-portal-auth) ( #52709 )
...
* Remove Qwen OAuth integration (qwen-portal-auth)
Qwen OAuth via portal.qwen.ai is being deprecated by the Qwen team due
to traffic impact on their primary Qwen Code user base. Users should
migrate to the officially supported Model Studio (Alibaba Cloud Coding
Plan) provider instead.
Ref: https://github.com/openclaw/openclaw/issues/49557
- Delete extensions/qwen-portal-auth/ plugin entirely
- Remove qwen-portal from onboarding auth choices, provider aliases,
auto-enable list, bundled plugin defaults, and pricing cache
- Remove Qwen CLI credential sync (external-cli-sync, cli-credentials)
- Remove QWEN_OAUTH_MARKER from model auth markers
- Update docs/providers/qwen.md to redirect to Model Studio
- Update model-providers docs (EN + zh-CN) to remove Qwen OAuth section
- Regenerate config and plugin-sdk baselines
- Update all affected tests
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com >
* Clean up residual qwen-portal references after OAuth removal
* Add migration hint for deprecated qwen-portal OAuth provider
* fix: finish qwen oauth removal follow-up
---------
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com >
Co-authored-by: Frank Yang <frank.ekn@gmail.com >
2026-03-26 16:32:34 +08:00
Vincent Koc
7299b42e2a
fix(config): keep built-in auto-enable idempotent
2026-03-23 08:34:37 -07:00
Vincent Koc
e68cbea5b4
fix(config): keep built-in channels out of plugin allowlists ( #52964 )
...
* fix(config): keep built-in channels out of plugin allowlists
* docs(changelog): note doctor whatsapp allowlist fix
* docs(changelog): move doctor whatsapp fix to top
2026-03-23 08:26:51 -07:00
Peter Steinberger
d0d82ea67b
test: trim import-heavy startup paths
2026-03-22 00:53:12 +00:00
Peter Steinberger
cf4d301a69
perf: reduce memory startup overhead
2026-03-21 23:30:15 +00:00
Peter Steinberger
4229ffe2b9
perf: reduce runtime and test startup overhead
2026-03-21 20:18:16 +00:00
Peter Steinberger
62ddc9d9e0
refactor: consolidate plugin sdk surface
2026-03-20 19:24:10 +00:00
Vincent Koc
b3ca855283
Plugin SDK: use public whatsapp subpath
2026-03-18 09:37:54 -07:00
Peter Steinberger
9ebe38b6e3
refactor: untangle remaining plugin sdk boundaries
2026-03-16 21:16:32 -07:00
Gustavo Madeira Santana
2c3c48fd8d
Channels: ignore enabled-only disabled plugin config
2026-03-16 15:55:06 +00:00
Peter Steinberger
7e74adef91
refactor: shrink public channel plugin sdk surfaces
2026-03-16 01:34:22 -07:00
Peter Steinberger
f11589b311
refactor: tighten plugin sdk channel seams
2026-03-16 01:05:51 -07:00
Peter Steinberger
47a9c1a893
refactor: merge minimax bundled plugins
2026-03-16 02:26:45 +00:00
Peter Steinberger
bc5054ce68
refactor(google): merge gemini auth into google plugin
2026-03-16 01:19:32 +00:00
scoootscooob
439c21e078
refactor: remove channel shim directories, point all imports to extensions ( #45967 )
...
* refactor: remove channel shim directories, point all imports to extensions
Delete the 6 backward-compat shim directories (src/telegram, src/discord,
src/slack, src/signal, src/imessage, src/web) that were re-exporting from
extensions. Update all 112+ source files to import directly from
extensions/{channel}/src/ instead of through the shims.
Also:
- Move src/channels/telegram/ (allow-from, api) to extensions/telegram/src/
- Fix outbound adapters to use resolveOutboundSendDep (fixes 5 pre-existing TS errors)
- Update cross-extension imports (src/web/media.js → extensions/whatsapp/src/media.js)
- Update vitest, tsdown, knip, labeler, and script configs for new paths
- Update guard test allowlists for extension paths
After this, src/ has zero channel-specific implementation code — only the
generic plugin framework remains.
* fix: update raw-fetch guard allowlist line numbers after shim removal
* refactor: document direct extension channel imports
* test: mock transcript module in delivery helpers
2026-03-14 03:43:07 -07: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
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
d18ae2256f
refactor: unify channel plugin resolution, family ordering, and changelog entry tooling
2026-02-24 15:15:22 +00:00
Peter Steinberger
3b4dac764b
fix: doctor plugin-id mapping for channel auto-enable ( #25275 ) (thanks @zerone0x)
2026-02-24 14:55:23 +00:00
zerone0x
203de14211
fix(doctor): use plugin manifest id for third-party channel auto-enable
...
When a third-party channel plugin declares a channel ID that differs from
its plugin ID (e.g. plugin id="apn-channel", channels=["apn"]), the
doctor plugin auto-enable logic was using the channel ID ("apn") as the
key for plugins.entries, producing an entry that fails config validation:
Error: plugins.entries.apn: plugin not found: apn
Root cause: resolveConfiguredPlugins iterated over cfg.channels keys and
used each key directly as both the channel ID (for isChannelConfigured)
and the plugin ID (for plugins.entries). For built-in channels these are
always the same, but for third-party plugins they can differ.
Fix: load the installed plugin manifest registry and build a reverse map
from channel ID to plugin ID. When a cfg.channels key does not resolve to
a built-in channel, look up the declaring plugin's manifest ID and use
that as the pluginId in the PluginEnableChange, so registerPluginEntry
writes the correct plugins.entries["apn-channel"] key.
The applyPluginAutoEnable function now accepts an optional manifestRegistry
parameter for testing, avoiding filesystem access in unit tests.
Fixes #25261
Co-Authored-By: Claude <noreply@anthropic.com >
2026-02-24 14:55:23 +00:00
Peter Steinberger
382fe8009a
refactor!: remove google-antigravity provider support
2026-02-23 05:20:14 +01:00
Peter Steinberger
40680432b4
fix(config): allowlist auto-enabled built-in channels when restricted
...
Co-authored-by: 4rev <4rev@users.noreply.github.com >
2026-02-22 19:31:18 +01:00
Peter Steinberger
8839162b97
fix(config): persist built-in channel enable state in channels
...
Co-authored-by: HirokiKobayashi-R <HirokiKobayashi-R@users.noreply.github.com >
2026-02-22 19:23:34 +01:00
pickaxe
d79f10297f
also skip modelByChannel in plugin-auto-enable channel iteration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 10:41:40 +01:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
Peter Steinberger
5115f6fdf3
style: normalize imports for oxfmt 0.33
2026-02-17 00:59:54 +00:00
Peter Steinberger
5195179150
refactor: centralize plugin allowlist mutation
2026-02-17 00:45:02 +00:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
9769b96fb1
fix(config): auto-enable configured plugins
2026-02-14 01:56:12 +00:00