@openclaw/voice-call 2026.5.22 → 2026.5.24-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { fetchWithSsrFGuard } from "./runtime-api.js";
2
2
  import "./api.js";
3
- import { a as getHeader } from "./runtime-entry-COF3ZO-3.js";
3
+ import { a as getHeader } from "./runtime-entry-Ckt5k9pK.js";
4
4
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
5
5
  import { isLoopbackHost } from "openclaw/plugin-sdk/gateway-runtime";
6
6
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { definePluginEntry, sleep } from "./runtime-api.js";
2
2
  import "./api.js";
3
3
  import { i as resolveVoiceCallConfig, s as validateProviderConfig } from "./config-CmO0pHE1.js";
4
- import { c as getTailscaleSelfInfo, l as setupTailscaleExposureRoute, o as resolveWebhookExposureStatus, p as resolveUserPath, s as cleanupTailscaleExposureRoute, t as createVoiceCallRuntime } from "./runtime-entry-COF3ZO-3.js";
4
+ import { c as getTailscaleSelfInfo, l as setupTailscaleExposureRoute, o as resolveWebhookExposureStatus, p as resolveUserPath, s as cleanupTailscaleExposureRoute, t as createVoiceCallRuntime } from "./runtime-entry-Ckt5k9pK.js";
5
5
  import { i as parseVoiceCallPluginConfig, r as normalizeVoiceCallLegacyConfigInput, t as formatVoiceCallLegacyConfigWarnings } from "./config-compat-HORl1Cdw.js";
6
6
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
7
7
  import { ErrorCodes, callGatewayFromCli, errorShape } from "openclaw/plugin-sdk/gateway-runtime";
@@ -1,5 +1,5 @@
1
- import { a as getHeader, m as escapeXml } from "./runtime-entry-COF3ZO-3.js";
2
- import { n as reconstructWebhookUrl, r as verifyPlivoWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-Ylkxj_zA.js";
1
+ import { a as getHeader, m as escapeXml } from "./runtime-entry-Ckt5k9pK.js";
2
+ import { n as reconstructWebhookUrl, r as verifyPlivoWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-BveGhYhl.js";
3
3
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import crypto from "node:crypto";
5
5
  //#region extensions/voice-call/src/providers/plivo.ts
@@ -1,4 +1,5 @@
1
1
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
2
+ import { createSubsystemLogger } from "openclaw/plugin-sdk/runtime-env";
2
3
  import { REALTIME_VOICE_AGENT_CONSULT_TOOL_NAME, buildRealtimeVoiceAgentConsultWorkingResponse, createRealtimeVoiceBridgeSession, createTalkSessionController, recordTalkObservabilityEvent } from "openclaw/plugin-sdk/realtime-voice";
3
4
  import { randomUUID } from "node:crypto";
4
5
  import WebSocket, { WebSocketServer } from "ws";
@@ -295,11 +296,13 @@ const MAX_REALTIME_WS_BUFFERED_BYTES = 1024 * 1024;
295
296
  const FORCED_CONSULT_FALLBACK_DELAY_MS = 200;
296
297
  const FORCED_CONSULT_NATIVE_DEDUPE_MS = 2e3;
297
298
  const FORCED_CONSULT_RESULT_MAX_CHARS = 1800;
299
+ const FORCED_CONSULT_REASON = "provider_final_transcript_without_openclaw_agent_consult";
298
300
  const CONSULT_TRANSCRIPT_SETTLE_MS = 350;
299
301
  const CONSULT_TRANSCRIPT_SETTLE_MAX_MS = 1e3;
300
302
  const MAX_PARTIAL_USER_TRANSCRIPT_CHARS = 1200;
301
303
  const RECENT_FINAL_USER_TRANSCRIPT_TTL_MS = 2e3;
302
304
  const BARGE_IN_REQUIRED_LOUD_CHUNKS = 2;
305
+ const logger = createSubsystemLogger("voice-call/realtime");
303
306
  function normalizePath(pathname) {
304
307
  const trimmed = pathname.trim();
305
308
  if (!trimmed) return "/";
@@ -1040,14 +1043,12 @@ var RealtimeCallHandler = class {
1040
1043
  async runForcedAgentConsult(params) {
1041
1044
  this.forcedConsultInFlightByCallId.add(params.callId);
1042
1045
  const startedAt = Date.now();
1046
+ logger.debug(`[voice-call] realtime forced agent consult reason=${FORCED_CONSULT_REASON} consultPolicy=always callId=${params.callId} providerCallId=${params.callSid} chars=${params.question.length}`);
1043
1047
  console.log(`[voice-call] realtime forced agent consult starting callId=${params.callId} providerCallId=${params.callSid} chars=${params.question.length}`);
1044
1048
  params.clearAudio();
1045
1049
  const state = {
1046
1050
  sendSpeechPrompt: true,
1047
- promise: Promise.resolve().then(() => params.handler({
1048
- question: params.question,
1049
- context: "The realtime provider produced a final user transcript without invoking openclaw_agent_consult, so OpenClaw is forcing the consult because consultPolicy is always."
1050
- }, params.callId, {}))
1051
+ promise: Promise.resolve().then(() => params.handler({ question: params.question }, params.callId, {}))
1051
1052
  };
1052
1053
  this.forcedConsultsByCallId.set(params.callId, state);
1053
1054
  try {
@@ -1,5 +1,5 @@
1
1
  import { o as resolveVoiceCallSessionKey } from "./config-CmO0pHE1.js";
2
- import { f as resolveVoiceResponseModel } from "./runtime-entry-COF3ZO-3.js";
2
+ import { f as resolveVoiceResponseModel } from "./runtime-entry-Ckt5k9pK.js";
3
3
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import crypto from "node:crypto";
5
5
  import { applyModelOverrideToSessionEntry } from "openclaw/plugin-sdk/model-session-runtime";
@@ -2531,7 +2531,7 @@ function loadRealtimeTranscriptionRuntime() {
2531
2531
  return realtimeTranscriptionRuntimePromise;
2532
2532
  }
2533
2533
  function loadResponseGeneratorModule() {
2534
- responseGeneratorModulePromise ??= import("./response-generator-DKpksybB.js");
2534
+ responseGeneratorModulePromise ??= import("./response-generator-CzGdOMuc.js");
2535
2535
  return responseGeneratorModulePromise;
2536
2536
  }
2537
2537
  function sanitizeTranscriptForLog(value) {
@@ -3148,15 +3148,15 @@ let mockProviderPromise;
3148
3148
  let realtimeVoiceRuntimePromise;
3149
3149
  let realtimeHandlerPromise;
3150
3150
  function loadTelnyxProvider() {
3151
- telnyxProviderPromise ??= import("./telnyx-CXwzt5On.js");
3151
+ telnyxProviderPromise ??= import("./telnyx-7YcRSSf6.js");
3152
3152
  return telnyxProviderPromise;
3153
3153
  }
3154
3154
  function loadTwilioProvider() {
3155
- twilioProviderPromise ??= import("./twilio-BvjoDY65.js");
3155
+ twilioProviderPromise ??= import("./twilio-BAcJzoFs.js");
3156
3156
  return twilioProviderPromise;
3157
3157
  }
3158
3158
  function loadPlivoProvider() {
3159
- plivoProviderPromise ??= import("./plivo-UoAdaxe_.js");
3159
+ plivoProviderPromise ??= import("./plivo-cga35v6d.js");
3160
3160
  return plivoProviderPromise;
3161
3161
  }
3162
3162
  function loadMockProvider() {
@@ -3168,7 +3168,7 @@ function loadRealtimeVoiceRuntime() {
3168
3168
  return realtimeVoiceRuntimePromise;
3169
3169
  }
3170
3170
  function loadRealtimeHandler() {
3171
- realtimeHandlerPromise ??= import("./realtime-handler-Cb1RMR2c.js");
3171
+ realtimeHandlerPromise ??= import("./realtime-handler-GzCyjKXl.js");
3172
3172
  return realtimeHandlerPromise;
3173
3173
  }
3174
3174
  function resolveVoiceCallConsultSessionKey(call) {
@@ -1,2 +1,2 @@
1
- import { t as createVoiceCallRuntime } from "./runtime-entry-COF3ZO-3.js";
1
+ import { t as createVoiceCallRuntime } from "./runtime-entry-Ckt5k9pK.js";
2
2
  export { createVoiceCallRuntime };
@@ -1,4 +1,4 @@
1
- import { i as verifyTelnyxWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-Ylkxj_zA.js";
1
+ import { i as verifyTelnyxWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-BveGhYhl.js";
2
2
  import crypto from "node:crypto";
3
3
  //#region extensions/voice-call/src/providers/telnyx.ts
4
4
  function normalizeTelnyxDirection(direction) {
@@ -1,7 +1,7 @@
1
1
  import { fetchWithSsrFGuard } from "./runtime-api.js";
2
2
  import "./api.js";
3
- import { a as getHeader, d as chunkAudio, h as mapVoiceToPolly, i as normalizeProviderStatus, m as escapeXml, n as isProviderStatusTerminal, r as mapProviderStatusToEndReason } from "./runtime-entry-COF3ZO-3.js";
4
- import { a as verifyTwilioWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-Ylkxj_zA.js";
3
+ import { a as getHeader, d as chunkAudio, h as mapVoiceToPolly, i as normalizeProviderStatus, m as escapeXml, n as isProviderStatusTerminal, r as mapProviderStatusToEndReason } from "./runtime-entry-Ckt5k9pK.js";
4
+ import { a as verifyTwilioWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-BveGhYhl.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import crypto from "node:crypto";
7
7
  import { safeEqualSecret } from "openclaw/plugin-sdk/security-runtime";
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@openclaw/voice-call",
3
- "version": "2026.5.22",
3
+ "version": "2026.5.24-beta.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/voice-call",
9
- "version": "2026.5.22",
9
+ "version": "2026.5.24-beta.1",
10
10
  "dependencies": {
11
11
  "commander": "14.0.3",
12
12
  "typebox": "1.1.38",
@@ -14,7 +14,7 @@
14
14
  "zod": "4.4.3"
15
15
  },
16
16
  "peerDependencies": {
17
- "openclaw": ">=2026.5.22"
17
+ "openclaw": ">=2026.5.24-beta.1"
18
18
  },
19
19
  "peerDependenciesMeta": {
20
20
  "openclaw": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/voice-call",
3
- "version": "2026.5.22",
3
+ "version": "2026.5.24-beta.1",
4
4
  "description": "OpenClaw voice-call plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,7 +14,7 @@
14
14
  "zod": "4.4.3"
15
15
  },
16
16
  "peerDependencies": {
17
- "openclaw": ">=2026.5.22"
17
+ "openclaw": ">=2026.5.24-beta.1"
18
18
  },
19
19
  "peerDependenciesMeta": {
20
20
  "openclaw": {
@@ -31,10 +31,10 @@
31
31
  "minHostVersion": ">=2026.4.10"
32
32
  },
33
33
  "compat": {
34
- "pluginApi": ">=2026.5.22"
34
+ "pluginApi": ">=2026.5.24-beta.1"
35
35
  },
36
36
  "build": {
37
- "openclawVersion": "2026.5.22"
37
+ "openclawVersion": "2026.5.24-beta.1"
38
38
  },
39
39
  "release": {
40
40
  "publishToClawHub": true,