@lawpath-tech/openclaw 2026.2.21-11 → 2026.2.21-13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/{agents-DBULaIPd.js → agents-Acsw6oEr.js} +4 -4
  2. package/dist/{agents.config-Cd3-RJ-K.js → agents.config-BAILtL0e.js} +1 -1
  3. package/dist/{agents.config-DANgtZcG.js → agents.config-DA4Kt9C5.js} +1 -1
  4. package/dist/{audio-preflight-Bqg8wRF0.js → audio-preflight-B45_FIbf.js} +4 -4
  5. package/dist/{audio-preflight-CSF2zAiB.js → audio-preflight-C56sndLt.js} +3 -3
  6. package/dist/{audio-preflight-DUN77LMG.js → audio-preflight-DTxmK1ti.js} +3 -3
  7. package/dist/{audio-preflight-DESlWRvS.js → audio-preflight-UmMU18Rf.js} +3 -3
  8. package/dist/{auth-choice-Bx0wfZkb.js → auth-choice-B0ExtimG.js} +1 -1
  9. package/dist/{auth-choice-EsB1VBYk.js → auth-choice-Cc9nPCSG.js} +1 -1
  10. package/dist/{banner-DSmZ1r91.js → banner-l8hdGVT6.js} +1 -1
  11. package/dist/build-info.json +3 -3
  12. package/dist/bundled/boot-md/handler.js +6 -6
  13. package/dist/bundled/session-memory/handler.js +6 -6
  14. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  15. package/dist/{channel-options-tp4SdwWn.js → channel-options-BOgY_qkz.js} +1 -1
  16. package/dist/{channel-options-BFQz6sGG.js → channel-options-DU0lH77F.js} +1 -1
  17. package/dist/{channel-web-BLVzXq0y.js → channel-web-Bn_o0ClJ.js} +2 -2
  18. package/dist/{channels-cli-BfRfj__G.js → channels-cli-B8iPHVyY.js} +8 -8
  19. package/dist/{channels-cli-DZWnK7L3.js → channels-cli-HyoLT0X_.js} +8 -8
  20. package/dist/{chrome-CnYcE5rb.js → chrome-DBIqeaeX.js} +7 -7
  21. package/dist/{cli-BMvkWAfY.js → cli-BjW27QBR.js} +5 -5
  22. package/dist/{cli-B5YSj6kb.js → cli-CB8wKUFa.js} +5 -5
  23. package/dist/{command-registry-DTFv7rlA.js → command-registry-43P-_3eW.js} +9 -9
  24. package/dist/{completion-cli-CJW4fXUd.js → completion-cli-BrkMcxdh.js} +1 -1
  25. package/dist/{completion-cli-BkAlGttV.js → completion-cli-CSoJQQhc.js} +2 -2
  26. package/dist/{config-cli-C0De5m2w.js → config-cli-CV3y1IAq.js} +1 -1
  27. package/dist/{config-cli-BBaQ2Rhl.js → config-cli-Cuv_T0Jj.js} +1 -1
  28. package/dist/{configure-DC4J1Gf2.js → configure-80FWz9jT.js} +3 -3
  29. package/dist/{configure-_wGqIyys.js → configure-BHGABgNw.js} +3 -3
  30. package/dist/control-ui/assets/{index-Cx1_w3YP.js → index-BfDl8X4O.js} +2 -2
  31. package/dist/control-ui/assets/index-BfDl8X4O.js.map +1 -0
  32. package/dist/control-ui/index.html +1 -1
  33. package/dist/{deliver-D22uPds_.js → deliver-BLkQFTzD.js} +11 -6
  34. package/dist/{deliver-D3HyJhTX.js → deliver-BTK-PB1e.js} +11 -6
  35. package/dist/{deliver-Ct_AlJg5.js → deliver-J2cVd3TS.js} +11 -6
  36. package/dist/{deliver-BAjdrEoI.js → deliver-meQdcFaA.js} +11 -6
  37. package/dist/{doctor-completion-Cr7pfPFT.js → doctor-completion-CszISgAZ.js} +1 -1
  38. package/dist/{doctor-completion-C9EazQOq.js → doctor-completion-xnrUSWAw.js} +1 -1
  39. package/dist/entry.js +1 -1
  40. package/dist/extensionAPI.js +5 -5
  41. package/dist/{gateway-cli-CUZeW2km.js → gateway-cli-1XLrLurk.js} +15 -14
  42. package/dist/{gateway-cli-DyK2K5AK.js → gateway-cli-ElJ71Lxb.js} +15 -14
  43. package/dist/{health-DB9FsqfO.js → health-BfWYn33I.js} +2 -2
  44. package/dist/{health-C1FEsrl3.js → health-DEibfTDK.js} +2 -2
  45. package/dist/{hooks-cli-ChPkWEjM.js → hooks-cli-D-nL8J6w.js} +6 -6
  46. package/dist/{hooks-cli-CrVA4n9U.js → hooks-cli-wQnxbc8T.js} +6 -6
  47. package/dist/{image-CvBYo9Bu.js → image-C8HOu4vb.js} +2 -2
  48. package/dist/{image-paXd6zl5.js → image-Cj9tfO74.js} +2 -2
  49. package/dist/{image-D-DzmVjC.js → image-Dozs-5EW.js} +2 -2
  50. package/dist/{image-DfOLBle4.js → image-DuT8yGCI.js} +2 -2
  51. package/dist/index.js +10 -10
  52. package/dist/llm-slug-generator.js +6 -6
  53. package/dist/{models-D1lcFJXE.js → models-DFRcZ415.js} +2 -2
  54. package/dist/{models-cli-B-AmUt5Z.js → models-cli-CwEUrjU_.js} +7 -7
  55. package/dist/{models-cli-B5hzd5e-.js → models-cli-t1rYl_DG.js} +6 -6
  56. package/dist/{onboard-BN9SewlV.js → onboard-BgexsYYf.js} +2 -2
  57. package/dist/{onboard-Bv6hNNhV.js → onboard-CE7hjJi-.js} +2 -2
  58. package/dist/{onboard-channels-DtiMw5DM.js → onboard-channels-Cb8T_ers.js} +1 -1
  59. package/dist/{onboard-channels-B9_hnbkl.js → onboard-channels-vQihczqp.js} +1 -1
  60. package/dist/{onboarding-BIFLJGsw.js → onboarding-BIEWyZPf.js} +3 -3
  61. package/dist/{onboarding-wkMK4RdO.js → onboarding-CX9LQxj2.js} +3 -3
  62. package/dist/{onboarding.finalize-C5_35yUD.js → onboarding.finalize-BUNWcC3i.js} +11 -11
  63. package/dist/{onboarding.finalize-Cq_uG8Il.js → onboarding.finalize-COQ2A83D.js} +10 -10
  64. package/dist/{pi-embedded-26dX6W8j.js → pi-embedded-BywyyGi2.js} +16 -12
  65. package/dist/{pi-embedded-Bt3VYQ6Q.js → pi-embedded-KtxTxaXU.js} +21 -17
  66. package/dist/{pi-embedded-helpers-ISSMvBMe.js → pi-embedded-helpers-B6070OEj.js} +44 -12
  67. package/dist/{pi-embedded-helpers-Cx3WmubG.js → pi-embedded-helpers-C4Annkh_.js} +40 -8
  68. package/dist/{pi-embedded-helpers-DOmGm3QX.js → pi-embedded-helpers-C_U_c_EU.js} +40 -8
  69. package/dist/{pi-embedded-helpers-DcmNfC3F.js → pi-embedded-helpers-Dl_FdUMU.js} +40 -8
  70. package/dist/{plugin-registry-CktL7kDf.js → plugin-registry-BrN1y1ig.js} +1 -1
  71. package/dist/{plugin-registry-DmGXbeyU.js → plugin-registry-CtLhKV8N.js} +1 -1
  72. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +1 -0
  73. package/dist/plugin-sdk/{audio-preflight-DTmPFRJ7.js → audio-preflight-zFFuY6Bd.js} +3 -3
  74. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +1 -0
  75. package/dist/plugin-sdk/{channel-web-DBdAyFSo.js → channel-web-DfA1sgI9.js} +3 -3
  76. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  77. package/dist/plugin-sdk/{deliver-DvIFVzAj.js → deliver-D4QMj1KQ.js} +11 -6
  78. package/dist/plugin-sdk/{image-p_nEsuRt.js → image-Bu6pmW6i.js} +2 -2
  79. package/dist/plugin-sdk/index.js +6 -6
  80. package/dist/plugin-sdk/{pi-embedded-helpers-jfXMARle.js → pi-embedded-helpers-DBCtPcLq.js} +40 -8
  81. package/dist/plugin-sdk/{reply-CvZLZLYC.js → reply-Dl9JHnGW.js} +16 -12
  82. package/dist/plugin-sdk/{runner-B5paaQ1f.js → runner-DvYaPG7_.js} +1 -1
  83. package/dist/plugin-sdk/{web-xeAk5-Yr.js → web-BFEz8bk-.js} +6 -6
  84. package/dist/{plugins-cli-BB_bSrdc.js → plugins-cli-ByB9fyeR.js} +6 -6
  85. package/dist/{plugins-cli-B8LToOz_.js → plugins-cli-CP_m4f99.js} +6 -6
  86. package/dist/{program-CUQ4Dd4D.js → program-B51CfijA.js} +11 -11
  87. package/dist/{program-context-BL-eWj4d.js → program-context-DFA11MB9.js} +18 -18
  88. package/dist/{prompt-select-styled-Dw_5UkIh.js → prompt-select-styled-kNFZiNLD.js} +4 -4
  89. package/dist/{prompt-select-styled-OmW6kagQ.js → prompt-select-styled-y8kycqep.js} +4 -4
  90. package/dist/{provider-auth-helpers-CUdqrUdl.js → provider-auth-helpers-AORB3hk9.js} +1 -1
  91. package/dist/{provider-auth-helpers-Dj1zmS_9.js → provider-auth-helpers-TZ3D-fXq.js} +1 -1
  92. package/dist/{push-apns-BLl3-YNl.js → push-apns-BTcu7pip.js} +1 -1
  93. package/dist/{push-apns-DzvwLYLa.js → push-apns-CSSSwhDY.js} +1 -1
  94. package/dist/{pw-ai-MQ_9Ke4J.js → pw-ai-BW_4y-Af.js} +1 -1
  95. package/dist/{register.agent-DL4xNjz5.js → register.agent-C4G2zuxZ.js} +9 -9
  96. package/dist/{register.agent-DdcJgcQB.js → register.agent-xMmK5W-R.js} +10 -10
  97. package/dist/{register.configure-CahYnp2K.js → register.configure-CeFYJnjt.js} +10 -10
  98. package/dist/{register.configure-BOUoS25O.js → register.configure-aXmgTNuB.js} +10 -10
  99. package/dist/{register.maintenance-BBtBnw4T.js → register.maintenance-BD4w3mhl.js} +12 -12
  100. package/dist/{register.maintenance-CA0hn73s.js → register.maintenance-h74is0GZ.js} +11 -11
  101. package/dist/{register.message-C38olCA-.js → register.message-42he49is.js} +6 -6
  102. package/dist/{register.message-Bd2B4_gS.js → register.message-Cx6UTHOb.js} +6 -6
  103. package/dist/{register.onboard-CBcolfXI.js → register.onboard-CgQM-nZ7.js} +8 -8
  104. package/dist/{register.onboard-DmsHuosI.js → register.onboard-CnByKpp_.js} +8 -8
  105. package/dist/{register.setup-sWIbdPfJ.js → register.setup-B4qai0DZ.js} +8 -8
  106. package/dist/{register.setup-V09teeGQ.js → register.setup-CkW4jPu_.js} +8 -8
  107. package/dist/{register.status-health-sessions-BrlTrkeO.js → register.status-health-sessions-DHHGaJsX.js} +7 -7
  108. package/dist/{register.status-health-sessions-BHSA4iZL.js → register.status-health-sessions-DNqvYowR.js} +7 -7
  109. package/dist/{register.subclis-CNgqotfk.js → register.subclis-CSqyRt2t.js} +10 -10
  110. package/dist/{reply-BpeNwiEB.js → reply-V8UXM1XU.js} +16 -12
  111. package/dist/{run-main-ClMNdr5y.js → run-main-B3sc7X8M.js} +18 -18
  112. package/dist/{runner-Be7-7BcC.js → runner-CbkB3vpb.js} +1 -1
  113. package/dist/{runner-B9g6ervv.js → runner-D4U7RPrD.js} +1 -1
  114. package/dist/{runner-BIWQkeih.js → runner-DkWpm1Ly.js} +1 -1
  115. package/dist/{runner-D_-7GNC1.js → runner-DzmbTP-U.js} +1 -1
  116. package/dist/{server-node-events-C0ZzfaPA.js → server-node-events-D5Fen-q2.js} +6 -6
  117. package/dist/{server-node-events-CDra4Gjc.js → server-node-events-Dm6MSKk0.js} +6 -6
  118. package/dist/{session-dirs-D6iw22_Q.js → session-dirs-BmVdF2KM.js} +1 -1
  119. package/dist/{session-dirs-Cwn4le95.js → session-dirs-CRnGB63U.js} +1 -1
  120. package/dist/{status-CCPKZiSX.js → status-2w8d47j-.js} +2 -2
  121. package/dist/{status-DFs0LUlA.js → status-Bi_g-8aS.js} +1 -1
  122. package/dist/{status-CGTYQeqD.js → status-BjjDHl4v.js} +1 -1
  123. package/dist/{status-Rw3st2w_.js → status-DQEnKbht.js} +2 -2
  124. package/dist/{subagent-registry-C7ua7m8M.js → subagent-registry-DGNGenUN.js} +16 -12
  125. package/dist/{tui-C8TIc36Z.js → tui-BPSckkGa.js} +1 -1
  126. package/dist/{tui-dDj0kI9K.js → tui-Dn3NzP7B.js} +1 -1
  127. package/dist/{tui-cli-B1R2UxjK.js → tui-cli-DYhd0RT6.js} +2 -2
  128. package/dist/{tui-cli-DXNQuXf_.js → tui-cli-Dscc8usx.js} +2 -2
  129. package/dist/{update-cli-BxaSmz5G.js → update-cli-CLaJrUF4.js} +11 -11
  130. package/dist/{update-cli-DEMP1mj0.js → update-cli-DHAT02hj.js} +12 -12
  131. package/dist/{web-gSQnImv2.js → web-BpYdg2HU.js} +6 -6
  132. package/dist/{web-jg0rymdq.js → web-Ciz1i7yI.js} +6 -6
  133. package/dist/{web-D1CVLSCy.js → web-H55ayBNa.js} +5 -5
  134. package/dist/{web-YTTXENUe.js → web-aUEiU7C4.js} +5 -5
  135. package/package.json +1 -1
  136. package/dist/control-ui/assets/index-Cx1_w3YP.js.map +0 -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-DIoqNZGo.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-BJZNl-To.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-D22uPds_.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-BLkQFTzD.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,7 +22,7 @@ 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-BJidZpId.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-DcmNfC3F.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-Dl_FdUMU.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-Bj1BETyH.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
28
  import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-EGHj-WC_.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-o5KE8ifY.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-DfOLBle4.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-DuT8yGCI.js";
40
40
  import { n as resolveMemorySearchConfig } from "./manager-isQiMuR_.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-D0XFjNjt.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-Cc65BLE0.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-WUe5qD2m.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-D_-7GNC1.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-DzmbTP-U.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";
@@ -7196,7 +7196,7 @@ async function routeReply(params) {
7196
7196
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7197
7197
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7198
7198
  try {
7199
- const { deliverOutboundPayloads } = await import("./deliver-D22uPds_.js").then((n) => n.n);
7199
+ const { deliverOutboundPayloads } = await import("./deliver-BLkQFTzD.js").then((n) => n.n);
7200
7200
  return {
7201
7201
  ok: true,
7202
7202
  messageId: (await deliverOutboundPayloads({
@@ -41569,7 +41569,7 @@ async function deliverSessionMaintenanceWarning(params) {
41569
41569
  return;
41570
41570
  }
41571
41571
  try {
41572
- const { deliverOutboundPayloads } = await import("./deliver-D22uPds_.js").then((n) => n.n);
41572
+ const { deliverOutboundPayloads } = await import("./deliver-BLkQFTzD.js").then((n) => n.n);
41573
41573
  await deliverOutboundPayloads({
41574
41574
  cfg: params.cfg,
41575
41575
  channel,
@@ -42958,6 +42958,9 @@ function createReplyDispatcherWithTyping(options) {
42958
42958
  typingController = typing;
42959
42959
  }
42960
42960
  },
42961
+ markRunComplete: () => {
42962
+ typingController?.markRunComplete();
42963
+ },
42961
42964
  markDispatchIdle: () => {
42962
42965
  typingController?.markDispatchIdle();
42963
42966
  onIdle?.();
@@ -42993,7 +42996,7 @@ async function dispatchInboundMessage(params) {
42993
42996
  });
42994
42997
  }
42995
42998
  async function dispatchInboundMessageWithBufferedDispatcher(params) {
42996
- const { dispatcher, replyOptions, markDispatchIdle } = createReplyDispatcherWithTyping(params.dispatcherOptions);
42999
+ const { dispatcher, replyOptions, markDispatchIdle, markRunComplete } = createReplyDispatcherWithTyping(params.dispatcherOptions);
42997
43000
  try {
42998
43001
  return await dispatchInboundMessage({
42999
43002
  ctx: params.ctx,
@@ -43006,6 +43009,7 @@ async function dispatchInboundMessageWithBufferedDispatcher(params) {
43006
43009
  }
43007
43010
  });
43008
43011
  } finally {
43012
+ markRunComplete();
43009
43013
  markDispatchIdle();
43010
43014
  }
43011
43015
  }
@@ -45012,7 +45016,7 @@ async function describeStickerImage(params) {
45012
45016
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45013
45017
  try {
45014
45018
  const buffer = await fs$1.readFile(imagePath);
45015
- const { describeImageWithModel } = await import("./image-DfOLBle4.js").then((n) => n.n);
45019
+ const { describeImageWithModel } = await import("./image-DuT8yGCI.js").then((n) => n.n);
45016
45020
  return (await describeImageWithModel({
45017
45021
  buffer,
45018
45022
  fileName: "sticker.webp",
@@ -47473,7 +47477,7 @@ async function preflightDiscordMessage(params) {
47473
47477
  let preflightTranscript;
47474
47478
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47475
47479
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47476
- const { transcribeFirstAudio } = await import("./audio-preflight-CSF2zAiB.js");
47480
+ const { transcribeFirstAudio } = await import("./audio-preflight-C56sndLt.js");
47477
47481
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47478
47482
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47479
47483
  ctx: {
@@ -51479,7 +51483,7 @@ function isVoiceChannelType(type) {
51479
51483
  function createDefaultDeps() {
51480
51484
  return {
51481
51485
  sendMessageWhatsApp: async (...args) => {
51482
- const { sendMessageWhatsApp } = await import("./web-YTTXENUe.js");
51486
+ const { sendMessageWhatsApp } = await import("./web-aUEiU7C4.js");
51483
51487
  return await sendMessageWhatsApp(...args);
51484
51488
  },
51485
51489
  sendMessageTelegram: async (...args) => {
@@ -64665,7 +64669,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64665
64669
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64666
64670
  let preflightTranscript;
64667
64671
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64668
- const { transcribeFirstAudio } = await import("./audio-preflight-CSF2zAiB.js");
64672
+ const { transcribeFirstAudio } = await import("./audio-preflight-C56sndLt.js");
64669
64673
  preflightTranscript = await transcribeFirstAudio({
64670
64674
  ctx: {
64671
64675
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66822,7 +66826,7 @@ function loadWebLoginQr() {
66822
66826
  return webLoginQrPromise;
66823
66827
  }
66824
66828
  function loadWebChannel() {
66825
- webChannelPromise ??= import("./web-YTTXENUe.js");
66829
+ webChannelPromise ??= import("./web-aUEiU7C4.js");
66826
66830
  return webChannelPromise;
66827
66831
  }
66828
66832
  function loadWhatsAppActions() {
@@ -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-BqtVfvzY.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-CATNwBL8.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-D3HyJhTX.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-BTK-PB1e.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-ISSMvBMe.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-B6070OEj.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-DN88A7od.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-CnYcE5rb.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-DBIqeaeX.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-BiH90q2q.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-CrfNWFa1.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-D-DzmVjC.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-Dozs-5EW.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-D1COqWEk.js";
42
42
  import { n as resolveMemorySearchConfig } from "./manager-0vWMF5hH.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-t9dEMDcL.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-GO5Ntndz.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-CZAnHEpp.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-B9g6ervv.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-D4U7RPrD.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, { WebSocket as WebSocket$1 } from "ws";
84
+ import WebSocket$1, { WebSocket } 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";
@@ -5715,7 +5715,7 @@ var GatewayClient = class {
5715
5715
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5716
5716
  });
5717
5717
  }
5718
- this.ws = new WebSocket$1(url, wsOptions);
5718
+ this.ws = new WebSocket(url, wsOptions);
5719
5719
  this.ws.on("open", () => {
5720
5720
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5721
5721
  const tlsError = this.validateTlsFingerprint();
@@ -5934,7 +5934,7 @@ var GatewayClient = class {
5934
5934
  return null;
5935
5935
  }
5936
5936
  async request(method, params, opts) {
5937
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5937
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5938
5938
  const id = randomUUID();
5939
5939
  const frame = {
5940
5940
  type: "req",
@@ -7198,7 +7198,7 @@ async function routeReply(params) {
7198
7198
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7199
7199
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7200
7200
  try {
7201
- const { deliverOutboundPayloads } = await import("./deliver-D3HyJhTX.js").then((n) => n.n);
7201
+ const { deliverOutboundPayloads } = await import("./deliver-BTK-PB1e.js").then((n) => n.n);
7202
7202
  return {
7203
7203
  ok: true,
7204
7204
  messageId: (await deliverOutboundPayloads({
@@ -41571,7 +41571,7 @@ async function deliverSessionMaintenanceWarning(params) {
41571
41571
  return;
41572
41572
  }
41573
41573
  try {
41574
- const { deliverOutboundPayloads } = await import("./deliver-D3HyJhTX.js").then((n) => n.n);
41574
+ const { deliverOutboundPayloads } = await import("./deliver-BTK-PB1e.js").then((n) => n.n);
41575
41575
  await deliverOutboundPayloads({
41576
41576
  cfg: params.cfg,
41577
41577
  channel,
@@ -42960,6 +42960,9 @@ function createReplyDispatcherWithTyping(options) {
42960
42960
  typingController = typing;
42961
42961
  }
42962
42962
  },
42963
+ markRunComplete: () => {
42964
+ typingController?.markRunComplete();
42965
+ },
42963
42966
  markDispatchIdle: () => {
42964
42967
  typingController?.markDispatchIdle();
42965
42968
  onIdle?.();
@@ -42995,7 +42998,7 @@ async function dispatchInboundMessage(params) {
42995
42998
  });
42996
42999
  }
42997
43000
  async function dispatchInboundMessageWithBufferedDispatcher(params) {
42998
- const { dispatcher, replyOptions, markDispatchIdle } = createReplyDispatcherWithTyping(params.dispatcherOptions);
43001
+ const { dispatcher, replyOptions, markDispatchIdle, markRunComplete } = createReplyDispatcherWithTyping(params.dispatcherOptions);
42999
43002
  try {
43000
43003
  return await dispatchInboundMessage({
43001
43004
  ctx: params.ctx,
@@ -43008,6 +43011,7 @@ async function dispatchInboundMessageWithBufferedDispatcher(params) {
43008
43011
  }
43009
43012
  });
43010
43013
  } finally {
43014
+ markRunComplete();
43011
43015
  markDispatchIdle();
43012
43016
  }
43013
43017
  }
@@ -45014,7 +45018,7 @@ async function describeStickerImage(params) {
45014
45018
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45015
45019
  try {
45016
45020
  const buffer = await fs.readFile(imagePath);
45017
- const { describeImageWithModel } = await import("./image-D-DzmVjC.js").then((n) => n.n);
45021
+ const { describeImageWithModel } = await import("./image-Dozs-5EW.js").then((n) => n.n);
45018
45022
  return (await describeImageWithModel({
45019
45023
  buffer,
45020
45024
  fileName: "sticker.webp",
@@ -47475,7 +47479,7 @@ async function preflightDiscordMessage(params) {
47475
47479
  let preflightTranscript;
47476
47480
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47477
47481
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47478
- const { transcribeFirstAudio } = await import("./audio-preflight-Bqg8wRF0.js");
47482
+ const { transcribeFirstAudio } = await import("./audio-preflight-B45_FIbf.js");
47479
47483
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47480
47484
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47481
47485
  ctx: {
@@ -51481,7 +51485,7 @@ function isVoiceChannelType(type) {
51481
51485
  function createDefaultDeps() {
51482
51486
  return {
51483
51487
  sendMessageWhatsApp: async (...args) => {
51484
- const { sendMessageWhatsApp } = await import("./web-gSQnImv2.js");
51488
+ const { sendMessageWhatsApp } = await import("./web-BpYdg2HU.js");
51485
51489
  return await sendMessageWhatsApp(...args);
51486
51490
  },
51487
51491
  sendMessageTelegram: async (...args) => {
@@ -54394,7 +54398,7 @@ function createDiscordGatewayPlugin(params) {
54394
54398
  super(options);
54395
54399
  }
54396
54400
  createWebSocket(url) {
54397
- return new WebSocket(url, { agent });
54401
+ return new WebSocket$1(url, { agent });
54398
54402
  }
54399
54403
  }
54400
54404
  return new ProxyGatewayPlugin();
@@ -64667,7 +64671,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64667
64671
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64668
64672
  let preflightTranscript;
64669
64673
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64670
- const { transcribeFirstAudio } = await import("./audio-preflight-Bqg8wRF0.js");
64674
+ const { transcribeFirstAudio } = await import("./audio-preflight-B45_FIbf.js");
64671
64675
  preflightTranscript = await transcribeFirstAudio({
64672
64676
  ctx: {
64673
64677
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66824,7 +66828,7 @@ function loadWebLoginQr() {
66824
66828
  return webLoginQrPromise;
66825
66829
  }
66826
66830
  function loadWebChannel() {
66827
- webChannelPromise ??= import("./web-gSQnImv2.js");
66831
+ webChannelPromise ??= import("./web-BpYdg2HU.js");
66828
66832
  return webChannelPromise;
66829
66833
  }
66830
66834
  function loadWhatsAppActions() {
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
12
12
  import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-CpS0Gv-Z.js";
13
13
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-CHYSjmbr.js";
14
14
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-DN88A7od.js";
15
- 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-CnYcE5rb.js";
15
+ 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-DBIqeaeX.js";
16
16
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BiH90q2q.js";
17
17
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
18
18
  import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
933
933
  }
934
934
  async function loadPwAiModule(mode) {
935
935
  try {
936
- return await import("./pw-ai-MQ_9Ke4J.js");
936
+ return await import("./pw-ai-BW_4y-Af.js");
937
937
  } catch (err) {
938
938
  if (mode === "soft") return null;
939
939
  if (isModuleNotFoundError(err)) return null;
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
3473
3473
  const userDataDir = resolveOpenClawUserDataDir(profile.name);
3474
3474
  const profileState = getProfileState();
3475
3475
  if (await isHttpReachable(300) && !profileState.running) try {
3476
- await (await import("./pw-ai-MQ_9Ke4J.js")).closePlaywrightBrowserConnection();
3476
+ await (await import("./pw-ai-BW_4y-Af.js")).closePlaywrightBrowserConnection();
3477
3477
  } catch {}
3478
3478
  if (profileState.running) await stopRunningBrowser();
3479
3479
  try {
3480
- await (await import("./pw-ai-MQ_9Ke4J.js")).closePlaywrightBrowserConnection();
3480
+ await (await import("./pw-ai-BW_4y-Af.js")).closePlaywrightBrowserConnection();
3481
3481
  } catch {}
3482
3482
  if (!fs$1.existsSync(userDataDir)) return {
3483
3483
  moved: false,
@@ -6905,9 +6905,9 @@ function isCompactionFailureError(errorMessage) {
6905
6905
  if (isLikelyContextOverflowError(errorMessage)) return true;
6906
6906
  return lower.includes("context overflow");
6907
6907
  }
6908
- const ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
6908
+ const ERROR_PAYLOAD_PREFIX_RE = /^(?:error|(?:[a-z][\w-]*\s+)?api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error|codex\s*error)[:\s-]+/i;
6909
6909
  const FINAL_TAG_RE = /<\s*\/?\s*final\s*>/gi;
6910
- const ERROR_PREFIX_RE = /^(?:error|api\s*error|openai\s*error|anthropic\s*error|gateway\s*error|request failed|failed|exception)[:\s-]+/i;
6910
+ const ERROR_PREFIX_RE = /^(?:error|(?:[a-z][\w-]*\s+)?api\s*error|openai\s*error|anthropic\s*error|gateway\s*error|codex\s*error|request failed|failed|exception)(?:\s+\d{3})?[:\s-]+/i;
6911
6911
  const CONTEXT_OVERFLOW_ERROR_HEAD_RE = /^(?:context overflow:|request_too_large\b|request size exceeds\b|request exceeds the maximum size\b|context length exceeded\b|maximum context length\b|prompt is too long\b|exceeds model context window\b)/i;
6912
6912
  const BILLING_ERROR_HEAD_RE = /^(?:error[:\s-]+)?billing(?:\s+error)?(?:[:\s-]+|$)|^(?:error[:\s-]+)?(?:credit balance|insufficient credits?|payment required|http\s*402\b)/i;
6913
6913
  const HTTP_STATUS_PREFIX_RE = /^(?:http\s*)?(\d{3})\s+(.+)$/i;
@@ -7050,6 +7050,25 @@ function getApiErrorPayloadFingerprint(raw) {
7050
7050
  function isRawApiErrorPayload(raw) {
7051
7051
  return getApiErrorPayloadFingerprint(raw) !== null;
7052
7052
  }
7053
+ function isLikelyProviderErrorType(type) {
7054
+ const normalized = type?.trim().toLowerCase();
7055
+ if (!normalized) return false;
7056
+ return normalized.endsWith("_error");
7057
+ }
7058
+ const NON_ERROR_PROVIDER_PAYLOAD_MAX_LENGTH = 16384;
7059
+ const NON_ERROR_PROVIDER_PAYLOAD_PREFIX_RE = /^codex\s*error(?:\s+\d{3})?[:\s-]+/i;
7060
+ function shouldRewriteRawPayloadWithoutErrorContext(raw) {
7061
+ if (raw.length > NON_ERROR_PROVIDER_PAYLOAD_MAX_LENGTH) return false;
7062
+ if (!NON_ERROR_PROVIDER_PAYLOAD_PREFIX_RE.test(raw)) return false;
7063
+ const info = parseApiErrorInfo(raw);
7064
+ if (!info) return false;
7065
+ if (isLikelyProviderErrorType(info.type)) return true;
7066
+ if (info.httpCode) {
7067
+ const parsedCode = Number(info.httpCode);
7068
+ if (Number.isFinite(parsedCode) && parsedCode >= 400) return true;
7069
+ }
7070
+ return false;
7071
+ }
7053
7072
  function parseApiErrorInfo(raw) {
7054
7073
  if (!raw) return null;
7055
7074
  const trimmed = raw.trim();
@@ -7092,12 +7111,7 @@ function formatRawAssistantErrorForUi(raw) {
7092
7111
  if (!rest.startsWith("{")) return `HTTP ${httpMatch[1]}: ${rest}`;
7093
7112
  }
7094
7113
  const info = parseApiErrorInfo(trimmed);
7095
- if (info?.message) {
7096
- const prefix = info.httpCode ? `HTTP ${info.httpCode}` : "LLM error";
7097
- const type = info.type ? ` ${info.type}` : "";
7098
- const requestId = info.requestId ? ` (request_id: ${info.requestId})` : "";
7099
- return `${prefix}${type}: ${info.message}${requestId}`;
7100
- }
7114
+ if (info?.message) return `${info.httpCode ? `HTTP ${info.httpCode}` : "LLM error"}${info.type ? ` ${info.type}` : ""}: ${info.message}`;
7101
7115
  return trimmed.length > 600 ? `${trimmed.slice(0, 600)}…` : trimmed;
7102
7116
  }
7103
7117
  function formatAssistantErrorText(msg, opts) {
@@ -7132,6 +7146,7 @@ function sanitizeUserFacingText(text, opts) {
7132
7146
  const stripped = stripFinalTagsFromText(text);
7133
7147
  const trimmed = stripped.trim();
7134
7148
  if (!trimmed) return "";
7149
+ if (!errorContext && shouldRewriteRawPayloadWithoutErrorContext(trimmed)) return formatRawAssistantErrorForUi(trimmed);
7135
7150
  if (errorContext) {
7136
7151
  if (/incorrect role information|roles must alternate/i.test(trimmed)) return "Message ordering conflict - please try again. If this persists, use /new to start a fresh session.";
7137
7152
  if (shouldRewriteContextOverflowText(trimmed)) return "Context overflow: prompt too large for the model. Try /reset (or /new) to start a fresh session, or use a larger-context model.";
@@ -7166,6 +7181,19 @@ const ERROR_PATTERNS = {
7166
7181
  "service unavailable",
7167
7182
  "high demand"
7168
7183
  ],
7184
+ serverError: [
7185
+ "an error occurred while processing",
7186
+ "internal server error",
7187
+ "internal_error",
7188
+ "server_error",
7189
+ "service temporarily unavailable",
7190
+ "service_unavailable",
7191
+ "bad gateway",
7192
+ "gateway timeout",
7193
+ "upstream error",
7194
+ "upstream connect error",
7195
+ "connection reset"
7196
+ ],
7169
7197
  timeout: [
7170
7198
  "timeout",
7171
7199
  "timed out",
@@ -7246,6 +7274,9 @@ function isAuthErrorMessage(raw) {
7246
7274
  function isOverloadedErrorMessage(raw) {
7247
7275
  return matchesErrorPatterns(raw, ERROR_PATTERNS.overloaded);
7248
7276
  }
7277
+ function isServerErrorMessage(raw) {
7278
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.serverError);
7279
+ }
7249
7280
  function isJsonApiInternalServerError(raw) {
7250
7281
  if (!raw) return false;
7251
7282
  const value = raw.toLowerCase();
@@ -7307,6 +7338,7 @@ function classifyFailoverReason(raw) {
7307
7338
  if (isBillingErrorMessage(raw)) return "billing";
7308
7339
  if (isTimeoutErrorMessage(raw)) return "timeout";
7309
7340
  if (isAuthErrorMessage(raw)) return "auth";
7341
+ if (isServerErrorMessage(raw)) return "timeout";
7310
7342
  return null;
7311
7343
  }
7312
7344
  function isFailoverErrorMessage(raw) {
@@ -211,9 +211,9 @@ function isCompactionFailureError(errorMessage) {
211
211
  if (isLikelyContextOverflowError(errorMessage)) return true;
212
212
  return lower.includes("context overflow");
213
213
  }
214
- const ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
214
+ const ERROR_PAYLOAD_PREFIX_RE = /^(?:error|(?:[a-z][\w-]*\s+)?api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error|codex\s*error)[:\s-]+/i;
215
215
  const FINAL_TAG_RE = /<\s*\/?\s*final\s*>/gi;
216
- const ERROR_PREFIX_RE = /^(?:error|api\s*error|openai\s*error|anthropic\s*error|gateway\s*error|request failed|failed|exception)[:\s-]+/i;
216
+ const ERROR_PREFIX_RE = /^(?:error|(?:[a-z][\w-]*\s+)?api\s*error|openai\s*error|anthropic\s*error|gateway\s*error|codex\s*error|request failed|failed|exception)(?:\s+\d{3})?[:\s-]+/i;
217
217
  const CONTEXT_OVERFLOW_ERROR_HEAD_RE = /^(?:context overflow:|request_too_large\b|request size exceeds\b|request exceeds the maximum size\b|context length exceeded\b|maximum context length\b|prompt is too long\b|exceeds model context window\b)/i;
218
218
  const BILLING_ERROR_HEAD_RE = /^(?:error[:\s-]+)?billing(?:\s+error)?(?:[:\s-]+|$)|^(?:error[:\s-]+)?(?:credit balance|insufficient credits?|payment required|http\s*402\b)/i;
219
219
  const HTTP_STATUS_PREFIX_RE = /^(?:http\s*)?(\d{3})\s+(.+)$/i;
@@ -356,6 +356,25 @@ function getApiErrorPayloadFingerprint(raw) {
356
356
  function isRawApiErrorPayload(raw) {
357
357
  return getApiErrorPayloadFingerprint(raw) !== null;
358
358
  }
359
+ function isLikelyProviderErrorType(type) {
360
+ const normalized = type?.trim().toLowerCase();
361
+ if (!normalized) return false;
362
+ return normalized.endsWith("_error");
363
+ }
364
+ const NON_ERROR_PROVIDER_PAYLOAD_MAX_LENGTH = 16384;
365
+ const NON_ERROR_PROVIDER_PAYLOAD_PREFIX_RE = /^codex\s*error(?:\s+\d{3})?[:\s-]+/i;
366
+ function shouldRewriteRawPayloadWithoutErrorContext(raw) {
367
+ if (raw.length > NON_ERROR_PROVIDER_PAYLOAD_MAX_LENGTH) return false;
368
+ if (!NON_ERROR_PROVIDER_PAYLOAD_PREFIX_RE.test(raw)) return false;
369
+ const info = parseApiErrorInfo(raw);
370
+ if (!info) return false;
371
+ if (isLikelyProviderErrorType(info.type)) return true;
372
+ if (info.httpCode) {
373
+ const parsedCode = Number(info.httpCode);
374
+ if (Number.isFinite(parsedCode) && parsedCode >= 400) return true;
375
+ }
376
+ return false;
377
+ }
359
378
  function parseApiErrorInfo(raw) {
360
379
  if (!raw) return null;
361
380
  const trimmed = raw.trim();
@@ -398,12 +417,7 @@ function formatRawAssistantErrorForUi(raw) {
398
417
  if (!rest.startsWith("{")) return `HTTP ${httpMatch[1]}: ${rest}`;
399
418
  }
400
419
  const info = parseApiErrorInfo(trimmed);
401
- if (info?.message) {
402
- const prefix = info.httpCode ? `HTTP ${info.httpCode}` : "LLM error";
403
- const type = info.type ? ` ${info.type}` : "";
404
- const requestId = info.requestId ? ` (request_id: ${info.requestId})` : "";
405
- return `${prefix}${type}: ${info.message}${requestId}`;
406
- }
420
+ if (info?.message) return `${info.httpCode ? `HTTP ${info.httpCode}` : "LLM error"}${info.type ? ` ${info.type}` : ""}: ${info.message}`;
407
421
  return trimmed.length > 600 ? `${trimmed.slice(0, 600)}…` : trimmed;
408
422
  }
409
423
  function formatAssistantErrorText(msg, opts) {
@@ -438,6 +452,7 @@ function sanitizeUserFacingText(text, opts) {
438
452
  const stripped = stripFinalTagsFromText(text);
439
453
  const trimmed = stripped.trim();
440
454
  if (!trimmed) return "";
455
+ if (!errorContext && shouldRewriteRawPayloadWithoutErrorContext(trimmed)) return formatRawAssistantErrorForUi(trimmed);
441
456
  if (errorContext) {
442
457
  if (/incorrect role information|roles must alternate/i.test(trimmed)) return "Message ordering conflict - please try again. If this persists, use /new to start a fresh session.";
443
458
  if (shouldRewriteContextOverflowText(trimmed)) return "Context overflow: prompt too large for the model. Try /reset (or /new) to start a fresh session, or use a larger-context model.";
@@ -472,6 +487,19 @@ const ERROR_PATTERNS = {
472
487
  "service unavailable",
473
488
  "high demand"
474
489
  ],
490
+ serverError: [
491
+ "an error occurred while processing",
492
+ "internal server error",
493
+ "internal_error",
494
+ "server_error",
495
+ "service temporarily unavailable",
496
+ "service_unavailable",
497
+ "bad gateway",
498
+ "gateway timeout",
499
+ "upstream error",
500
+ "upstream connect error",
501
+ "connection reset"
502
+ ],
475
503
  timeout: [
476
504
  "timeout",
477
505
  "timed out",
@@ -552,6 +580,9 @@ function isAuthErrorMessage(raw) {
552
580
  function isOverloadedErrorMessage(raw) {
553
581
  return matchesErrorPatterns(raw, ERROR_PATTERNS.overloaded);
554
582
  }
583
+ function isServerErrorMessage(raw) {
584
+ return matchesErrorPatterns(raw, ERROR_PATTERNS.serverError);
585
+ }
555
586
  function isJsonApiInternalServerError(raw) {
556
587
  if (!raw) return false;
557
588
  const value = raw.toLowerCase();
@@ -613,6 +644,7 @@ function classifyFailoverReason(raw) {
613
644
  if (isBillingErrorMessage(raw)) return "billing";
614
645
  if (isTimeoutErrorMessage(raw)) return "timeout";
615
646
  if (isAuthErrorMessage(raw)) return "auth";
647
+ if (isServerErrorMessage(raw)) return "timeout";
616
648
  return null;
617
649
  }
618
650
  function isFailoverErrorMessage(raw) {