@lawpath-tech/openclaw 2026.2.21-18 → 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-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 +1 -1
- package/dist/bundled/session-memory/handler.js +1 -1
- 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-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/{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/index.js +6 -6
- package/dist/llm-slug-generator.js +1 -1
- 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-Qfuh9XzI.js → pi-embedded-Dz24QZz9.js} +82 -3
- 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/{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-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-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-BZ5kM4yO.js → web-Y49Dumye.js} +1 -1
- package/extensions/voice-call/src/providers/twilio.ts +31 -13
- package/extensions/voice-call/src/response-generator.ts +26 -5
- package/extensions/voice-call/src/telephony-audio.ts +54 -0
- package/extensions/voice-call/src/telephony-tts.ts +40 -2
- package/extensions/voice-call/src/webhook.ts +9 -0
- package/package.json +1 -1
|
@@ -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,
|
|
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
|
2
2
|
import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
|
|
3
3
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BVNQDedk.js";
|
|
4
4
|
import { i as loadConfig } from "./config-P-vz8Nlc.js";
|
|
5
|
-
import { g as loadOpenClawPlugins } from "./subagent-registry-
|
|
5
|
+
import { g as loadOpenClawPlugins } from "./subagent-registry-Da0a_Vka.js";
|
|
6
6
|
|
|
7
7
|
//#region src/cli/plugin-registry.ts
|
|
8
8
|
var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { gt as loadOpenClawPlugins } from "./reply-
|
|
2
|
+
import { gt as loadOpenClawPlugins } from "./reply-DuVUTFfT.js";
|
|
3
3
|
import { d as getActivePluginRegistry } from "./registry-Dygi7Azw.js";
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
|
|
5
5
|
import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-D9N91YsQ.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-Ciwy7Yxd.js";
|
|
3
|
-
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-
|
|
3
|
+
import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-DEepmBkT.js";
|
|
4
4
|
import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry-O1yza0Vh.js";
|
|
5
5
|
import { n as loadConfig } from "./config-9OZuRn0C.js";
|
|
6
6
|
import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-C4Rh0kdL.js";
|
package/dist/plugin-sdk/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
2
|
import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-Ciwy7Yxd.js";
|
|
3
|
-
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-
|
|
3
|
+
import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-DEepmBkT.js";
|
|
4
4
|
import "./paths-DVWx7USN.js";
|
|
5
5
|
import "./github-copilot-token-Cg0YPPSu.js";
|
|
6
6
|
import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-DIzw7Ncy.js";
|
|
@@ -47,7 +47,7 @@ import "./paths-BNQjLbn7.js";
|
|
|
47
47
|
import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-DKyVS3IK.js";
|
|
48
48
|
import { n as extractOriginalFilename } from "./store-DoRXD0QB.js";
|
|
49
49
|
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-DzZIT1V1.js";
|
|
50
|
-
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-
|
|
50
|
+
import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BHNS_E7F.js";
|
|
51
51
|
import "./image-C31B_R8P.js";
|
|
52
52
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
53
53
|
import "./api-key-rotation-ElOMCP9r.js";
|
|
@@ -11,6 +11,7 @@ type UpsertChannelPairingRequest = typeof import("../../pairing/pairing-store.js
|
|
|
11
11
|
type FetchRemoteMedia = typeof import("../../media/fetch.js").fetchRemoteMedia;
|
|
12
12
|
type SaveMediaBuffer = typeof import("../../media/store.js").saveMediaBuffer;
|
|
13
13
|
type TextToSpeechTelephony = typeof import("../../tts/tts.js").textToSpeechTelephony;
|
|
14
|
+
type TextToSpeechTelephonyStream = typeof import("../../tts/tts.js").textToSpeechTelephonyStream;
|
|
14
15
|
type BuildMentionRegexes = typeof import("../../auto-reply/reply/mentions.js").buildMentionRegexes;
|
|
15
16
|
type MatchesMentionPatterns = typeof import("../../auto-reply/reply/mentions.js").matchesMentionPatterns;
|
|
16
17
|
type MatchesMentionWithExplicit = typeof import("../../auto-reply/reply/mentions.js").matchesMentionWithExplicit;
|
|
@@ -150,6 +151,7 @@ export type PluginRuntime = {
|
|
|
150
151
|
};
|
|
151
152
|
tts: {
|
|
152
153
|
textToSpeechTelephony: TextToSpeechTelephony;
|
|
154
|
+
textToSpeechTelephonyStream?: TextToSpeechTelephonyStream;
|
|
153
155
|
};
|
|
154
156
|
tools: {
|
|
155
157
|
createMemoryGetTool: CreateMemoryGetTool;
|
|
@@ -10486,6 +10486,43 @@ async function openaiTTS(params) {
|
|
|
10486
10486
|
clearTimeout(timeout);
|
|
10487
10487
|
}
|
|
10488
10488
|
}
|
|
10489
|
+
/**
|
|
10490
|
+
* Streaming variant of openaiTTS. Returns the response body as a ReadableStream
|
|
10491
|
+
* so callers can process PCM chunks as they arrive instead of buffering the entire response.
|
|
10492
|
+
*/
|
|
10493
|
+
async function openaiTTSStream(params) {
|
|
10494
|
+
const { text, apiKey, model, voice, responseFormat, timeoutMs } = params;
|
|
10495
|
+
if (!isValidOpenAIModel(model)) throw new Error(`Invalid model: ${model}`);
|
|
10496
|
+
if (!isValidOpenAIVoice(voice)) throw new Error(`Invalid voice: ${voice}`);
|
|
10497
|
+
const controller = new AbortController();
|
|
10498
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
10499
|
+
const response = await fetch(`${getOpenAITtsBaseUrl()}/audio/speech`, {
|
|
10500
|
+
method: "POST",
|
|
10501
|
+
headers: {
|
|
10502
|
+
Authorization: `Bearer ${apiKey}`,
|
|
10503
|
+
"Content-Type": "application/json"
|
|
10504
|
+
},
|
|
10505
|
+
body: JSON.stringify({
|
|
10506
|
+
model,
|
|
10507
|
+
input: text,
|
|
10508
|
+
voice,
|
|
10509
|
+
response_format: responseFormat
|
|
10510
|
+
}),
|
|
10511
|
+
signal: controller.signal
|
|
10512
|
+
});
|
|
10513
|
+
if (!response.ok) {
|
|
10514
|
+
clearTimeout(timeout);
|
|
10515
|
+
throw new Error(`OpenAI TTS API error (${response.status})`);
|
|
10516
|
+
}
|
|
10517
|
+
if (!response.body) {
|
|
10518
|
+
clearTimeout(timeout);
|
|
10519
|
+
throw new Error("OpenAI TTS response has no body");
|
|
10520
|
+
}
|
|
10521
|
+
return {
|
|
10522
|
+
body: response.body,
|
|
10523
|
+
cleanup: () => clearTimeout(timeout)
|
|
10524
|
+
};
|
|
10525
|
+
}
|
|
10489
10526
|
function inferEdgeExtension(outputFormat) {
|
|
10490
10527
|
const normalized = outputFormat.toLowerCase();
|
|
10491
10528
|
if (normalized.includes("webm")) return ".webm";
|
|
@@ -11011,6 +11048,45 @@ async function textToSpeechTelephony(params) {
|
|
|
11011
11048
|
error: `TTS conversion failed: ${errors.join("; ") || "no providers available"}`
|
|
11012
11049
|
};
|
|
11013
11050
|
}
|
|
11051
|
+
/**
|
|
11052
|
+
* Streaming variant of textToSpeechTelephony.
|
|
11053
|
+
* Returns a ReadableStream of PCM audio chunks for incremental processing.
|
|
11054
|
+
* Only supports OpenAI provider (PCM format required for streaming).
|
|
11055
|
+
*/
|
|
11056
|
+
async function textToSpeechTelephonyStream(params) {
|
|
11057
|
+
const config = resolveTtsConfig(params.cfg);
|
|
11058
|
+
if ((config.provider ?? "openai") !== "openai") return {
|
|
11059
|
+
success: false,
|
|
11060
|
+
error: "Streaming TTS only supported for OpenAI"
|
|
11061
|
+
};
|
|
11062
|
+
const apiKey = resolveTtsApiKey(config, "openai");
|
|
11063
|
+
if (!apiKey) return {
|
|
11064
|
+
success: false,
|
|
11065
|
+
error: "No OpenAI API key for streaming TTS"
|
|
11066
|
+
};
|
|
11067
|
+
try {
|
|
11068
|
+
const output = TELEPHONY_OUTPUT.openai;
|
|
11069
|
+
const result = await openaiTTSStream({
|
|
11070
|
+
text: params.text,
|
|
11071
|
+
apiKey,
|
|
11072
|
+
model: config.openai.model,
|
|
11073
|
+
voice: config.openai.voice,
|
|
11074
|
+
responseFormat: "pcm",
|
|
11075
|
+
timeoutMs: config.timeoutMs
|
|
11076
|
+
});
|
|
11077
|
+
return {
|
|
11078
|
+
success: true,
|
|
11079
|
+
stream: result.body,
|
|
11080
|
+
sampleRate: output.sampleRate,
|
|
11081
|
+
cleanup: result.cleanup
|
|
11082
|
+
};
|
|
11083
|
+
} catch (err) {
|
|
11084
|
+
return {
|
|
11085
|
+
success: false,
|
|
11086
|
+
error: err instanceof Error ? err.message : String(err)
|
|
11087
|
+
};
|
|
11088
|
+
}
|
|
11089
|
+
}
|
|
11014
11090
|
async function maybeApplyTtsToPayload(params) {
|
|
11015
11091
|
const config = resolveTtsConfig(params.cfg);
|
|
11016
11092
|
const prefsPath = resolveTtsPrefsPath(config);
|
|
@@ -26836,7 +26912,7 @@ async function runWithImageModelFallback(params) {
|
|
|
26836
26912
|
function createDefaultDeps() {
|
|
26837
26913
|
return {
|
|
26838
26914
|
sendMessageWhatsApp: async (...args) => {
|
|
26839
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
26915
|
+
const { sendMessageWhatsApp } = await import("./web-DBo-6RyH.js");
|
|
26840
26916
|
return await sendMessageWhatsApp(...args);
|
|
26841
26917
|
},
|
|
26842
26918
|
sendMessageTelegram: async (...args) => {
|
|
@@ -44523,7 +44599,7 @@ function loadWebLoginQr() {
|
|
|
44523
44599
|
return webLoginQrPromise;
|
|
44524
44600
|
}
|
|
44525
44601
|
function loadWebChannel() {
|
|
44526
|
-
webChannelPromise ??= import("./web-
|
|
44602
|
+
webChannelPromise ??= import("./web-DBo-6RyH.js");
|
|
44527
44603
|
return webChannelPromise;
|
|
44528
44604
|
}
|
|
44529
44605
|
function loadWhatsAppActions() {
|
|
@@ -44536,7 +44612,10 @@ function createPluginRuntime() {
|
|
|
44536
44612
|
config: createRuntimeConfig(),
|
|
44537
44613
|
system: createRuntimeSystem(),
|
|
44538
44614
|
media: createRuntimeMedia(),
|
|
44539
|
-
tts: {
|
|
44615
|
+
tts: {
|
|
44616
|
+
textToSpeechTelephony,
|
|
44617
|
+
textToSpeechTelephonyStream
|
|
44618
|
+
},
|
|
44540
44619
|
tools: createRuntimeTools(),
|
|
44541
44620
|
channel: createRuntimeChannel(),
|
|
44542
44621
|
logging: createRuntimeLogging(),
|
|
@@ -42,6 +42,21 @@ export declare function openaiTTS(params: {
|
|
|
42
42
|
responseFormat: "mp3" | "opus" | "pcm";
|
|
43
43
|
timeoutMs: number;
|
|
44
44
|
}): Promise<Buffer>;
|
|
45
|
+
/**
|
|
46
|
+
* Streaming variant of openaiTTS. Returns the response body as a ReadableStream
|
|
47
|
+
* so callers can process PCM chunks as they arrive instead of buffering the entire response.
|
|
48
|
+
*/
|
|
49
|
+
export declare function openaiTTSStream(params: {
|
|
50
|
+
text: string;
|
|
51
|
+
apiKey: string;
|
|
52
|
+
model: string;
|
|
53
|
+
voice: string;
|
|
54
|
+
responseFormat: "pcm";
|
|
55
|
+
timeoutMs: number;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
body: ReadableStream<Uint8Array>;
|
|
58
|
+
cleanup: () => void;
|
|
59
|
+
}>;
|
|
45
60
|
export declare function inferEdgeExtension(outputFormat: string): string;
|
|
46
61
|
export declare function edgeTTS(params: {
|
|
47
62
|
text: string;
|
|
@@ -157,6 +157,22 @@ export declare function textToSpeechTelephony(params: {
|
|
|
157
157
|
cfg: OpenClawConfig;
|
|
158
158
|
prefsPath?: string;
|
|
159
159
|
}): Promise<TtsTelephonyResult>;
|
|
160
|
+
export type TtsTelephonyStreamResult = {
|
|
161
|
+
success: boolean;
|
|
162
|
+
stream?: ReadableStream<Uint8Array>;
|
|
163
|
+
sampleRate?: number;
|
|
164
|
+
cleanup?: () => void;
|
|
165
|
+
error?: string;
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Streaming variant of textToSpeechTelephony.
|
|
169
|
+
* Returns a ReadableStream of PCM audio chunks for incremental processing.
|
|
170
|
+
* Only supports OpenAI provider (PCM format required for streaming).
|
|
171
|
+
*/
|
|
172
|
+
export declare function textToSpeechTelephonyStream(params: {
|
|
173
|
+
text: string;
|
|
174
|
+
cfg: OpenClawConfig;
|
|
175
|
+
}): Promise<TtsTelephonyStreamResult>;
|
|
160
176
|
export declare function maybeApplyTtsToPayload(params: {
|
|
161
177
|
payload: ReplyPayload;
|
|
162
178
|
cfg: OpenClawConfig;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-Ciwy7Yxd.js";
|
|
2
|
-
import "./reply-
|
|
2
|
+
import "./reply-DEepmBkT.js";
|
|
3
3
|
import "./paths-DVWx7USN.js";
|
|
4
4
|
import "./github-copilot-token-Cg0YPPSu.js";
|
|
5
5
|
import "./plugins-DIzw7Ncy.js";
|
|
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-DU0nLxRU.js";
|
|
|
45
45
|
import "./paths-BNQjLbn7.js";
|
|
46
46
|
import "./diagnostic-DKyVS3IK.js";
|
|
47
47
|
import "./store-DoRXD0QB.js";
|
|
48
|
-
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-
|
|
48
|
+
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-BHNS_E7F.js";
|
|
49
49
|
import "./image-C31B_R8P.js";
|
|
50
50
|
import "./pi-model-discovery-LbcEa65a.js";
|
|
51
51
|
import "./api-key-rotation-ElOMCP9r.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as resolveStateDir } from "./paths-B4BZAPZh.js";
|
|
2
2
|
import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, 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 { f as defaultRuntime } from "./subsystem-8bY95KEB.js";
|
|
7
7
|
import "./exec-BmMB8-Xs.js";
|
|
@@ -106,7 +106,7 @@ import "./npm-registry-spec-DVXqd4Pf.js";
|
|
|
106
106
|
import "./skill-scanner-CMBwwxis.js";
|
|
107
107
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-B9skpWIo.js";
|
|
108
108
|
import { t as renderTable } from "./table-i7J9YlN5.js";
|
|
109
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
109
|
+
import { t as buildPluginStatusReport } from "./status-C2PvVLaW.js";
|
|
110
110
|
import { n as updateNpmInstalledPlugins } from "./update-BS8h2lwA.js";
|
|
111
111
|
import fs from "node:fs";
|
|
112
112
|
import os from "node:os";
|
|
@@ -13,7 +13,7 @@ import "./client-B5QR5Bi9.js";
|
|
|
13
13
|
import "./call-D6ajQjvV.js";
|
|
14
14
|
import "./message-channel-CVHJDItx.js";
|
|
15
15
|
import "./pairing-token-Byh6drgn.js";
|
|
16
|
-
import "./subagent-registry-
|
|
16
|
+
import "./subagent-registry-Da0a_Vka.js";
|
|
17
17
|
import "./sessions-BJnLP6OJ.js";
|
|
18
18
|
import "./tokens-ANnYrShl.js";
|
|
19
19
|
import "./plugins-DStDwRz0.js";
|
|
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
|
|
|
102
102
|
import "./skill-scanner-Cb7mXGIR.js";
|
|
103
103
|
import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-DDy4Ij7L.js";
|
|
104
104
|
import { t as renderTable } from "./table-C9BoE_4p.js";
|
|
105
|
-
import { t as buildPluginStatusReport } from "./status-
|
|
105
|
+
import { t as buildPluginStatusReport } from "./status-BSJIuIlN.js";
|
|
106
106
|
import { n as updateNpmInstalledPlugins } from "./update-ChO83Ek6.js";
|
|
107
107
|
import os from "node:os";
|
|
108
108
|
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,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
|
|
|
99
99
|
import "./pairing-labels-D2jdEFFZ.js";
|
|
100
100
|
import "./pi-tools.policy-BQwEWAuL.js";
|
|
101
101
|
import "./catalog-Da8o-cxw.js";
|
|
102
|
-
import "./plugin-registry-
|
|
103
|
-
import { n as resolveCliChannelOptions } from "./channel-options-
|
|
104
|
-
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-
|
|
105
|
-
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-
|
|
102
|
+
import "./plugin-registry-1pF4_jNl.js";
|
|
103
|
+
import { n as resolveCliChannelOptions } from "./channel-options-D0Qjq83D.js";
|
|
104
|
+
import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-Mn68G5tp.js";
|
|
105
|
+
import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-BtDC5Ll-.js";
|
|
106
106
|
import { r as setProgramContext } from "./program-context-5q-A0wbP.js";
|
|
107
107
|
import { t as forceFreePort } from "./ports-BxzJ3ENr.js";
|
|
108
|
-
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-
|
|
108
|
+
import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-dFAx4eE_.js";
|
|
109
109
|
import { Command } from "commander";
|
|
110
110
|
|
|
111
111
|
//#region src/cli/program/context.ts
|
|
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
|
|
|
213
213
|
commandPath
|
|
214
214
|
});
|
|
215
215
|
if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
|
|
216
|
-
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-
|
|
216
|
+
const { ensurePluginRegistryLoaded } = await import("./plugin-registry-1pF4_jNl.js").then((n) => n.n);
|
|
217
217
|
ensurePluginRegistryLoaded();
|
|
218
218
|
}
|
|
219
219
|
});
|