@openclaw/voice-call 2026.10.10-beta.3 → 2026.10.10-beta.5

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.
@@ -8,8 +8,9 @@ import { isRecord, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/
8
8
  import { MAX_TCP_PORT, MAX_TIMER_TIMEOUT_MS, addTimerTimeoutGraceMs, clampTimerTimeoutMs, parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
11
- import { readFile } from "node:fs/promises";
11
+ import { realpath } from "node:fs/promises";
12
12
  import { createDeferred } from "openclaw/plugin-sdk/concurrency-runtime";
13
+ import { readRegularFile } from "openclaw/plugin-sdk/file-access-runtime";
13
14
  import { once } from "node:events";
14
15
  import { format } from "node:util";
15
16
  //#region extensions/voice-call/src/cli-command-io.ts
@@ -49,7 +50,8 @@ async function* readLogLines(file, last, pollMs) {
49
50
  for (;;) {
50
51
  let fd;
51
52
  try {
52
- fd = fs.openSync(file, "r");
53
+ const flags = process.platform === "win32" ? "r" : fs.constants.O_RDONLY | fs.constants.O_NONBLOCK;
54
+ fd = fs.openSync(file, flags);
53
55
  } catch (error) {
54
56
  if (initial || pollMs === void 0 || !isRecord(error) || error.code !== "ENOENT") throw error;
55
57
  await sleep(pollMs);
@@ -57,6 +59,7 @@ async function* readLogLines(file, last, pollMs) {
57
59
  }
58
60
  try {
59
61
  const stat = fs.fstatSync(fd);
62
+ if (!stat.isFile()) throw new Error("Voice-call log must be a regular file.");
60
63
  if (previous && (stat.ino !== previous.ino || stat.dev !== previous.dev || stat.size < previous.size)) offset = lineStart = 0;
61
64
  previous = stat;
62
65
  const selected = [];
@@ -307,7 +310,7 @@ async function initiateVoiceCall(params) {
307
310
  //#region extensions/voice-call/src/cli.ts
308
311
  async function readCliBrief(options) {
309
312
  if (options.brief && options.briefFile) throw new Error("Use either --brief or --brief-file");
310
- const raw = options.briefFile ? await readFile(resolveUserPath(options.briefFile), "utf8") : options.brief;
313
+ const raw = options.briefFile ? (await readRegularFile({ filePath: await realpath(resolveUserPath(options.briefFile)) })).buffer.toString("utf8") : options.brief;
311
314
  if (raw === void 0) return;
312
315
  if (raw.length > 16e3) throw new Error("Brief input is too large");
313
316
  const value = options.briefFile || raw.trimStart().startsWith("{") || raw.trimStart().startsWith("[") ? JSON.parse(raw) : { task: raw };
@@ -0,0 +1 @@
1
+ {"version":3,"entries":[{"output":"api.js","source":"extensions/voice-call/api.ts"},{"output":"cli-metadata.js","source":"extensions/voice-call/cli-metadata.ts"},{"output":"cli-output-mode.js","source":"extensions/voice-call/cli-output-mode.ts"},{"output":"doctor-contract-api.js","source":"extensions/voice-call/doctor-contract-api.ts"},{"output":"index.js","source":"extensions/voice-call/index.ts"},{"output":"runtime-entry.js","source":"extensions/voice-call/runtime-entry.ts"},{"output":"setup-api.js","source":"extensions/voice-call/setup-api.ts"},{"output":"state-retention-api.js","source":"extensions/voice-call/state-retention-api.ts"}],"chunks":[{"output":".setup/carrier-api-Bt9KxU9b.mjs","sha256":"6c84dc6070833fb11dd20312d224f18daff82a6b10f9fb5e8631e7c493500fa8","facadeSource":null,"sources":["extensions/voice-call/src/providers/shared/carrier-api.ts","extensions/voice-call/src/providers/shared/guarded-json-api.ts","extensions/voice-call/src/webhook-security.ts"]},{"output":".setup/cli-cSqX5Cvm.mjs","sha256":"918702a42b487e49c3ee8175142cb08c3fb9b7a32b42b728e1528d5ce3dde5d9","facadeSource":"extensions/voice-call/src/cli.ts","sources":["extensions/voice-call/src/cli-call-log.ts","extensions/voice-call/src/cli-command-io.ts","extensions/voice-call/src/cli-gateway-call.ts","extensions/voice-call/src/cli.ts"]},{"output":".setup/config-BdbTQCSh.mjs","sha256":"48d181e35279b605e55f519e876ee4480c1afe1701be9cb86cb600e3a7ad6d21","facadeSource":null,"sources":["extensions/voice-call/src/allowlist.ts","extensions/voice-call/src/call-brief-schema.ts","extensions/voice-call/src/config.ts","extensions/voice-call/src/errand-config.ts","extensions/voice-call/src/realtime-call-control.ts","extensions/voice-call/src/realtime-defaults.ts","extensions/voice-call/src/tailscale-config.ts"]},{"output":".setup/mock-rySvj-G6.mjs","sha256":"a69cfadef097c63dc74dced303602b725321d21e3e70f824660c98d5d483f626","facadeSource":"extensions/voice-call/src/providers/mock.ts","sources":["extensions/voice-call/src/providers/mock.ts"]},{"output":".setup/plivo-C3NbDLe-.mjs","sha256":"32da12fad3544adfcd1c613cd798e2ef3c8deee028c42172e052838dc887a34e","facadeSource":"extensions/voice-call/src/providers/plivo.ts","sources":["extensions/voice-call/src/providers/plivo.ts"]},{"output":".setup/realtime-handler-dG-YrnQ5.mjs","sha256":"89f0298867ef1ae1f80009f2cf4a3a5c15da8810fbe9e23a99910735280baf50","facadeSource":"extensions/voice-call/src/webhook/realtime-handler.ts","sources":["extensions/voice-call/src/webhook/realtime-audio-pacer.ts","extensions/voice-call/src/webhook/realtime-call-playback.ts","extensions/voice-call/src/webhook/realtime-call-session-control.ts","extensions/voice-call/src/webhook/realtime-handler.ts","extensions/voice-call/src/webhook/realtime-host-speech.ts","extensions/voice-call/src/webhook/realtime-transcript-text.ts","extensions/voice-call/src/webhook/stream-frame-adapter.ts"]},{"output":".setup/realtime-transcription.runtime-DIBopS1D.mjs","sha256":"bb90d344ce8109aef1b05a93e5b8e4633430112c282a351939d70267a29fa6fe","facadeSource":"extensions/voice-call/src/realtime-transcription.runtime.ts","sources":[]},{"output":".setup/realtime-voice.runtime-S9H9Y0Cp.mjs","sha256":"4cea62311759072afbc3c69890e815583aa2d083c980a4d00f9d79b7cd82578b","facadeSource":"extensions/voice-call/src/realtime-voice.runtime.ts","sources":[]},{"output":".setup/response-generator-DEU_bfHI.mjs","sha256":"9de8a3c10cfe5f9932fba08db1e0c6e32a56951a465151d37698e82c0f822cf2","facadeSource":"extensions/voice-call/src/response-generator.ts","sources":["extensions/voice-call/src/response-generator.ts"]},{"output":".setup/runtime-entry-BqhtjzE-.mjs","sha256":"5369f47d9686bf417fdd3cf44290b914a912d3cd8e9d1f1411f9abcb0d311557","facadeSource":null,"sources":["extensions/voice-call/src/bounded-child-output.ts","extensions/voice-call/src/call-brief.ts","extensions/voice-call/src/call-delivery-runtime.ts","extensions/voice-call/src/call-delivery.ts","extensions/voice-call/src/http-headers.ts","extensions/voice-call/src/manager.ts","extensions/voice-call/src/manager/callbacks.ts","extensions/voice-call/src/manager/events.ts","extensions/voice-call/src/manager/lifecycle.ts","extensions/voice-call/src/manager/lookup.ts","extensions/voice-call/src/manager/mutations.ts","extensions/voice-call/src/manager/outbound.ts","extensions/voice-call/src/manager/replay-keys.ts","extensions/voice-call/src/manager/state.ts","extensions/voice-call/src/manager/store.ts","extensions/voice-call/src/manager/timer-delays.ts","extensions/voice-call/src/manager/timers.ts","extensions/voice-call/src/manager/twiml.ts","extensions/voice-call/src/manager/voicemail.ts","extensions/voice-call/src/media-base64.ts","extensions/voice-call/src/media-stream.ts","extensions/voice-call/src/providers/shared/call-status.ts","extensions/voice-call/src/proxy-ip.ts","extensions/voice-call/src/realtime-agent-context.ts","extensions/voice-call/src/resolve-call-agent-id.ts","extensions/voice-call/src/response-model.ts","extensions/voice-call/src/runtime-state.ts","extensions/voice-call/src/runtime.ts","extensions/voice-call/src/telephony-tts.ts","extensions/voice-call/src/tts-provider-voice.ts","extensions/voice-call/src/tunnel.ts","extensions/voice-call/src/types.ts","extensions/voice-call/src/webhook-exposure.ts","extensions/voice-call/src/webhook.ts","extensions/voice-call/src/webhook/realtime-inbound-admission.ts","extensions/voice-call/src/webhook/stale-call-reaper.ts","extensions/voice-call/src/webhook/stream-disconnect-grace.ts","extensions/voice-call/src/webhook/tailscale.ts","extensions/voice-call/src/webhook/talk-event-metadata.ts"]},{"output":".setup/state-retention-api-ONgqE-_V.mjs","sha256":"726217311b78f34cd904531b95057ad8a1ebf9168a1b081dd57a46f755520657","facadeSource":null,"sources":["extensions/voice-call/state-retention-api.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":".setup/store-path-Cfwff6j7.mjs","sha256":"7caa0cc3a18c81da2670becc7036b4367bd0ee233d2cbe256b1aef46b3dbccc1","facadeSource":null,"sources":["extensions/voice-call/src/store-path.ts","extensions/voice-call/src/utils.ts"]},{"output":".setup/telnyx-BuC-Ttbj.mjs","sha256":"0d40bc862f8753794544010044d656c01e904cf10c40a7b197c7255d8127ca90","facadeSource":"extensions/voice-call/src/providers/telnyx.ts","sources":["extensions/voice-call/src/providers/telnyx.ts"]},{"output":".setup/twilio-BVBIIqx-.mjs","sha256":"3b381b9cc77d785de2a9deefdc67098215c18e6fea9e22e28c2cad09163444bf","facadeSource":"extensions/voice-call/src/providers/twilio.ts","sources":["extensions/voice-call/src/providers/twilio.ts","extensions/voice-call/src/providers/twilio/api.ts"]},{"output":".setup/twilio-region-wBOx-8sz.mjs","sha256":"7144fe307a33d42bc3c84b12dc5b3c292222a68689953c5515c907066fe53367","facadeSource":null,"sources":["extensions/voice-call/src/providers/twilio-region.ts"]},{"output":".setup/voice-mapping-1lzFmzOF.mjs","sha256":"2e33112b806e7f109372b800dc8b82c5149364dd1990e718917533509be76b7d","facadeSource":null,"sources":["extensions/voice-call/src/voice-mapping.ts"]},{"output":".setup/webhook-replay-B7RJNWNG.mjs","sha256":"5c8a1f383548e07b58c8d4f70260e5d3dd149c5eb89d0f0667055ec105d018a8","facadeSource":null,"sources":["extensions/voice-call/src/webhook-replay.ts"]},{"output":"api.js","sha256":"52defeb38678cdd3504b7035eb0ac836d4ed388afdcf64a08dde425d26900a23","facadeSource":"extensions/voice-call/api.ts","sources":[]},{"output":"cli-metadata.js","sha256":"762d010cb9d646440db95ce3fa1d3371bf7bf429bf09a4a407ea04e545c5fd1f","facadeSource":"extensions/voice-call/cli-metadata.ts","sources":["extensions/voice-call/cli-metadata.ts"]},{"output":"cli-output-mode.js","sha256":"254a7bacf0b58b7aa382cb4b4ac11c91972d30f08ce46795ba335701bc0afaf6","facadeSource":"extensions/voice-call/cli-output-mode.ts","sources":["extensions/voice-call/cli-output-mode.ts"]},{"output":"doctor-contract-api.js","sha256":"4ba1fc28bae746439c2a44e24a481c121e9137e9c8929fbe59157942233e6262","facadeSource":"extensions/voice-call/doctor-contract-api.ts","sources":["extensions/voice-call/doctor-contract-api.ts"]},{"output":"index.js","sha256":"38991d964cf1ac36d27e9cd1842b67e4f8f6489a28dbf73a642075bc93567dbb","facadeSource":"extensions/voice-call/index.ts","sources":["extensions/voice-call/index.ts","extensions/voice-call/src/command-service.ts","extensions/voice-call/src/gateway-continue-operation.ts","extensions/voice-call/src/tool-call-scope.ts","extensions/voice-call/src/tool-schema.ts"]},{"output":"runtime-entry.js","sha256":"6f6db9c186dfbdae5f281ea1f7d00e08d861e9b8fb5f402a3d951226e411bbf1","facadeSource":"extensions/voice-call/runtime-entry.ts","sources":[]},{"output":"setup-api.js","sha256":"e9d10aac041f3c9eab62122e96bd9d78046c9b8ab2bf74da99be1a4f5be63756","facadeSource":"extensions/voice-call/setup-api.ts","sources":["extensions/voice-call/setup-api.ts","extensions/voice-call/src/config-migration.ts"]},{"output":"state-retention-api.js","sha256":"caf7996aa290359f40ed91097fb175ac692759599ac38a07db1912b08c56981d","facadeSource":"extensions/voice-call/state-retention-api.ts","sources":[]}],"unrenderedSources":["extensions/voice-call/api.ts","extensions/voice-call/runtime-entry.ts","extensions/voice-call/src/realtime-transcription.runtime.ts","extensions/voice-call/src/realtime-voice.runtime.ts"]}
package/dist/index.js CHANGED
@@ -568,7 +568,7 @@ var voice_call_default = definePluginEntry({
568
568
  };
569
569
  });
570
570
  api.registerCli(async ({ program }) => {
571
- const { registerVoiceCallCli } = await import("./.setup/cli-RHaXpQxE.mjs");
571
+ const { registerVoiceCallCli } = await import("./.setup/cli-cSqX5Cvm.mjs");
572
572
  registerVoiceCallCli({
573
573
  program,
574
574
  config,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/voice-call",
3
- "version": "2026.10.10-beta.3",
3
+ "version": "2026.10.10-beta.5",
4
4
  "description": "OpenClaw voice-call plugin for Twilio, Telnyx, and Plivo phone calls.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,7 +12,7 @@
12
12
  "zod": "4.6.5"
13
13
  },
14
14
  "peerDependencies": {
15
- "openclaw": ">=2026.10.10-beta.3"
15
+ "openclaw": ">=2026.10.10-beta.5"
16
16
  },
17
17
  "peerDependenciesMeta": {
18
18
  "openclaw": {
@@ -31,10 +31,10 @@
31
31
  "minHostVersion": ">=2026.4.10"
32
32
  },
33
33
  "compat": {
34
- "pluginApi": ">=2026.10.10-beta.3"
34
+ "pluginApi": ">=2026.10.10-beta.5"
35
35
  },
36
36
  "build": {
37
- "openclawVersion": "2026.10.10-beta.3"
37
+ "openclawVersion": "2026.10.10-beta.5"
38
38
  },
39
39
  "release": {
40
40
  "publishToClawHub": true,