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

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 (133) 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-BnwMjf3g.js} +3 -3
  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 +5 -5
  13. package/dist/bundled/session-memory/handler.js +5 -5
  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/{cli-BMvkWAfY.js → cli-BjW27QBR.js} +5 -5
  21. package/dist/{cli-B5YSj6kb.js → cli-CB8wKUFa.js} +5 -5
  22. package/dist/{command-registry-DTFv7rlA.js → command-registry-hszLgVfh.js} +9 -9
  23. package/dist/{completion-cli-BkAlGttV.js → completion-cli-BTOzPrOy.js} +2 -2
  24. package/dist/{completion-cli-CJW4fXUd.js → completion-cli-jFF5jQZF.js} +1 -1
  25. package/dist/{config-cli-C0De5m2w.js → config-cli-CV3y1IAq.js} +1 -1
  26. package/dist/{config-cli-BBaQ2Rhl.js → config-cli-Cuv_T0Jj.js} +1 -1
  27. package/dist/{configure-DC4J1Gf2.js → configure-80FWz9jT.js} +3 -3
  28. package/dist/{configure-_wGqIyys.js → configure-BHGABgNw.js} +3 -3
  29. package/dist/control-ui/assets/{index-Cx1_w3YP.js → index-BfDl8X4O.js} +2 -2
  30. package/dist/control-ui/assets/index-BfDl8X4O.js.map +1 -0
  31. package/dist/control-ui/index.html +1 -1
  32. package/dist/{deliver-D3HyJhTX.js → deliver-B1Ddgm7X.js} +11 -6
  33. package/dist/{deliver-D22uPds_.js → deliver-BLkQFTzD.js} +11 -6
  34. package/dist/{deliver-Ct_AlJg5.js → deliver-J2cVd3TS.js} +11 -6
  35. package/dist/{deliver-BAjdrEoI.js → deliver-meQdcFaA.js} +11 -6
  36. package/dist/{doctor-completion-Cr7pfPFT.js → doctor-completion-BSCz_dGZ.js} +1 -1
  37. package/dist/{doctor-completion-C9EazQOq.js → doctor-completion-DGHNIbJN.js} +1 -1
  38. package/dist/entry.js +1 -1
  39. package/dist/extensionAPI.js +5 -5
  40. package/dist/{gateway-cli-DyK2K5AK.js → gateway-cli-DYYSJuSK.js} +13 -13
  41. package/dist/{gateway-cli-CUZeW2km.js → gateway-cli-gLp4lZSu.js} +13 -13
  42. package/dist/{health-DB9FsqfO.js → health-BfWYn33I.js} +2 -2
  43. package/dist/{health-C1FEsrl3.js → health-DEibfTDK.js} +2 -2
  44. package/dist/{hooks-cli-ChPkWEjM.js → hooks-cli-D-nL8J6w.js} +6 -6
  45. package/dist/{hooks-cli-CrVA4n9U.js → hooks-cli-wQnxbc8T.js} +6 -6
  46. package/dist/{image-D-DzmVjC.js → image-BZOs5dHY.js} +2 -2
  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-DfOLBle4.js → image-DuT8yGCI.js} +2 -2
  50. package/dist/index.js +10 -10
  51. package/dist/llm-slug-generator.js +5 -5
  52. package/dist/{models-D1lcFJXE.js → models-DFRcZ415.js} +2 -2
  53. package/dist/{models-cli-B-AmUt5Z.js → models-cli-CwEUrjU_.js} +7 -7
  54. package/dist/{models-cli-B5hzd5e-.js → models-cli-t1rYl_DG.js} +6 -6
  55. package/dist/{onboard-Bv6hNNhV.js → onboard-8PGPC4o-.js} +2 -2
  56. package/dist/{onboard-BN9SewlV.js → onboard-XsnXtjOy.js} +2 -2
  57. package/dist/{onboard-channels-DtiMw5DM.js → onboard-channels-Cb8T_ers.js} +1 -1
  58. package/dist/{onboard-channels-B9_hnbkl.js → onboard-channels-vQihczqp.js} +1 -1
  59. package/dist/{onboarding-BIFLJGsw.js → onboarding-C_807D1O.js} +3 -3
  60. package/dist/{onboarding-wkMK4RdO.js → onboarding-EwJ1WIut.js} +3 -3
  61. package/dist/{onboarding.finalize-Cq_uG8Il.js → onboarding.finalize-Crpg17t7.js} +10 -10
  62. package/dist/{onboarding.finalize-C5_35yUD.js → onboarding.finalize-DWFR8IbD.js} +11 -11
  63. package/dist/{pi-embedded-Bt3VYQ6Q.js → pi-embedded-Be34NhAY.js} +16 -12
  64. package/dist/{pi-embedded-26dX6W8j.js → pi-embedded-BywyyGi2.js} +16 -12
  65. package/dist/{pi-embedded-helpers-ISSMvBMe.js → pi-embedded-helpers-BVCPWN6Q.js} +40 -8
  66. package/dist/{pi-embedded-helpers-Cx3WmubG.js → pi-embedded-helpers-C4Annkh_.js} +40 -8
  67. package/dist/{pi-embedded-helpers-DOmGm3QX.js → pi-embedded-helpers-C_U_c_EU.js} +40 -8
  68. package/dist/{pi-embedded-helpers-DcmNfC3F.js → pi-embedded-helpers-Dl_FdUMU.js} +40 -8
  69. package/dist/{plugin-registry-CktL7kDf.js → plugin-registry-BrN1y1ig.js} +1 -1
  70. package/dist/{plugin-registry-DmGXbeyU.js → plugin-registry-CtLhKV8N.js} +1 -1
  71. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +1 -0
  72. package/dist/plugin-sdk/{audio-preflight-DTmPFRJ7.js → audio-preflight-zFFuY6Bd.js} +3 -3
  73. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +1 -0
  74. package/dist/plugin-sdk/{channel-web-DBdAyFSo.js → channel-web-DfA1sgI9.js} +3 -3
  75. package/dist/plugin-sdk/{deliver-DvIFVzAj.js → deliver-D4QMj1KQ.js} +11 -6
  76. package/dist/plugin-sdk/{image-p_nEsuRt.js → image-Bu6pmW6i.js} +2 -2
  77. package/dist/plugin-sdk/index.js +6 -6
  78. package/dist/plugin-sdk/{pi-embedded-helpers-jfXMARle.js → pi-embedded-helpers-DBCtPcLq.js} +40 -8
  79. package/dist/plugin-sdk/{reply-CvZLZLYC.js → reply-Dl9JHnGW.js} +16 -12
  80. package/dist/plugin-sdk/{runner-B5paaQ1f.js → runner-DvYaPG7_.js} +1 -1
  81. package/dist/plugin-sdk/{web-xeAk5-Yr.js → web-BFEz8bk-.js} +6 -6
  82. package/dist/{plugins-cli-BB_bSrdc.js → plugins-cli-ByB9fyeR.js} +6 -6
  83. package/dist/{plugins-cli-B8LToOz_.js → plugins-cli-CP_m4f99.js} +6 -6
  84. package/dist/{program-CUQ4Dd4D.js → program-DlspJVqc.js} +11 -11
  85. package/dist/{program-context-BL-eWj4d.js → program-context-CpcNVMdA.js} +18 -18
  86. package/dist/{prompt-select-styled-Dw_5UkIh.js → prompt-select-styled-CWRcbfIK.js} +4 -4
  87. package/dist/{prompt-select-styled-OmW6kagQ.js → prompt-select-styled-DHXAx5uX.js} +4 -4
  88. package/dist/{provider-auth-helpers-CUdqrUdl.js → provider-auth-helpers-AORB3hk9.js} +1 -1
  89. package/dist/{provider-auth-helpers-Dj1zmS_9.js → provider-auth-helpers-TZ3D-fXq.js} +1 -1
  90. package/dist/{push-apns-BLl3-YNl.js → push-apns-BTcu7pip.js} +1 -1
  91. package/dist/{push-apns-DzvwLYLa.js → push-apns-CSSSwhDY.js} +1 -1
  92. package/dist/{register.agent-DL4xNjz5.js → register.agent-C4G2zuxZ.js} +9 -9
  93. package/dist/{register.agent-DdcJgcQB.js → register.agent-xMmK5W-R.js} +10 -10
  94. package/dist/{register.configure-CahYnp2K.js → register.configure-CeFYJnjt.js} +10 -10
  95. package/dist/{register.configure-BOUoS25O.js → register.configure-aXmgTNuB.js} +10 -10
  96. package/dist/{register.maintenance-CA0hn73s.js → register.maintenance-B_bQy-mZ.js} +11 -11
  97. package/dist/{register.maintenance-BBtBnw4T.js → register.maintenance-CWHUzso3.js} +12 -12
  98. package/dist/{register.message-C38olCA-.js → register.message-42he49is.js} +6 -6
  99. package/dist/{register.message-Bd2B4_gS.js → register.message-Cx6UTHOb.js} +6 -6
  100. package/dist/{register.onboard-DmsHuosI.js → register.onboard-BmtcBw-6.js} +8 -8
  101. package/dist/{register.onboard-CBcolfXI.js → register.onboard-C9pozCFG.js} +8 -8
  102. package/dist/{register.setup-V09teeGQ.js → register.setup-C4TWvr5B.js} +8 -8
  103. package/dist/{register.setup-sWIbdPfJ.js → register.setup-C54kkyhM.js} +8 -8
  104. package/dist/{register.status-health-sessions-BrlTrkeO.js → register.status-health-sessions-DHHGaJsX.js} +7 -7
  105. package/dist/{register.status-health-sessions-BHSA4iZL.js → register.status-health-sessions-DNqvYowR.js} +7 -7
  106. package/dist/{register.subclis-CNgqotfk.js → register.subclis-m5WJHhwT.js} +10 -10
  107. package/dist/{reply-BpeNwiEB.js → reply-V8UXM1XU.js} +16 -12
  108. package/dist/{run-main-ClMNdr5y.js → run-main-Djlctozd.js} +18 -18
  109. package/dist/{runner-B9g6ervv.js → runner-BMHyFfIL.js} +1 -1
  110. package/dist/{runner-Be7-7BcC.js → runner-CbkB3vpb.js} +1 -1
  111. package/dist/{runner-BIWQkeih.js → runner-DkWpm1Ly.js} +1 -1
  112. package/dist/{runner-D_-7GNC1.js → runner-DzmbTP-U.js} +1 -1
  113. package/dist/{server-node-events-C0ZzfaPA.js → server-node-events-D5Fen-q2.js} +6 -6
  114. package/dist/{server-node-events-CDra4Gjc.js → server-node-events-Dm6MSKk0.js} +6 -6
  115. package/dist/{session-dirs-D6iw22_Q.js → session-dirs-BmVdF2KM.js} +1 -1
  116. package/dist/{session-dirs-Cwn4le95.js → session-dirs-CRnGB63U.js} +1 -1
  117. package/dist/{status-CCPKZiSX.js → status-2w8d47j-.js} +2 -2
  118. package/dist/{status-DFs0LUlA.js → status-Bi_g-8aS.js} +1 -1
  119. package/dist/{status-CGTYQeqD.js → status-BjjDHl4v.js} +1 -1
  120. package/dist/{status-Rw3st2w_.js → status-DQEnKbht.js} +2 -2
  121. package/dist/{subagent-registry-C7ua7m8M.js → subagent-registry-DGNGenUN.js} +16 -12
  122. package/dist/{tui-C8TIc36Z.js → tui-BPSckkGa.js} +1 -1
  123. package/dist/{tui-dDj0kI9K.js → tui-Dn3NzP7B.js} +1 -1
  124. package/dist/{tui-cli-B1R2UxjK.js → tui-cli-DYhd0RT6.js} +2 -2
  125. package/dist/{tui-cli-DXNQuXf_.js → tui-cli-Dscc8usx.js} +2 -2
  126. package/dist/{update-cli-BxaSmz5G.js → update-cli-BQIIdEwf.js} +11 -11
  127. package/dist/{update-cli-DEMP1mj0.js → update-cli-C-xMtbk9.js} +12 -12
  128. package/dist/{web-gSQnImv2.js → web-CIdW3A5E.js} +5 -5
  129. package/dist/{web-jg0rymdq.js → web-Ciz1i7yI.js} +6 -6
  130. package/dist/{web-D1CVLSCy.js → web-H55ayBNa.js} +5 -5
  131. package/dist/{web-YTTXENUe.js → web-aUEiU7C4.js} +5 -5
  132. package/package.json +1 -1
  133. package/dist/control-ui/assets/index-Cx1_w3YP.js.map +0 -1
@@ -21,11 +21,11 @@ import { a as isPathInsideWithRealpath } from "./legacy-names-u6U1_9U0.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BIWQkeih.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-paXd6zl5.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-DkWpm1Ly.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-Cj9tfO74.js";
26
26
  import { t as ensureOpenClawModelsJson } from "./models-config-BfWGJEDQ.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-Cx3WmubG.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-C4Annkh_.js";
29
29
  import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BouZCtAZ.js";
30
30
  import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DEbRGGI9.js";
31
31
  import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DHBkU5OM.js";
@@ -54,7 +54,7 @@ import { v as runTasksWithConcurrency } from "./sqlite-Bbubvc33.js";
54
54
  import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DdfszCL_.js";
55
55
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as isSilentReplyPrefixText, t as HEARTBEAT_TOKEN } from "./tokens-BDil8-Uk.js";
56
56
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-B1xlb1Xx.js";
57
- import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-Ct_AlJg5.js";
57
+ import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-J2cVd3TS.js";
58
58
  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-BvpClNOn.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
60
  import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-BvoyQqdG.js";
@@ -10413,7 +10413,7 @@ async function routeReply(params) {
10413
10413
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10414
10414
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10415
10415
  try {
10416
- const { deliverOutboundPayloads } = await import("./deliver-Ct_AlJg5.js").then((n) => n.n);
10416
+ const { deliverOutboundPayloads } = await import("./deliver-J2cVd3TS.js").then((n) => n.n);
10417
10417
  return {
10418
10418
  ok: true,
10419
10419
  messageId: (await deliverOutboundPayloads({
@@ -10909,6 +10909,9 @@ function createReplyDispatcherWithTyping(options) {
10909
10909
  typingController = typing;
10910
10910
  }
10911
10911
  },
10912
+ markRunComplete: () => {
10913
+ typingController?.markRunComplete();
10914
+ },
10912
10915
  markDispatchIdle: () => {
10913
10916
  typingController?.markDispatchIdle();
10914
10917
  onIdle?.();
@@ -10944,7 +10947,7 @@ async function dispatchInboundMessage(params) {
10944
10947
  });
10945
10948
  }
10946
10949
  async function dispatchInboundMessageWithBufferedDispatcher(params) {
10947
- const { dispatcher, replyOptions, markDispatchIdle } = createReplyDispatcherWithTyping(params.dispatcherOptions);
10950
+ const { dispatcher, replyOptions, markDispatchIdle, markRunComplete } = createReplyDispatcherWithTyping(params.dispatcherOptions);
10948
10951
  try {
10949
10952
  return await dispatchInboundMessage({
10950
10953
  ctx: params.ctx,
@@ -10957,6 +10960,7 @@ async function dispatchInboundMessageWithBufferedDispatcher(params) {
10957
10960
  }
10958
10961
  });
10959
10962
  } finally {
10963
+ markRunComplete();
10960
10964
  markDispatchIdle();
10961
10965
  }
10962
10966
  }
@@ -12963,7 +12967,7 @@ async function describeStickerImage(params) {
12963
12967
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12964
12968
  try {
12965
12969
  const buffer = await fs$1.readFile(imagePath);
12966
- const { describeImageWithModel } = await import("./image-paXd6zl5.js").then((n) => n.n);
12970
+ const { describeImageWithModel } = await import("./image-Cj9tfO74.js").then((n) => n.n);
12967
12971
  return (await describeImageWithModel({
12968
12972
  buffer,
12969
12973
  fileName: "sticker.webp",
@@ -15602,7 +15606,7 @@ async function preflightDiscordMessage(params) {
15602
15606
  let preflightTranscript;
15603
15607
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15604
15608
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15605
- const { transcribeFirstAudio } = await import("./audio-preflight-DESlWRvS.js");
15609
+ const { transcribeFirstAudio } = await import("./audio-preflight-UmMU18Rf.js");
15606
15610
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15607
15611
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15608
15612
  ctx: {
@@ -22291,7 +22295,7 @@ async function runWithImageModelFallback(params) {
22291
22295
  function createDefaultDeps() {
22292
22296
  return {
22293
22297
  sendMessageWhatsApp: async (...args) => {
22294
- const { sendMessageWhatsApp } = await import("./web-jg0rymdq.js");
22298
+ const { sendMessageWhatsApp } = await import("./web-Ciz1i7yI.js");
22295
22299
  return await sendMessageWhatsApp(...args);
22296
22300
  },
22297
22301
  sendMessageTelegram: async (...args) => {
@@ -38749,7 +38753,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
38749
38753
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
38750
38754
  let preflightTranscript;
38751
38755
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
38752
- const { transcribeFirstAudio } = await import("./audio-preflight-DESlWRvS.js");
38756
+ const { transcribeFirstAudio } = await import("./audio-preflight-UmMU18Rf.js");
38753
38757
  preflightTranscript = await transcribeFirstAudio({
38754
38758
  ctx: {
38755
38759
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -40915,7 +40919,7 @@ function loadWebLoginQr() {
40915
40919
  return webLoginQrPromise;
40916
40920
  }
40917
40921
  function loadWebChannel() {
40918
- webChannelPromise ??= import("./web-jg0rymdq.js");
40922
+ webChannelPromise ??= import("./web-Ciz1i7yI.js");
40919
40923
  return webChannelPromise;
40920
40924
  }
40921
40925
  function loadWhatsAppActions() {
@@ -70950,7 +70954,7 @@ async function deliverSessionMaintenanceWarning(params) {
70950
70954
  return;
70951
70955
  }
70952
70956
  try {
70953
- const { deliverOutboundPayloads } = await import("./deliver-Ct_AlJg5.js").then((n) => n.n);
70957
+ const { deliverOutboundPayloads } = await import("./deliver-J2cVd3TS.js").then((n) => n.n);
70954
70958
  await deliverOutboundPayloads({
70955
70959
  cfg: params.cfg,
70956
70960
  channel,
@@ -13,7 +13,7 @@ import "./client-DrK7aLru.js";
13
13
  import "./call-HzbpjcFE.js";
14
14
  import "./message-channel-CVHJDItx.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-C7ua7m8M.js";
16
+ import "./subagent-registry-DGNGenUN.js";
17
17
  import "./sessions-BVmrZrFA.js";
18
18
  import "./tokens-ANnYrShl.js";
19
19
  import "./plugins-BxYZzFkm.js";
@@ -23,13 +23,13 @@ import "./logging-CFvkxgcX.js";
23
23
  import "./send-mdCBM_lP.js";
24
24
  import "./send-ENOozmo1.js";
25
25
  import "./with-timeout-BJj1dns_.js";
26
- import "./deliver-BAjdrEoI.js";
26
+ import "./deliver-meQdcFaA.js";
27
27
  import "./diagnostic-C6WTf4ZE.js";
28
28
  import "./diagnostic-session-state-CIjIGxEE.js";
29
29
  import "./accounts-1gFWxwAw.js";
30
30
  import "./send-Dd6W68eD.js";
31
31
  import "./image-ops-CKJNUuNW.js";
32
- import "./pi-embedded-helpers-DOmGm3QX.js";
32
+ import "./pi-embedded-helpers-C_U_c_EU.js";
33
33
  import "./sandbox-BMaHJcKh.js";
34
34
  import "./chrome-DOT5Dxfr.js";
35
35
  import "./tailscale-BxzsxqAY.js";
@@ -65,9 +65,9 @@ import "./ir-DetFY9t5.js";
65
65
  import "./render-e7fENCYH.js";
66
66
  import "./commands-CDrOx1RO.js";
67
67
  import "./commands-registry-BcqdkMzV.js";
68
- import "./image-CvBYo9Bu.js";
68
+ import "./image-C8HOu4vb.js";
69
69
  import "./tool-display-DixohEVL.js";
70
- import { u as installUnhandledRejectionHandler } from "./runner-Be7-7BcC.js";
70
+ import { u as installUnhandledRejectionHandler } from "./runner-CbkB3vpb.js";
71
71
  import "./model-catalog-DzKq0MC2.js";
72
72
  import "./session-utils-DbIfE0Ek.js";
73
73
  import "./skill-commands-BdHYzdEB.js";
@@ -101,9 +101,9 @@ import { t as ensureOpenClawCliOnPath } from "./path-env-Co_fin1B.js";
101
101
  import "./catalog-Da8o-cxw.js";
102
102
  import "./note-DDecZomM.js";
103
103
  import "./plugin-auto-enable-BYE8fd4e.js";
104
- import { t as ensurePluginRegistryLoaded } from "./plugin-registry-CktL7kDf.js";
104
+ import { t as ensurePluginRegistryLoaded } from "./plugin-registry-BrN1y1ig.js";
105
105
  import { t as assertSupportedRuntime } from "./runtime-guard-Cs_ClFhP.js";
106
- import { t as emitCliBanner } from "./banner-DSmZ1r91.js";
106
+ import { t as emitCliBanner } from "./banner-l8hdGVT6.js";
107
107
  import "./doctor-config-flow-BIbWAooY.js";
108
108
  import { n as ensureConfigReady } from "./config-guard-CauD-RpD.js";
109
109
  import process$1 from "node:process";
@@ -118,7 +118,7 @@ const routeHealth = {
118
118
  const verbose = getVerboseFlag(argv, { includeDebug: true });
119
119
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
120
120
  if (timeoutMs === null) return false;
121
- const { healthCommand } = await import("./health-C1FEsrl3.js").then((n) => n.i);
121
+ const { healthCommand } = await import("./health-DEibfTDK.js").then((n) => n.i);
122
122
  await healthCommand({
123
123
  json,
124
124
  timeoutMs,
@@ -138,7 +138,7 @@ const routeStatus = {
138
138
  const verbose = getVerboseFlag(argv, { includeDebug: true });
139
139
  const timeoutMs = getPositiveIntFlagValue(argv, "--timeout");
140
140
  if (timeoutMs === null) return false;
141
- const { statusCommand } = await import("./status-Rw3st2w_.js").then((n) => n.t);
141
+ const { statusCommand } = await import("./status-DQEnKbht.js").then((n) => n.t);
142
142
  await statusCommand({
143
143
  json,
144
144
  deep,
@@ -172,7 +172,7 @@ const routeAgentsList = {
172
172
  run: async (argv) => {
173
173
  const json = hasFlag(argv, "--json");
174
174
  const bindings = hasFlag(argv, "--bindings");
175
- const { agentsListCommand } = await import("./agents-DBULaIPd.js").then((n) => n.t);
175
+ const { agentsListCommand } = await import("./agents-Acsw6oEr.js").then((n) => n.t);
176
176
  await agentsListCommand({
177
177
  json,
178
178
  bindings
@@ -243,7 +243,7 @@ const routes = [
243
243
  const pathArg = getCommandPositionals(argv)[2];
244
244
  if (!pathArg) return false;
245
245
  const json = hasFlag(argv, "--json");
246
- const { runConfigGet } = await import("./config-cli-C0De5m2w.js");
246
+ const { runConfigGet } = await import("./config-cli-CV3y1IAq.js");
247
247
  await runConfigGet({
248
248
  path: pathArg,
249
249
  json
@@ -256,7 +256,7 @@ const routes = [
256
256
  run: async (argv) => {
257
257
  const pathArg = getCommandPositionals(argv)[2];
258
258
  if (!pathArg) return false;
259
- const { runConfigUnset } = await import("./config-cli-C0De5m2w.js");
259
+ const { runConfigUnset } = await import("./config-cli-CV3y1IAq.js");
260
260
  await runConfigUnset({ path: pathArg });
261
261
  return true;
262
262
  }
@@ -270,7 +270,7 @@ const routes = [
270
270
  const local = hasFlag(argv, "--local");
271
271
  const json = hasFlag(argv, "--json");
272
272
  const plain = hasFlag(argv, "--plain");
273
- const { modelsListCommand } = await import("./models-D1lcFJXE.js").then((n) => n.t);
273
+ const { modelsListCommand } = await import("./models-DFRcZ415.js").then((n) => n.t);
274
274
  await modelsListCommand({
275
275
  all,
276
276
  local,
@@ -301,7 +301,7 @@ const routes = [
301
301
  const plain = hasFlag(argv, "--plain");
302
302
  const check = hasFlag(argv, "--check");
303
303
  const probe = hasFlag(argv, "--probe");
304
- const { modelsStatusCommand } = await import("./models-D1lcFJXE.js").then((n) => n.t);
304
+ const { modelsStatusCommand } = await import("./models-DFRcZ415.js").then((n) => n.t);
305
305
  await modelsStatusCommand({
306
306
  json,
307
307
  plain,
@@ -379,7 +379,7 @@ async function runCli(argv = process$1.argv) {
379
379
  assertSupportedRuntime();
380
380
  if (await tryRouteCli(normalizedArgv)) return;
381
381
  enableConsoleCapture();
382
- const { buildProgram } = await import("./program-CUQ4Dd4D.js");
382
+ const { buildProgram } = await import("./program-DlspJVqc.js");
383
383
  const program = buildProgram();
384
384
  installUnhandledRejectionHandler();
385
385
  process$1.on("uncaughtException", (error) => {
@@ -392,10 +392,10 @@ async function runCli(argv = process$1.argv) {
392
392
  const { getProgramContext } = await import("./program-context-5q-A0wbP.js").then((n) => n.n);
393
393
  const ctx = getProgramContext(program);
394
394
  if (ctx) {
395
- const { registerCoreCliByName } = await import("./command-registry-DTFv7rlA.js").then((n) => n.t);
395
+ const { registerCoreCliByName } = await import("./command-registry-hszLgVfh.js").then((n) => n.t);
396
396
  await registerCoreCliByName(program, ctx, primary, parseArgv);
397
397
  }
398
- const { registerSubCliByName } = await import("./register.subclis-CNgqotfk.js").then((n) => n.a);
398
+ const { registerSubCliByName } = await import("./register.subclis-m5WJHhwT.js").then((n) => n.a);
399
399
  await registerSubCliByName(program, primary);
400
400
  }
401
401
  if (!shouldSkipPluginCommandRegistration({
@@ -403,7 +403,7 @@ async function runCli(argv = process$1.argv) {
403
403
  primary,
404
404
  hasBuiltinPrimary: primary !== null && program.commands.some((command) => command.name() === primary)
405
405
  })) {
406
- const { registerPluginCliCommands } = await import("./cli-BMvkWAfY.js");
406
+ const { registerPluginCliCommands } = await import("./cli-BjW27QBR.js");
407
407
  const { loadConfig } = await import("./config-26MDXfhB.js").then((n) => n.t);
408
408
  registerPluginCliCommands(program, loadConfig());
409
409
  }
@@ -4,7 +4,7 @@ import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
4
4
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-a409QR1G.js";
5
5
  import { A as normalizeProviderId, L as normalizeGoogleModelId, i as resolveApiKeyForProvider, r as requireApiKey, y as resolveOpenClawAgentDir } from "./model-auth-CpS0Gv-Z.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-DN88A7od.js";
7
- import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-D-DzmVjC.js";
7
+ import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-BZOs5dHY.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-CutEI69q.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-DL3f_O53.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-_DAtnv-O.js";
@@ -9,7 +9,7 @@ import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-L2NTusph.js";
10
10
  import { t as fetchWithSsrFGuard } from "./fetch-guard-Dp7VnmeK.js";
11
11
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, r as MediaFetchError } from "./local-roots-D1AxWVCq.js";
12
- import { t as describeImageWithModel } from "./image-CvBYo9Bu.js";
12
+ import { t as describeImageWithModel } from "./image-C8HOu4vb.js";
13
13
  import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DzKq0MC2.js";
14
14
  import process$1 from "node:process";
15
15
  import os from "node:os";
@@ -3,7 +3,7 @@ import { n as runExec } from "./exec-BmMB8-Xs.js";
3
3
  import { E as normalizeGoogleModelId, K as requireApiKey, l as normalizeProviderId, q as resolveApiKeyForProvider } from "./model-selection-DneICMfS.js";
4
4
  import { _ as isInboundPathAllowed, g as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, v as mergeInboundPathRoots, y as resolveIMessageAttachmentRoots } from "./config-DuSkPZEG.js";
5
5
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
6
- import { t as describeImageWithModel } from "./image-paXd6zl5.js";
6
+ import { t as describeImageWithModel } from "./image-Cj9tfO74.js";
7
7
  import { r as formatUncaughtError, t as extractErrorCode } from "./errors-BF3TeRH2.js";
8
8
  import { c as detectMime, f as isAudioFileName, m as kindFromMime, u as getFileExtension } from "./image-ops-BGwGL0tP.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-Db3da8yR.js";
@@ -4,7 +4,7 @@ import { G as resolveOpenClawAgentDir, T as resolveApiKeyForProvider, c as norma
4
4
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
5
5
  import { _ as kindFromMime, d as detectMime, h as isAudioFileName, p as getFileExtension } from "./image-ops-BJidZpId.js";
6
6
  import { d as DEFAULT_IMESSAGE_ATTACHMENT_ROOTS, f as isInboundPathAllowed, m as resolveIMessageAttachmentRoots, n as loadConfig, p as mergeInboundPathRoots } from "./config-Bj1BETyH.js";
7
- import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-DfOLBle4.js";
7
+ import { S as ensureOpenClawModelsJson, t as describeImageWithModel } from "./image-DuT8yGCI.js";
8
8
  import { n as collectProviderApiKeysForExecution, r as executeWithApiKeyRotation, t as parseGeminiAuth } from "./gemini-auth-7_-6Idt9.js";
9
9
  import { n as fetchWithTimeout } from "./fetch-timeout-BheTNyes.js";
10
10
  import { i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, r as MediaFetchError } from "./local-roots-DRK3CmRg.js";
@@ -1,7 +1,7 @@
1
1
  import "./paths-B4BZAPZh.js";
2
2
  import "./utils-BlC2Fskb.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { At as agentCommand, C as loadSessionEntry, It as resolveOutboundTarget, Rt as createOutboundSendDeps, T as resolveGatewaySessionStoreTarget, dt as requestHeartbeatNow, vr as enqueueSystemEvent, w as pruneLegacyStoreKeys } from "./reply-BpeNwiEB.js";
4
+ import { At as agentCommand, C as loadSessionEntry, It as resolveOutboundTarget, Rt as createOutboundSendDeps, T as resolveGatewaySessionStoreTarget, dt as requestHeartbeatNow, vr as enqueueSystemEvent, w as pruneLegacyStoreKeys } from "./reply-V8UXM1XU.js";
5
5
  import { c as normalizeMainKey } from "./session-key-DCt45XZa.js";
6
6
  import "./registry-Dygi7Azw.js";
7
7
  import { f as defaultRuntime } from "./subsystem-8bY95KEB.js";
@@ -15,11 +15,11 @@ import "./message-channel-v74IfRaS.js";
15
15
  import "./send-Q-CNReiC.js";
16
16
  import { i as loadConfig } from "./config-DuSkPZEG.js";
17
17
  import "./manifest-registry-YRUqEw3J.js";
18
- import "./runner-BIWQkeih.js";
19
- import "./image-paXd6zl5.js";
18
+ import "./runner-DkWpm1Ly.js";
19
+ import "./image-Cj9tfO74.js";
20
20
  import "./models-config-BfWGJEDQ.js";
21
21
  import "./pi-model-discovery-4uUnLc3n.js";
22
- import "./pi-embedded-helpers-Cx3WmubG.js";
22
+ import "./pi-embedded-helpers-C4Annkh_.js";
23
23
  import "./sandbox-BouZCtAZ.js";
24
24
  import "./chrome-DEbRGGI9.js";
25
25
  import "./tailscale-pku0epOI.js";
@@ -56,7 +56,7 @@ import "./sqlite-Bbubvc33.js";
56
56
  import "./model-catalog-DdfszCL_.js";
57
57
  import "./tokens-BDil8-Uk.js";
58
58
  import "./with-timeout-B1xlb1Xx.js";
59
- import { t as deliverOutboundPayloads } from "./deliver-Ct_AlJg5.js";
59
+ import { t as deliverOutboundPayloads } from "./deliver-J2cVd3TS.js";
60
60
  import "./diagnostic-BvpClNOn.js";
61
61
  import "./diagnostic-session-state-CUslJyKP.js";
62
62
  import "./send-BvoyQqdG.js";
@@ -102,7 +102,7 @@ import "./control-service-15g6Mag4.js";
102
102
  import "./stagger-B6VQyn1F.js";
103
103
  import "./channel-selection-DJMsTQqp.js";
104
104
  import "./pi-tools.policy-yLrAeeZu.js";
105
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BLl3-YNl.js";
105
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-BTcu7pip.js";
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  //#region src/gateway/server-node-events.ts
@@ -14,7 +14,7 @@ import "./client-DrK7aLru.js";
14
14
  import "./call-HzbpjcFE.js";
15
15
  import "./message-channel-CVHJDItx.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { C as agentCommand, D as createOutboundSendDeps, bn as enqueueSystemEvent, cn as requestHeartbeatNow, ct as resolveOutboundTarget } from "./subagent-registry-C7ua7m8M.js";
17
+ import { C as agentCommand, D as createOutboundSendDeps, bn as enqueueSystemEvent, cn as requestHeartbeatNow, ct as resolveOutboundTarget } from "./subagent-registry-DGNGenUN.js";
18
18
  import { d as updateSessionStore } from "./sessions-BVmrZrFA.js";
19
19
  import "./tokens-ANnYrShl.js";
20
20
  import { r as normalizeChannelId } from "./plugins-BxYZzFkm.js";
@@ -24,13 +24,13 @@ import "./logging-CFvkxgcX.js";
24
24
  import "./send-mdCBM_lP.js";
25
25
  import "./send-ENOozmo1.js";
26
26
  import "./with-timeout-BJj1dns_.js";
27
- import { t as deliverOutboundPayloads } from "./deliver-BAjdrEoI.js";
27
+ import { t as deliverOutboundPayloads } from "./deliver-meQdcFaA.js";
28
28
  import "./diagnostic-C6WTf4ZE.js";
29
29
  import "./diagnostic-session-state-CIjIGxEE.js";
30
30
  import "./accounts-1gFWxwAw.js";
31
31
  import "./send-Dd6W68eD.js";
32
32
  import "./image-ops-CKJNUuNW.js";
33
- import "./pi-embedded-helpers-DOmGm3QX.js";
33
+ import "./pi-embedded-helpers-C_U_c_EU.js";
34
34
  import "./sandbox-BMaHJcKh.js";
35
35
  import "./chrome-DOT5Dxfr.js";
36
36
  import "./tailscale-BxzsxqAY.js";
@@ -66,9 +66,9 @@ import "./ir-DetFY9t5.js";
66
66
  import "./render-e7fENCYH.js";
67
67
  import "./commands-CDrOx1RO.js";
68
68
  import "./commands-registry-BcqdkMzV.js";
69
- import "./image-CvBYo9Bu.js";
69
+ import "./image-C8HOu4vb.js";
70
70
  import "./tool-display-DixohEVL.js";
71
- import "./runner-Be7-7BcC.js";
71
+ import "./runner-CbkB3vpb.js";
72
72
  import "./model-catalog-DzKq0MC2.js";
73
73
  import { c as resolveGatewaySessionStoreTarget, o as loadSessionEntry, s as pruneLegacyStoreKeys } from "./session-utils-DbIfE0Ek.js";
74
74
  import "./skill-commands-BdHYzdEB.js";
@@ -98,7 +98,7 @@ import "./onboard-helpers-C_gnSpDO.js";
98
98
  import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D9Xcaajc.js";
100
100
  import "./pi-tools.policy-DSLVZzX5.js";
101
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-DzvwLYLa.js";
101
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CSSSwhDY.js";
102
102
  import { randomUUID } from "node:crypto";
103
103
 
104
104
  //#region src/gateway/server-node-events.ts
@@ -1,5 +1,5 @@
1
1
  import { h as pathExists } from "./utils-BlC2Fskb.js";
2
- import { K as trimLogTail } from "./reply-BpeNwiEB.js";
2
+ import { K as trimLogTail } from "./reply-V8UXM1XU.js";
3
3
  import { t as runCommandWithTimeout } from "./exec-BmMB8-Xs.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-d_j0Pdnj.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-B-fJT8wY.js";
@@ -1,6 +1,6 @@
1
1
  import { nt as pathExists } from "./entry.js";
2
2
  import { t as runCommandWithTimeout } from "./exec-CBKBIMpA.js";
3
- import { bt as trimLogTail } from "./subagent-registry-C7ua7m8M.js";
3
+ import { bt as trimLogTail } from "./subagent-registry-DGNGenUN.js";
4
4
  import { n as resolveControlUiDistIndexHealth, r as resolveControlUiDistIndexPathForRoot } from "./control-ui-assets-Yp3N6NZ_.js";
5
5
  import { c as DEFAULT_PACKAGE_CHANNEL, f as isBetaTag, l as DEV_BRANCH, n as compareSemverStrings, o as detectPackageManager$1, p as isStableTag, u as channelToNpmTag } from "./update-check-DfBZVR4k.js";
6
6
  import os from "node:os";
@@ -1,6 +1,6 @@
1
1
  import { u as resolveGatewayPort } from "./paths-B4BZAPZh.js";
2
2
  import { B as theme, k as info, z as isRich } from "./utils-BlC2Fskb.js";
3
- import { E as resolveSessionModelRef, G as summarizeRestartSentinel, W as readRestartSentinel, a as buildChannelSummary, b as listAgentsForGateway, bt as loadProviderUsageSummary, o as buildChannelAccountSnapshot, qt as sha256HexPrefix, s as formatChannelAllowFrom, ur as lookupContextTokens, xr as peekSystemEvents, xt as formatUsageReportLines, y as classifySessionKey } from "./reply-BpeNwiEB.js";
3
+ import { E as resolveSessionModelRef, G as summarizeRestartSentinel, W as readRestartSentinel, a as buildChannelSummary, b as listAgentsForGateway, bt as loadProviderUsageSummary, o as buildChannelAccountSnapshot, qt as sha256HexPrefix, s as formatChannelAllowFrom, ur as lookupContextTokens, xr as peekSystemEvents, xt as formatUsageReportLines, y as classifySessionKey } from "./reply-V8UXM1XU.js";
4
4
  import { S as parseAgentSessionKey } from "./session-key-DCt45XZa.js";
5
5
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-CQJwyH9q.js";
6
6
  import { n as runExec } from "./exec-BmMB8-Xs.js";
@@ -28,7 +28,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-BHt4ST_m.j
28
28
  import { t as readLastGatewayErrorLine } from "./diagnostics-CSOaBA1c.js";
29
29
  import { t as renderTable } from "./table-i7J9YlN5.js";
30
30
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-BYAONEme.js";
31
- import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-DB9FsqfO.js";
31
+ import { a as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-BfWYn33I.js";
32
32
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-B-fJT8wY.js";
33
33
  import { t as resolveNodeService } from "./node-service-Da4wpz30.js";
34
34
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-DNqZrSx7.js";
@@ -1,4 +1,4 @@
1
- import { gt as loadOpenClawPlugins, ht as createPluginLoaderLogger } from "./reply-BpeNwiEB.js";
1
+ import { gt as loadOpenClawPlugins, ht as createPluginLoaderLogger } from "./reply-V8UXM1XU.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
3
3
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-Dl-vG2QO.js";
4
4
  import { i as loadConfig } from "./config-DuSkPZEG.js";
@@ -1,7 +1,7 @@
1
1
  import { o as createSubsystemLogger } from "./entry.js";
2
2
  import { D as resolveDefaultAgentWorkspaceDir, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BhZr1_OI.js";
3
3
  import { i as loadConfig } from "./config-26MDXfhB.js";
4
- import { g as loadOpenClawPlugins, h as createPluginLoaderLogger } from "./subagent-registry-C7ua7m8M.js";
4
+ import { g as loadOpenClawPlugins, h as createPluginLoaderLogger } from "./subagent-registry-DGNGenUN.js";
5
5
 
6
6
  //#region src/plugins/status.ts
7
7
  const log = createSubsystemLogger("plugins");
@@ -9,7 +9,7 @@ import { c as resolveAgentWorkspaceDir } from "./agent-scope-BhZr1_OI.js";
9
9
  import { t as buildWorkspaceSkillStatus } from "./skills-status-CMdWT0WL.js";
10
10
  import { H as VERSION, i as loadConfig, o as readConfigFileSnapshot } from "./config-26MDXfhB.js";
11
11
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-HzbpjcFE.js";
12
- import { $ as sha256HexPrefix, Cn as peekSystemEvents, an as buildChannelAccountSnapshot, en as loadProviderUsageSummary, in as buildChannelSummary, on as formatChannelAllowFrom, tn as formatUsageReportLines, vt as readRestartSentinel, yt as summarizeRestartSentinel } from "./subagent-registry-C7ua7m8M.js";
12
+ import { $ as sha256HexPrefix, Cn as peekSystemEvents, an as buildChannelAccountSnapshot, en as loadProviderUsageSummary, in as buildChannelSummary, on as formatChannelAllowFrom, tn as formatUsageReportLines, vt as readRestartSentinel, yt as summarizeRestartSentinel } from "./subagent-registry-DGNGenUN.js";
13
13
  import { F as resolveMainSessionKey, j as resolveFreshSessionTotalTokens, o as loadSessionStore } from "./sessions-BVmrZrFA.js";
14
14
  import { n as listChannelPlugins } from "./plugins-BxYZzFkm.js";
15
15
  import { o as getTailnetHostname, s as readTailscaleStatusJson } from "./tailscale-BxzsxqAY.js";
@@ -29,7 +29,7 @@ import { t as formatRuntimeStatusWithDetails } from "./runtime-status-D6c3G7my.j
29
29
  import { t as readLastGatewayErrorLine } from "./diagnostics-CqEodocN.js";
30
30
  import { t as renderTable } from "./table-C9BoE_4p.js";
31
31
  import { a as resolveGatewayProbeAuth$1, c as probeGateway, t as runSecurityAudit } from "./audit-C1XET3ZE.js";
32
- import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-C1FEsrl3.js";
32
+ import { o as resolveHeartbeatSummaryForAgent, t as formatHealthChannelLines } from "./health-DEibfTDK.js";
33
33
  import { g as resolveUpdateChannelDisplay, i as formatGitInstallLabel, m as normalizeUpdateChannel, t as checkUpdateStatus } from "./update-check-DfBZVR4k.js";
34
34
  import { t as resolveNodeService } from "./node-service-B1F4gM4E.js";
35
35
  import { n as redactSecrets, t as formatGatewayAuthUsed } from "./format-B0yJsjEo.js";
@@ -26,13 +26,13 @@ import { t as normalizeChatType } from "./chat-type-CeFzWU-6.js";
26
26
  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-mdCBM_lP.js";
27
27
  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-ENOozmo1.js";
28
28
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-BJj1dns_.js";
29
- 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-BAjdrEoI.js";
29
+ 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-meQdcFaA.js";
30
30
  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-C6WTf4ZE.js";
31
31
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CIjIGxEE.js";
32
32
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-1gFWxwAw.js";
33
33
  import { A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as parseTelegramTarget, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-Dd6W68eD.js";
34
34
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-CKJNUuNW.js";
35
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DOmGm3QX.js";
35
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-C_U_c_EU.js";
36
36
  import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BMaHJcKh.js";
37
37
  import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-DOT5Dxfr.js";
38
38
  import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-BWFv14tV.js";
@@ -62,11 +62,11 @@ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMedia
62
62
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DetFY9t5.js";
63
63
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-CDrOx1RO.js";
64
64
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-BcqdkMzV.js";
65
- import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, 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, y as stripReasoningTagsFromText } from "./image-CvBYo9Bu.js";
65
+ import { _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as extractTextFromChatContent, 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, y as stripReasoningTagsFromText } from "./image-C8HOu4vb.js";
66
66
  import { n as resolveToolDisplay } from "./tool-display-DixohEVL.js";
67
67
  import { n as formatTimeAgo } from "./format-relative-DX-rh76l.js";
68
68
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-72dOKfLG.js";
69
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-Be7-7BcC.js";
69
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-CbkB3vpb.js";
70
70
  import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DzKq0MC2.js";
71
71
  import { a as loadCombinedSessionStoreForGateway, u as lookupContextTokens } from "./session-utils-DbIfE0Ek.js";
72
72
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-BdHYzdEB.js";
@@ -20291,7 +20291,7 @@ async function routeReply(params) {
20291
20291
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
20292
20292
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
20293
20293
  try {
20294
- const { deliverOutboundPayloads } = await import("./deliver-BAjdrEoI.js").then((n) => n.n);
20294
+ const { deliverOutboundPayloads } = await import("./deliver-meQdcFaA.js").then((n) => n.n);
20295
20295
  return {
20296
20296
  ok: true,
20297
20297
  messageId: (await deliverOutboundPayloads({
@@ -34849,7 +34849,7 @@ async function deliverSessionMaintenanceWarning(params) {
34849
34849
  return;
34850
34850
  }
34851
34851
  try {
34852
- const { deliverOutboundPayloads } = await import("./deliver-BAjdrEoI.js").then((n) => n.n);
34852
+ const { deliverOutboundPayloads } = await import("./deliver-meQdcFaA.js").then((n) => n.n);
34853
34853
  await deliverOutboundPayloads({
34854
34854
  cfg: params.cfg,
34855
34855
  channel,
@@ -36246,6 +36246,9 @@ function createReplyDispatcherWithTyping(options) {
36246
36246
  typingController = typing;
36247
36247
  }
36248
36248
  },
36249
+ markRunComplete: () => {
36250
+ typingController?.markRunComplete();
36251
+ },
36249
36252
  markDispatchIdle: () => {
36250
36253
  typingController?.markDispatchIdle();
36251
36254
  onIdle?.();
@@ -36281,7 +36284,7 @@ async function dispatchInboundMessage(params) {
36281
36284
  });
36282
36285
  }
36283
36286
  async function dispatchInboundMessageWithBufferedDispatcher(params) {
36284
- const { dispatcher, replyOptions, markDispatchIdle } = createReplyDispatcherWithTyping(params.dispatcherOptions);
36287
+ const { dispatcher, replyOptions, markDispatchIdle, markRunComplete } = createReplyDispatcherWithTyping(params.dispatcherOptions);
36285
36288
  try {
36286
36289
  return await dispatchInboundMessage({
36287
36290
  ctx: params.ctx,
@@ -36294,6 +36297,7 @@ async function dispatchInboundMessageWithBufferedDispatcher(params) {
36294
36297
  }
36295
36298
  });
36296
36299
  } finally {
36300
+ markRunComplete();
36297
36301
  markDispatchIdle();
36298
36302
  }
36299
36303
  }
@@ -38300,7 +38304,7 @@ async function describeStickerImage(params) {
38300
38304
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
38301
38305
  try {
38302
38306
  const buffer = await fs$1.readFile(imagePath);
38303
- const { describeImageWithModel } = await import("./image-CvBYo9Bu.js").then((n) => n.n);
38307
+ const { describeImageWithModel } = await import("./image-C8HOu4vb.js").then((n) => n.n);
38304
38308
  return (await describeImageWithModel({
38305
38309
  buffer,
38306
38310
  fileName: "sticker.webp",
@@ -40099,7 +40103,7 @@ async function preflightDiscordMessage(params) {
40099
40103
  let preflightTranscript;
40100
40104
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
40101
40105
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
40102
- const { transcribeFirstAudio } = await import("./audio-preflight-DUN77LMG.js");
40106
+ const { transcribeFirstAudio } = await import("./audio-preflight-DTxmK1ti.js");
40103
40107
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
40104
40108
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
40105
40109
  ctx: {
@@ -44105,7 +44109,7 @@ function isVoiceChannelType(type) {
44105
44109
  function createDefaultDeps() {
44106
44110
  return {
44107
44111
  sendMessageWhatsApp: async (...args) => {
44108
- const { sendMessageWhatsApp } = await import("./web-D1CVLSCy.js");
44112
+ const { sendMessageWhatsApp } = await import("./web-H55ayBNa.js");
44109
44113
  return await sendMessageWhatsApp(...args);
44110
44114
  },
44111
44115
  sendMessageTelegram: async (...args) => {
@@ -57316,7 +57320,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
57316
57320
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
57317
57321
  let preflightTranscript;
57318
57322
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
57319
- const { transcribeFirstAudio } = await import("./audio-preflight-DUN77LMG.js");
57323
+ const { transcribeFirstAudio } = await import("./audio-preflight-DTxmK1ti.js");
57320
57324
  preflightTranscript = await transcribeFirstAudio({
57321
57325
  ctx: {
57322
57326
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -59482,7 +59486,7 @@ function loadWebLoginQr() {
59482
59486
  return webLoginQrPromise;
59483
59487
  }
59484
59488
  function loadWebChannel() {
59485
- webChannelPromise ??= import("./web-D1CVLSCy.js");
59489
+ webChannelPromise ??= import("./web-H55ayBNa.js");
59486
59490
  return webChannelPromise;
59487
59491
  }
59488
59492
  function loadWhatsAppActions() {
@@ -4,7 +4,7 @@ import { l as stripAnsi, u as visibleWidth } from "./subsystem-8bY95KEB.js";
4
4
  import { l as resolveDefaultAgentId } from "./agent-scope-Dl-vG2QO.js";
5
5
  import { f as GATEWAY_CLIENT_CAPS, h as GATEWAY_CLIENT_NAMES, m as GATEWAY_CLIENT_MODES } from "./message-channel-v74IfRaS.js";
6
6
  import { H as VERSION, i as loadConfig } from "./config-DuSkPZEG.js";
7
- import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-Cx3WmubG.js";
7
+ import { _ as formatRawAssistantErrorForUi } from "./pi-embedded-helpers-C4Annkh_.js";
8
8
  import { k as stripLeadingInboundMetadata } from "./sessions-BXbSUMYn.js";
9
9
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-2OmEbBUF.js";
10
10
  import { a as listChatCommandsForConfig, i as listChatCommands } from "./commands-registry-8sqWxuMh.js";