@lawpath-tech/openclaw 2026.2.21-25 → 2026.2.21-27

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 (75) hide show
  1. package/dist/{accounts-CQT5u65w.js → accounts-CJEDkyd7.js} +1 -1
  2. package/dist/{accounts-DFrH9IVU.js → accounts-CaJg9v7D.js} +1 -1
  3. package/dist/{accounts-C8m4ADkw.js → accounts-DQo5uGA3.js} +14 -14
  4. package/dist/{active-listener-BKTctYlH.js → active-listener-Bhmh-BBe.js} +1 -1
  5. package/dist/{agent-scope-DSUeV7-g.js → agent-scope-DiO1KimT.js} +3 -3
  6. package/dist/{audio-preflight-CLqoZYgI.js → audio-preflight-PCEdzoV0.js} +29 -29
  7. package/dist/{bindings-BKEEBdsb.js → bindings-CEJk9Gww.js} +2 -2
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +53 -53
  10. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  11. package/dist/bundled/command-logger/handler.js +1 -1
  12. package/dist/bundled/session-memory/handler.js +53 -53
  13. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  14. package/dist/{channel-activity-BgsTqLau.js → channel-activity-pOw1s-fe.js} +1 -1
  15. package/dist/{chrome-Bqbv_ZSj.js → chrome-DcmLXeT1.js} +20 -20
  16. package/dist/{chunk-fZrBDWYg.js → chunk-BkGjWi6P.js} +1 -1
  17. package/dist/{command-format-BOHIfoCX.js → command-format-CM0AxuCk.js} +1 -1
  18. package/dist/{commands-registry-BzlB3qtZ.js → commands-registry-C0QzohKU.js} +4 -4
  19. package/dist/{config-Du_-inxH.js → config-7ClJ9IDt.js} +12 -12
  20. package/dist/{deliver-CKH_FhS0.js → deliver-RhV3c93M.js} +20 -20
  21. package/dist/{diagnostic-DriDPU6M.js → diagnostic-DTfVTKJM.js} +1 -1
  22. package/dist/{frontmatter-CdkBcBAo.js → frontmatter-Dab6NVCF.js} +2 -2
  23. package/dist/{gemini-auth-A2JaRMHH.js → gemini-auth-CnEqRhSo.js} +1 -1
  24. package/dist/{github-copilot-token-Dgb9dAHW.js → github-copilot-token-DAycnoAs.js} +7 -7
  25. package/dist/{image-CxPjVob-.js → image-COCyG_gz.js} +4 -4
  26. package/dist/{image-ops-BGmpOcey.js → image-ops-D-bh1BTN.js} +1 -1
  27. package/dist/{ir-DJPm0a4k.js → ir-j1Xb0PNv.js} +4 -4
  28. package/dist/llm-slug-generator.js +53 -53
  29. package/dist/{local-roots-JqlMsAYY.js → local-roots-Dx32AY60.js} +5 -5
  30. package/dist/{login-DXtAIVXy.js → login-CLQskGt7.js} +7 -7
  31. package/dist/{login-qr-D0A3WDBN.js → login-qr-CxZVehrh.js} +12 -12
  32. package/dist/{manager-D7SRrHxT.js → manager-C6KdjXEH.js} +13 -13
  33. package/dist/{manifest-registry-Dhk4A5vb.js → manifest-registry-D31TP66o.js} +19 -19
  34. package/dist/{markdown-tables-DpVJE0eA.js → markdown-tables-BOmw5zkp.js} +1 -1
  35. package/dist/{message-channel-CHYSjmbr.js → message-channel-BckS8bQ9.js} +1 -1
  36. package/dist/{model-auth-vtNH8C4P.js → model-auth-C-Vzzybi.js} +9 -9
  37. package/dist/{outbound-BWgFha97.js → outbound-Bk0PGZ1q.js} +7 -7
  38. package/dist/{outbound-attachment-B8WHzsCX.js → outbound-attachment-CHLSsIj_.js} +2 -2
  39. package/dist/{paths-CyR9Pa1R.js → paths-CkkDESQ2.js} +5 -5
  40. package/dist/{paths-BEAbheM8.js → paths-Cv2Q0cX2.js} +1 -1
  41. package/dist/{pi-auth-json-BiwfFswL.js → pi-auth-json-DzcwV2uo.js} +8 -8
  42. package/dist/{pi-embedded-Dz24QZz9.js → pi-embedded-13CLN75T.js} +162 -162
  43. package/dist/{pi-embedded-helpers-CSE0v99A.js → pi-embedded-helpers-HpusHn6J.js} +52 -52
  44. package/dist/{plugins-DIrNa311.js → plugins-Bf_qBfZ7.js} +9 -9
  45. package/dist/{pw-ai-D-_aGzdQ.js → pw-ai-B4NkhpRH.js} +11 -11
  46. package/dist/{qmd-manager-DePh-PT0.js → qmd-manager-DVrv2Huu.js} +7 -7
  47. package/dist/{registry-DpeZG5fo.js → registry-wimgwqAA.js} +18 -18
  48. package/dist/{replies-CSVWkVda.js → replies-DuQ9MtQM.js} +3 -3
  49. package/dist/{reply-prefix-DZrS3Kf7.js → reply-prefix-B_1VtLm5.js} +1 -1
  50. package/dist/{resolve-route-1ar2IrQt.js → resolve-route-CSE9DZsB.js} +4 -4
  51. package/dist/{retry-Bdu4_ZcT.js → retry-DwLEH9x4.js} +1 -1
  52. package/dist/{runner-D1eXJZ8T.js → runner-BjLlUYe1.js} +9 -9
  53. package/dist/{send-DPVf5tQ4.js → send-BCt1G0xY.js} +6 -6
  54. package/dist/{send-BeWYOs1x.js → send-CEP4RX_l.js} +7 -7
  55. package/dist/{send-Byt_wJDK.js → send-CMeyW_Bu.js} +6 -6
  56. package/dist/{send-CWtaJF1G.js → send-CdIaqNP6.js} +18 -18
  57. package/dist/{send-BEFzSOoD.js → send-DrfA4RxA.js} +10 -10
  58. package/dist/{session-Bnp7PC7f.js → session-CQ9JJgSo.js} +8 -8
  59. package/dist/{skill-commands-CqyVDpti.js → skill-commands-CwFNOYqC.js} +9 -9
  60. package/dist/{skills-DSZuhFx9.js → skills-C8xf0p1B.js} +21 -21
  61. package/dist/{sqlite-C3XxSzBN.js → sqlite-B6SD9PTM.js} +4 -4
  62. package/dist/{store-BrNiRjgB.js → store-VFVAfYgh.js} +2 -2
  63. package/dist/{subsystem-BF9jT_Nw.js → subsystem-BEdh_1O5.js} +1 -1
  64. package/dist/{tables-C3clT_iA.js → tables-QNO5uMcm.js} +1 -1
  65. package/dist/{target-errors-ChHV8dPI.js → target-errors-DD2466Y6.js} +2 -2
  66. package/dist/{thinking-Dg8vKjw_.js → thinking-BZFf1juV.js} +5 -5
  67. package/dist/{tokens-B-c56SkM.js → tokens-GCiqN5mi.js} +1 -1
  68. package/dist/{tool-images-C1rdDr34.js → tool-images-D0sBSASn.js} +2 -2
  69. package/dist/{tool-loop-detection-Bu3OGskw.js → tool-loop-detection-BPAeTbUj.js} +3 -3
  70. package/dist/{web-Y49Dumye.js → web-5rulK8WV.js} +57 -57
  71. package/dist/{whatsapp-actions-DFZYzkBp.js → whatsapp-actions-kX73ghOz.js} +23 -23
  72. package/dist/{workspace-DYx5Dxtw.js → workspace-CH9k4Qgz.js} +6 -6
  73. package/extensions/voice-call/src/providers/realtime-session.ts +31 -3
  74. package/extensions/voice-call/src/webhook.ts +12 -3
  75. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
- import { u as resolveRequiredHomeDir } from "./paths-CyR9Pa1R.js";
1
+ import { u as resolveRequiredHomeDir } from "./paths-CkkDESQ2.js";
2
2
  import { _ as isCronSessionKey, v as isSubagentSessionKey } from "./session-key-BCzIW1Y2.js";
3
- import { $ as warn, G as danger, I as resolveUserPath, K as info, N as pathExists, Y as logVerboseConsole, Z as shouldLogVerbose, it as getLogger } from "./registry-DpeZG5fo.js";
4
- import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
3
+ import { $ as warn, G as danger, I as resolveUserPath, K as info, N as pathExists, Y as logVerboseConsole, Z as shouldLogVerbose, it as getLogger } from "./registry-wimgwqAA.js";
4
+ import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BEdh_1O5.js";
5
5
  import fs from "node:fs/promises";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
- import fs$1 from "node:fs";
8
+ import fsSync from "node:fs";
9
9
  import { execFile, spawn } from "node:child_process";
10
10
  import { promisify } from "node:util";
11
11
  import { fileURLToPath } from "node:url";
@@ -289,7 +289,7 @@ async function readPackageName(dir) {
289
289
  }
290
290
  function readPackageNameSync(dir) {
291
291
  try {
292
- const raw = fs$1.readFileSync(path.join(dir, "package.json"), "utf-8");
292
+ const raw = fsSync.readFileSync(path.join(dir, "package.json"), "utf-8");
293
293
  const parsed = JSON.parse(raw);
294
294
  return typeof parsed.name === "string" ? parsed.name : null;
295
295
  } catch {
@@ -323,7 +323,7 @@ function candidateDirsFromArgv1(argv1) {
323
323
  const normalized = path.resolve(argv1);
324
324
  const candidates = [path.dirname(normalized)];
325
325
  try {
326
- const resolved = fs$1.realpathSync(normalized);
326
+ const resolved = fsSync.realpathSync(normalized);
327
327
  if (resolved !== normalized) candidates.push(path.dirname(resolved));
328
328
  } catch {}
329
329
  const parts = normalized.split(path.sep);
@@ -185,11 +185,39 @@ VOICE RULES (critical):
185
185
  });
186
186
 
187
187
  session.on("error", (error: unknown) => {
188
- console.error(`[voice-call] [realtime] Session error for call ${callId}:`, error);
188
+ console.error(`[voice-call] [realtime] Error for ${callId}:`, error);
189
189
  });
190
190
 
191
- session.on("agent_updated" as any, (newAgent: unknown) => {
192
- console.log(`[voice-call] [realtime] Agent updated for call ${callId}:`, newAgent);
191
+ session.on("agent_start", (_ctx: unknown, agent: unknown) => {
192
+ console.log(`[voice-call] [realtime] Agent started for ${callId}`);
193
+ });
194
+
195
+ session.on("agent_end", (_ctx: unknown, _agent: unknown, output: string) => {
196
+ console.log(`[voice-call] [realtime] Agent response for ${callId}: "${output.slice(0, 200)}"`);
197
+ });
198
+
199
+ session.on("agent_tool_start", (_ctx: unknown, _agent: unknown, tool: any, details: any) => {
200
+ const name = tool?.name || "unknown";
201
+ const args = JSON.stringify(details?.toolCall?.arguments ?? {}).slice(0, 200);
202
+ console.log(`[voice-call] [realtime] Tool call START for ${callId}: ${name}(${args})`);
203
+ });
204
+
205
+ session.on("agent_tool_end", (_ctx: unknown, _agent: unknown, tool: any, result: string) => {
206
+ const name = tool?.name || "unknown";
207
+ console.log(
208
+ `[voice-call] [realtime] Tool call END for ${callId}: ${name} → ${result.slice(0, 300)}`,
209
+ );
210
+ });
211
+
212
+ session.on("audio_interrupted", () => {
213
+ console.log(`[voice-call] [realtime] Audio interrupted (barge-in) for ${callId}`);
214
+ });
215
+
216
+ session.on("history_added", (item: any) => {
217
+ if (item?.type === "message" && item?.role === "user") {
218
+ const text = item?.content?.[0]?.transcript || item?.content?.[0]?.text || "";
219
+ if (text) console.log(`[voice-call] [realtime] User said for ${callId}: "${text}"`);
220
+ }
193
221
  });
194
222
 
195
223
  const apiKey = voiceConfig.streaming?.openaiApiKey || process.env.OPENAI_API_KEY;
@@ -72,10 +72,13 @@ export class VoiceCallWebhookServer {
72
72
  return this.mediaStreamHandler;
73
73
  }
74
74
 
75
+ /** Pre-cached realtime session module (avoids dynamic import delay that drops Twilio messages) */
76
+ private realtimeModulePromise: Promise<typeof import("./providers/realtime-session.js")> | null =
77
+ null;
78
+
75
79
  /**
76
80
  * Initialize realtime streaming mode.
77
- * In this mode, each Twilio WebSocket connection is bridged directly to the
78
- * OpenAI Realtime API via TwilioRealtimeTransportLayer for speech-to-speech.
81
+ * Pre-imports the realtime-session module so it's cached before the first call.
79
82
  */
80
83
  private initializeRealtimeStreaming(): void {
81
84
  const apiKey = this.config.streaming?.openaiApiKey || process.env.OPENAI_API_KEY;
@@ -83,6 +86,10 @@ export class VoiceCallWebhookServer {
83
86
  console.warn("[voice-call] Realtime mode enabled but no OpenAI API key found");
84
87
  return;
85
88
  }
89
+ this.realtimeModulePromise = import("./providers/realtime-session.js");
90
+ this.realtimeModulePromise
91
+ .then(() => console.log("[voice-call] Realtime module pre-loaded"))
92
+ .catch((err) => console.error("[voice-call] Realtime module pre-load failed:", err));
86
93
  console.log("[voice-call] Realtime speech-to-speech mode initialized");
87
94
  }
88
95
 
@@ -117,7 +124,9 @@ export class VoiceCallWebhookServer {
117
124
  const sessionKey = `realtime-${Date.now()}`;
118
125
  let callSid: string | null = null;
119
126
 
120
- import("./providers/realtime-session.js")
127
+ const modulePromise = this.realtimeModulePromise || import("./providers/realtime-session.js");
128
+
129
+ modulePromise
121
130
  .then(({ createRealtimeCallSession }) => {
122
131
  const realtimeSession = createRealtimeCallSession({
123
132
  twilioWebSocket: ws,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lawpath-tech/openclaw",
3
- "version": "2026.2.21-25",
3
+ "version": "2026.2.21-27",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/openclaw/openclaw#readme",