@openclaw/voice-call 2026.9.1-beta.1 → 2026.9.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,4 +1,4 @@
1
- import { a as CALL_RECORD_EVENT_META_MAX_ENTRIES, c as buildVoiceCallLegacyJsonlEventKey, f as parseVoiceCallRecordLine, h as resolveVoiceCallLegacyCallLogPath, i as CALL_RECORD_EVENT_CHUNKS_NAMESPACE, m as prepareVoiceCallRecordForStorage, n as CALL_RECORD_CHUNK_MAX_ENTRIES, o as MAX_CALL_RECORD_EVENTS, r as CALL_RECORD_EVENTS_NAMESPACE, s as RAW_CALL_RECORD_CHUNK_BYTES, t as resolveDefaultVoiceCallStoreDir } from "./store-path-51_oC_xn.js";
1
+ import { a as CALL_RECORD_EVENT_META_MAX_ENTRIES, c as buildVoiceCallLegacyJsonlEventKey, f as parseVoiceCallRecordLine, h as resolveVoiceCallLegacyCallLogPath, i as CALL_RECORD_EVENT_CHUNKS_NAMESPACE, m as prepareVoiceCallRecordForStorage, n as CALL_RECORD_CHUNK_MAX_ENTRIES, o as MAX_CALL_RECORD_EVENTS, r as CALL_RECORD_EVENTS_NAMESPACE, s as RAW_CALL_RECORD_CHUNK_BYTES, t as resolveDefaultVoiceCallStoreDir } from "./store-path-C_z9zKnA.js";
2
2
  import { normalizeAgentId } from "openclaw/plugin-sdk/routing";
3
3
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import path from "node:path";
@@ -61,10 +61,13 @@ function describeVoiceCallSchemaMigration(migration) {
61
61
  case "agent-databases-composite-primary-key": return "agent database registry primary key -> agent_id,path";
62
62
  case "agent-databases-relative-paths-v9": return "agent database registry paths -> state-relative paths";
63
63
  case "audit-events-v2": return "audit event ledger -> versioned message lifecycle schema";
64
- case "commitments-retirement-v7": return "retired commitments storage -> removed table and indexes";
64
+ case "commitments-retirement-v7": return "retired commitments storage -> discarded rows, table, and indexes";
65
65
  case "state-table-retirement-v10": return "retired shared-state tables -> removed tables and indexes";
66
66
  case "state-table-retirement-v11": return "retired skill curator tables -> removed tables and indexes";
67
67
  case "singleton-state-foldin-v12": return "singleton state tables -> shared configuration state";
68
+ case "state-consolidation-v13": return "cron jobs and subagent runs -> canonical JSON storage";
69
+ case "creator-namespace-v14": return "cron creators -> explicit principal namespaces";
70
+ case "conversation-binding-targets-v15": return "conversation bindings -> exact target keys without agent/session projections";
68
71
  case "worker-placement-execution-mode-v8": return "cloud worker placements -> execution-mode claims";
69
72
  case "operator-approvals-system-agent": return "operator approvals -> OpenClaw system changes";
70
73
  case "session-watch-cursor-provenance-v4": return "session watch cursors -> provenance column";
@@ -72,7 +75,6 @@ function describeVoiceCallSchemaMigration(migration) {
72
75
  }
73
76
  return migration.kind;
74
77
  }
75
- /** Return true when a path exists and is a file. */
76
78
  /** Build the plugin state key for one migrated event chunk. */
77
79
  function buildChunkKey(eventKey, index) {
78
80
  return `${eventKey}:chunk:${String(index).padStart(4, "0")}`;
@@ -142,7 +144,6 @@ async function readLegacyCallRecords(filePath) {
142
144
  warnings
143
145
  };
144
146
  }
145
- /** Archive the legacy JSONL source after a complete migration. */
146
147
  /** Select newest missing records that fit remaining plugin state capacity. */
147
148
  async function selectEntriesForImport(params) {
148
149
  const existingEventKeys = new Set((await params.eventStore.entries()).map((entry) => entry.key));
@@ -190,7 +191,8 @@ const stateMigrations = [{
190
191
  label: "Voice Call call log",
191
192
  async detectLegacyState(params) {
192
193
  const { detectOpenClawStateDatabaseSchemaMigrations } = await import("openclaw/plugin-sdk/doctor-repair-runtime");
193
- const { entries } = await readLegacyCallRecords(resolveVoiceCallLegacyCallLogPath(resolveVoiceCallStorePath(params)));
194
+ const storePath = resolveVoiceCallStorePath(params);
195
+ const { entries } = await readLegacyCallRecords(resolveVoiceCallLegacyCallLogPath(storePath));
194
196
  const schemaMigrations = detectOpenClawStateDatabaseSchemaMigrations({ env: resolveVoiceCallStateDatabaseEnv(params) });
195
197
  if (entries.length === 0 && schemaMigrations.length === 0) return null;
196
198
  return { preview: [...schemaMigrations.map((migration) => `- Voice Call SQLite schema: ${describeVoiceCallSchemaMigration(migration)}`), ...entries.length > 0 ? [`- Voice Call call log: ${entries.length} ${entries.length === 1 ? "record" : "records"} -> plugin state (${CALL_RECORD_EVENTS_NAMESPACE})`] : []] };
@@ -199,7 +201,8 @@ const stateMigrations = [{
199
201
  const { detectOpenClawStateDatabaseSchemaMigrations, repairOpenClawStateDatabaseSchema } = await import("openclaw/plugin-sdk/doctor-repair-runtime");
200
202
  const changes = [];
201
203
  const warnings = [];
202
- const filePath = resolveVoiceCallLegacyCallLogPath(resolveVoiceCallStorePath(params));
204
+ const storePath = resolveVoiceCallStorePath(params);
205
+ const filePath = resolveVoiceCallLegacyCallLogPath(storePath);
203
206
  const { entries, warnings: readWarnings } = await readLegacyCallRecords(filePath);
204
207
  warnings.push(...readWarnings);
205
208
  const stateDatabaseEnv = resolveVoiceCallStateDatabaseEnv(params);
@@ -1,7 +1,7 @@
1
1
  import { fetchWithSsrFGuard } from "./runtime-api.js";
2
2
  import "./api.js";
3
- import { n as normalizeProxyIp, s as getHeader } from "./runtime-entry-ptAKgGER.js";
4
- import { n as reserveWebhookReplay, t as createWebhookReplayCache } from "./webhook-replay-FQrEGVSM.js";
3
+ import { n as normalizeProxyIp, s as getHeader } from "./runtime-entry-gE2Yd4V8.js";
4
+ import { n as reserveWebhookReplay, t as createWebhookReplayCache } from "./webhook-replay-CCQSoBNF.js";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  import { isLoopbackHost } from "openclaw/plugin-sdk/gateway-runtime";
7
7
  import { normalizeLowercaseStringOrEmpty, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -30,7 +30,8 @@ function createSkippedVerificationReplayKey(provider, ctx) {
30
30
  function validateTwilioSignature(authToken, signature, url, params) {
31
31
  if (!signature) return false;
32
32
  const dataToSign = buildTwilioDataToSign(url, params);
33
- return safeEqualSecret(signature, crypto.createHmac("sha1", authToken).update(dataToSign).digest("base64"));
33
+ const expectedSignature = crypto.createHmac("sha1", authToken).update(dataToSign).digest("base64");
34
+ return safeEqualSecret(signature, expectedSignature);
34
35
  }
35
36
  function buildTwilioDataToSign(url, params) {
36
37
  let dataToSign = url;
@@ -283,7 +284,7 @@ function verifyTelnyxWebhook(ctx, publicKey, options) {
283
284
  ok: false,
284
285
  reason: "Invalid signature"
285
286
  };
286
- const maxSkewMs = options?.maxSkewMs ?? 300 * 1e3;
287
+ const maxSkewMs = options?.maxSkewMs ?? 3e5;
287
288
  const eventTimeMs = eventTimeSec * 1e3;
288
289
  if (Math.abs(Date.now() - eventTimeMs) > maxSkewMs) return {
289
290
  ok: false,
@@ -388,7 +389,9 @@ function createPlivoV3ReplayKey(params) {
388
389
  }
389
390
  function validatePlivoV2Signature(params) {
390
391
  const baseUrl = getBaseUrlNoQuery(params.url);
391
- return safeEqualSecret(normalizeSignatureBase64(crypto.createHmac("sha256", params.authToken).update(baseUrl + params.nonce).digest("base64")), normalizeSignatureBase64(params.signature));
392
+ const expected = normalizeSignatureBase64(crypto.createHmac("sha256", params.authToken).update(baseUrl + params.nonce).digest("base64"));
393
+ const provided = normalizeSignatureBase64(params.signature);
394
+ return safeEqualSecret(expected, provided);
392
395
  }
393
396
  function toParamMapFromSearchParams(sp) {
394
397
  const map = {};
@@ -536,8 +539,8 @@ function verifyPlivoWebhook(ctx, authToken, options) {
536
539
  }
537
540
  //#endregion
538
541
  //#region extensions/voice-call/src/providers/shared/response-body.ts
539
- const PROVIDER_JSON_RESPONSE_MAX_BYTES = 1 * 1024 * 1024;
540
- const PROVIDER_ERROR_RESPONSE_MAX_BYTES = 8 * 1024;
542
+ const PROVIDER_JSON_RESPONSE_MAX_BYTES = 1048576;
543
+ const PROVIDER_ERROR_RESPONSE_MAX_BYTES = 8192;
541
544
  const TRUNCATED_SUFFIX = "... [truncated]";
542
545
  async function cancelProviderResponseBody(response) {
543
546
  await response.body?.cancel().catch(() => void 0);