Skip to content

feat(xai): add realtime voice provider#91308

Closed
jsi-tross wants to merge 13 commits into
openclaw:mainfrom
jsi-tross:feat/xai-realtime-voice
Closed

feat(xai): add realtime voice provider#91308
jsi-tross wants to merge 13 commits into
openclaw:mainfrom
jsi-tross:feat/xai-realtime-voice

Conversation

@jsi-tross

@jsi-tross jsi-tross commented Jun 8, 2026

Copy link
Copy Markdown

Summary

  • Register xAI as a Talk realtime voice provider through the existing provider plugin contract, with both provider-websocket and gateway-relay transports.
  • Add documented xAI browser Realtime session support: Gateway creates an ephemeral /v1/realtime/client_secrets token and the browser connects to wss://api.x.ai/v1/realtime with the xai-client-secret.<token> WebSocket subprotocol.
  • Default xAI realtime Talk to grok-voice-latest and voice leo, and map cumulative inbound conversation.item.input_audio_transcription.updated events into Talk transcript updates for meeting/transcription surfaces.
  • Keep tool calls on the existing Talk/Gateway openclaw_agent_consult path, including xAI bridge tool-result continuation for relay sessions.
  • Move ws into the xAI plugin runtime dependencies so installed plugin packages can load the realtime provider.

Review follow-up

  • Fixed ClawSweeper baseUrl follow-up: xAI browser provider-websocket sessions now reject custom/proxy baseUrl values before minting a client secret, and docs scope custom baseUrl to gateway-relay.

  • Fixed Codex review comment: ws now lives in extensions/xai/package.json dependencies, and pnpm-lock.yaml was refreshed.

  • Fixed ClawSweeper blocker: XaiRealtimeVoiceBridge now advertises supportsToolResultContinuation, with provider coverage plus existing relay working-result coverage.

  • Added redacted live xAI Realtime proof for client-secret creation, WebSocket session setup, audio input, inbound transcript updates, function/tool call, tool output, and assistant audio output.

Real behavior proof

  • Behavior addressed: xAI realtime Talk is implemented as an xAI-owned provider plugin adapter, with browser provider-websocket sessions using xAI ephemeral client secrets and Gateway relay still available for backend-owned sessions.
  • Real environment tested: Local OpenClaw source checkout at 522aa6fcb8 on macOS with a keychain-backed xAI credential, plus the live xAI Realtime API at wss://api.x.ai/v1/realtime?model=grok-voice-latest.
  • Exact steps or command run after this patch: Ran a one-off Node proof harness that created an xAI Realtime client secret, connected with the xai-client-secret.<token> subprotocol, streamed synthesized PCM16/24 kHz speech, committed the audio buffer, captured transcript events and a function call, submitted a function output, and received assistant audio. Also ran an isolated source Gateway on port 19089 and called talk.catalog against it.
  • Evidence after fix: Copied live output below shows clientSecretCreated: true, websocketConnected: true, sessionUpdated: true, transcriptUpdated: true, transcriptCompleted: true, toolCallReceived: true, toolCallName: "openclaw_agent_consult", toolResultSent: true, assistantAudioDeltas: 4, and errors: []. The Gateway catalog excerpt below shows xAI configured with supportsBrowserSession: true, defaultModel: "grok-voice-latest", and transports ["provider-websocket", "gateway-relay"].
  • Observed result after fix: The live xAI session accepted the documented browser client-secret WebSocket handshake, processed real audio input, emitted cumulative inbound transcript updates, requested the OpenClaw consult tool with a question argument, accepted the tool output, and returned assistant audio. The source Gateway exposed the updated xAI realtime provider contract through talk.catalog.
  • What was not tested: Full manual browser microphone UI was not run; the browser-owned WebSocket path was exercised with a Node WebSocket harness using the same documented subprotocol and PCM audio contract. Dependency graph CI remains policy-blocked until a maintainer/security approver allows the intentional ws runtime dependency move for this head SHA.

Live xAI Realtime session

Ran a one-off local proof harness using a keychain-backed xAI credential. The harness:

  1. Created an xAI ephemeral Realtime client secret.
  2. Connected to wss://api.x.ai/v1/realtime?model=grok-voice-latest with the xai-client-secret.<token> subprotocol.
  3. Sent session.update with voice: "leo", PCM16 24 kHz input/output, audio.input.transcription.model: "grok-transcribe", and an openclaw_agent_consult function tool.
  4. Synthesized a short spoken prompt locally, converted it to PCM16 24 kHz, streamed it through input_audio_buffer.append, committed the buffer, and requested a response.
  5. Captured transcript update/completion, an openclaw_agent_consult function call, sent a function output, and received assistant audio.

Sanitized output:

{
  "model": "grok-voice-latest",
  "voice": "leo",
  "clientSecretCreated": true,
  "websocketConnected": true,
  "sessionUpdated": true,
  "inputAudioBytes": 255216,
  "inputAudioChunks": 54,
  "inputCommitted": true,
  "transcriptUpdated": true,
  "transcriptCompleted": true,
  "transcriptSample": "Please call the OpenClaw agent consult tool and say real time proof complete.",
  "toolCallReceived": true,
  "toolCallName": "openclaw_agent_consult",
  "toolCallArgsKeys": ["question"],
  "toolResultSent": true,
  "assistantAudioDeltas": 4,
  "assistantAudioBytes": 72480,
  "responseDoneCount": 1,
  "errors": []
}

Observed xAI event set included:

session.created
conversation.created
session.updated
input_audio_buffer.speech_started
conversation.item.input_audio_transcription.updated
conversation.item.input_audio_transcription.completed
input_audio_buffer.committed
response.output_audio.delta
response.output_audio_transcript.delta
response.output_audio_transcript.done
response.function_call_arguments.delta
response.function_call_arguments.done
response.done

Source Gateway catalog proof

Ran the committed branch as an isolated source Gateway with XAI_API_KEY supplied from keychain:

OPENCLAW_HOME=/tmp/openclaw-xai-proof.1780889250 \
XAI_API_KEY=redacted \
/opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-node.mjs gateway run \
  --dev --allow-unconfigured --auth none --bind loopback --port 19089

Startup proof:

OpenClaw source gateway built from 522aa6fcb8
[gateway] http server listening ... port=19089
[gateway] ready

talk.catalog relevant response excerpt:

{
  "id": "xai",
  "label": "xAI Grok Voice",
  "configured": true,
  "modes": ["realtime"],
  "brains": ["agent-consult"],
  "supportsBrowserSession": true,
  "defaultModel": "grok-voice-latest",
  "transports": ["provider-websocket", "gateway-relay"],
  "inputAudioFormats": [
    { "encoding": "g711_ulaw", "sampleRateHz": 8000, "channels": 1 },
    { "encoding": "pcm16", "sampleRateHz": 24000, "channels": 1 }
  ],
  "outputAudioFormats": [
    { "encoding": "g711_ulaw", "sampleRateHz": 8000, "channels": 1 },
    { "encoding": "pcm16", "sampleRateHz": 24000, "channels": 1 }
  ],
  "supportsBargeIn": true,
  "supportsToolCalls": true
}

The temporary Gateway was stopped cleanly after the proof.

Verification

  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-vitest.mjs extensions/xai/realtime-voice-provider.test.ts src/gateway/talk-realtime-relay.test.ts
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-vitest.mjs ui/src/ui/realtime-talk-xai.test.ts ui/src/ui/realtime-talk-google-live.test.ts
  • /opt/homebrew/Cellar/node/24.4.1/bin/node node_modules/vitest/vitest.mjs run --config test/vitest/vitest.contracts-plugin.config.ts src/plugins/contracts/extension-runtime-dependencies.contract.test.ts
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions.tsbuildinfo
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.test.ui.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/test-ui.tsbuildinfo
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions/xai/index.ts extensions/xai/realtime-voice-provider.ts extensions/xai/realtime-voice-provider.test.ts ui/src/ui/chat/realtime-talk.ts ui/src/ui/chat/realtime-talk-xai.ts ui/src/ui/realtime-talk-xai.test.ts
  • node_modules/.bin/oxfmt --check --threads=1 ui/src/ui/chat/realtime-talk.ts ui/src/ui/chat/realtime-talk-xai.ts ui/src/ui/realtime-talk-xai.test.ts extensions/xai/realtime-voice-provider.ts extensions/xai/realtime-voice-provider.test.ts
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/format-docs.mjs --check
  • git diff --cached --check
  • /opt/homebrew/Cellar/node/24.4.1/bin/node scripts/run-vitest.mjs extensions/xai/realtime-voice-provider.test.ts ui/src/ui/realtime-talk-xai.test.ts
  • node scripts/dependency-changes-report.mjs --base-ref upstream/main --markdown /tmp/openclaw-pr-91308-dependency-changes-latest.md --json /tmp/openclaw-pr-91308-dependency-changes-latest.json

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation extensions: xai size: XL triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 8, 2026
@clawsweeper

clawsweeper Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 30, 2026, 3:36 PM ET / 19:36 UTC.

Summary
The branch adds an xAI Talk realtime voice provider, registers it in xAI plugin metadata, documents Gateway-relay config, adds provider tests, and moves ws into xAI runtime dependencies.

PR surface: Source +953, Tests +406, Docs +59, Config 0, Other 0. Total +1418 across 9 files.

Reproducibility: not applicable. as a bug reproduction; this is a feature PR. The source-level check is high-confidence: current main lacks xAI realtime voice registration, while the PR head adds a relay-only provider.

Review metrics: 3 noteworthy metrics.

  • Realtime provider surface: 1 provider registered, 1 manifest contract added, 1 relay transport exposed. This changes Talk provider discovery and runtime selection, not only private plugin code.
  • Provider config/default surface: 2 defaults and 12 xAI config key names documented. New provider-owned config/defaults affect upgrade and operator behavior for users who select xAI realtime Talk.
  • Dependency metadata surface: 2 files changed; ws moved devDependencies -> dependencies; 0 resolved version delta reported. The resolved package graph may not change, but repository policy still requires exact-head dependency approval for external PRs.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #12911
Summary: The canonical remaining request is /chat xAI/Grok Live Voice Mode; this PR is the open candidate implementation for the provider-plugin path, while xAI transcription-provider resolution work is adjacent but distinct.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🐚 platinum hermit
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Update the PR body with redacted current-head Gateway-relay live proof for talk.session.create, audio input, transcript updates, tool call/result, and assistant audio; redact private endpoints, keys, phone numbers, and other private details.
  • Resolve the current conflicts against main so reviewers can inspect the actual merge result.
  • Get maintainer/security dependency approval for the exact head SHA or move the dependency graph change to a maintainer-owned update.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The supplied copied live output is from an older provider-WebSocket/browser-session head, while current head is Gateway-relay only; add redacted current-head relay proof and update the PR body before merge.

Risk before merge

  • [P1] The PR is conflict-marked and dirty, so maintainers cannot treat the current head as the final three-way merge result against current main.
  • [P1] The supplied live proof is stale for the current head: it describes older browser/provider-WebSocket and supportsBrowserSession: true behavior while the final branch exposes xAI as Gateway-relay only.
  • [P1] The external PR changes dependency metadata by moving ws into xAI runtime dependencies and updating pnpm-lock.yaml; repository policy requires maintainer/security approval for the exact head SHA.
  • [P1] Adding xAI realtime Talk changes provider discovery, defaults, credential resolution, and Talk provider selection for users with xAI credentials or realtime config.

Maintainer options:

  1. Refresh proof and dependency approval before merge (recommended)
    Resolve the current conflicts, update the PR body with redacted current-head talk.session.create Gateway-relay proof covering audio, transcript, tool call/result, and assistant audio, then obtain dependency approval for the exact head SHA.
  2. Move dependency graph handling to a maintainer-owned update
    If security does not want an external branch to carry the lockfile/package graph change, keep the provider code review separate and have maintainers regenerate or apply the ws runtime dependency move on a trusted branch.
  3. Pause if the xAI transport scope changes again
    If maintainers want browser-owned xAI WebSocket support rather than the current relay-only provider, pause this branch until the product and security direction is explicit.

Next step before merge

  • [P1] Manual review is needed because the remaining blockers are contributor-owned current-head live proof, conflict resolution, and maintainer/security dependency approval.

Security
Needs attention: The code path looks security-conscious, but the external dependency metadata change remains blocked until maintainer/security approval for the exact head SHA.

Review details

Best possible solution:

Land a conflict-free xAI-owned Gateway-relay realtime voice provider through the existing Talk provider seams after exact-head relay proof and dependency approval, keeping browser/provider-WebSocket claims out unless reintroduced in code.

Do we have a high-confidence way to reproduce the issue?

Not applicable as a bug reproduction; this is a feature PR. The source-level check is high-confidence: current main lacks xAI realtime voice registration, while the PR head adds a relay-only provider.

Is this the best way to solve the issue?

Yes on owner boundary, but not merge-ready yet. An xAI-owned RealtimeVoiceProviderPlugin on the existing Talk Gateway-relay seam is the maintainable shape; the remaining blockers are proof, dependency approval, and conflict resolution.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 5a89484eb31d.

Label changes

Label justifications:

  • P2: This is a normal-priority provider feature with meaningful Talk/xAI user value but no current outage or data-loss emergency.
  • merge-risk: 🚨 compatibility: The PR adds provider discovery, defaults, and documented realtime config keys that can change Talk selection and upgrade behavior for existing xAI-configured users.
  • merge-risk: 🚨 auth-provider: The new realtime provider resolves xAI API keys, environment credentials, and auth profiles for live Talk sessions.
  • merge-risk: 🚨 security-boundary: The external PR changes dependency metadata and realtime credential-bearing WebSocket behavior, both of which require maintainer/security review before merge.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The supplied copied live output is from an older provider-WebSocket/browser-session head, while current head is Gateway-relay only; add redacted current-head relay proof and update the PR body before merge.
Evidence reviewed

PR surface:

Source +953, Tests +406, Docs +59, Config 0, Other 0. Total +1418 across 9 files.

View PR surface stats
Area Files Added Removed Net
Source 3 953 0 +953
Tests 1 406 0 +406
Docs 3 71 12 +59
Config 1 3 3 0
Generated 0 0 0 0
Other 1 3 3 0
Total 9 1436 18 +1418

Security concerns:

  • [medium] Approve the external dependency metadata change — extensions/xai/package.json:7
    The PR moves ws into xAI runtime dependencies and updates the lockfile; OpenClaw's dependency guard requires repository admin or security approval for the exact head before merge, or a maintainer-owned regeneration path.
    Confidence: 0.95

What I checked:

Likely related people:

  • vincentkoc: Authored the merged voice catalog/provider work that shaped Talk provider discovery, realtime voice provider metadata, docs, config, and Gateway surfaces this PR extends. (role: recent Talk/provider contributor; confidence: high; commits: 27b15a19e84c, ca4baaeb922e, b4aee7c2f82b; files: src/gateway/server-methods/talk.ts, src/gateway/server-methods/talk-client.ts, src/gateway/server-methods/talk-session.ts)
  • steipete: Merged or authored recent xAI media/provider work and follow-up commits in the voice catalog refactor; also left maintainer context on the canonical xAI/Grok Talk issue. (role: adjacent xAI and Talk area contributor; confidence: medium; commits: f342da5fcc36, 60996d5fb675, 9909151713e6; files: extensions/xai/index.ts, extensions/xai/openclaw.plugin.json, docs/providers/xai.md)
  • Jaaneek: Authored the merged xAI OAuth/User-Agent work that this PR's realtime bridge reuses for credential resolution and xAI-native User-Agent handling. (role: xAI auth contributor; confidence: medium; commits: 4b4048fd2294, 51f1af9c23da; files: extensions/xai/src/xai-user-agent.ts, extensions/xai/realtime-transcription-provider.ts, extensions/xai/speech-provider.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c40af38057

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread extensions/xai/realtime-voice-provider.ts
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. labels Jun 8, 2026
@jsi-tross
jsi-tross requested a review from a team as a code owner June 8, 2026 03:30
@openclaw-barnacle openclaw-barnacle Bot added the app: web-ui App: web-ui label Jun 8, 2026
@github-actions github-actions Bot added the dependencies-changed PR changes dependency-related files label Jun 8, 2026
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Dependency Guard

This PR changes dependency-related files. Maintainers should confirm these changes are intentional.

Changed files:

  • extensions/xai/package.json
  • pnpm-lock.yaml

Maintainer follow-up:

  • Review whether the dependency changes are intentional.
  • Inspect resolved package deltas when lockfile, shrinkwrap, or workspace dependency policy changes are present.
  • Treat package-lock.json and npm-shrinkwrap.json diffs as security-review surfaces.
  • Run pnpm deps:changes:report -- --base-ref origin/main --markdown /tmp/dependency-changes.md --json /tmp/dependency-changes.json locally for detailed release-style evidence.

@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Dependency graph changes are blocked

OpenClaw does not accept dependency graph changes through PRs unless a repository admin or security explicitly authorizes the current head SHA. Dependency updates are generated internally by maintainers so external PRs cannot change the resolved graph.

Detected dependency graph changes:

  • pnpm-lock.yaml changed.
  • extensions/xai/package.json changed dependencies, devDependencies.

Auto-scrub was not attempted because this PR changes package manifest dependency graph fields:

  • extensions/xai/package.json changed dependencies, devDependencies.

Dependency graph changes must be reviewed by security or handled by maintainers internally. Please remove lockfile changes manually if they are not needed.

To remove lockfile changes, restore them from the target branch:

git fetch origin
git checkout 'origin/main' -- 'pnpm-lock.yaml'
git commit -m 'chore: remove dependency lockfile change'
git push

If this PR intentionally needs a dependency graph change, ask a repository admin or member of @openclaw/openclaw-secops to comment:

/allow-dependencies-change

The action will approve the current head SHA (bca345b26790487419a2592ef0b8a1daca7f7677) when it reruns. A later push requires a fresh approval.

@openclaw-barnacle openclaw-barnacle Bot added the triage: dirty-candidate Candidate: broad unrelated surfaces; may need splitting or cleanup. label Jun 8, 2026
@jsi-tross

Copy link
Copy Markdown
Author

@clawsweeper re-review

Updated in 76535053e7:

  • moved ws into the xAI plugin runtime dependencies and refreshed the lockfile
  • set and tested XaiRealtimeVoiceBridge.supportsToolResultContinuation
  • added xAI browser Realtime support through the documented client-secret WebSocket path
  • updated the PR body with redacted live xAI Realtime proof covering client-secret creation, WebSocket session setup, audio input, inbound transcript updates, openclaw_agent_consult tool call, tool output, and assistant audio output
  • refreshed source Gateway talk.catalog proof showing xAI configured with supportsBrowserSession: true, defaultModel: "grok-voice-latest", and transports ["provider-websocket", "gateway-relay"]

@clawsweeper

clawsweeper Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 8, 2026
@jsi-tross

Copy link
Copy Markdown
Author

@clawsweeper re-review

Retrying because the previous targeted re-review run was cancelled during setup-media-proof-tools before Review exact event item, so it did not produce an updated verdict for head 76535053e7dcf0b95c10ec5bbf69081c1b969be9.

No additional code changes since the prior request. The PR body now includes the redacted live xAI Realtime proof and the review blockers are fixed in 76535053e7.

@clawsweeper

clawsweeper Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@jsi-tross

Copy link
Copy Markdown
Author

Dependency-guard evidence for maintainers at head 76535053e7dcf0b95c10ec5bbf69081c1b969be9:

Ran:

node scripts/dependency-changes-report.mjs --base-ref upstream/main --markdown /tmp/openclaw-pr-91308-dependency-changes.md --json /tmp/openclaw-pr-91308-dependency-changes.json

Result:

  • Dependency file changes: 2 (extensions/xai/package.json, pnpm-lock.yaml)
  • Resolved packages in base: 1136
  • Resolved packages in head: 1136
  • Added packages: 0
  • Removed packages: 0
  • Changed resolved package versions: 0

Intent: this is the review-requested move of existing ws from xAI plugin devDependencies to runtime dependencies so installed plugin packages do not prune the runtime import. It does not introduce a new resolved package/version.

The dependency-guard check still needs repo admin or @openclaw/openclaw-secops to approve this exact head SHA with /allow-dependencies-change.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 8, 2026
…solution

# Conflicts:
#	docs/.generated/plugin-sdk-api-baseline.sha256
#	docs/web/control-ui.md
@socket-security

socket-security Bot commented Jun 9, 2026

Copy link
Copy Markdown

@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 9, 2026
@openclaw-barnacle openclaw-barnacle Bot removed app: web-ui App: web-ui gateway Gateway runtime scripts Repository scripts labels Jun 9, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 15, 2026
@steipete

Copy link
Copy Markdown
Contributor

Superseded by #106267 and landed in 6c5084f1adb.

The canonical implementation uses the existing Talk gateway-relay contract, keeps provider policy inside the xAI plugin, and includes tested audio, tools, server-VAD barge-in, playback truncation, reconnect, and optional resumption. Exact-head release gate 29248320992 passed all 117 jobs; authenticated xAI live proof also passed.

Closing this stale duplicate. Thank you, @jsi-tross, for the implementation exploration and live protocol proof.

@steipete steipete closed this Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies-changed PR changes dependency-related files docs Improvements or additions to documentation extensions: xai merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: XL status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. triage: dirty-candidate Candidate: broad unrelated surfaces; may need splitting or cleanup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants