fix(voice-call): emit canonical session keys#84199
Conversation
|
Codex review: needs maintainer review before merge. Workflow note: Future ClawSweeper reviews update this same comment in place. How this review workflow works
Summary Reproducibility: yes. Source inspection shows current main and v2026.5.18 generate raw PR rating Rank-up moves:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. PR egg Rarity: 🥚 common. What is this egg doing here?
Real behavior proof Risk before merge Maintainer options:
Next step before merge Security Review detailsBest possible solution: Land this PR or an equivalent resolver change that keeps generated Voice Call keys canonical and explicit session keys pass-through, with the focused session-key tests retained. Do we have a high-confidence way to reproduce the issue? Yes. Source inspection shows current main and v2026.5.18 generate raw Is this the best way to solve the issue? Yes. The PR fixes the central resolver used by inbound, outbound, classic response, and realtime consult fallback paths, and it uses the existing SDK normalizer instead of adding a parallel key scheme. Label justifications:
What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against d0f7c8fa2805. |
Summary
agent:<agent>:voice:*).Fixes #83967.
Real behavior proof
Behavior or issue addressed:
Generated voice-call session keys previously used unscoped
voice:*keys, so calls could miss the canonicalagent:<agent>:voice:*session namespace used by the rest of the agent runtime.Real environment tested:
Local OpenClaw checkout on macOS using the repository source module through
tsxwith the bundled Node runtime.Exact steps or command run after this patch:
PATH=/Users/andy/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin:$PATH node --import tsx /private/tmp/proof-83967.mjsEvidence after fix:
Observed result after fix:
Default per-phone, configured-agent per-phone, and per-call generated voice session keys are canonical agent-scoped keys, while an explicit session key is still preserved unchanged.
What was not tested:
No live telephony provider was called; the proof exercises the real OpenClaw voice-call config/session-key code path locally.
Validation
NODE_OPTIONS=--max-old-space-size=8192 OPENCLAW_VITEST_MAX_WORKERS=1 PATH=/Users/andy/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin:$PATH node scripts/run-vitest.mjs extensions/voice-call/src/config.test.ts extensions/voice-call/src/response-generator.test.ts extensions/voice-call/src/manager/events.test.ts extensions/voice-call/src/manager/outbound.test.ts extensions/voice-call/src/runtime.test.ts --pool forks --maxWorkers 1 --vmMemoryLimit 8192MBPATH=/Users/andy/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin:/Users/andy/openclaw-83967/node_modules/.bin:$PATH oxfmt --check docs/plugins/voice-call.md extensions/voice-call/src/config.ts extensions/voice-call/src/config.test.ts extensions/voice-call/src/manager/events.test.ts extensions/voice-call/src/manager/outbound.test.ts extensions/voice-call/src/response-generator.test.ts extensions/voice-call/src/runtime.test.tsPATH=/Users/andy/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin:/Users/andy/openclaw-83967/node_modules/.bin:$PATH oxlint docs/plugins/voice-call.md extensions/voice-call/src/config.ts extensions/voice-call/src/config.test.ts extensions/voice-call/src/manager/events.test.ts extensions/voice-call/src/manager/outbound.test.ts extensions/voice-call/src/response-generator.test.ts extensions/voice-call/src/runtime.test.tsgit diff --checkMaintainer note
If this PR is squashed or reworked, please preserve author attribution or include:
Co-authored-by: Andy Ye <[email protected]>