@openclaw/voice-call 2026.5.22 → 2026.5.24-beta.2
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.
- package/dist/{guarded-json-api-Ylkxj_zA.js → guarded-json-api-BveGhYhl.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/{plivo-UoAdaxe_.js → plivo-cga35v6d.js} +2 -2
- package/dist/{realtime-handler-Cb1RMR2c.js → realtime-handler-GzCyjKXl.js} +5 -4
- package/dist/{response-generator-DKpksybB.js → response-generator-CzGdOMuc.js} +1 -1
- package/dist/{runtime-entry-COF3ZO-3.js → runtime-entry-Ckt5k9pK.js} +5 -5
- package/dist/runtime-entry.js +1 -1
- package/dist/{telnyx-CXwzt5On.js → telnyx-7YcRSSf6.js} +1 -1
- package/dist/{twilio-BvjoDY65.js → twilio-BAcJzoFs.js} +2 -2
- package/npm-shrinkwrap.json +3 -3
- package/package.json +4 -4
|
@@ -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-
|
|
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-
|
|
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-
|
|
2
|
-
import { n as reconstructWebhookUrl, r as verifyPlivoWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-
|
|
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-
|
|
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-
|
|
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-
|
|
3151
|
+
telnyxProviderPromise ??= import("./telnyx-7YcRSSf6.js");
|
|
3152
3152
|
return telnyxProviderPromise;
|
|
3153
3153
|
}
|
|
3154
3154
|
function loadTwilioProvider() {
|
|
3155
|
-
twilioProviderPromise ??= import("./twilio-
|
|
3155
|
+
twilioProviderPromise ??= import("./twilio-BAcJzoFs.js");
|
|
3156
3156
|
return twilioProviderPromise;
|
|
3157
3157
|
}
|
|
3158
3158
|
function loadPlivoProvider() {
|
|
3159
|
-
plivoProviderPromise ??= import("./plivo-
|
|
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-
|
|
3171
|
+
realtimeHandlerPromise ??= import("./realtime-handler-GzCyjKXl.js");
|
|
3172
3172
|
return realtimeHandlerPromise;
|
|
3173
3173
|
}
|
|
3174
3174
|
function resolveVoiceCallConsultSessionKey(call) {
|
package/dist/runtime-entry.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createVoiceCallRuntime } from "./runtime-entry-
|
|
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-
|
|
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-
|
|
4
|
-
import { a as verifyTwilioWebhook, t as guardedJsonApiRequest } from "./guarded-json-api-
|
|
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";
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/voice-call",
|
|
3
|
-
"version": "2026.5.
|
|
3
|
+
"version": "2026.5.24-beta.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/voice-call",
|
|
9
|
-
"version": "2026.5.
|
|
9
|
+
"version": "2026.5.24-beta.2",
|
|
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.
|
|
17
|
+
"openclaw": ">=2026.5.24-beta.2"
|
|
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.
|
|
3
|
+
"version": "2026.5.24-beta.2",
|
|
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.
|
|
17
|
+
"openclaw": ">=2026.5.24-beta.2"
|
|
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.
|
|
34
|
+
"pluginApi": ">=2026.5.24-beta.2"
|
|
35
35
|
},
|
|
36
36
|
"build": {
|
|
37
|
-
"openclawVersion": "2026.5.
|
|
37
|
+
"openclawVersion": "2026.5.24-beta.2"
|
|
38
38
|
},
|
|
39
39
|
"release": {
|
|
40
40
|
"publishToClawHub": true,
|