Peter Steinberger
128262fbc1
perf(gateway): trust current metadata lifecycle cache
2026-05-27 14:07:17 +01:00
Bob
4d89e00c50
feat(embeddings): add OpenAI-compatible core provider ( #85269 )
...
Merged via squash.
Prepared head SHA: dc9a5d5397
Co-authored-by: dutifulbob <261991368+dutifulbob@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-05-27 14:37:17 +02:00
rendrag-git
e153eceea5
fix(vllm): wire configured thinking params
...
Move vLLM Qwen thinking control onto configured model compat metadata and carry it through catalog/model-selection/runtime thinking contexts.
Also migrate legacy provider/default request params in doctor and keep Pi/runtime model rows buildable with explicit reasoning defaults.
Thanks @rendrag-git.
Co-authored-by: rendrag-git <253747599+rendrag-git@users.noreply.github.com >
2026-05-27 13:32:18 +01:00
Peter Steinberger
7efbaf7dba
perf(gateway): cache current plugin metadata fingerprints
2026-05-27 12:59:23 +01:00
Peter Steinberger
6c3740255f
refactor: remove channel turn runtime aliases
2026-05-27 11:37:23 +01:00
Peter Steinberger
fd648edfa9
fix(lint): clean manifest registry installed checks
2026-05-27 06:26:15 -04:00
Peter Steinberger
2babe03bf5
perf(gateway): cache stable plugin index fingerprints
2026-05-27 11:03:50 +01:00
Peter Steinberger
1507a9701b
refactor: centralize inbound supplemental context
...
* refactor: centralize inbound supplemental context
* refactor: trim supplemental finalizer typing
* docs: clarify supplemental context projection
* refactor: move inbound finalization into core
* refactor: simplify channel inbound facts
* refactor: fold supplemental media into inbound finalizer
* refactor: migrate channel inbound callers to builder
* docs: mark inbound finalizer compat types deprecated
* refactor: wire runtime turn context builder
* refactor: replace channel turn runtime API
* fix: respect discord quote visibility
* fix: avoid deprecated line dispatch helper
* refactor: deprecate channel message SDK seams
* docs: trim channel outbound SDK page
* test: migrate irc inbound assertion
* refactor: deprecate outbound SDK facades
* refactor: deprecate channel helper SDK facades
* refactor: deprecate channel streaming SDK facade
* refactor: move direct dm helpers into inbound SDK
* chore: mark legacy test-utils SDK alias deprecated
* refactor: remove unused allow-from read helper
* refactor: route remaining channel dispatch through core
* refactor: enforce modern extension SDK imports
* test: give slow image root tests more time
* ci: support node fallback on windows
* fix: add transcripts tool display metadata
* refactor: trim legacy channel test seams
* fix: preserve channel compat after rebase
* fix: keep deprecated channel inbound aliases
* fix: preserve discord thread context visibility
* fix: clean final rebase conflicts
* fix: preserve channel message dispatch aliases
* fix: sync channel refactor after rebase
* fix: sync channel refactor after latest main
* fix: dedupe memory-core subagent mock
* test: align clickclack inbound dispatch assertions
* fix: sync plugin sdk api hash after rebase
* fix: sync channel refactor after latest main
* fix: sync plugin sdk api hash after rebase
* fix: sync plugin sdk api hash after latest main
* test: remove stale inbound context awaits
2026-05-27 09:26:06 +01:00
Agustin Rivera
08a73dbe4b
fix(qqbot): gate fallback approval buttons ( #87154 )
...
QQBot fallback approval buttons now reuse the same slash-command authorization path as real commands, including access groups and default-account config merging.
Verification:
- node scripts/test-extension.mjs qqbot
- node --max-old-space-size=8192 --import tsx scripts/generate-plugin-sdk-api-baseline.ts --check && git diff --check
- pnpm lint --threads=8
- node scripts/run-vitest.mjs src/agents/agent-command.live-model-switch.test.ts
- GitHub PR checks for 7cc0f15031 : passed
Thanks @eleqtrizit.
Co-authored-by: Agustin Rivera <agustin@rivera-web.com >
2026-05-27 08:44:55 +01:00
Peter Steinberger
ef2ebeef89
fix: keep root help plugin descriptor loading quiet
2026-05-27 08:22:01 +01:00
Super Zheng
6790b0f792
perf(secrets): propagate snapshots and eliminate esm side-effects in auth env vars ( #86439 )
...
* perf(secrets): propagate snapshots and eliminate esm side-effects in auth env vars
* perf(secrets): reuse provider auth lookup maps
* test(auth): update provider env var mocks
* test(auth): cover rebased provider env mocks
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-27 08:19:07 +01:00
Dallin Romney
780bc79147
fix(plugin-sdk): stop exporting vitest test helpers ( #87120 )
2026-05-26 23:10:41 -07:00
Pablo Guardiola
0c867eef75
feat: expose plugin approval action metadata
...
Expose plugin approval action metadata so plugins can describe richer approval actions across gateway, SDK, channel, and UI surfaces.
2026-05-26 22:46:09 -07:00
Peter Steinberger
b9f6abf5e8
fix: bind plugin command llm auth to host agent
2026-05-27 06:38:35 +01:00
Peter Steinberger
5371b96af1
fix: prefer trusted argv runtime fallback roots
2026-05-27 05:46:51 +01:00
Peter Steinberger
e71b6f7e57
fix: expand startup argv runtime fallback hints
2026-05-27 05:46:51 +01:00
Peter Steinberger
2b9be22c0b
fix: keep plugin runtime fallback on startup root
2026-05-27 05:46:51 +01:00
Peter Steinberger
78b2aeeae4
test: cover plugin runtime diagnostic context
2026-05-27 05:46:51 +01:00
Andy Ye
66a8262028
Fix runtime fallback startup argv default
2026-05-27 05:46:51 +01:00
Andy Ye
41fa603aa8
Fix plugin runtime module resolution diagnostics
2026-05-27 05:46:51 +01:00
Peter Steinberger
05ff771010
test: speed up plugin test fixtures
2026-05-27 05:01:57 +01:00
Peter Steinberger
0ee4ccf02c
perf(gateway): defer startup warning fallback imports
2026-05-27 03:45:42 +01:00
Josh Lehman
9119492f15
fix: preserve plugin LLM command auth ( #85936 )
...
Merged via squash.
Prepared head SHA: e61c724708
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-05-26 22:41:52 -04:00
Peter Steinberger
53f36a8ee6
fix(plugin-sdk): stabilize diagnostic event root alias
...
Fixes #87082 .
Co-authored-by: Kaspre <kaspre@gmail.com >
2026-05-27 03:34:54 +01:00
Kaspre
b3f8a0edf3
fix(plugin-sdk): use Function.name to find onDiagnosticEvent export ( #87084 )
...
* fix(plugin-sdk): use Function.name to find onDiagnosticEvent export
normalizeDiagnosticEventsModule hardcodes `mod.r` as the fallback alias
for onDiagnosticEvent, but the bundler reassigns export aliases across
builds. On 2026.5.25-beta.1, `r` is emitFailoverEvent — calling it as
onDiagnosticEvent returns a non-function, so the combo unsubscribe
closure throws TypeError on every gateway stop.
Replace the hardcoded letter with Function.name introspection. JS
functions retain their original .name regardless of export aliasing,
so this survives bundler alias changes.
Fixes #87082
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* test(plugin-sdk): cover diagnostic event alias shifts
* fix(plugin-sdk): harden diagnostic alias cleanup
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-05-26 19:31:41 -07:00
Peter Steinberger
8d6b599737
perf: trim gateway startup planning
2026-05-27 03:04:15 +01:00
Peter Steinberger
2035f38ab2
perf: trim gateway runtime hotspots
2026-05-27 02:17:29 +01:00
Peter Steinberger
eac918d69b
test: fix CI type checks
2026-05-26 20:13:03 -04:00
Peter Steinberger
9f7584c385
test: speed up plugin runtime tests
2026-05-27 01:02:46 +01:00
Peter Steinberger
75fc0bce0f
test: speed up plugin install suites
2026-05-27 00:46:44 +01:00
Alix-007
8ec2b2d09b
fix(auto-reply): suppress repeated silent tokens ( #86848 )
...
* fix(auto-reply): suppress repeated silent tokens
* test(plugin-sdk): cover repeated silent token exports
* test(plugin-sdk): cover custom repeated silent token export
* fix(lint): drop redundant image registry casts
---------
Co-authored-by: Alix-007 <267018309+Alix-007@users.noreply.github.com >
2026-05-27 00:04:57 +01:00
Andy Ye
f3e61580bd
Fix status JSON plugin scan ( #87001 )
...
* fix status json plugin scan
* fix status json metadata imports
* fix channel metadata repair fallback
* fix runtime channel id normalization fallback
* fix status json env channel detection
Co-authored-by: Peter Steinberger <steipete@gmail.com >
* fix signed thinking legacy tool repair
* fix: preserve first signed replay turn
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-26 22:24:25 +01:00
Peter Steinberger
80655fe955
test: fix current suite drift
2026-05-26 16:40:08 -04:00
Peter Steinberger
4007df7f60
fix: improve discord voice playback and wake replies
2026-05-26 19:40:12 +01:00
Peter Steinberger
496fd8f853
perf: cache read-only channel resolution
2026-05-26 17:40:44 +01:00
Peter Steinberger
cac0b2db18
refactor: move transcripts into core
...
Move meeting notes into core transcripts, remove the bundled meeting-notes plugin/API, and require explicit transcripts.enabled before exposing the recording-capable tool.
2026-05-26 14:51:11 +01:00
Peter Steinberger
30e59b4090
test: speed up slow CI regressions
2026-05-26 13:13:19 +01:00
Peter Steinberger
3548cff14b
refactor: migrate validators to TypeBox ( #86639 )
...
* refactor: migrate validators to typebox
* fix: preserve json schema resource refs
* chore: clean schema preflight recursion
* refactor: remove lobster ajv shim
* fix: support schema array refs
* fix: validate schema dependencies
* fix: preserve schema contract checks
* fix: support same-document schema refs
* fix: preserve untyped map defaults
* fix: preserve schema default semantics
* test: avoid thenable schema literals
* test: build conditional schema key
* fix: defer resource id refs to typebox
* fix: reject invalid schema enum metadata
* fix: preserve default branch semantics
* fix: resolve schema resource refs
* fix: narrow conditional default fallback
* fix: preserve uri format validation
* fix: preserve validator compatibility
* test: avoid ajv cache lint violation
* fix: preserve typebox validation diagnostics
* fix: validate defaulted conditional schemas
* fix: normalize mcp draft schemas
* fix: preserve tuple schema defaults
* fix: resolve relative schema refs
* fix: scope typebox format semantics
* fix: align conditional format defaults
* fix: decode schema pointer refs
* fix: filter grouped secretref diagnostics
* fix: preserve default conditional compatibility
* fix: preserve nullable schema compatibility
* fix: settle defaults before conditionals
* fix: preserve default validation invariants
* fix: validate dynamic schema refs
* fix: reject malformed nullable schemas
2026-05-26 08:45:28 +01:00
Peter Steinberger
4118a32aad
test: enforce per-test ci threshold
2026-05-26 04:35:20 +01:00
Peter Steinberger
0c5f622f9a
perf(discord): use libopus-wasm for voice opus
2026-05-26 02:53:29 +01:00
Alex Knight
f824e1596a
Add OpenTelemetry LLM content spans ( #86191 )
...
* feat: add otel llm content spans
* fix: gate otel tool definitions separately
* fix(diagnostics): sanitize tool_call parts and truncate oversized OTEL content attributes
* fix: keep otel content truncation parseable
* fix: simplify codex model diagnostics
* fix(diagnostics): align opt-in GenAI span shape
* test(codex): align resume params after rebase
* fix(diagnostics): keep model content off shared event bus
* test(diagnostics): keep extension tests on sdk boundary
---------
Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-05-26 02:24:02 +01:00
brokemac79
56633e4f3c
fix(cli): route plugin packaging recovery hints
...
Route invalid-config recovery output for source-only installed plugin packages to plugin packaging guidance instead of openclaw doctor --fix.
Validated with focused config/CLI/gateway/plugin tests, autoreview, Crabbox/Testbox E2E tbx_01ksgr80tnvvc13kv6t126yv78, and green PR CI on 3b3ce73d0f .
Thanks @brokemac79.
2026-05-26 01:13:20 +01:00
Deepflame
ea2496b00c
perf(agents): reuse model manifest context
...
Reuse a lazy model manifest context across configured model resolution so common static defaults do not trigger manifest metadata loads, while keeping plugin-owned normalization available when aliases, provider rows, or OpenRouter compat paths need it.
Preserves exact alias behavior, auth-profile-suffixed alias behavior, provider inference from manifest-normalized configured refs, and existing plugin/runtime cache lifecycle rules.
Co-authored-by: Alyana <alyana@lumina.local >
2026-05-26 01:11:47 +01:00
Peter Steinberger
c87957db5e
fix: prefer source public artifacts in source checkouts
2026-05-26 00:17:04 +01:00
Peter Steinberger
c1a026a976
fix: stabilize tests and reduce plugin memory churn
2026-05-26 00:01:30 +01:00
Peter Steinberger
1d21224de3
perf: reduce runtime metadata hotpath churn
...
Reduce runtime metadata hotpath churn by freezing loaded plugin metadata snapshots once and returning the memoized object without clone-on-hit. Reuse persisted package file signatures while preserving realpath containment, cache normalized Jiti alias maps by identity, and defer Discord realtime turn retention/logging until audio starts.
Verification:
- node scripts/run-vitest.mjs src/talk/turn-context-tracker.test.ts src/plugins/plugin-metadata-snapshot.memo.test.ts src/plugins/manifest-registry-installed.test.ts src/plugins/sdk-alias.test.ts src/plugins/installed-plugin-index-records.test.ts
- node scripts/run-vitest.mjs src/plugins/plugin-metadata-snapshot.memo.test.ts
- pnpm test extensions/discord/src/voice/manager.e2e.test.ts --testNamePattern "keeps realtime playback alive|interrupts realtime playback|does not interrupt realtime provider state"
- pnpm lint --threads=8
- pnpm exec oxfmt --check src/plugins/plugin-metadata-snapshot.ts src/plugins/plugin-metadata-snapshot.memo.test.ts src/plugins/manifest-registry-installed.ts src/plugins/installed-plugin-index-record-builder.ts src/plugins/sdk-alias.ts extensions/discord/src/voice/realtime.ts
- pnpm tsgo:core
- pnpm tsgo:extensions
- pnpm build
- autoreview --mode commit --commit HEAD
- PR CI green on head 7dd3e44a78
2026-05-25 23:59:45 +01:00
Peter Steinberger
1531fe2525
perf: reduce runtime cache churn
2026-05-25 23:35:06 +01:00
Peter Steinberger
5b6d03e3e2
perf: reduce runtime cache churn
...
Reduce hot-path cache churn by reusing the active plugin metadata snapshot for manifest model-id normalization when safe, and by avoiding repeated JSON reparses for cached session stores while preserving clone semantics.
Verification:
- pnpm exec oxfmt --check src/plugins/manifest-model-id-normalization.ts src/plugins/manifest-model-id-normalization.test.ts src/config/sessions/store-cache.ts src/config/sessions.cache.test.ts
- node scripts/run-vitest.mjs src/config/sessions.cache.test.ts src/plugins/manifest-model-id-normalization.test.ts src/gateway/session-utils.subagent.test.ts
- pnpm tsgo:core
- autoreview clean
- PR CI green
2026-05-25 22:40:46 +01:00
Peter Steinberger
77d9ac30bb
refactor: reuse shared coercion helpers ( #86419 )
...
* refactor: share talk event metric extraction
* refactor: reuse shared coercion helpers
* refactor: reuse shared primitive guards
* refactor: reuse shared record guard
* refactor: reuse shared primitive helpers
* refactor: reuse shared string guards
* refactor: reuse shared non-empty string guard
* refactor: share plugin primitive coercion helpers
* refactor: reuse plugin coercion helpers
* refactor: reuse plugin coercion helpers in more plugins
* refactor: reuse channel coercion helpers
* refactor: reuse monitor coercion helpers
* refactor: reuse provider coercion helpers
* refactor: reuse core coercion helpers
* refactor: reuse runtime coercion helpers
* refactor: reuse helper coercion in codex paths
* refactor: reuse helper coercion in runtime paths
* refactor: reuse codex app-server coercion helpers
* refactor: reuse codex record helpers
* refactor: reuse migration and qa record helpers
* refactor: reuse feishu and core helper guards
* refactor: reuse browser and policy coercion helpers
* refactor: reuse memory wiki record helper
* refactor: share boolean coercion helpers
* refactor: reuse finite number coercion
* refactor: reuse trimmed string list helpers
* refactor: reuse string list normalization
* refactor: reuse remaining string list helpers
* refactor: reuse string entry normalizer
* refactor: share sorted string helpers
* refactor: share string list normalization
* test: preserve command registry browser imports
* refactor: reuse trimmed list helpers
* refactor: reuse string dedupe helpers
* refactor: reuse local dedupe helpers
* refactor: reuse more string dedupe helpers
* refactor: reuse command string dedupe helpers
* refactor: dedupe memory path lists with helper
* refactor: expose string dedupe helpers to plugins
* refactor: reuse core string dedupe helpers
* refactor: reuse shared unique value helpers
* refactor: reuse unique helpers in agent utilities
* refactor: reuse unique helpers in config plumbing
* refactor: reuse unique helpers in extensions
* refactor: reuse unique helpers in core utilities
* refactor: reuse unique helpers in qa plugins
* refactor: reuse unique helpers in memory plugins
* refactor: reuse unique helpers in channel plugins
* refactor: reuse unique helpers in core tails
* refactor: reuse unique helper in comfy workflow
* refactor: reuse unique helpers in test utilities
* refactor: expose unique value helper to plugins
* refactor: reuse unique helpers for numeric lists
* refactor: replace index dedupe filters
* refactor: reuse string entry normalization
* refactor: reuse string normalization in plugin helpers
* refactor: reuse string normalization in extension helpers
* refactor: reuse string normalization in channel parsers
* refactor: reuse string normalization in memory search
* refactor: reuse string normalization in provider parsers
* refactor: reuse string normalization in qa helpers
* refactor: reuse string normalization in infra parsers
* refactor: reuse string normalization in messaging parsers
* refactor: reuse string normalization in core parsers
* refactor: reuse string normalization in extension parsers
* refactor: reuse string normalization in remaining parsers
* refactor: reuse string normalization in final parser spots
* refactor: reuse string normalization in qa media helpers
* refactor: reuse normalization in provider and media lists
* refactor: reuse normalization for remaining set filters
* refactor: reuse normalization in policy allowlists
* refactor: reuse normalization in session and owner lists
* refactor: centralize primitive string lists
* refactor: reuse lowercase entry helpers
* refactor: reuse sorted string helpers
* refactor: reuse unique trimmed helpers
* refactor: reuse string normalization helpers
* refactor: reuse catalog string helpers
* refactor: reuse remaining string helpers
* refactor: simplify remaining list normalization
* refactor: reuse codex auth order normalization
* chore: refresh plugin sdk api baseline
* fix: make shared string sorting deterministic
* chore: refresh plugin sdk api baseline
* fix: align host env security ordering
2026-05-25 21:20:41 +01:00
Sebastien Tardif
36f269d60b
docs: document fail-closed behavior for rejected modelPatterns
...
Add inline comment explaining that compileSafeRegex rejects patterns
with nested repetition (ReDoS risk) and returns null. Rejected patterns
are silently skipped; the plugin will not match via that pattern but
other patterns and prefixes still apply.
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca >
2026-05-25 20:57:04 +01:00