@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.
- package/dist/{accounts-CQT5u65w.js → accounts-CJEDkyd7.js} +1 -1
- package/dist/{accounts-DFrH9IVU.js → accounts-CaJg9v7D.js} +1 -1
- package/dist/{accounts-C8m4ADkw.js → accounts-DQo5uGA3.js} +14 -14
- package/dist/{active-listener-BKTctYlH.js → active-listener-Bhmh-BBe.js} +1 -1
- package/dist/{agent-scope-DSUeV7-g.js → agent-scope-DiO1KimT.js} +3 -3
- package/dist/{audio-preflight-CLqoZYgI.js → audio-preflight-PCEdzoV0.js} +29 -29
- package/dist/{bindings-BKEEBdsb.js → bindings-CEJk9Gww.js} +2 -2
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +53 -53
- package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
- package/dist/bundled/command-logger/handler.js +1 -1
- package/dist/bundled/session-memory/handler.js +53 -53
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-activity-BgsTqLau.js → channel-activity-pOw1s-fe.js} +1 -1
- package/dist/{chrome-Bqbv_ZSj.js → chrome-DcmLXeT1.js} +20 -20
- package/dist/{chunk-fZrBDWYg.js → chunk-BkGjWi6P.js} +1 -1
- package/dist/{command-format-BOHIfoCX.js → command-format-CM0AxuCk.js} +1 -1
- package/dist/{commands-registry-BzlB3qtZ.js → commands-registry-C0QzohKU.js} +4 -4
- package/dist/{config-Du_-inxH.js → config-7ClJ9IDt.js} +12 -12
- package/dist/{deliver-CKH_FhS0.js → deliver-RhV3c93M.js} +20 -20
- package/dist/{diagnostic-DriDPU6M.js → diagnostic-DTfVTKJM.js} +1 -1
- package/dist/{frontmatter-CdkBcBAo.js → frontmatter-Dab6NVCF.js} +2 -2
- package/dist/{gemini-auth-A2JaRMHH.js → gemini-auth-CnEqRhSo.js} +1 -1
- package/dist/{github-copilot-token-Dgb9dAHW.js → github-copilot-token-DAycnoAs.js} +7 -7
- package/dist/{image-CxPjVob-.js → image-COCyG_gz.js} +4 -4
- package/dist/{image-ops-BGmpOcey.js → image-ops-D-bh1BTN.js} +1 -1
- package/dist/{ir-DJPm0a4k.js → ir-j1Xb0PNv.js} +4 -4
- package/dist/llm-slug-generator.js +53 -53
- package/dist/{local-roots-JqlMsAYY.js → local-roots-Dx32AY60.js} +5 -5
- package/dist/{login-DXtAIVXy.js → login-CLQskGt7.js} +7 -7
- package/dist/{login-qr-D0A3WDBN.js → login-qr-CxZVehrh.js} +12 -12
- package/dist/{manager-D7SRrHxT.js → manager-C6KdjXEH.js} +13 -13
- package/dist/{manifest-registry-Dhk4A5vb.js → manifest-registry-D31TP66o.js} +19 -19
- package/dist/{markdown-tables-DpVJE0eA.js → markdown-tables-BOmw5zkp.js} +1 -1
- package/dist/{message-channel-CHYSjmbr.js → message-channel-BckS8bQ9.js} +1 -1
- package/dist/{model-auth-vtNH8C4P.js → model-auth-C-Vzzybi.js} +9 -9
- package/dist/{outbound-BWgFha97.js → outbound-Bk0PGZ1q.js} +7 -7
- package/dist/{outbound-attachment-B8WHzsCX.js → outbound-attachment-CHLSsIj_.js} +2 -2
- package/dist/{paths-CyR9Pa1R.js → paths-CkkDESQ2.js} +5 -5
- package/dist/{paths-BEAbheM8.js → paths-Cv2Q0cX2.js} +1 -1
- package/dist/{pi-auth-json-BiwfFswL.js → pi-auth-json-DzcwV2uo.js} +8 -8
- package/dist/{pi-embedded-Dz24QZz9.js → pi-embedded-13CLN75T.js} +162 -162
- package/dist/{pi-embedded-helpers-CSE0v99A.js → pi-embedded-helpers-HpusHn6J.js} +52 -52
- package/dist/{plugins-DIrNa311.js → plugins-Bf_qBfZ7.js} +9 -9
- package/dist/{pw-ai-D-_aGzdQ.js → pw-ai-B4NkhpRH.js} +11 -11
- package/dist/{qmd-manager-DePh-PT0.js → qmd-manager-DVrv2Huu.js} +7 -7
- package/dist/{registry-DpeZG5fo.js → registry-wimgwqAA.js} +18 -18
- package/dist/{replies-CSVWkVda.js → replies-DuQ9MtQM.js} +3 -3
- package/dist/{reply-prefix-DZrS3Kf7.js → reply-prefix-B_1VtLm5.js} +1 -1
- package/dist/{resolve-route-1ar2IrQt.js → resolve-route-CSE9DZsB.js} +4 -4
- package/dist/{retry-Bdu4_ZcT.js → retry-DwLEH9x4.js} +1 -1
- package/dist/{runner-D1eXJZ8T.js → runner-BjLlUYe1.js} +9 -9
- package/dist/{send-DPVf5tQ4.js → send-BCt1G0xY.js} +6 -6
- package/dist/{send-BeWYOs1x.js → send-CEP4RX_l.js} +7 -7
- package/dist/{send-Byt_wJDK.js → send-CMeyW_Bu.js} +6 -6
- package/dist/{send-CWtaJF1G.js → send-CdIaqNP6.js} +18 -18
- package/dist/{send-BEFzSOoD.js → send-DrfA4RxA.js} +10 -10
- package/dist/{session-Bnp7PC7f.js → session-CQ9JJgSo.js} +8 -8
- package/dist/{skill-commands-CqyVDpti.js → skill-commands-CwFNOYqC.js} +9 -9
- package/dist/{skills-DSZuhFx9.js → skills-C8xf0p1B.js} +21 -21
- package/dist/{sqlite-C3XxSzBN.js → sqlite-B6SD9PTM.js} +4 -4
- package/dist/{store-BrNiRjgB.js → store-VFVAfYgh.js} +2 -2
- package/dist/{subsystem-BF9jT_Nw.js → subsystem-BEdh_1O5.js} +1 -1
- package/dist/{tables-C3clT_iA.js → tables-QNO5uMcm.js} +1 -1
- package/dist/{target-errors-ChHV8dPI.js → target-errors-DD2466Y6.js} +2 -2
- package/dist/{thinking-Dg8vKjw_.js → thinking-BZFf1juV.js} +5 -5
- package/dist/{tokens-B-c56SkM.js → tokens-GCiqN5mi.js} +1 -1
- package/dist/{tool-images-C1rdDr34.js → tool-images-D0sBSASn.js} +2 -2
- package/dist/{tool-loop-detection-Bu3OGskw.js → tool-loop-detection-BPAeTbUj.js} +3 -3
- package/dist/{web-Y49Dumye.js → web-5rulK8WV.js} +57 -57
- package/dist/{whatsapp-actions-DFZYzkBp.js → whatsapp-actions-kX73ghOz.js} +23 -23
- package/dist/{workspace-DYx5Dxtw.js → workspace-CH9k4Qgz.js} +6 -6
- package/extensions/voice-call/src/providers/realtime-session.ts +31 -3
- package/extensions/voice-call/src/webhook.ts +12 -3
- package/package.json +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { u as resolveRequiredHomeDir } from "./paths-
|
|
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-
|
|
4
|
-
import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-
|
|
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
|
|
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 =
|
|
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 =
|
|
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]
|
|
188
|
+
console.error(`[voice-call] [realtime] Error for ${callId}:`, error);
|
|
189
189
|
});
|
|
190
190
|
|
|
191
|
-
session.on("
|
|
192
|
-
console.log(`[voice-call] [realtime] Agent
|
|
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
|
-
*
|
|
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