Peter Steinberger
85f3e9e988
refactor: extract shared llm runtime
...
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
2026-05-27 10:40:15 +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
Peter Steinberger
9ed1b02134
fix(discord): harden requester checks for guild actions
2026-05-27 08:22:25 +01: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
acbb06e266
test: harden e2e harness isolation
2026-05-26 23:20:42 -04:00
Jason (Json)
13cfb77c10
fix: repair local approval resolution ( #86771 )
2026-05-26 19:56:30 -07: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
2035f38ab2
perf: trim gateway runtime hotspots
2026-05-27 02:17:29 +01:00
Jason (Json)
ee655f4d94
fix: scrub serialized tool-call text from replies ( #86924 )
...
* fix: scrub serialized tool-call text from replies
* fix: consume xmlish tool parameters
2026-05-27 01:16:58 +01:00
rendrag-git
e9dd1c43c4
feat(discord): bucket large model picker menus
...
Summary:
- Add alpha-bucket selects when the Discord provider/model picker exceeds select-menu limits.
- Split bucket/runtime lookup helpers and keep compact recents runtime decoding provider-scoped.
Verification:
- node scripts/run-vitest.mjs --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/model-picker.test.ts extensions/discord/src/monitor/native-command.model-picker.test.ts
- node scripts/run-tsgo.mjs
- git diff --check origin/main...HEAD
- autoreview --mode local: no accepted/actionable findings
- CI run 26468173320, OpenGrep run 26468171525, CodeQL Critical Quality run 26468171885
Co-authored-by: rendrag-git <253747599+rendrag-git@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-26 19:52:50 +01:00
Peter Steinberger
4007df7f60
fix: improve discord voice playback and wake replies
2026-05-26 19:40:12 +01:00
Peter Steinberger
d001d35ea2
fix: accept trailing fuzzy voice wake questions
2026-05-26 16:59:05 +01:00
Peter Steinberger
0f605ee003
fix: update Discord voice to libopus-wasm 0.1.0
...
Updates Discord voice Opus callers to the published libopus-wasm 0.1.0 API, pins the Discord plugin dependency and lockfiles to that release, keeps the package freshness exception version-scoped, treats expected Discord receive-stream premature closes as normal stream ends, and includes routed OpenClaw transcript roots for local PR transcript discovery.\n\nProof: npm view libopus-wasm@0.1.0; pnpm install --lockfile-only --filter @openclaw/discord; Node encode/decode smoke with pkg 0.1.0 decoded=3840; node scripts/run-vitest.mjs extensions/discord/src/voice/audio.test.ts extensions/discord/src/voice/receive-recovery.test.ts; git diff --check; autoreview clean; live tmux gateway on e0fa3e3 joined Discord voice and processed realtime audio without decoder.decode or Premature close warning spam.
2026-05-26 16:17:53 +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
adupdev
31a8fe7462
fix(discord): gate native built-in UI before owner auth
...
Fixes #86654
2026-05-26 12:28:32 +01:00
Peter Steinberger
0c5f622f9a
perf(discord): use libopus-wasm for voice opus
2026-05-26 02:53:29 +01:00
Peter Steinberger
d00d0a21c2
chore: bump OpenClaw to 2026.5.26
2026-05-26 01:26:00 +01:00
Peter Steinberger
321f06ad0e
fix: stabilize discord voice receive recovery
2026-05-26 01:22:21 +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
a4f12699cf
refactor: share realtime output activity tracking ( #86661 )
2026-05-25 23:51:34 +01:00
Peter Steinberger
0164fd5e99
refactor: reuse forced consult coordinator in discord voice ( #86656 )
2026-05-25 23:34:17 +01:00
Vincent Koc
75ac0b5ed9
fix(test): avoid discord voice tts activation tax
2026-05-26 00:19:17 +02:00
Peter Steinberger
fda0141a01
Refactor realtime voice turn context tracking ( #86650 )
...
* refactor: share realtime turn context tracking
* chore: track realtime voice sdk api baseline
* fix: preserve pruned realtime turn handle state
2026-05-25 23:13:27 +01:00
UB
48adcb162c
test(discord): cover deliver-lambda abort-skip path via processDiscordMessage integration
2026-05-25 23:11:54 +01:00
UB
3a48366f3e
fix(discord): surface silent reply-delivery skips and remove runtime.error optional-chain
2026-05-25 23:11:54 +01:00
Peter Steinberger
5dccba7405
refactor: share realtime forced consult coordination
2026-05-25 22:02:19 +01:00
Peter Steinberger
cda7c30150
build: refresh dependency pins ( #86628 )
...
* build: refresh dependencies
* build: align pi fallback version
2026-05-25 21:55:46 +01:00
Peter Steinberger
5a9673ecd7
test: stabilize release validation test harnesses
2026-05-25 21:35:29 +01:00
Peter Steinberger
4e9dac5e00
fix(discord): stabilize realtime wake-name feedback
2026-05-25 21:24:06 +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
Peter Steinberger
d0ab0d9922
refactor: share realtime voice activation helpers ( #86615 )
2026-05-25 20:25:17 +01:00
Peter Steinberger
5b6d409248
fix: route Discord gateway metadata through proxy ( #86601 )
...
* fix: route Discord gateway metadata through proxy
* fix: keep Discord gateway proxy fetch guarded
2026-05-25 19:59:51 +01:00
Peter Steinberger
f00a912c25
fix: tighten Discord voice wake matching ( #86595 )
...
* fix: tighten Discord voice wake matching
* test: avoid wildcard model runtime normalization
2026-05-25 19:51:32 +01:00
Vincent Koc
b0c8a4d11d
fix(test): preserve undici exports in discord proxy tests
2026-05-25 20:02:10 +02:00
Josh Avant
c5b987274a
fix(discord): restore bare numeric channel sends ( #86571 )
...
* fix(discord): restore bare numeric channel sends
* docs: add Discord channel send changelog
2026-05-25 10:24:20 -07:00
Peter Steinberger
5ae91f01fa
fix: speed up Discord voice wake consults
2026-05-25 18:09:16 +01:00
Peter Steinberger
a9c91ca81f
fix: broaden leading voice wake fuzzing
2026-05-25 16:45:56 +01:00
Peter Steinberger
b077c3a813
fix: accept OpenClaw voice wake confusions ( #86507 )
2026-05-25 15:03:16 +01:00
Peter Steinberger
8fe4f34af2
fix: accept leading fuzzy Discord voice wake names ( #86484 )
2026-05-25 14:01:15 +01:00
Peter Steinberger
dc2c4aab6d
fix: rotate realtime voice sessions on max duration
...
- Rotate OpenAI Realtime voice sessions on provider max-duration events without surfacing the expected expiry as a Discord voice error.
- Add lifecycle logging for Realtime rotation/reconnect and regression coverage for max-duration reconnect.
- Allowlist the existing Control UI chunking helper for the optional Knip unused-file guard so the dependency shard stays green on the current base.
2026-05-25 13:16:48 +01:00
Peter Steinberger
bbc1772f4d
build: enable modern TypeScript module syntax
...
* build: enable modern TypeScript flags
* build: drop erasable TypeScript syntax flag
* build: keep legacy class field semantics
2026-05-25 10:10:12 +01:00
Jason (Json)
0014724428
fix(discord): suppress self-reply prompt echoes ( #86238 )
...
* fix(discord): suppress self-reply prompt echoes
* docs(changelog): note Discord self-reply fix
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-25 08:41:07 +01:00
Peter Steinberger
fdfcb0795a
fix(discord): harden realtime voice wake joins
2026-05-24 05:54:10 +01:00
Peter Steinberger
17dcdead00
fix: gate discord realtime voice by wake name ( #85915 )
2026-05-24 04:47:16 +01:00
Peter Steinberger
bc6d430d00
fix: recover discord realtime playback state
2026-05-24 03:44:31 +01:00
Peter Steinberger
029472c6de
fix: keep discord realtime audio playback alive
2026-05-24 03:20:01 +01:00
Peter Steinberger
0cba872e38
chore: bump version to 2026.5.24
2026-05-24 02:40:16 +01:00
Peter Steinberger
4ffa07d136
feat(discord): control active realtime voice runs
...
Co-authored-by: Colin <colin@solvely.net >
2026-05-24 02:35:04 +01:00
Peter Steinberger
e2249d8d1e
fix: order meeting notes startup around channels
2026-05-24 00:30:39 +01:00