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
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
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
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
Jason (Json)
f603fa58fe
fix(discord): keep forced voice consult diagnostics private ( #84411 )
...
Summary:
- The PR removes forced consult diagnostics from Discord and phone-call realtime consult payloads, adds private debug logs and regression tests, and records the fix in the changelog.
- Reproducibility: yes. by source inspection. Current main builds the forced Discord consult message with the ... gent_consult` diagnostic string, and the phone-call fallback passes the same diagnostic as consult context.
Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(discord): log forced consult fallback reason
- PR branch already contained follow-up commit before automerge: fix(discord): keep forced voice consult diagnostics private
Validation:
- ClawSweeper review passed for head c1592530c6 .
- Required merge gates passed before the squash merge.
Prepared head SHA: c1592530c6
Review: https://github.com/openclaw/openclaw/pull/84411#issuecomment-4494164784
Co-authored-by: FullerStackDev <263060202+fuller-stack-dev@users.noreply.github.com >
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-23 21:33:23 +00:00
Peter Steinberger
c4f0da00a9
refactor: use channel target resolution APIs ( #85814 )
...
* refactor: use channel target resolution apis
* refactor: satisfy delivery lint
* refactor: remove unused target parsing shim
* fix: preserve routed cron topic targets
2026-05-23 21:26:55 +01:00
Peter Steinberger
07694c639d
feat: add meeting notes plugin
...
Adds source-only external meeting notes plugin, SDK source-provider contract, CLI access, date-sharded storage, and Discord voice source.
2026-05-23 10:38:09 +01:00
Peter Steinberger
0def3e20e4
test(release): align prerelease validation
2026-05-22 14:43:36 +01:00
Peter Steinberger
c9a0f03dd7
feat(plugin-sdk): add generic channel poll sender ( #85299 )
...
* feat(plugin-sdk): add generic channel poll sender
* test(channels): follow durable capability list
* test(channels): update poll capability expectations
* fix(channels): normalize poll receipt parts
2026-05-22 12:16:07 +01:00
Pavan Kumar Gondhi
ea5f2abb48
fix(integrations): enforce channel read target allowlists [AI] ( #84982 )
...
* fix: enforce message read target allowlists
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing codex review
* addressing codex review
* addressing codex review
* addressing ci
* addressing ci
* docs: add changelog entry for PR merge
2026-05-22 14:11:06 +05:30