@openclaw/voice-call 2026.8.1-beta.2 → 2026.8.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.
Files changed (141) hide show
  1. package/README.md +4 -3
  2. package/dist/doctor-contract-api.js +10 -5
  3. package/dist/{guarded-json-api-DEDwgf4J.js → guarded-json-api-CQXCe4aR.js} +1 -1
  4. package/dist/index.js +390 -338
  5. package/dist/{mock-BCq0q36l.js → mock-Dv7KxYGt.js} +3 -1
  6. package/dist/{plivo-DbI17uAc.js → plivo-Ct5BT5LQ.js} +2 -2
  7. package/dist/{realtime-handler-uXR0QgVa.js → realtime-handler-CSK1A1Gg.js} +270 -144
  8. package/dist/{response-generator-D-hkzo5Y.js → response-generator-xbT37lYx.js} +59 -12
  9. package/dist/{runtime-entry-F13eJ4pp.js → runtime-entry-q02qkX8F.js} +435 -231
  10. package/dist/runtime-entry.js +1 -1
  11. package/dist/{store-path-51_oC_xn.js → store-path-Cf6k3F2U.js} +3 -10
  12. package/dist/{telnyx-sIS_WgnY.js → telnyx-C9Yizvox.js} +12 -8
  13. package/dist/{twilio-CbeVrVAl.js → twilio-BLjVv246.js} +40 -27
  14. package/node_modules/typebox/build/format/date.d.mts +1 -1
  15. package/node_modules/typebox/build/format/date.mjs +1 -1
  16. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  17. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  18. package/node_modules/typebox/build/format/email.d.mts +1 -1
  19. package/node_modules/typebox/build/format/email.mjs +2 -2
  20. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  21. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  22. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  23. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  24. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  25. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  26. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  27. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  28. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  29. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  30. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  31. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  32. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
  33. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  34. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  35. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  36. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  37. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  38. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  39. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  40. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  41. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  42. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  43. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  44. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  45. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  46. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  47. package/node_modules/typebox/build/format/iri.mjs +26 -8
  48. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  49. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  50. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  51. package/node_modules/typebox/build/format/regex.mjs +2 -6
  52. package/node_modules/typebox/build/format/time.d.mts +2 -2
  53. package/node_modules/typebox/build/format/time.mjs +19 -14
  54. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  55. package/node_modules/typebox/build/format/uri.mjs +3 -130
  56. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  57. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  58. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  59. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  60. package/node_modules/typebox/build/format/url.d.mts +3 -3
  61. package/node_modules/typebox/build/format/url.mjs +4 -5
  62. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  63. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  64. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  65. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  66. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  67. package/node_modules/typebox/build/guard/string.mjs +7 -7
  68. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  69. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  70. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  71. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  72. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  73. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  74. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  75. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  76. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  77. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  78. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  79. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  80. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  81. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  82. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  83. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  84. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  85. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  86. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  87. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  88. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  89. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  90. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  91. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  92. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  93. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  94. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  95. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  96. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  97. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  98. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  99. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  100. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  101. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  102. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  103. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  104. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  105. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  106. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  107. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  108. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  109. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  110. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  111. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  112. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  113. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  114. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  115. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  116. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  117. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  118. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  119. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  120. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  121. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  122. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  123. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  124. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  125. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  126. package/node_modules/typebox/package.json +27 -27
  127. package/node_modules/typebox/readme.md +79 -82
  128. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  129. package/node_modules/ws/package.json +1 -1
  130. package/openclaw.plugin.json +20 -2
  131. package/package.json +6 -6
  132. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  133. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  134. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  135. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  136. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  137. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  138. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  139. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  140. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  141. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
package/README.md CHANGED
@@ -38,7 +38,7 @@ Put under `plugins.entries.voice-call.config`:
38
38
  provider: "twilio", // or "telnyx" | "plivo" | "mock"
39
39
  fromNumber: "+15550001234",
40
40
  toNumber: "+15550005678",
41
- sessionScope: "per-phone", // or "per-call"
41
+ sessionScope: "per-phone", // or "per-call" | "main"
42
42
 
43
43
  twilio: {
44
44
  accountSid: "ACxxxxxxxx",
@@ -67,7 +67,7 @@ Put under `plugins.entries.voice-call.config`:
67
67
  // Public exposure (pick one):
68
68
  // publicUrl: "https://example.ngrok.app/voice/webhook",
69
69
  // tunnel: { provider: "ngrok" },
70
- // tailscale: { mode: "funnel", path: "/voice/webhook" }
70
+ // tailscale: { mode: "funnel", port: 8443, path: "/voice/webhook" }
71
71
 
72
72
  outbound: {
73
73
  defaultMode: "notify", // or "conversation"
@@ -98,13 +98,14 @@ Put under `plugins.entries.voice-call.config`:
98
98
  Notes:
99
99
 
100
100
  - Twilio/Telnyx/Plivo require a **publicly reachable** webhook URL.
101
+ - `tailscale.port` defaults to `443` and owns the external HTTPS port for both legacy `tailscale.mode` and unified Tailscale tunnel providers. Funnel supports `443`, `8443`, or `10000`; Serve accepts any valid TCP port.
101
102
  - Twilio defaults to US1. For a non-US Region, set `twilio.region` to `ie1` or `au1` and use credentials created in that Region; see [Twilio's regional REST API guide](https://www.twilio.com/docs/global-infrastructure/using-the-twilio-rest-api-in-a-non-us-region).
102
103
  - `mock` is a local dev provider (no network calls).
103
104
  - Telnyx requires `telnyx.publicKey` (or `TELNYX_PUBLIC_KEY`) unless `skipSignatureVerification` is true.
104
105
  - Runtime accepts canonical config only. If older configs still use `provider: "log"`, `twilio.from`, or legacy `streaming.*` OpenAI keys, run `openclaw doctor --fix` to rewrite them.
105
106
  - advanced webhook, streaming, and tunnel notes: `https://docs.openclaw.ai/plugins/voice-call`
106
107
  - `responseModel` is optional. When unset, voice responses use the runtime default model.
107
- - `sessionScope` defaults to `per-phone`, preserving caller memory across calls. Use `per-call` for reception, booking, IVR, and bridge flows where each carrier call should start fresh.
108
+ - `sessionScope` defaults to `per-phone`, preserving caller memory across calls. Use `per-call` for reception, booking, IVR, and bridge flows where each carrier call should start fresh. Use `main` to share the configured agent's main session, honoring core `session.mainKey` and global scope.
108
109
  - `realtime.consultThinkingLevel` is optional. When set, it overrides the thinking level used by the model behind realtime `openclaw_agent_consult` calls.
109
110
  - `realtime.consultFastMode` is optional. When set, it toggles fast mode for realtime `openclaw_agent_consult` calls.
110
111
 
@@ -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-Cf6k3F2U.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";
@@ -14,7 +14,7 @@ function resolveHome(env) {
14
14
  function resolveUserPath(input, env) {
15
15
  const trimmed = input.trim();
16
16
  if (!trimmed) return trimmed;
17
- if (trimmed.startsWith("~")) return path.resolve(trimmed.replace(/^~(?=$|[\\/])/, resolveHome(env)));
17
+ if (trimmed.startsWith("~")) return path.resolve(trimmed.replace(/^~(?=$|[\\/])/, () => resolveHome(env)));
18
18
  return path.resolve(trimmed);
19
19
  }
20
20
  /** Read the configured voice-call store path from either package id. */
@@ -59,8 +59,15 @@ function resolveVoiceCallStateDatabaseEnv(params) {
59
59
  function describeVoiceCallSchemaMigration(migration) {
60
60
  switch (migration.kind) {
61
61
  case "agent-databases-composite-primary-key": return "agent database registry primary key -> agent_id,path";
62
+ case "agent-databases-relative-paths-v9": return "agent database registry paths -> state-relative paths";
62
63
  case "audit-events-v2": return "audit event ledger -> versioned message lifecycle schema";
63
- 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
+ case "state-table-retirement-v10": return "retired shared-state tables -> removed tables and indexes";
66
+ case "state-table-retirement-v11": return "retired skill curator tables -> removed tables and indexes";
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";
64
71
  case "worker-placement-execution-mode-v8": return "cloud worker placements -> execution-mode claims";
65
72
  case "operator-approvals-system-agent": return "operator approvals -> OpenClaw system changes";
66
73
  case "session-watch-cursor-provenance-v4": return "session watch cursors -> provenance column";
@@ -68,7 +75,6 @@ function describeVoiceCallSchemaMigration(migration) {
68
75
  }
69
76
  return migration.kind;
70
77
  }
71
- /** Return true when a path exists and is a file. */
72
78
  /** Build the plugin state key for one migrated event chunk. */
73
79
  function buildChunkKey(eventKey, index) {
74
80
  return `${eventKey}:chunk:${String(index).padStart(4, "0")}`;
@@ -138,7 +144,6 @@ async function readLegacyCallRecords(filePath) {
138
144
  warnings
139
145
  };
140
146
  }
141
- /** Archive the legacy JSONL source after a complete migration. */
142
147
  /** Select newest missing records that fit remaining plugin state capacity. */
143
148
  async function selectEntriesForImport(params) {
144
149
  const existingEventKeys = new Set((await params.eventStore.entries()).map((entry) => entry.key));
@@ -1,6 +1,6 @@
1
1
  import { fetchWithSsrFGuard } from "./runtime-api.js";
2
2
  import "./api.js";
3
- import { n as normalizeProxyIp, s as getHeader } from "./runtime-entry-F13eJ4pp.js";
3
+ import { n as normalizeProxyIp, s as getHeader } from "./runtime-entry-q02qkX8F.js";
4
4
  import { n as reserveWebhookReplay, t as createWebhookReplayCache } from "./webhook-replay-FQrEGVSM.js";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  import { isLoopbackHost } from "openclaw/plugin-sdk/gateway-runtime";