@lawpath-tech/openclaw 2026.2.21-19 → 2026.2.21-20
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/{agents-C9ij96eI.js → agents-C83RLKX2.js} +4 -4
- package/dist/{agents.config-PFAfbBID.js → agents.config-BVjazvnK.js} +1 -1
- package/dist/{agents.config-CBvMKGLh.js → agents.config-dnXbFv5H.js} +1 -1
- package/dist/{audio-preflight-omzaYFGD.js → audio-preflight-CLqoZYgI.js} +4 -4
- package/dist/{audio-preflight-CODznzqu.js → audio-preflight-Da7vejCH.js} +4 -4
- package/dist/{auth-choice-DH2T1E9c.js → auth-choice-BJNaxS-L.js} +1 -1
- package/dist/{auth-choice-CLiY8PdF.js → auth-choice-Hb6530su.js} +1 -1
- package/dist/{banner-CqQBBjKH.js → banner-dFAx4eE_.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-e7Z9Smf2.js → channel-options--M8F-DHl.js} +1 -1
- package/dist/{channel-options-CLS27y1A.js → channel-options-D0Qjq83D.js} +1 -1
- package/dist/{channel-web-DHMbpU2p.js → channel-web-D8hSmcPF.js} +1 -1
- package/dist/{channels-cli-BDHLWbaU.js → channels-cli-6uwOEBM-.js} +4 -4
- package/dist/{channels-cli-CDwQerVi.js → channels-cli-BtZHPcBX.js} +4 -4
- package/dist/{chrome-BAv9fEiv.js → chrome-Bqbv_ZSj.js} +7 -7
- package/dist/{chrome-lRUqqgSD.js → chrome-CZuniMYN.js} +7 -7
- package/dist/{cli-BGJFLB0I.js → cli-CIImVBCM.js} +1 -1
- package/dist/{cli-C1nypCKP.js → cli-CijjdR37.js} +1 -1
- package/dist/{command-registry-pGuORBuB.js → command-registry-BtDC5Ll-.js} +9 -9
- package/dist/{completion-cli-Bf-Ojq_a.js → completion-cli-Bw5nZmTm.js} +2 -2
- package/dist/{completion-cli-C79-bpAx.js → completion-cli-CI6LWHg3.js} +1 -1
- package/dist/{config-cli-DLdH6zIF.js → config-cli-CgjgjWri.js} +1 -1
- package/dist/{config-cli-BcNHb4_E.js → config-cli-Dc0TQ1yE.js} +1 -1
- package/dist/{configure-BSt9S0yk.js → configure-CGqsSqXB.js} +3 -3
- package/dist/{configure-h1d7nrgR.js → configure-GUYUjx8A.js} +3 -3
- package/dist/{deliver-B2d2N8OJ.js → deliver-0ThKlzQo.js} +1 -1
- package/dist/{deliver-CLJRPnfx.js → deliver-CKH_FhS0.js} +1 -1
- package/dist/{doctor-completion-BB1f594d.js → doctor-completion-DgPc1rDZ.js} +1 -1
- package/dist/{doctor-completion-deY10x7w.js → doctor-completion-DipoVPSi.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +6 -6
- package/dist/{gateway-cli-IziQis2t.js → gateway-cli-Ds3oN72Y.js} +8 -8
- package/dist/{gateway-cli-B-XwzYp2.js → gateway-cli-DuMINk2B.js} +8 -8
- package/dist/{health-DMrTgW8V.js → health-DQjqH1zU.js} +1 -1
- package/dist/{health-UmuJyu1Q.js → health-Dg0bAIKS.js} +1 -1
- package/dist/{hooks-cli-BparoMpt.js → hooks-cli-CEtCwdza.js} +2 -2
- package/dist/{hooks-cli-B6WCYLyG.js → hooks-cli-Cac2Ru8r.js} +2 -2
- package/dist/{image--DDZnw-F.js → image-88q3KE-C.js} +1 -1
- package/dist/{image-Ci28h-op.js → image-CxPjVob-.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{models-nhERae29.js → models-DnhANpnd.js} +2 -2
- package/dist/{models-cli-bfKNgoHD.js → models-cli-03noBf8W.js} +3 -3
- package/dist/{models-cli-BnbeEOCU.js → models-cli-CaP_rt4y.js} +2 -2
- package/dist/{onboard-D_VxXTXD.js → onboard-BMc-yUv5.js} +2 -2
- package/dist/{onboard-C3pJ0NU-.js → onboard-BZg2c27h.js} +2 -2
- package/dist/{onboard-channels-CyeyvIfw.js → onboard-channels-Lt2gG1e2.js} +1 -1
- package/dist/{onboard-channels-YvwszRaQ.js → onboard-channels-O6KvizE3.js} +1 -1
- package/dist/{onboarding-0zwx3Yv7.js → onboarding-CTgBlanm.js} +3 -3
- package/dist/{onboarding-D0_Q5m2W.js → onboarding-G28sv5Ms.js} +3 -3
- package/dist/{onboarding.finalize-CYb0_Q0z.js → onboarding.finalize-Cpt9Ymcn.js} +5 -5
- package/dist/{onboarding.finalize-CVeI23_g.js → onboarding.finalize-D2sylHDB.js} +6 -6
- package/dist/{pi-embedded-D7qD6fo-.js → pi-embedded-Dz24QZz9.js} +96 -17
- package/dist/{pi-embedded-CwQsXrVT.js → pi-embedded-ZvazjIyF.js} +96 -17
- package/dist/{pi-embedded-helpers-Cd0S0WfR.js → pi-embedded-helpers-B0Kht0I2.js} +4 -4
- package/dist/{pi-embedded-helpers-Ll4Lztu1.js → pi-embedded-helpers-CSE0v99A.js} +4 -4
- package/dist/{plugin-registry-83ThmVHf.js → plugin-registry-1pF4_jNl.js} +1 -1
- package/dist/{plugin-registry-D57lc9ob.js → plugin-registry-CHOacv01.js} +1 -1
- package/dist/plugin-sdk/{channel-web-XYtgc8aq.js → channel-web-BHNS_E7F.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/plugins/runtime/types.d.ts +2 -0
- package/dist/plugin-sdk/{reply-BSOpvBX4.js → reply-DEepmBkT.js} +82 -3
- package/dist/plugin-sdk/tts/tts-core.d.ts +15 -0
- package/dist/plugin-sdk/tts/tts.d.ts +16 -0
- package/dist/plugin-sdk/{web-DiLYLsml.js → web-DBo-6RyH.js} +2 -2
- package/dist/{plugins-cli-BymsOcmR.js → plugins-cli-CflNTqmB.js} +2 -2
- package/dist/{plugins-cli-DOWA2F0z.js → plugins-cli-DW0TLzrq.js} +2 -2
- package/dist/{program-T05XIetU.js → program-DUkjf6lq.js} +7 -7
- package/dist/{program-context-CDmctW1L.js → program-context-C0-LzXoV.js} +17 -17
- package/dist/{prompt-select-styled-cR4-U64b.js → prompt-select-styled-CQUE1vow.js} +4 -4
- package/dist/{prompt-select-styled-BbzQhWF7.js → prompt-select-styled-CWNxdPrL.js} +4 -4
- package/dist/{provider-auth-helpers-BbnDoytN.js → provider-auth-helpers-D39L7fZC.js} +1 -1
- package/dist/{provider-auth-helpers-C4RNIRyy.js → provider-auth-helpers-bYUBBkmL.js} +1 -1
- package/dist/{push-apns-Dli4pG4y.js → push-apns-DGIqfAg5.js} +1 -1
- package/dist/{push-apns-DUeNpqyF.js → push-apns-Qfohz-Hs.js} +1 -1
- package/dist/{pw-ai-KrN0mqVH.js → pw-ai-D-_aGzdQ.js} +1 -1
- package/dist/{pw-ai-C-kqYO4L.js → pw-ai-S3cpSYOy.js} +1 -1
- package/dist/{register.agent-aY_6enDc.js → register.agent-BEM0_4uG.js} +5 -5
- package/dist/{register.agent-DNAtU5WP.js → register.agent-WQgVmACk.js} +6 -6
- package/dist/{register.configure-CwlwOMZ3.js → register.configure-CCpFmFPt.js} +6 -6
- package/dist/{register.configure-C_n9kIWJ.js → register.configure-CdW3aECy.js} +6 -6
- package/dist/{register.maintenance-DC40nnCm.js → register.maintenance-B8RZLSOe.js} +8 -8
- package/dist/{register.maintenance-Dddndcoo.js → register.maintenance-CM3QEdFz.js} +7 -7
- package/dist/{register.message-DiR6desB.js → register.message-BRLYHuVS.js} +2 -2
- package/dist/{register.message-CpEf0b15.js → register.message-XYm9NyDT.js} +2 -2
- package/dist/{register.onboard-bOeA39xj.js → register.onboard-BzAJbRpP.js} +4 -4
- package/dist/{register.onboard-VzVmqpEA.js → register.onboard-EwGHFUsd.js} +4 -4
- package/dist/{register.setup-CNLQzxl8.js → register.setup-33shhZje.js} +4 -4
- package/dist/{register.setup-D6iO5Xqa.js → register.setup-DpdZyiMv.js} +4 -4
- package/dist/{register.status-health-sessions-CoiaeduR.js → register.status-health-sessions-C8-iqepo.js} +3 -3
- package/dist/{register.status-health-sessions-BtJeTZnN.js → register.status-health-sessions-CK4f2nj_.js} +3 -3
- package/dist/{register.subclis-CFTYYdAQ.js → register.subclis-Mn68G5tp.js} +9 -9
- package/dist/{reply-Bv-RvRzs.js → reply-DuVUTFfT.js} +82 -3
- package/dist/{run-main-EzFOCEdp.js → run-main-CNB3qjRM.js} +14 -14
- package/dist/{runner-ChBxge-W.js → runner-D1eXJZ8T.js} +1 -1
- package/dist/{runner-Dq-qfrq7.js → runner-a43IsYad.js} +1 -1
- package/dist/{server-node-events-B9TqPvCI.js → server-node-events-B3o3P600.js} +2 -2
- package/dist/{server-node-events-syk21TN6.js → server-node-events-BPFwUGbS.js} +2 -2
- package/dist/{session-dirs-BAcQuXpY.js → session-dirs-Cw2efkey.js} +1 -1
- package/dist/{session-dirs-t0YpmrIL.js → session-dirs-DsU4kvIK.js} +1 -1
- package/dist/{status-keCWmejk.js → status-BSJIuIlN.js} +1 -1
- package/dist/{status-05251w21.js → status-BhHpKHQP.js} +2 -2
- package/dist/{status-BqDiXxwL.js → status-C2PvVLaW.js} +1 -1
- package/dist/{status-B8UVm7P3.js → status-CLKmcFCC.js} +2 -2
- package/dist/{subagent-registry-Lm4ps45z.js → subagent-registry-Da0a_Vka.js} +82 -3
- package/dist/{update-cli-BTF6TXGD.js → update-cli-BW3q5tFm.js} +7 -7
- package/dist/{update-cli-aW6jVJIJ.js → update-cli-D4EUMrX6.js} +8 -8
- package/dist/{web-BYZfljIx.js → web-BTbIFuWM.js} +2 -2
- package/dist/{web-BjxYv-hA.js → web-C7TQSVU0.js} +1 -1
- package/dist/{web-DPHo2cWX.js → web-CVSol55V.js} +6 -6
- package/dist/{web-Cs0IP-ZO.js → web-Y49Dumye.js} +6 -6
- package/extensions/voice-call/src/providers/twilio.ts +31 -13
- package/extensions/voice-call/src/response-generator.ts +3 -3
- package/extensions/voice-call/src/telephony-audio.ts +54 -0
- package/extensions/voice-call/src/telephony-tts.ts +40 -2
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./paths-B4BZAPZh.js";
|
|
2
2
|
import { h as pathExists, y as resolveUserPath } from "./utils-BlC2Fskb.js";
|
|
3
3
|
import "./thinking-EAliFiVK.js";
|
|
4
|
-
import "./reply-
|
|
4
|
+
import "./reply-DuVUTFfT.js";
|
|
5
5
|
import "./registry-Dygi7Azw.js";
|
|
6
6
|
import { p as restoreTerminalState } from "./subsystem-8bY95KEB.js";
|
|
7
7
|
import "./exec-BmMB8-Xs.js";
|
|
@@ -103,16 +103,16 @@ import "./stagger-B6VQyn1F.js";
|
|
|
103
103
|
import "./channel-selection-ZfFyXtQ1.js";
|
|
104
104
|
import "./pi-tools.policy-DZSlTC8Z.js";
|
|
105
105
|
import "./runtime-guard-BYGIYhEa.js";
|
|
106
|
-
import "./program-context-
|
|
106
|
+
import "./program-context-C0-LzXoV.js";
|
|
107
107
|
import "./note-DRZSQe0n.js";
|
|
108
|
-
import { r as installCompletion } from "./completion-cli-
|
|
108
|
+
import { r as installCompletion } from "./completion-cli-CI6LWHg3.js";
|
|
109
109
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-CcJb-H5N.js";
|
|
110
110
|
import { r as isSystemdUserServiceAvailable } from "./systemd-Dq5fANx0.js";
|
|
111
111
|
import { t as resolveGatewayService } from "./service-CJGWS46r.js";
|
|
112
|
-
import { r as healthCommand } from "./health-
|
|
112
|
+
import { r as healthCommand } from "./health-DQjqH1zU.js";
|
|
113
113
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-d_j0Pdnj.js";
|
|
114
114
|
import { t as formatHealthCheckFailure } from "./health-format-D6i_RyWd.js";
|
|
115
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
115
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DgPc1rDZ.js";
|
|
116
116
|
import { t as runTui } from "./tui-D0O7-y68.js";
|
|
117
117
|
import os from "node:os";
|
|
118
118
|
import path from "node:path";
|
|
@@ -14,7 +14,7 @@ import "./client-B5QR5Bi9.js";
|
|
|
14
14
|
import "./call-D6ajQjvV.js";
|
|
15
15
|
import "./message-channel-CVHJDItx.js";
|
|
16
16
|
import "./pairing-token-Byh6drgn.js";
|
|
17
|
-
import "./subagent-registry-
|
|
17
|
+
import "./subagent-registry-Da0a_Vka.js";
|
|
18
18
|
import "./sessions-BJnLP6OJ.js";
|
|
19
19
|
import "./tokens-ANnYrShl.js";
|
|
20
20
|
import "./plugins-DStDwRz0.js";
|
|
@@ -99,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
|
|
|
99
99
|
import "./pairing-labels-D2jdEFFZ.js";
|
|
100
100
|
import "./pi-tools.policy-BQwEWAuL.js";
|
|
101
101
|
import "./note-DDecZomM.js";
|
|
102
|
-
import "./register.subclis-
|
|
103
|
-
import "./command-registry-
|
|
102
|
+
import "./register.subclis-Mn68G5tp.js";
|
|
103
|
+
import "./command-registry-BtDC5Ll-.js";
|
|
104
104
|
import "./program-context-5q-A0wbP.js";
|
|
105
|
-
import { r as installCompletion } from "./completion-cli-
|
|
105
|
+
import { r as installCompletion } from "./completion-cli-Bw5nZmTm.js";
|
|
106
106
|
import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Rig_aj9Q.js";
|
|
107
107
|
import "./runtime-guard-Cs_ClFhP.js";
|
|
108
108
|
import { r as isSystemdUserServiceAvailable } from "./systemd-BrybH4HV.js";
|
|
109
109
|
import { t as resolveGatewayService } from "./service-DcFI40_W.js";
|
|
110
|
-
import { r as healthCommand } from "./health-
|
|
110
|
+
import { r as healthCommand } from "./health-Dg0bAIKS.js";
|
|
111
111
|
import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Yp3N6NZ_.js";
|
|
112
112
|
import { t as formatHealthCheckFailure } from "./health-format-DkjSgkDx.js";
|
|
113
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
113
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DipoVPSi.js";
|
|
114
114
|
import { t as runTui } from "./tui-D9Hy9ggA.js";
|
|
115
115
|
import os from "node:os";
|
|
116
116
|
import path from "node:path";
|
|
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
|
|
|
13
13
|
import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BOHIfoCX.js";
|
|
14
14
|
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-Byt_wJDK.js";
|
|
15
15
|
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-BEFzSOoD.js";
|
|
16
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
16
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CKH_FhS0.js";
|
|
17
17
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-DriDPU6M.js";
|
|
18
18
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
|
|
19
19
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CQT5u65w.js";
|
|
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
|
|
|
23
23
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Dgb9dAHW.js";
|
|
24
24
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
|
|
25
25
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-CHYSjmbr.js";
|
|
26
|
-
import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
26
|
+
import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-CSE0v99A.js";
|
|
27
27
|
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-Du_-inxH.js";
|
|
28
28
|
import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverOpenClawPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-Dhk4A5vb.js";
|
|
29
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
29
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-Bqbv_ZSj.js";
|
|
30
30
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DSZuhFx9.js";
|
|
31
31
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
|
|
32
32
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
|
|
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-DFrH9IVU.js";
|
|
|
37
37
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BEAbheM8.js";
|
|
38
38
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
|
|
39
39
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-C1rdDr34.js";
|
|
40
|
-
import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-
|
|
40
|
+
import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CxPjVob-.js";
|
|
41
41
|
import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-DZrS3Kf7.js";
|
|
42
42
|
import { n as resolveMemorySearchConfig } from "./manager-D7SRrHxT.js";
|
|
43
43
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-C3XxSzBN.js";
|
|
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DJPm0a4k.js";
|
|
|
51
51
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BzlB3qtZ.js";
|
|
52
52
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-CqyVDpti.js";
|
|
53
53
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
|
|
54
|
-
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-
|
|
54
|
+
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-D1eXJZ8T.js";
|
|
55
55
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtI0mtzx.js";
|
|
56
56
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
|
|
57
57
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BgsTqLau.js";
|
|
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
81
81
|
import AjvPkg from "ajv";
|
|
82
82
|
import { createServer } from "node:http";
|
|
83
83
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
84
|
-
import WebSocket
|
|
84
|
+
import WebSocket, { WebSocket as WebSocket$1 } from "ws";
|
|
85
85
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
86
86
|
import { createJiti } from "jiti";
|
|
87
87
|
import { Type } from "@sinclair/typebox";
|
|
@@ -2292,6 +2292,43 @@ async function openaiTTS(params) {
|
|
|
2292
2292
|
clearTimeout(timeout);
|
|
2293
2293
|
}
|
|
2294
2294
|
}
|
|
2295
|
+
/**
|
|
2296
|
+
* Streaming variant of openaiTTS. Returns the response body as a ReadableStream
|
|
2297
|
+
* so callers can process PCM chunks as they arrive instead of buffering the entire response.
|
|
2298
|
+
*/
|
|
2299
|
+
async function openaiTTSStream(params) {
|
|
2300
|
+
const { text, apiKey, model, voice, responseFormat, timeoutMs } = params;
|
|
2301
|
+
if (!isValidOpenAIModel(model)) throw new Error(`Invalid model: ${model}`);
|
|
2302
|
+
if (!isValidOpenAIVoice(voice)) throw new Error(`Invalid voice: ${voice}`);
|
|
2303
|
+
const controller = new AbortController();
|
|
2304
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
2305
|
+
const response = await fetch(`${getOpenAITtsBaseUrl()}/audio/speech`, {
|
|
2306
|
+
method: "POST",
|
|
2307
|
+
headers: {
|
|
2308
|
+
Authorization: `Bearer ${apiKey}`,
|
|
2309
|
+
"Content-Type": "application/json"
|
|
2310
|
+
},
|
|
2311
|
+
body: JSON.stringify({
|
|
2312
|
+
model,
|
|
2313
|
+
input: text,
|
|
2314
|
+
voice,
|
|
2315
|
+
response_format: responseFormat
|
|
2316
|
+
}),
|
|
2317
|
+
signal: controller.signal
|
|
2318
|
+
});
|
|
2319
|
+
if (!response.ok) {
|
|
2320
|
+
clearTimeout(timeout);
|
|
2321
|
+
throw new Error(`OpenAI TTS API error (${response.status})`);
|
|
2322
|
+
}
|
|
2323
|
+
if (!response.body) {
|
|
2324
|
+
clearTimeout(timeout);
|
|
2325
|
+
throw new Error("OpenAI TTS response has no body");
|
|
2326
|
+
}
|
|
2327
|
+
return {
|
|
2328
|
+
body: response.body,
|
|
2329
|
+
cleanup: () => clearTimeout(timeout)
|
|
2330
|
+
};
|
|
2331
|
+
}
|
|
2295
2332
|
function inferEdgeExtension(outputFormat) {
|
|
2296
2333
|
const normalized = outputFormat.toLowerCase();
|
|
2297
2334
|
if (normalized.includes("webm")) return ".webm";
|
|
@@ -2817,6 +2854,45 @@ async function textToSpeechTelephony(params) {
|
|
|
2817
2854
|
error: `TTS conversion failed: ${errors.join("; ") || "no providers available"}`
|
|
2818
2855
|
};
|
|
2819
2856
|
}
|
|
2857
|
+
/**
|
|
2858
|
+
* Streaming variant of textToSpeechTelephony.
|
|
2859
|
+
* Returns a ReadableStream of PCM audio chunks for incremental processing.
|
|
2860
|
+
* Only supports OpenAI provider (PCM format required for streaming).
|
|
2861
|
+
*/
|
|
2862
|
+
async function textToSpeechTelephonyStream(params) {
|
|
2863
|
+
const config = resolveTtsConfig(params.cfg);
|
|
2864
|
+
if ((config.provider ?? "openai") !== "openai") return {
|
|
2865
|
+
success: false,
|
|
2866
|
+
error: "Streaming TTS only supported for OpenAI"
|
|
2867
|
+
};
|
|
2868
|
+
const apiKey = resolveTtsApiKey(config, "openai");
|
|
2869
|
+
if (!apiKey) return {
|
|
2870
|
+
success: false,
|
|
2871
|
+
error: "No OpenAI API key for streaming TTS"
|
|
2872
|
+
};
|
|
2873
|
+
try {
|
|
2874
|
+
const output = TELEPHONY_OUTPUT.openai;
|
|
2875
|
+
const result = await openaiTTSStream({
|
|
2876
|
+
text: params.text,
|
|
2877
|
+
apiKey,
|
|
2878
|
+
model: config.openai.model,
|
|
2879
|
+
voice: config.openai.voice,
|
|
2880
|
+
responseFormat: "pcm",
|
|
2881
|
+
timeoutMs: config.timeoutMs
|
|
2882
|
+
});
|
|
2883
|
+
return {
|
|
2884
|
+
success: true,
|
|
2885
|
+
stream: result.body,
|
|
2886
|
+
sampleRate: output.sampleRate,
|
|
2887
|
+
cleanup: result.cleanup
|
|
2888
|
+
};
|
|
2889
|
+
} catch (err) {
|
|
2890
|
+
return {
|
|
2891
|
+
success: false,
|
|
2892
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2893
|
+
};
|
|
2894
|
+
}
|
|
2895
|
+
}
|
|
2820
2896
|
async function maybeApplyTtsToPayload(params) {
|
|
2821
2897
|
const config = resolveTtsConfig(params.cfg);
|
|
2822
2898
|
const prefsPath = resolveTtsPrefsPath(config);
|
|
@@ -5715,7 +5791,7 @@ var GatewayClient = class {
|
|
|
5715
5791
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5716
5792
|
});
|
|
5717
5793
|
}
|
|
5718
|
-
this.ws = new WebSocket(url, wsOptions);
|
|
5794
|
+
this.ws = new WebSocket$1(url, wsOptions);
|
|
5719
5795
|
this.ws.on("open", () => {
|
|
5720
5796
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5721
5797
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5934,7 +6010,7 @@ var GatewayClient = class {
|
|
|
5934
6010
|
return null;
|
|
5935
6011
|
}
|
|
5936
6012
|
async request(method, params, opts) {
|
|
5937
|
-
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
6013
|
+
if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
|
|
5938
6014
|
const id = randomUUID();
|
|
5939
6015
|
const frame = {
|
|
5940
6016
|
type: "req",
|
|
@@ -7198,7 +7274,7 @@ async function routeReply(params) {
|
|
|
7198
7274
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7199
7275
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7200
7276
|
try {
|
|
7201
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7277
|
+
const { deliverOutboundPayloads } = await import("./deliver-CKH_FhS0.js").then((n) => n.n);
|
|
7202
7278
|
return {
|
|
7203
7279
|
ok: true,
|
|
7204
7280
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41571,7 +41647,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41571
41647
|
return;
|
|
41572
41648
|
}
|
|
41573
41649
|
try {
|
|
41574
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41650
|
+
const { deliverOutboundPayloads } = await import("./deliver-CKH_FhS0.js").then((n) => n.n);
|
|
41575
41651
|
await deliverOutboundPayloads({
|
|
41576
41652
|
cfg: params.cfg,
|
|
41577
41653
|
channel,
|
|
@@ -45018,7 +45094,7 @@ async function describeStickerImage(params) {
|
|
|
45018
45094
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45019
45095
|
try {
|
|
45020
45096
|
const buffer = await fs.readFile(imagePath);
|
|
45021
|
-
const { describeImageWithModel } = await import("./image-
|
|
45097
|
+
const { describeImageWithModel } = await import("./image-CxPjVob-.js").then((n) => n.n);
|
|
45022
45098
|
return (await describeImageWithModel({
|
|
45023
45099
|
buffer,
|
|
45024
45100
|
fileName: "sticker.webp",
|
|
@@ -47479,7 +47555,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47479
47555
|
let preflightTranscript;
|
|
47480
47556
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47481
47557
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47482
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47558
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CLqoZYgI.js");
|
|
47483
47559
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47484
47560
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47485
47561
|
ctx: {
|
|
@@ -51485,7 +51561,7 @@ function isVoiceChannelType(type) {
|
|
|
51485
51561
|
function createDefaultDeps() {
|
|
51486
51562
|
return {
|
|
51487
51563
|
sendMessageWhatsApp: async (...args) => {
|
|
51488
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51564
|
+
const { sendMessageWhatsApp } = await import("./web-Y49Dumye.js");
|
|
51489
51565
|
return await sendMessageWhatsApp(...args);
|
|
51490
51566
|
},
|
|
51491
51567
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54398,7 +54474,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54398
54474
|
super(options);
|
|
54399
54475
|
}
|
|
54400
54476
|
createWebSocket(url) {
|
|
54401
|
-
return new WebSocket
|
|
54477
|
+
return new WebSocket(url, { agent });
|
|
54402
54478
|
}
|
|
54403
54479
|
}
|
|
54404
54480
|
return new ProxyGatewayPlugin();
|
|
@@ -64671,7 +64747,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64671
64747
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64672
64748
|
let preflightTranscript;
|
|
64673
64749
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64674
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64750
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-CLqoZYgI.js");
|
|
64675
64751
|
preflightTranscript = await transcribeFirstAudio({
|
|
64676
64752
|
ctx: {
|
|
64677
64753
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -66828,7 +66904,7 @@ function loadWebLoginQr() {
|
|
|
66828
66904
|
return webLoginQrPromise;
|
|
66829
66905
|
}
|
|
66830
66906
|
function loadWebChannel() {
|
|
66831
|
-
webChannelPromise ??= import("./web-
|
|
66907
|
+
webChannelPromise ??= import("./web-Y49Dumye.js");
|
|
66832
66908
|
return webChannelPromise;
|
|
66833
66909
|
}
|
|
66834
66910
|
function loadWhatsAppActions() {
|
|
@@ -66841,7 +66917,10 @@ function createPluginRuntime() {
|
|
|
66841
66917
|
config: createRuntimeConfig(),
|
|
66842
66918
|
system: createRuntimeSystem(),
|
|
66843
66919
|
media: createRuntimeMedia(),
|
|
66844
|
-
tts: {
|
|
66920
|
+
tts: {
|
|
66921
|
+
textToSpeechTelephony,
|
|
66922
|
+
textToSpeechTelephonyStream
|
|
66923
|
+
},
|
|
66845
66924
|
tools: createRuntimeTools(),
|
|
66846
66925
|
channel: createRuntimeChannel(),
|
|
66847
66926
|
logging: createRuntimeLogging(),
|
|
@@ -14,7 +14,7 @@ import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExis
|
|
|
14
14
|
import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
15
15
|
import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-Chks8Sx_.js";
|
|
16
16
|
import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-D4cCHXzJ.js";
|
|
17
|
-
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-
|
|
17
|
+
import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-0ThKlzQo.js";
|
|
18
18
|
import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-DzmNBZt3.js";
|
|
19
19
|
import { r as getDiagnosticSessionState } from "./diagnostic-session-state-C1vRJs5w.js";
|
|
20
20
|
import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-sr0G5UOe.js";
|
|
@@ -22,10 +22,10 @@ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normali
|
|
|
22
22
|
import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-BfqdVNxh.js";
|
|
23
23
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-j5tVLINv.js";
|
|
24
24
|
import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-DNOtJsL1.js";
|
|
25
|
-
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-
|
|
25
|
+
import { $ as mergeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as updateSessionStoreEntry, Jt as ensureSessionHeader, K as updateLastRoute, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as deliveryContextKey, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as resolveCacheTtlMs$1, Xt as resolveBootstrapTotalMaxChars, Y as isCacheEnabled, Yt as resolveBootstrapMaxChars, Z as deliveryContextFromSession, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as DEFAULT_RESET_TRIGGERS, a as isMessagingToolDuplicateNormalized, at as countToolResults, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as applyInputProvenanceToUserMessage, d as isAntigravityClaude, dt as resolveSessionKey, et as normalizeDeliveryContext, f as isGoogleModelApi, ft as evaluateSessionFreshness, g as formatBillingErrorMessage, gt as resolveThreadFlag, h as formatAssistantErrorText, ht as resolveSessionResetType, it as capArrayByJsonBytes, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as hasInterSessionUserProvenance, m as classifyFailoverReason, mt as resolveSessionResetPolicy, n as validateGeminiTurns, nt as normalizeAccountId$3, o as normalizeTextForComparison, ot as extractToolCallNames, p as BILLING_ERROR_USER_MESSAGE, pt as resolveChannelResetConfig, q as updateSessionStore, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as archiveSessionTranscripts, s as sanitizeSessionMessagesImages, st as INPUT_PROVENANCE_KIND_VALUES, t as validateAnthropicTurns, tt as normalizeSessionDeliveryFields, u as downgradeOpenAIReasoningBlocks, ut as normalizeInputProvenance, v as getApiErrorPayloadFingerprint, vt as resolveFreshSessionTotalTokens, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, yt as canonicalizeMainSessionAlias, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B0Kht0I2.js";
|
|
26
26
|
import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-KL7847B1.js";
|
|
27
27
|
import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverOpenClawPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-sze5OW-s.js";
|
|
28
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
28
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CZuniMYN.js";
|
|
29
29
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DGNBryo1.js";
|
|
30
30
|
import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-CPfngF0S.js";
|
|
31
31
|
import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -36,7 +36,7 @@ import { t as resolveIMessageAccount } from "./accounts-DAZL5b5o.js";
|
|
|
36
36
|
import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-5iQF9bSz.js";
|
|
37
37
|
import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
|
|
38
38
|
import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-TQiVqsOc.js";
|
|
39
|
-
import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image
|
|
39
|
+
import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-88q3KE-C.js";
|
|
40
40
|
import { n as resolveMemorySearchConfig } from "./manager-CsXJuzK4.js";
|
|
41
41
|
import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-CmTvWxxq.js";
|
|
42
42
|
import { n as retryAsync } from "./retry-CFbmOHr4.js";
|
|
@@ -49,7 +49,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-D-lkkPU3.js";
|
|
|
49
49
|
import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DEXQtgBS.js";
|
|
50
50
|
import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-CGvIAIiQ.js";
|
|
51
51
|
import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-QOi5vzUt.js";
|
|
52
|
-
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-
|
|
52
|
+
import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-a43IsYad.js";
|
|
53
53
|
import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BMa0enEg.js";
|
|
54
54
|
import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-DtXYsHEc.js";
|
|
55
55
|
import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-7fb2OxTV.js";
|
|
@@ -79,7 +79,7 @@ import { EdgeTTS } from "node-edge-tts";
|
|
|
79
79
|
import AjvPkg from "ajv";
|
|
80
80
|
import { createServer } from "node:http";
|
|
81
81
|
import { ProxyAgent, fetch as fetch$1 } from "undici";
|
|
82
|
-
import WebSocket, { WebSocket
|
|
82
|
+
import WebSocket$1, { WebSocket } from "ws";
|
|
83
83
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
84
84
|
import { createJiti } from "jiti";
|
|
85
85
|
import { Type } from "@sinclair/typebox";
|
|
@@ -2290,6 +2290,43 @@ async function openaiTTS(params) {
|
|
|
2290
2290
|
clearTimeout(timeout);
|
|
2291
2291
|
}
|
|
2292
2292
|
}
|
|
2293
|
+
/**
|
|
2294
|
+
* Streaming variant of openaiTTS. Returns the response body as a ReadableStream
|
|
2295
|
+
* so callers can process PCM chunks as they arrive instead of buffering the entire response.
|
|
2296
|
+
*/
|
|
2297
|
+
async function openaiTTSStream(params) {
|
|
2298
|
+
const { text, apiKey, model, voice, responseFormat, timeoutMs } = params;
|
|
2299
|
+
if (!isValidOpenAIModel(model)) throw new Error(`Invalid model: ${model}`);
|
|
2300
|
+
if (!isValidOpenAIVoice(voice)) throw new Error(`Invalid voice: ${voice}`);
|
|
2301
|
+
const controller = new AbortController();
|
|
2302
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
2303
|
+
const response = await fetch(`${getOpenAITtsBaseUrl()}/audio/speech`, {
|
|
2304
|
+
method: "POST",
|
|
2305
|
+
headers: {
|
|
2306
|
+
Authorization: `Bearer ${apiKey}`,
|
|
2307
|
+
"Content-Type": "application/json"
|
|
2308
|
+
},
|
|
2309
|
+
body: JSON.stringify({
|
|
2310
|
+
model,
|
|
2311
|
+
input: text,
|
|
2312
|
+
voice,
|
|
2313
|
+
response_format: responseFormat
|
|
2314
|
+
}),
|
|
2315
|
+
signal: controller.signal
|
|
2316
|
+
});
|
|
2317
|
+
if (!response.ok) {
|
|
2318
|
+
clearTimeout(timeout);
|
|
2319
|
+
throw new Error(`OpenAI TTS API error (${response.status})`);
|
|
2320
|
+
}
|
|
2321
|
+
if (!response.body) {
|
|
2322
|
+
clearTimeout(timeout);
|
|
2323
|
+
throw new Error("OpenAI TTS response has no body");
|
|
2324
|
+
}
|
|
2325
|
+
return {
|
|
2326
|
+
body: response.body,
|
|
2327
|
+
cleanup: () => clearTimeout(timeout)
|
|
2328
|
+
};
|
|
2329
|
+
}
|
|
2293
2330
|
function inferEdgeExtension(outputFormat) {
|
|
2294
2331
|
const normalized = outputFormat.toLowerCase();
|
|
2295
2332
|
if (normalized.includes("webm")) return ".webm";
|
|
@@ -2815,6 +2852,45 @@ async function textToSpeechTelephony(params) {
|
|
|
2815
2852
|
error: `TTS conversion failed: ${errors.join("; ") || "no providers available"}`
|
|
2816
2853
|
};
|
|
2817
2854
|
}
|
|
2855
|
+
/**
|
|
2856
|
+
* Streaming variant of textToSpeechTelephony.
|
|
2857
|
+
* Returns a ReadableStream of PCM audio chunks for incremental processing.
|
|
2858
|
+
* Only supports OpenAI provider (PCM format required for streaming).
|
|
2859
|
+
*/
|
|
2860
|
+
async function textToSpeechTelephonyStream(params) {
|
|
2861
|
+
const config = resolveTtsConfig(params.cfg);
|
|
2862
|
+
if ((config.provider ?? "openai") !== "openai") return {
|
|
2863
|
+
success: false,
|
|
2864
|
+
error: "Streaming TTS only supported for OpenAI"
|
|
2865
|
+
};
|
|
2866
|
+
const apiKey = resolveTtsApiKey(config, "openai");
|
|
2867
|
+
if (!apiKey) return {
|
|
2868
|
+
success: false,
|
|
2869
|
+
error: "No OpenAI API key for streaming TTS"
|
|
2870
|
+
};
|
|
2871
|
+
try {
|
|
2872
|
+
const output = TELEPHONY_OUTPUT.openai;
|
|
2873
|
+
const result = await openaiTTSStream({
|
|
2874
|
+
text: params.text,
|
|
2875
|
+
apiKey,
|
|
2876
|
+
model: config.openai.model,
|
|
2877
|
+
voice: config.openai.voice,
|
|
2878
|
+
responseFormat: "pcm",
|
|
2879
|
+
timeoutMs: config.timeoutMs
|
|
2880
|
+
});
|
|
2881
|
+
return {
|
|
2882
|
+
success: true,
|
|
2883
|
+
stream: result.body,
|
|
2884
|
+
sampleRate: output.sampleRate,
|
|
2885
|
+
cleanup: result.cleanup
|
|
2886
|
+
};
|
|
2887
|
+
} catch (err) {
|
|
2888
|
+
return {
|
|
2889
|
+
success: false,
|
|
2890
|
+
error: err instanceof Error ? err.message : String(err)
|
|
2891
|
+
};
|
|
2892
|
+
}
|
|
2893
|
+
}
|
|
2818
2894
|
async function maybeApplyTtsToPayload(params) {
|
|
2819
2895
|
const config = resolveTtsConfig(params.cfg);
|
|
2820
2896
|
const prefsPath = resolveTtsPrefsPath(config);
|
|
@@ -5713,7 +5789,7 @@ var GatewayClient = class {
|
|
|
5713
5789
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
5714
5790
|
});
|
|
5715
5791
|
}
|
|
5716
|
-
this.ws = new WebSocket
|
|
5792
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
5717
5793
|
this.ws.on("open", () => {
|
|
5718
5794
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
5719
5795
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -5932,7 +6008,7 @@ var GatewayClient = class {
|
|
|
5932
6008
|
return null;
|
|
5933
6009
|
}
|
|
5934
6010
|
async request(method, params, opts) {
|
|
5935
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
6011
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
5936
6012
|
const id = randomUUID();
|
|
5937
6013
|
const frame = {
|
|
5938
6014
|
type: "req",
|
|
@@ -7196,7 +7272,7 @@ async function routeReply(params) {
|
|
|
7196
7272
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
7197
7273
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
7198
7274
|
try {
|
|
7199
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
7275
|
+
const { deliverOutboundPayloads } = await import("./deliver-0ThKlzQo.js").then((n) => n.n);
|
|
7200
7276
|
return {
|
|
7201
7277
|
ok: true,
|
|
7202
7278
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -41569,7 +41645,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
41569
41645
|
return;
|
|
41570
41646
|
}
|
|
41571
41647
|
try {
|
|
41572
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
41648
|
+
const { deliverOutboundPayloads } = await import("./deliver-0ThKlzQo.js").then((n) => n.n);
|
|
41573
41649
|
await deliverOutboundPayloads({
|
|
41574
41650
|
cfg: params.cfg,
|
|
41575
41651
|
channel,
|
|
@@ -45016,7 +45092,7 @@ async function describeStickerImage(params) {
|
|
|
45016
45092
|
logVerbose(`telegram: describing sticker with ${provider}/${model}`);
|
|
45017
45093
|
try {
|
|
45018
45094
|
const buffer = await fs$1.readFile(imagePath);
|
|
45019
|
-
const { describeImageWithModel } = await import("./image
|
|
45095
|
+
const { describeImageWithModel } = await import("./image-88q3KE-C.js").then((n) => n.n);
|
|
45020
45096
|
return (await describeImageWithModel({
|
|
45021
45097
|
buffer,
|
|
45022
45098
|
fileName: "sticker.webp",
|
|
@@ -47477,7 +47553,7 @@ async function preflightDiscordMessage(params) {
|
|
|
47477
47553
|
let preflightTranscript;
|
|
47478
47554
|
const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
|
|
47479
47555
|
if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
|
|
47480
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
47556
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-Da7vejCH.js");
|
|
47481
47557
|
const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
|
|
47482
47558
|
if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
|
|
47483
47559
|
ctx: {
|
|
@@ -51483,7 +51559,7 @@ function isVoiceChannelType(type) {
|
|
|
51483
51559
|
function createDefaultDeps() {
|
|
51484
51560
|
return {
|
|
51485
51561
|
sendMessageWhatsApp: async (...args) => {
|
|
51486
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
51562
|
+
const { sendMessageWhatsApp } = await import("./web-CVSol55V.js");
|
|
51487
51563
|
return await sendMessageWhatsApp(...args);
|
|
51488
51564
|
},
|
|
51489
51565
|
sendMessageTelegram: async (...args) => {
|
|
@@ -54396,7 +54472,7 @@ function createDiscordGatewayPlugin(params) {
|
|
|
54396
54472
|
super(options);
|
|
54397
54473
|
}
|
|
54398
54474
|
createWebSocket(url) {
|
|
54399
|
-
return new WebSocket(url, { agent });
|
|
54475
|
+
return new WebSocket$1(url, { agent });
|
|
54400
54476
|
}
|
|
54401
54477
|
}
|
|
54402
54478
|
return new ProxyGatewayPlugin();
|
|
@@ -64669,7 +64745,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
|
|
|
64669
64745
|
const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
|
|
64670
64746
|
let preflightTranscript;
|
|
64671
64747
|
if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
|
|
64672
|
-
const { transcribeFirstAudio } = await import("./audio-preflight-
|
|
64748
|
+
const { transcribeFirstAudio } = await import("./audio-preflight-Da7vejCH.js");
|
|
64673
64749
|
preflightTranscript = await transcribeFirstAudio({
|
|
64674
64750
|
ctx: {
|
|
64675
64751
|
MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
|
|
@@ -66826,7 +66902,7 @@ function loadWebLoginQr() {
|
|
|
66826
66902
|
return webLoginQrPromise;
|
|
66827
66903
|
}
|
|
66828
66904
|
function loadWebChannel() {
|
|
66829
|
-
webChannelPromise ??= import("./web-
|
|
66905
|
+
webChannelPromise ??= import("./web-CVSol55V.js");
|
|
66830
66906
|
return webChannelPromise;
|
|
66831
66907
|
}
|
|
66832
66908
|
function loadWhatsAppActions() {
|
|
@@ -66839,7 +66915,10 @@ function createPluginRuntime() {
|
|
|
66839
66915
|
config: createRuntimeConfig(),
|
|
66840
66916
|
system: createRuntimeSystem(),
|
|
66841
66917
|
media: createRuntimeMedia(),
|
|
66842
|
-
tts: {
|
|
66918
|
+
tts: {
|
|
66919
|
+
textToSpeechTelephony,
|
|
66920
|
+
textToSpeechTelephonyStream
|
|
66921
|
+
},
|
|
66843
66922
|
tools: createRuntimeTools(),
|
|
66844
66923
|
channel: createRuntimeChannel(),
|
|
66845
66924
|
logging: createRuntimeLogging(),
|
|
@@ -10,7 +10,7 @@ import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
|
|
|
10
10
|
import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BfqdVNxh.js";
|
|
11
11
|
import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-DNOtJsL1.js";
|
|
12
12
|
import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-KL7847B1.js";
|
|
13
|
-
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
13
|
+
import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-CZuniMYN.js";
|
|
14
14
|
import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DGNBryo1.js";
|
|
15
15
|
import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
|
|
16
16
|
import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
|
|
@@ -931,7 +931,7 @@ function isModuleNotFoundError(err) {
|
|
|
931
931
|
}
|
|
932
932
|
async function loadPwAiModule(mode) {
|
|
933
933
|
try {
|
|
934
|
-
return await import("./pw-ai-
|
|
934
|
+
return await import("./pw-ai-S3cpSYOy.js");
|
|
935
935
|
} catch (err) {
|
|
936
936
|
if (mode === "soft") return null;
|
|
937
937
|
if (isModuleNotFoundError(err)) return null;
|
|
@@ -3471,11 +3471,11 @@ function createProfileContext(opts, profile) {
|
|
|
3471
3471
|
const userDataDir = resolveOpenClawUserDataDir(profile.name);
|
|
3472
3472
|
const profileState = getProfileState();
|
|
3473
3473
|
if (await isHttpReachable(300) && !profileState.running) try {
|
|
3474
|
-
await (await import("./pw-ai-
|
|
3474
|
+
await (await import("./pw-ai-S3cpSYOy.js")).closePlaywrightBrowserConnection();
|
|
3475
3475
|
} catch {}
|
|
3476
3476
|
if (profileState.running) await stopRunningBrowser();
|
|
3477
3477
|
try {
|
|
3478
|
-
await (await import("./pw-ai-
|
|
3478
|
+
await (await import("./pw-ai-S3cpSYOy.js")).closePlaywrightBrowserConnection();
|
|
3479
3479
|
} catch {}
|
|
3480
3480
|
if (!fs.existsSync(userDataDir)) return {
|
|
3481
3481
|
moved: false,
|