@hanzo/bot 2026.3.11 → 2026.3.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 (169) hide show
  1. package/dist/{accounts-cApXM7Ij.js → accounts-BfUDrXkg.js} +17 -17
  2. package/dist/{accounts-7zwrtsCi.js → accounts-CU6IpCdO.js} +2 -2
  3. package/dist/{accounts-BEs2omoE.js → accounts-CvwEUGLi.js} +2 -2
  4. package/dist/{active-listener-DR8OFowd.js → active-listener-BrRv4Xwc.js} +2 -2
  5. package/dist/{api-key-rotation-RknBrUrn.js → api-key-rotation-GaH2pQmb.js} +2 -2
  6. package/dist/{audio-preflight-Chfaq_QP.js → audio-preflight-ClPkYtiy.js} +32 -32
  7. package/dist/{audio-preflight-D2ryNxLv.js → audio-preflight-hEJ-K1Ib.js} +4 -4
  8. package/dist/{audio-transcription-runner-BI-TLd1r.js → audio-transcription-runner-CqUAFMxM.js} +1 -1
  9. package/dist/{audio-transcription-runner-BvSPpIzU.js → audio-transcription-runner-DcmYYRTV.js} +12 -12
  10. package/dist/{audit-membership-runtime-CVVxrZ7j.js → audit-membership-runtime-BJ149bTU.js} +4 -4
  11. package/dist/build-info.json +3 -3
  12. package/dist/bundled/boot-md/handler.js +51 -51
  13. package/dist/bundled/bootstrap-extra-files/handler.js +6 -6
  14. package/dist/bundled/command-logger/handler.js +2 -2
  15. package/dist/bundled/session-memory/handler.js +51 -51
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-activity-CALqzTg5.js → channel-activity-BtB_KYWB.js} +3 -3
  18. package/dist/{chrome-CFVzlBUF.js → chrome-CiH9yYg6.js} +18 -18
  19. package/dist/{chrome-DWoTm_BG.js → chrome-jdOx2dAl.js} +8 -8
  20. package/dist/{cloud-connect-bZKXaJWj.js → cloud-connect-yv8A2P84.js} +1 -1
  21. package/dist/{commands-registry-DD9ywdfc.js → commands-registry-CYzULUtG.js} +4 -4
  22. package/dist/{deliver-B2IvdEAO.js → deliver-CQ6QaVna.js} +21 -21
  23. package/dist/{deliver-BrVS3qD4.js → deliver-DpRQLcxS.js} +1 -1
  24. package/dist/{deliver-runtime-y426rL_k.js → deliver-runtime-9qy2zTFN.js} +3 -3
  25. package/dist/deliver-runtime-AIl3Ydhb.js +36 -0
  26. package/dist/deps-send-discord.runtime-BCKKTBVj.js +26 -0
  27. package/dist/deps-send-imessage.runtime-CrYNg1e_.js +25 -0
  28. package/dist/deps-send-signal.runtime-rttQOioa.js +24 -0
  29. package/dist/deps-send-slack.runtime-BsCUhMAR.js +22 -0
  30. package/dist/deps-send-telegram.runtime-sOFkXXMD.js +27 -0
  31. package/dist/deps-send-whatsapp.runtime-B4PrMybd.js +60 -0
  32. package/dist/{deps-send-whatsapp.runtime-CUDRJQI6.js → deps-send-whatsapp.runtime-CZEk5mx7.js} +7 -7
  33. package/dist/{diagnostic-pXxnbxER.js → diagnostic-Dt3OGXoB.js} +2 -2
  34. package/dist/entry.js +1 -1
  35. package/dist/{errors-CHd6Q-vF.js → errors-DDrhcWHi.js} +1 -1
  36. package/dist/extensionAPI.js +6 -6
  37. package/dist/{fetch-DZVswJ-3.js → fetch-C7bGdK_0.js} +5 -5
  38. package/dist/{fetch-guard-EqKIhwBB.js → fetch-guard-Danf_0St.js} +2 -2
  39. package/dist/{frontmatter-B6XNqDx2.js → frontmatter-BFHzrAY7.js} +3 -3
  40. package/dist/{fs-safe-ClYE3-y0.js → fs-safe-Cou1ijNV.js} +4 -4
  41. package/dist/{github-copilot-token-BDioPmd6.js → github-copilot-token-D13V9YBz.js} +7 -7
  42. package/dist/{image-BgWMM5C3.js → image-Cw0N8PLF.js} +6 -6
  43. package/dist/{image-D99xLnGA.js → image-YeyG7rr8.js} +1 -1
  44. package/dist/{image-ops-DGh7juCd.js → image-ops-C23SGeMe.js} +2 -2
  45. package/dist/image-runtime-BTWt5pDL.js +29 -0
  46. package/dist/{image-runtime-BHiX93k-.js → image-runtime-DZ9BSPkK.js} +3 -3
  47. package/dist/{ir-BUxTWPJl.js → ir-CeK8iZwE.js} +8 -8
  48. package/dist/{legacy-names-DZdACm3t.js → legacy-names-Bkl4tjN-.js} +1 -1
  49. package/dist/llm-slug-generator.js +51 -51
  50. package/dist/{local-launch-DO77bp0N.js → local-launch-CUwfR4xk.js} +29 -9
  51. package/dist/{logger-LCC1m_20.js → logger-D4RcXHR-.js} +7 -7
  52. package/dist/{login-BPpT7LmW.js → login-CHghmysG.js} +5 -5
  53. package/dist/{login-qr-ROsDrMTV.js → login-qr-CNFNhTf4.js} +10 -10
  54. package/dist/{manager-DcZ7mOtr.js → manager-DD6mzJNU.js} +13 -13
  55. package/dist/manager-runtime-Daqs8hiB.js +18 -0
  56. package/dist/{model-selection-DX7XfNlF.js → model-selection-CLGE3YIs.js} +43 -43
  57. package/dist/{outbound-attachment-CC04mCS8.js → outbound-attachment-gUN8NzLf.js} +2 -2
  58. package/dist/{outbound-CQ5XVDFO.js → outbound-qbvc4GA6.js} +6 -6
  59. package/dist/{path-alias-guards-IQC4IpGS.js → path-alias-guards-BzNEeFKJ.js} +1 -1
  60. package/dist/{paths-GZsDv0mI.js → paths-0WxUzzEz.js} +4 -4
  61. package/dist/{paths-Cvc9EM8Y.js → paths-C6TxBCvO.js} +5 -5
  62. package/dist/{pi-embedded-bHDdzvEW.js → pi-embedded-DF0t5HJD.js} +159 -159
  63. package/dist/{pi-embedded-DoF5GLjn.js → pi-embedded-bklbT-yp.js} +24 -24
  64. package/dist/{pi-embedded-helpers-CVj2Bw45.js → pi-embedded-helpers-BT9OkmaI.js} +52 -52
  65. package/dist/{pi-embedded-helpers-DkZKaPa4.js → pi-embedded-helpers-CSHUPpwW.js} +3 -3
  66. package/dist/pi-model-discovery-runtime-C9astVbX.js +11 -0
  67. package/dist/{pi-model-discovery-BYBYqQ0u.js → pi-model-discovery-vsJpfYA9.js} +7 -7
  68. package/dist/{pi-tools.before-tool-call.runtime-BiTed3Jt.js → pi-tools.before-tool-call.runtime-D-Vj4eZ7.js} +9 -9
  69. package/dist/plugin-sdk/discord.js +6 -6
  70. package/dist/plugin-sdk/mattermost.js +3 -3
  71. package/dist/{plugins-DB-tbkgl.js → plugins-BZY4UQdP.js} +13 -13
  72. package/dist/{proxy-env-CiOhiqru.js → proxy-env-BgSzvACM.js} +1 -1
  73. package/dist/{proxy-fetch-lxJGuoUa.js → proxy-fetch-ChfJDZwG.js} +1 -1
  74. package/dist/{pw-ai-Mq6HuD9y.js → pw-ai-C99W41P5.js} +1 -1
  75. package/dist/{pw-ai-WtE5uJRQ.js → pw-ai-CaeuHJYc.js} +14 -14
  76. package/dist/{qmd-manager-Bcw2cb8D.js → qmd-manager-IaHGjYlf.js} +10 -10
  77. package/dist/{query-expansion-D9bYNybh.js → query-expansion-CzkZbxDS.js} +6 -6
  78. package/dist/{redact-DqlKR0-n.js → redact-DGz6yigq.js} +1 -1
  79. package/dist/{run-main-BDJMRMI4.js → run-main-BmfZLBd9.js} +2 -2
  80. package/dist/{run-with-concurrency-B8f7bYi3.js → run-with-concurrency-Ccm0w34R.js} +4 -4
  81. package/dist/runtime-whatsapp-login.runtime-BQjNpkbA.js +13 -0
  82. package/dist/runtime-whatsapp-outbound.runtime-GVjcQLWE.js +22 -0
  83. package/dist/{send-CkPIBk6V.js → send-BRWGalFX.js} +8 -8
  84. package/dist/{send-BftnuVa7.js → send-CYoz4Xjy.js} +7 -7
  85. package/dist/{send-D9k6sRe5.js → send-Cpd5Q5mD.js} +6 -6
  86. package/dist/{send-yLSU7X_F.js → send-Dsz28eiu.js} +28 -28
  87. package/dist/{send-pIawmzTN.js → send-tBfK5Za7.js} +5 -5
  88. package/dist/{session-CgL23zvS.js → session-Dn8bzB0l.js} +8 -8
  89. package/dist/{skill-commands-Cnz3QjWm.js → skill-commands-LO2hG7Hm.js} +9 -9
  90. package/dist/{skills-BhLAW7lA.js → skills-mpCKgKof.js} +22 -22
  91. package/dist/slash-commands.runtime-Qho-6_Lc.js +16 -0
  92. package/dist/{slash-dispatch.runtime-BI4kyhSk.js → slash-dispatch.runtime-CLPlz-lX.js} +6 -6
  93. package/dist/slash-dispatch.runtime-CkR-TldC.js +56 -0
  94. package/dist/slash-skill-commands.runtime-DmrTozXn.js +20 -0
  95. package/dist/{store-EDjci9yP.js → store-DbpT7v8D.js} +2 -2
  96. package/dist/subagent-registry-runtime-DWAZpHqO.js +56 -0
  97. package/dist/{subagent-registry-runtime-nzkRCNeS.js → subagent-registry-runtime-TuyVULIb.js} +6 -6
  98. package/dist/{subsystem-CdFYjh2k.js → subsystem-W834z9Wa.js} +14 -14
  99. package/dist/{tables-tp9Zl0hI.js → tables-BpeU6RzS.js} +1 -1
  100. package/dist/{target-errors-3YX3buv4.js → target-errors-Dcsvl3HX.js} +2 -2
  101. package/dist/{thinking-BaTRgLOg.js → thinking-DzbkyD99.js} +7 -7
  102. package/dist/{tokens-mtgzW7UN.js → tokens-Cyi-NbsV.js} +1 -1
  103. package/dist/{tool-images-C3-c00jy.js → tool-images-DktJ_8C5.js} +2 -2
  104. package/dist/{web-BOPbMZux.js → web-BByXTa4p.js} +55 -55
  105. package/dist/{web-72kt7sM1.js → web-Ci3EFOGu.js} +6 -6
  106. package/dist/{whatsapp-actions-BQWT_h74.js → whatsapp-actions-BK9m2IVX.js} +21 -21
  107. package/dist/{workspace-DKhOowSl.js → workspace-BhNk7PBH.js} +20 -20
  108. package/extensions/acpx/package.json +1 -1
  109. package/extensions/bluebubbles/package.json +1 -1
  110. package/extensions/ci-fix-loop/package.json +1 -1
  111. package/extensions/continuous-learning/package.json +1 -1
  112. package/extensions/copilot-proxy/package.json +1 -1
  113. package/extensions/diagnostics-otel/package.json +1 -1
  114. package/extensions/diffs/package.json +1 -1
  115. package/extensions/discord/package.json +1 -1
  116. package/extensions/feishu/package.json +1 -1
  117. package/extensions/flow/package.json +1 -1
  118. package/extensions/google-antigravity-auth/package.json +1 -1
  119. package/extensions/google-gemini-cli-auth/package.json +1 -1
  120. package/extensions/googlechat/package.json +1 -1
  121. package/extensions/imessage/package.json +1 -1
  122. package/extensions/irc/package.json +1 -1
  123. package/extensions/line/package.json +1 -1
  124. package/extensions/llm-task/package.json +1 -1
  125. package/extensions/lobster/package.json +1 -1
  126. package/extensions/matrix/CHANGELOG.md +10 -0
  127. package/extensions/matrix/package.json +1 -1
  128. package/extensions/mattermost/package.json +1 -1
  129. package/extensions/memory-core/package.json +1 -1
  130. package/extensions/memory-lancedb/package.json +1 -1
  131. package/extensions/minimax-portal-auth/package.json +1 -1
  132. package/extensions/msteams/CHANGELOG.md +10 -0
  133. package/extensions/msteams/package.json +1 -1
  134. package/extensions/nextcloud-talk/package.json +1 -1
  135. package/extensions/nostr/CHANGELOG.md +10 -0
  136. package/extensions/nostr/package.json +1 -1
  137. package/extensions/open-prose/package.json +1 -1
  138. package/extensions/self-improvement/package.json +1 -1
  139. package/extensions/signal/package.json +1 -1
  140. package/extensions/slack/package.json +1 -1
  141. package/extensions/synology-chat/package.json +1 -1
  142. package/extensions/telegram/package.json +1 -1
  143. package/extensions/tlon/package.json +1 -1
  144. package/extensions/twitch/CHANGELOG.md +10 -0
  145. package/extensions/twitch/package.json +1 -1
  146. package/extensions/voice-call/CHANGELOG.md +10 -0
  147. package/extensions/voice-call/package.json +1 -1
  148. package/extensions/whatsapp/package.json +1 -1
  149. package/extensions/zalo/CHANGELOG.md +10 -0
  150. package/extensions/zalo/package.json +1 -1
  151. package/extensions/zalouser/CHANGELOG.md +10 -0
  152. package/extensions/zalouser/package.json +1 -1
  153. package/package.json +1 -1
  154. package/dist/deliver-runtime-DY7UPWdO.js +0 -36
  155. package/dist/deps-send-discord.runtime-B_MPWdLu.js +0 -26
  156. package/dist/deps-send-imessage.runtime-BqgAHmfA.js +0 -25
  157. package/dist/deps-send-signal.runtime-B4CYnceH.js +0 -24
  158. package/dist/deps-send-slack.runtime-dtkYbGcS.js +0 -22
  159. package/dist/deps-send-telegram.runtime-C5f1UIXW.js +0 -27
  160. package/dist/deps-send-whatsapp.runtime-D6XwcPPI.js +0 -60
  161. package/dist/image-runtime-v_h0aTZD.js +0 -29
  162. package/dist/manager-runtime-D_u9rPEs.js +0 -18
  163. package/dist/pi-model-discovery-runtime-ZDLroaI6.js +0 -11
  164. package/dist/runtime-whatsapp-login.runtime-A_4Z63o5.js +0 -13
  165. package/dist/runtime-whatsapp-outbound.runtime-QGzX864p.js +0 -22
  166. package/dist/slash-commands.runtime-BD-KtYmG.js +0 -16
  167. package/dist/slash-dispatch.runtime-Dzq3WGxH.js +0 -56
  168. package/dist/slash-skill-commands.runtime-EpYM7zik.js +0 -20
  169. package/dist/subagent-registry-runtime-DwTeW5f1.js +0 -56
@@ -11,15 +11,15 @@ import { C as createDiscordActionGate, E as normalizeDiscordToken, S as inspectD
11
11
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, n as markdownToSlackMrkdwnChunks, o as parseSlackBlocksInput, r as normalizeSlackOutboundText, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-RnwO-RHl.js";
12
12
  import { $ as stripUndefinedFields, A as unpinMessageDiscord, At as resolveChannelEntryMatchWithFallback, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveDiscordSystemLocation, D as pinMessageDiscord, Dt as applyChannelMatchMeta, E as listThreadsDiscord, Et as fetchDiscord, 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 buildChannelKeyCandidates, P as fetchChannelInfoDiscord, Q as sendDiscordText, R as kickMemberDiscord, S as deleteMessageDiscord, St as formatDiscordUserTag, T as listPinsDiscord, Tt as DiscordApiError, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendStickerDiscord, _t as resolveDiscordOwnerAllowFrom, a as sendDiscordComponentMessage, at as parseDiscordTarget, b as formatMention, bt as shouldEmitDiscordReactionNotification, c as parseDiscordComponentCustomId, ct as listDiscordDirectoryPeersLive, d as parseDiscordModalCustomIdForCarbon, dt as normalizeDiscordSlug, et as fetchChannelPermissionsDiscord, f as readDiscordComponentSpec, ft as resolveDiscordAllowListMatch, g as sendPollDiscord, gt as resolveDiscordOwnerAccess, h as sendMessageDiscord, ht as resolveDiscordMemberAccessState, i as removeReactionDiscord, it as createDiscordRestClient, j as addRoleDiscord, k as searchMessagesDiscord, kt as normalizeChannelSlug, l as parseDiscordComponentCustomIdForCarbon, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordModalEntry, mt as resolveDiscordGuildEntry, n as reactMessageDiscord, nt as chunkDiscordTextWithMode, o as createDiscordFormModal, ot as resolveDiscordChannelId, p as resolveDiscordComponentEntry, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as removeOwnReactionsDiscord, rt as createDiscordClient, s as formatDiscordComponentEventText, st as listDiscordDirectoryGroupsLive, t as fetchReactionsDiscord, tt as hasAnyGuildPermissionDiscord, u as parseDiscordModalCustomId, ut as normalizeDiscordAllowList, v as sendVoiceMessageDiscord, vt as resolveDiscordShouldRequireMention, w as fetchMessageDiscord, wt as resolveTimestampMs, x as createThreadDiscord, xt as formatDiscordReactionEmoji, y as sendWebhookMessageDiscord, yt as resolveGroupDmAllow, z as listGuildChannelsDiscord } from "./send-D8sX0KzB.js";
13
13
  import { n as generateSecureUuid, t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
14
- import { A as joinPresentTextSegments, C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-BrVS3qD4.js";
14
+ import { A as joinPresentTextSegments, C as createReplyToModeFilterForChannel, D as normalizeTargetForProvider, E as normalizeChannelTargetInput, O as getGlobalHookRunner, S as shouldSuppressReasoningPayload, T as buildTargetResolverSignature, _ as applyReplyThreading, a as normalizeReplyPayloadsForDelivery, b as isRenderablePayload, c as splitMediaFromOutput, d as toInternalMessageReceivedContext, f as toInternalMessageTranscribedContext, g as applyReplyTagsToPayload, h as fireAndForgetHook, i as normalizeOutboundPayloadsForJson, k as initializeGlobalHookRunner, l as deriveInboundMessageHookContext, m as toPluginMessageReceivedEvent, n as formatOutboundPayloadLog, o as throwIfAborted, p as toPluginMessageContext, r as normalizeOutboundPayloads, s as parseReplyDirectives, t as deliverOutboundPayloads, u as toInternalMessagePreprocessedContext, v as filterMessagingToolDuplicates, w as resolveReplyToMode, x as shouldSuppressMessagingToolReplies, y as filterMessagingToolMediaDuplicates } from "./deliver-DpRQLcxS.js";
15
15
  import { a as logMessageQueued, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, h as isDiagnosticsEnabled, i as logMessageProcessed, l as logWebhookProcessed, m as emitDiagnosticEvent, n as logLaneDequeue, o as logSessionStateChange, p as getDiagnosticSessionState, r as logLaneEnqueue, t as diag, u as logWebhookReceived } from "./diagnostic-4mG4HPNM.js";
16
16
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DTt92bBI.js";
17
17
  import { i as resolveTelegramTargetChatType, r as parseTelegramTarget } from "./targets-D1wBrTyc.js";
18
18
  import { A as mediaKindFromMime, C as imageMimeFromFormat, E as kindFromMime, O as MAX_IMAGE_BYTES, T as isGifMedia, _ as GATEWAY_CLIENT_IDS, b as detectMime, c as INTERNAL_MESSAGE_CHANNEL, d as isInternalMessageChannel, f as isMarkdownCapableMessageChannel, g as resolveMessageChannel, h as resolveGatewayMessageChannel, i as getImageMetadata, l as isDeliverableMessageChannel, m as normalizeMessageChannel, p as listDeliverableMessageChannels, s as resizeToJpeg, u as isGatewayMessageChannel, v as GATEWAY_CLIENT_MODES, w as isAudioFileName, x as extensionForMime, y as GATEWAY_CLIENT_NAMES } from "./image-ops-H7-oxso2.js";
19
19
  import { $ as removeChannelAllowFromStoreEntry, A as expandTextLinks, B as resolveTelegramThreadSpec, C as buildSenderName, D as buildTelegramThreadParams, E as buildTelegramParentPeer, F as resolveTelegramForumThreadId, G as firstDefined$1, H as normalizeAllowFrom$2, I as resolveTelegramGroupAllowFromContext, J as resolveGroupAllowFromSources, K as isSenderIdAllowed, L as resolveTelegramMediaPlaceholder, M as hasBotMention, N as normalizeForwardedContext, O as buildTypingThreadParams, P as resolveTelegramDirectPeerId, Q as readChannelAllowFromStore, R as resolveTelegramReplyId, S as buildSenderLabel, T as buildTelegramGroupPeerId, U as normalizeDmAllowFromWithStore$1, V as isSenderAllowed$1, W as resolveSenderAllowMatch$1, X as toLocationContext, Y as formatLocationText, Z as addChannelAllowFromStoreEntry, _ as splitTelegramCaption, a as reactMessageTelegram, at as isVoiceCompatibleAudio, b as resolveCronStorePath, c as sendStickerTelegram, d as isRecoverableTelegramNetworkError, et as upsertChannelPairingRequest, f as markdownToTelegramChunks, g as resolveTelegramFetch, h as wrapFileReferencesInHtml, i as editMessageTelegram, it as listPairingChannels, j as extractTelegramLocation, k as describeReplyTarget, l as resolveTelegramVoiceSend, m as renderTelegramHtmlText, n as createForumTopicTelegram, nt as writeJsonFileAtomically, o as sendMessageTelegram, p as markdownToTelegramHtml, q as mergeDmAllowFromSources, r as deleteMessageTelegram, rt as getPairingAdapter, s as sendPollTelegram, t as buildInlineKeyboard, tt as readJsonFileWithFallback, u as wasSentByBot, v as withTelegramApiErrorLogging, w as buildTelegramGroupFrom, x as buildGroupLabel, y as loadCronStore, z as resolveTelegramStreamMode } from "./send-BwwO-RRn.js";
20
20
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BCAL3jTa.js";
21
- import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isRawApiErrorPayload, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCloudCodeAssistFormatError, Ct as resolveFreshSessionTotalTokens, D as isFailoverErrorMessage, Dt as resolveMainSessionKey, E as isFailoverAssistantError, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageDimensionError, Mt as resolveSessionLockMaxHoldFromTimeout, N as parseImageSizeError, Nt as createBrowserRouteContext, O as isLikelyContextOverflowError, Ot as deriveSessionMetaPatch, P as sanitizeUserFacingText, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isBillingAssistantError, St as mergeSessionEntry, T as isContextOverflowError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatAssistantErrorText, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as getApiErrorPayloadFingerprint, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as classifyFailoverReasonFromHttpStatus, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as isTransientHttpError, jt as acquireSessionWriteLock, k as isRateLimitAssistantError, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatBillingErrorMessage, vt as resolveSessionResetPolicy, w as isCompactionFailureError, wt as setSessionRuntimeModel, x as isAuthAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as formatRawAssistantErrorForUi, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-DkZKaPa4.js";
22
- import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-DWoTm_BG.js";
21
+ import { $ as deliveryContextFromSession, $t as matchesAnyGlobPattern, A as isRawApiErrorPayload, At as resolveGroupSessionKey, B as parseSessionThreadInfo, Bt as resolveGatewayCredentialsFromConfig, C as isCloudCodeAssistFormatError, Ct as resolveFreshSessionTotalTokens, D as isFailoverErrorMessage, Dt as resolveMainSessionKey, E as isFailoverAssistantError, Et as resolveExplicitAgentSessionKey, F as isTimeoutErrorMessage, Ft as resolveBrowserConfig, G as readSessionUpdatedAt, Gt as collectExplicitAllowlist, Ht as resolveSandboxConfigForAgent, I as ensureSandboxWorkspaceForSession, It as resolveProfile, J as updateLastRoute, Jt as stripPluginOnlyAllowlist, K as recordSessionMetaFromInbound, Kt as expandPolicyWithPluginGroups, L as resolveSandboxContext, Lt as getBridgeAuthForPort, M as parseImageDimensionError, Mt as resolveSessionLockMaxHoldFromTimeout, N as parseImageSizeError, Nt as createBrowserRouteContext, O as isLikelyContextOverflowError, Ot as deriveSessionMetaPatch, P as sanitizeUserFacingText, Pt as registerBrowserRoutes, Q as resolveCacheTtlMs$1, Qt as compileGlobPatterns, R as resolveSandboxRuntimeStatus, Rt as ensureBrowserControlAuth, S as isBillingAssistantError, St as mergeSessionEntry, T as isContextOverflowError, Tt as canonicalizeMainSessionAlias, U as resolveAndPersistSessionFile, Ut as applyOwnerOnlyToolPolicy, V as appendAssistantMessageToSessionTranscript, Vt as trimToUndefined$1, W as loadSessionStore, Wt as buildPluginToolGroups, X as updateSessionStoreEntry, Xt as normalizeToolName, Y as updateSessionStore, Yt as expandToolGroups, Z as isCacheEnabled, Zt as resolveToolProfilePolicy, _ as formatAssistantErrorText, _t as resolveChannelResetConfig, a as isMessagingToolDuplicateNormalized, an as sanitizeGoogleTurnOrdering, at as archiveSessionTranscripts, b as getApiErrorPayloadFingerprint, bt as resolveThreadFlag, c as extractToolCallsFromAssistant, ct as extractToolCallNames, d as downgradeOpenAIFunctionCallReasoningPairs, dt as applyInputProvenanceToUserMessage, en as buildBootstrapContextFiles, et as deliveryContextKey, f as downgradeOpenAIReasoningBlocks, ft as hasInterSessionUserProvenance, g as classifyFailoverReasonFromHttpStatus, gt as evaluateSessionFreshness, h as classifyFailoverReason, ht as resolveSessionKey, in as resolveBootstrapTotalMaxChars, it as normalizeAccountId$3, j as isTransientHttpError, jt as acquireSessionWriteLock, k as isRateLimitAssistantError, kt as resolveConversationLabel, l as extractToolResultId, lt as parseInlineDirectives$1, m as BILLING_ERROR_USER_MESSAGE, mt as jsonUtf8Bytes, n as validateGeminiTurns, nn as resolveBootstrapMaxChars, nt as normalizeDeliveryContext, o as normalizeTextForComparison, ot as capArrayByJsonBytes, p as isGoogleModelApi, pt as normalizeInputProvenance, qt as mergeAlsoAllowPolicy, r as pickFallbackThinkingLevel, rn as resolveBootstrapPromptTruncationWarningMode, rt as normalizeSessionDeliveryFields, s as sanitizeSessionMessagesImages, st as countToolResults, t as validateAnthropicTurns, tn as ensureSessionHeader, tt as mergeDeliveryContext, u as sanitizeToolCallIdsForCloudCodeAssist, ut as INPUT_PROVENANCE_KIND_VALUES, v as formatBillingErrorMessage, vt as resolveSessionResetPolicy, w as isCompactionFailureError, wt as setSessionRuntimeModel, x as isAuthAssistantError, xt as DEFAULT_RESET_TRIGGERS, y as formatRawAssistantErrorForUi, yt as resolveSessionResetType, z as extractDeliveryInfo, zt as resolveBrowserControlAuth } from "./pi-embedded-helpers-CSHUPpwW.js";
22
+ import { A as rawDataToString, B as isSecureWebSocketUrl, C as ensureChromeExtensionRelayServer, N as DEFAULT_UPLOAD_DIR, P as resolveExistingPathsWithinRoot, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, s as resolveLsofCommandSync, z as isLoopbackHost } from "./chrome-jdOx2dAl.js";
23
23
  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-DYPNXcqp.js";
24
24
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CnMi477K.js";
25
25
  import { i as testRegexWithBoundedInput, r as compileSafeRegex, t as redactSensitiveText } from "./redact-BYyl-Ec1.js";
@@ -32,8 +32,8 @@ import { t as resolveIMessageAccount } from "./accounts-Gr3z2vFt.js";
32
32
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CYxtj6M6.js";
33
33
  import { n as onSessionTranscriptUpdate, t as emitSessionTranscriptUpdate } from "./transcript-events-UAKcGiUQ.js";
34
34
  import { a as canonicalizeBase64, i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, o as estimateBase64DecodedBytes, r as sanitizeToolResultImages } from "./tool-images-CP_K-W16.js";
35
- import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureOpenClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-D99xLnGA.js";
36
- import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-BI-TLd1r.js";
35
+ import { C as minimaxUnderstandImage, S as extractTextFromChatContent, _ as formatToolSummary, a as resolveProviderVisionModelFromConfig, b as findCodeRegions, c as extractThinkingFromTaggedStream, d as inferToolMetaFromArgs, f as isAssistantMessage, g as stripThinkingTagsFromText, h as stripMinimaxToolCallXml, i as decodeDataUrl, l as extractThinkingFromTaggedText, m as stripDowngradedToolCallText, n as coerceImageAssistantText, o as extractAssistantText$1, p as promoteThinkingTagsToBlocks, r as coerceImageModelConfig, s as extractAssistantThinking, u as formatReasoningMessage, v as resolveToolDisplay, w as ensureOpenClawModelsJson, x as isInsideCode, y as stripReasoningTagsFromText } from "./image-YeyG7rr8.js";
36
+ import { _ as resolveAttachmentKind, a as resolveAutoImageModel, b as modelSupportsVision, c as applyTemplate, d as normalizeMediaUnderstandingChatType, f as resolveMediaUnderstandingScope, h as registerUnhandledRejectionHandler, i as normalizeMediaAttachments, l as resolveConcurrency, m as buildRandomTempFilePath, n as buildProviderRegistry, o as resolveMediaAttachmentLocalRoots, p as CLI_OUTPUT_MAX_BUFFER, r as createMediaAttachmentCache, s as runCapability, t as runAudioTranscription, u as resolveTimeoutMs$2, v as findModelInCatalog, y as loadModelCatalog } from "./audio-transcription-runner-CqUAFMxM.js";
37
37
  import { a as getDefaultMediaLocalRoots, i as getAgentScopedMediaLocalRoots, n as fetchRemoteMedia, r as readResponseWithLimit, t as MediaFetchError } from "./fetch-eWgbLfn0.js";
38
38
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-B_Wivh-n.js";
39
39
  import { n as withStrictGuardedFetchMode, r as withTrustedEnvProxyGuardedFetchMode, t as fetchWithSsrFGuard } from "./fetch-guard-DuC_-ogd.js";
@@ -71,7 +71,7 @@ import { EdgeTTS } from "node-edge-tts";
71
71
  import * as net$1 from "node:net";
72
72
  import { createServer } from "node:http";
73
73
  import { Agent, EnvHttpProxyAgent, ProxyAgent, fetch as fetch$1, getGlobalDispatcher, setGlobalDispatcher } from "undici";
74
- import WebSocket$1, { WebSocket } from "ws";
74
+ import WebSocket, { WebSocket as WebSocket$1 } from "ws";
75
75
  import { Buffer as Buffer$1 } from "node:buffer";
76
76
  import { createJiti } from "jiti";
77
77
  import AjvPkg from "ajv";
@@ -8505,7 +8505,7 @@ var GatewayClient = class {
8505
8505
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
8506
8506
  });
8507
8507
  }
8508
- this.ws = new WebSocket(url, wsOptions);
8508
+ this.ws = new WebSocket$1(url, wsOptions);
8509
8509
  this.ws.on("open", () => {
8510
8510
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
8511
8511
  const tlsError = this.validateTlsFingerprint();
@@ -8701,7 +8701,7 @@ var GatewayClient = class {
8701
8701
  const connectChallengeTimeoutMs = typeof rawConnectDelayMs === "number" && Number.isFinite(rawConnectDelayMs) ? Math.max(250, Math.min(1e4, rawConnectDelayMs)) : 2e3;
8702
8702
  if (this.connectTimer) clearTimeout(this.connectTimer);
8703
8703
  this.connectTimer = setTimeout(() => {
8704
- if (this.connectSent || this.ws?.readyState !== WebSocket.OPEN) return;
8704
+ if (this.connectSent || this.ws?.readyState !== WebSocket$1.OPEN) return;
8705
8705
  this.opts.onConnectError?.(/* @__PURE__ */ new Error("gateway connect challenge timeout"));
8706
8706
  this.ws?.close(1008, "connect challenge timeout");
8707
8707
  }, connectChallengeTimeoutMs);
@@ -8743,7 +8743,7 @@ var GatewayClient = class {
8743
8743
  return null;
8744
8744
  }
8745
8745
  async request(method, params, opts) {
8746
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
8746
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
8747
8747
  const id = randomUUID();
8748
8748
  const frame = {
8749
8749
  type: "req",
@@ -10162,7 +10162,7 @@ function normalizeReplyPayload(payload, opts = {}) {
10162
10162
  //#region src/auto-reply/reply/route-reply.ts
10163
10163
  let deliverRuntimePromise$2 = null;
10164
10164
  function loadDeliverRuntime$2() {
10165
- deliverRuntimePromise$2 ??= import("./deliver-runtime-y426rL_k.js");
10165
+ deliverRuntimePromise$2 ??= import("./deliver-runtime-9qy2zTFN.js");
10166
10166
  return deliverRuntimePromise$2;
10167
10167
  }
10168
10168
  /**
@@ -11451,7 +11451,7 @@ const DEFAULT_SUBAGENT_ANNOUNCE_TIMEOUT_MS = 6e4;
11451
11451
  const MAX_TIMER_SAFE_TIMEOUT_MS = 2147e6;
11452
11452
  let subagentRegistryRuntimePromise = null;
11453
11453
  function loadSubagentRegistryRuntime() {
11454
- subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-nzkRCNeS.js");
11454
+ subagentRegistryRuntimePromise ??= import("./subagent-registry-runtime-TuyVULIb.js");
11455
11455
  return subagentRegistryRuntimePromise;
11456
11456
  }
11457
11457
  const DIRECT_ANNOUNCE_TRANSIENT_RETRY_DELAYS_MS = FAST_TEST_MODE ? [
@@ -14970,7 +14970,7 @@ async function runWithConcurrency(tasks, limit) {
14970
14970
  //#region src/media-understanding/echo-transcript.ts
14971
14971
  let deliverRuntimePromise$1 = null;
14972
14972
  function loadDeliverRuntime$1() {
14973
- deliverRuntimePromise$1 ??= import("./deliver-runtime-y426rL_k.js");
14973
+ deliverRuntimePromise$1 ??= import("./deliver-runtime-9qy2zTFN.js");
14974
14974
  return deliverRuntimePromise$1;
14975
14975
  }
14976
14976
  const DEFAULT_ECHO_TRANSCRIPT_FORMAT = "📝 \"{transcript}\"";
@@ -53444,7 +53444,7 @@ const warnedContexts = /* @__PURE__ */ new Map();
53444
53444
  const log$10 = createSubsystemLogger("session-maintenance-warning");
53445
53445
  let deliverRuntimePromise = null;
53446
53446
  function loadDeliverRuntime() {
53447
- deliverRuntimePromise ??= import("./deliver-runtime-y426rL_k.js");
53447
+ deliverRuntimePromise ??= import("./deliver-runtime-9qy2zTFN.js");
53448
53448
  return deliverRuntimePromise;
53449
53449
  }
53450
53450
  function shouldSendWarning() {
@@ -58541,7 +58541,7 @@ const VISION_PROVIDERS = [
58541
58541
  ];
58542
58542
  let imageRuntimePromise = null;
58543
58543
  function loadImageRuntime() {
58544
- imageRuntimePromise ??= import("./image-runtime-BHiX93k-.js");
58544
+ imageRuntimePromise ??= import("./image-runtime-DZ9BSPkK.js");
58545
58545
  return imageRuntimePromise;
58546
58546
  }
58547
58547
  /**
@@ -62745,7 +62745,7 @@ async function resolveDiscordPreflightAudioMentionContext(params) {
62745
62745
  hasTypedText
62746
62746
  };
62747
62747
  try {
62748
- const { transcribeFirstAudio } = await import("./audio-preflight-D2ryNxLv.js");
62748
+ const { transcribeFirstAudio } = await import("./audio-preflight-hEJ-K1Ib.js");
62749
62749
  if (params.abortSignal?.aborted) return {
62750
62750
  hasAudioAttachment,
62751
62751
  hasTypedText
@@ -68407,7 +68407,7 @@ let slackSenderRuntimePromise = null;
68407
68407
  let signalSenderRuntimePromise = null;
68408
68408
  let imessageSenderRuntimePromise = null;
68409
68409
  function loadWhatsAppSenderRuntime() {
68410
- whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-CUDRJQI6.js");
68410
+ whatsappSenderRuntimePromise ??= import("./deps-send-whatsapp.runtime-CZEk5mx7.js");
68411
68411
  return whatsappSenderRuntimePromise;
68412
68412
  }
68413
68413
  function loadTelegramSenderRuntime() {
@@ -72113,7 +72113,7 @@ function createDiscordGatewayPlugin(params) {
72113
72113
  return super.registerClient(client);
72114
72114
  }
72115
72115
  createWebSocket(url) {
72116
- return new WebSocket$1(url, { agent: wsAgent });
72116
+ return new WebSocket(url, { agent: wsAgent });
72117
72117
  }
72118
72118
  }
72119
72119
  return new ProxyGatewayPlugin();
@@ -81288,7 +81288,7 @@ function loadSlashCommandsRuntime() {
81288
81288
  return slashCommandsRuntimePromise;
81289
81289
  }
81290
81290
  function loadSlashDispatchRuntime() {
81291
- slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-BI4kyhSk.js");
81291
+ slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-CLPlz-lX.js");
81292
81292
  return slashDispatchRuntimePromise;
81293
81293
  }
81294
81294
  function loadSlashSkillCommandsRuntime() {
@@ -84742,7 +84742,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, replyMedia =
84742
84742
  const disableAudioPreflight = firstDefined$1(topicConfig?.disableAudioPreflight, groupConfig?.disableAudioPreflight) === true;
84743
84743
  let preflightTranscript;
84744
84744
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0 && !disableAudioPreflight) try {
84745
- const { transcribeFirstAudio } = await import("./audio-preflight-D2ryNxLv.js");
84745
+ const { transcribeFirstAudio } = await import("./audio-preflight-hEJ-K1Ib.js");
84746
84746
  preflightTranscript = await transcribeFirstAudio({
84747
84747
  ctx: {
84748
84748
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -87748,7 +87748,7 @@ function loadWebLoginQr() {
87748
87748
  return webLoginQrPromise;
87749
87749
  }
87750
87750
  function loadWebChannel() {
87751
- webChannelPromise ??= import("./web-72kt7sM1.js");
87751
+ webChannelPromise ??= import("./web-Ci3EFOGu.js");
87752
87752
  return webChannelPromise;
87753
87753
  }
87754
87754
  function loadWhatsAppActions() {
@@ -96543,7 +96543,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96543
96543
  * Throws if the connection is not open.
96544
96544
  */
96545
96545
  send(event) {
96546
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
96546
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error(`OpenAIWebSocketManager: cannot send — connection is not open (readyState=${this.ws?.readyState ?? "no socket"})`);
96547
96547
  this.ws.send(JSON.stringify(event));
96548
96548
  }
96549
96549
  /**
@@ -96560,7 +96560,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96560
96560
  * Returns true if the WebSocket is currently open and ready to send.
96561
96561
  */
96562
96562
  isConnected() {
96563
- return this.ws !== null && this.ws.readyState === WebSocket$1.OPEN;
96563
+ return this.ws !== null && this.ws.readyState === WebSocket.OPEN;
96564
96564
  }
96565
96565
  /**
96566
96566
  * Permanently closes the WebSocket connection and disables auto-reconnect.
@@ -96570,7 +96570,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96570
96570
  this._cancelRetryTimer();
96571
96571
  if (this.ws) {
96572
96572
  this.ws.removeAllListeners();
96573
- if (this.ws.readyState === WebSocket$1.OPEN || this.ws.readyState === WebSocket$1.CONNECTING) this.ws.close(1e3, "Client closed");
96573
+ if (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING) this.ws.close(1e3, "Client closed");
96574
96574
  this.ws = null;
96575
96575
  }
96576
96576
  }
@@ -96580,7 +96580,7 @@ var OpenAIWebSocketManager = class extends EventEmitter {
96580
96580
  reject(/* @__PURE__ */ new Error("OpenAIWebSocketManager: apiKey is required before connecting."));
96581
96581
  return;
96582
96582
  }
96583
- const socket = new WebSocket$1(this.wsUrl, { headers: {
96583
+ const socket = new WebSocket(this.wsUrl, { headers: {
96584
96584
  Authorization: `Bearer ${this.apiKey}`,
96585
96585
  "OpenAI-Beta": "responses-websocket=v1"
96586
96586
  } });
@@ -1,29 +1,29 @@
1
- import { f as resolveSessionAgentId, i as resolveAgentConfig } from "./run-with-concurrency-B8f7bYi3.js";
2
- import { a as resolveGatewayPort, d as resolveRequiredHomeDir, n as STATE_DIR } from "./paths-Cvc9EM8Y.js";
3
- import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-CdFYjh2k.js";
4
- import { B as resolveAgentIdFromSessionKey, K as normalizeOptionalAccountId, N as buildAgentMainSessionKey, R as normalizeAgentId, T as resolvePathViaExistingAncestorSync, _ as runExec, a as DEFAULT_IDENTITY_FILENAME, b as openBoundaryFile, c as DEFAULT_USER_FILENAME, i as DEFAULT_HEARTBEAT_FILENAME, j as DEFAULT_AGENT_ID, l as ensureAgentWorkspace, n as DEFAULT_AGENT_WORKSPACE_DIR, o as DEFAULT_SOUL_FILENAME, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_TOOLS_FILENAME, t as DEFAULT_AGENTS_FILENAME, z as normalizeMainKey } from "./workspace-DKhOowSl.js";
5
- import { E as truncateUtf16Safe, h as normalizeE164, y as resolveUserPath } from "./logger-LCC1m_20.js";
6
- import { G as resolveSecretRefValues, Ht as CHANNEL_IDS, X as createConfigIO, Z as loadConfig, dr as isPidAlive, fr as formatCliCommand, gt as parseByteSize, ht as parseDurationMs, lr as resolveProcessScopedMap, mt as getBlockedNetworkModeReason, pt as secretRefKey, tt as writeConfigFile, ur as getProcessStartTime, vr as hasConfiguredSecretInput, xr as resolveSecretInputRef } from "./model-selection-DX7XfNlF.js";
7
- import { c as parseBooleanValue } from "./legacy-names-DZdACm3t.js";
8
- import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug } from "./thinking-BaTRgLOg.js";
9
- import { r as normalizeChannelId, x as normalizeChatType } from "./plugins-DB-tbkgl.js";
1
+ import { f as resolveSessionAgentId, i as resolveAgentConfig } from "./run-with-concurrency-Ccm0w34R.js";
2
+ import { a as resolveGatewayPort, d as resolveRequiredHomeDir, n as STATE_DIR } from "./paths-C6TxBCvO.js";
3
+ import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-W834z9Wa.js";
4
+ import { B as resolveAgentIdFromSessionKey, K as normalizeOptionalAccountId, N as buildAgentMainSessionKey, R as normalizeAgentId, T as resolvePathViaExistingAncestorSync, _ as runExec, a as DEFAULT_IDENTITY_FILENAME, b as openBoundaryFile, c as DEFAULT_USER_FILENAME, i as DEFAULT_HEARTBEAT_FILENAME, j as DEFAULT_AGENT_ID, l as ensureAgentWorkspace, n as DEFAULT_AGENT_WORKSPACE_DIR, o as DEFAULT_SOUL_FILENAME, r as DEFAULT_BOOTSTRAP_FILENAME, s as DEFAULT_TOOLS_FILENAME, t as DEFAULT_AGENTS_FILENAME, z as normalizeMainKey } from "./workspace-BhNk7PBH.js";
5
+ import { E as truncateUtf16Safe, h as normalizeE164, y as resolveUserPath } from "./logger-D4RcXHR-.js";
6
+ import { G as resolveSecretRefValues, Ht as CHANNEL_IDS, X as createConfigIO, Z as loadConfig, dr as isPidAlive, fr as formatCliCommand, gt as parseByteSize, ht as parseDurationMs, lr as resolveProcessScopedMap, mt as getBlockedNetworkModeReason, pt as secretRefKey, tt as writeConfigFile, ur as getProcessStartTime, vr as hasConfiguredSecretInput, xr as resolveSecretInputRef } from "./model-selection-CLGE3YIs.js";
7
+ import { c as parseBooleanValue } from "./legacy-names-Bkl4tjN-.js";
8
+ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug } from "./thinking-DzbkyD99.js";
9
+ import { r as normalizeChannelId, x as normalizeChatType } from "./plugins-BZY4UQdP.js";
10
10
  import { t as generateSecureToken } from "./secure-random-CXrBi7Jq.js";
11
- import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-DGh7juCd.js";
12
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-CFVzlBUF.js";
13
- import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BhLAW7lA.js";
14
- import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-IQC4IpGS.js";
15
- import { n as extractErrorCode, r as formatErrorMessage } from "./errors-CHd6Q-vF.js";
16
- import { n as SsrFBlockedError } from "./proxy-env-CiOhiqru.js";
17
- import { i as saveMediaBuffer, n as ensureMediaDir } from "./store-EDjci9yP.js";
11
+ import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-C23SGeMe.js";
12
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-CiH9yYg6.js";
13
+ import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-mpCKgKof.js";
14
+ import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-BzNEeFKJ.js";
15
+ import { n as extractErrorCode, r as formatErrorMessage } from "./errors-DDrhcWHi.js";
16
+ import { n as SsrFBlockedError } from "./proxy-env-BgSzvACM.js";
17
+ import { i as saveMediaBuffer, n as ensureMediaDir } from "./store-DbpT7v8D.js";
18
18
  import { n as resolveWindowsSpawnProgram, t as materializeWindowsSpawnProgram } from "./windows-spawn-B89VigUN.js";
19
19
  import { i as writeTextAtomic, r as writeJsonAtomic } from "./json-files-D7-rxoSr.js";
20
- import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-GZsDv0mI.js";
20
+ import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-0WxUzzEz.js";
21
21
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-uYL2gEou.js";
22
- import { t as sanitizeContentBlocksImages } from "./tool-images-C3-c00jy.js";
22
+ import { t as sanitizeContentBlocksImages } from "./tool-images-DktJ_8C5.js";
23
23
  import fs from "node:fs/promises";
24
24
  import os from "node:os";
25
25
  import path, { posix } from "node:path";
26
- import fs$1, { existsSync } from "node:fs";
26
+ import syncFs, { existsSync } from "node:fs";
27
27
  import { spawn } from "node:child_process";
28
28
  import crypto, { createHash, timingSafeEqual } from "node:crypto";
29
29
  import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
@@ -1353,7 +1353,7 @@ function isModuleNotFoundError(err) {
1353
1353
  }
1354
1354
  async function loadPwAiModule(mode) {
1355
1355
  try {
1356
- return await import("./pw-ai-WtE5uJRQ.js");
1356
+ return await import("./pw-ai-CaeuHJYc.js");
1357
1357
  } catch (err) {
1358
1358
  if (mode === "soft") return null;
1359
1359
  if (isModuleNotFoundError(err)) return null;
@@ -3130,11 +3130,11 @@ async function movePathToTrash(targetPath) {
3130
3130
  return targetPath;
3131
3131
  } catch {
3132
3132
  const trashDir = path.join(os.homedir(), ".Trash");
3133
- fs$1.mkdirSync(trashDir, { recursive: true });
3133
+ syncFs.mkdirSync(trashDir, { recursive: true });
3134
3134
  const base = path.basename(targetPath);
3135
3135
  let dest = path.join(trashDir, `${base}-${Date.now()}`);
3136
- if (fs$1.existsSync(dest)) dest = path.join(trashDir, `${base}-${Date.now()}-${generateSecureToken(6)}`);
3137
- fs$1.renameSync(targetPath, dest);
3136
+ if (syncFs.existsSync(dest)) dest = path.join(trashDir, `${base}-${Date.now()}-${generateSecureToken(6)}`);
3137
+ syncFs.renameSync(targetPath, dest);
3138
3138
  return dest;
3139
3139
  }
3140
3140
  }
@@ -3221,7 +3221,7 @@ function createBrowserProfilesService(ctx) {
3221
3221
  } catch {}
3222
3222
  const userDataDir = resolveOpenClawUserDataDir(name);
3223
3223
  const profileDir = path.dirname(userDataDir);
3224
- if (fs$1.existsSync(profileDir)) {
3224
+ if (syncFs.existsSync(profileDir)) {
3225
3225
  await movePathToTrash(profileDir);
3226
3226
  deleted = true;
3227
3227
  }
@@ -3719,7 +3719,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3719
3719
  //#region src/browser/server-context.reset.ts
3720
3720
  async function closePlaywrightBrowserConnection() {
3721
3721
  try {
3722
- await (await import("./pw-ai-WtE5uJRQ.js")).closePlaywrightBrowserConnection();
3722
+ await (await import("./pw-ai-CaeuHJYc.js")).closePlaywrightBrowserConnection();
3723
3723
  } catch {}
3724
3724
  }
3725
3725
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveOpenClawUserDataDir }) {
@@ -3737,7 +3737,7 @@ function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, i
3737
3737
  if (await isHttpReachable(300) && !profileState.running) await closePlaywrightBrowserConnection();
3738
3738
  if (profileState.running) await stopRunningBrowser();
3739
3739
  await closePlaywrightBrowserConnection();
3740
- if (!fs$1.existsSync(userDataDir)) return {
3740
+ if (!syncFs.existsSync(userDataDir)) return {
3741
3741
  moved: false,
3742
3742
  from: userDataDir
3743
3743
  };
@@ -4485,7 +4485,7 @@ function releaseAllLocksSync() {
4485
4485
  if (typeof held.handle.close === "function") held.handle.close().catch(() => {});
4486
4486
  } catch {}
4487
4487
  try {
4488
- fs$1.rmSync(held.lockPath, { force: true });
4488
+ syncFs.rmSync(held.lockPath, { force: true });
4489
4489
  } catch {}
4490
4490
  HELD_LOCKS.delete(sessionFile);
4491
4491
  }
@@ -6083,7 +6083,7 @@ var SandboxFsBridgeImpl = class {
6083
6083
  if (guarded.reason !== "path") {
6084
6084
  if (!(options.allowedType === "directory" && this.pathIsExistingDirectory(target.hostPath))) throw guarded.error instanceof Error ? guarded.error : /* @__PURE__ */ new Error(`Sandbox boundary checks failed; cannot ${options.action}: ${target.containerPath}`);
6085
6085
  }
6086
- } else fs$1.closeSync(guarded.fd);
6086
+ } else syncFs.closeSync(guarded.fd);
6087
6087
  const canonicalContainerPath = await this.resolveCanonicalContainerPath({
6088
6088
  containerPath: target.containerPath,
6089
6089
  allowFinalSymlinkForUnlink: options.aliasPolicy?.allowFinalSymlinkForUnlink === true
@@ -6094,7 +6094,7 @@ var SandboxFsBridgeImpl = class {
6094
6094
  }
6095
6095
  pathIsExistingDirectory(hostPath) {
6096
6096
  try {
6097
- return fs$1.statSync(hostPath).isDirectory();
6097
+ return syncFs.statSync(hostPath).isDirectory();
6098
6098
  } catch {
6099
6099
  return false;
6100
6100
  }
@@ -6895,14 +6895,14 @@ function resolveSessionTranscriptCandidates(sessionId, storePath, sessionFile, a
6895
6895
  function canonicalizePathForComparison$1(filePath) {
6896
6896
  const resolved = path.resolve(filePath);
6897
6897
  try {
6898
- return fs$1.realpathSync(resolved);
6898
+ return syncFs.realpathSync(resolved);
6899
6899
  } catch {
6900
6900
  return resolved;
6901
6901
  }
6902
6902
  }
6903
6903
  function archiveFileOnDisk(filePath, reason) {
6904
6904
  const archived = `${filePath}.${reason}.${formatSessionArchiveTimestamp()}`;
6905
- fs$1.renameSync(filePath, archived);
6905
+ syncFs.renameSync(filePath, archived);
6906
6906
  return archived;
6907
6907
  }
6908
6908
  /**
@@ -6918,7 +6918,7 @@ function archiveSessionTranscripts(opts) {
6918
6918
  const relative = path.relative(storeDir, candidatePath);
6919
6919
  if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) continue;
6920
6920
  }
6921
- if (!fs$1.existsSync(candidatePath)) continue;
6921
+ if (!syncFs.existsSync(candidatePath)) continue;
6922
6922
  try {
6923
6923
  archived.push(archiveFileOnDisk(candidatePath, opts.reason));
6924
6924
  } catch {}
@@ -6936,15 +6936,15 @@ async function cleanupArchivedSessionTranscripts(opts) {
6936
6936
  let removed = 0;
6937
6937
  let scanned = 0;
6938
6938
  for (const dir of directories) {
6939
- const entries = await fs$1.promises.readdir(dir).catch(() => []);
6939
+ const entries = await syncFs.promises.readdir(dir).catch(() => []);
6940
6940
  for (const entry of entries) {
6941
6941
  const timestamp = parseSessionArchiveTimestamp(entry, reason);
6942
6942
  if (timestamp == null) continue;
6943
6943
  scanned += 1;
6944
6944
  if (now - timestamp <= opts.olderThanMs) continue;
6945
6945
  const fullPath = path.join(dir, entry);
6946
- if (!(await fs$1.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
6947
- await fs$1.promises.rm(fullPath).catch(() => void 0);
6946
+ if (!(await syncFs.promises.stat(fullPath).catch(() => null))?.isFile()) continue;
6947
+ await syncFs.promises.rm(fullPath).catch(() => void 0);
6948
6948
  removed += 1;
6949
6949
  }
6950
6950
  }
@@ -7074,7 +7074,7 @@ function isCacheEnabled(ttlMs) {
7074
7074
  }
7075
7075
  function getFileStatSnapshot(filePath) {
7076
7076
  try {
7077
- const stats = fs$1.statSync(filePath);
7077
+ const stats = syncFs.statSync(filePath);
7078
7078
  return {
7079
7079
  mtimeMs: stats.mtimeMs,
7080
7080
  sizeBytes: stats.size
@@ -7093,7 +7093,7 @@ const NOOP_LOGGER = {
7093
7093
  function canonicalizePathForComparison(filePath) {
7094
7094
  const resolved = path.resolve(filePath);
7095
7095
  try {
7096
- return fs$1.realpathSync(resolved);
7096
+ return syncFs.realpathSync(resolved);
7097
7097
  } catch {
7098
7098
  return resolved;
7099
7099
  }
@@ -7151,12 +7151,12 @@ function resolveReferencedSessionTranscriptPaths(params) {
7151
7151
  return referenced;
7152
7152
  }
7153
7153
  async function readSessionsDirFiles(sessionsDir) {
7154
- const dirEntries = await fs$1.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
7154
+ const dirEntries = await syncFs.promises.readdir(sessionsDir, { withFileTypes: true }).catch(() => []);
7155
7155
  const files = [];
7156
7156
  for (const dirent of dirEntries) {
7157
7157
  if (!dirent.isFile()) continue;
7158
7158
  const filePath = path.join(sessionsDir, dirent.name);
7159
- const stat = await fs$1.promises.stat(filePath).catch(() => null);
7159
+ const stat = await syncFs.promises.stat(filePath).catch(() => null);
7160
7160
  if (!stat?.isFile()) continue;
7161
7161
  files.push({
7162
7162
  path: filePath,
@@ -7169,9 +7169,9 @@ async function readSessionsDirFiles(sessionsDir) {
7169
7169
  return files;
7170
7170
  }
7171
7171
  async function removeFileIfExists(filePath) {
7172
- const stat = await fs$1.promises.stat(filePath).catch(() => null);
7172
+ const stat = await syncFs.promises.stat(filePath).catch(() => null);
7173
7173
  if (!stat?.isFile()) return 0;
7174
- await fs$1.promises.rm(filePath, { force: true }).catch(() => void 0);
7174
+ await syncFs.promises.rm(filePath, { force: true }).catch(() => void 0);
7175
7175
  return stat.size;
7176
7176
  }
7177
7177
  async function removeFileForBudget(params) {
@@ -7530,7 +7530,7 @@ function capEntryCount(store, overrideMax, opts = {}) {
7530
7530
  }
7531
7531
  async function getSessionFileSize(storePath) {
7532
7532
  try {
7533
- return (await fs$1.promises.stat(storePath)).size;
7533
+ return (await syncFs.promises.stat(storePath)).size;
7534
7534
  } catch {
7535
7535
  return null;
7536
7536
  }
@@ -7547,7 +7547,7 @@ async function rotateSessionFile(storePath, overrideBytes) {
7547
7547
  if (fileSize <= maxBytes) return false;
7548
7548
  const backupPath = `${storePath}.bak.${Date.now()}`;
7549
7549
  try {
7550
- await fs$1.promises.rename(storePath, backupPath);
7550
+ await syncFs.promises.rename(storePath, backupPath);
7551
7551
  log$2.info("rotated session store file", {
7552
7552
  backupPath: path.basename(backupPath),
7553
7553
  sizeBytes: fileSize
@@ -7558,11 +7558,11 @@ async function rotateSessionFile(storePath, overrideBytes) {
7558
7558
  try {
7559
7559
  const dir = path.dirname(storePath);
7560
7560
  const baseName = path.basename(storePath);
7561
- const backups = (await fs$1.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
7561
+ const backups = (await syncFs.promises.readdir(dir)).filter((f) => f.startsWith(`${baseName}.bak.`)).toSorted().toReversed();
7562
7562
  const maxBackups = 3;
7563
7563
  if (backups.length > maxBackups) {
7564
7564
  const toDelete = backups.slice(maxBackups);
7565
- for (const old of toDelete) await fs$1.promises.unlink(path.join(dir, old)).catch(() => void 0);
7565
+ for (const old of toDelete) await syncFs.promises.unlink(path.join(dir, old)).catch(() => void 0);
7566
7566
  log$2.info("cleaned up old session store backups", { deleted: toDelete.length });
7567
7567
  }
7568
7568
  } catch {}
@@ -7685,7 +7685,7 @@ function loadSessionStore(storePath, opts = {}) {
7685
7685
  const maxReadAttempts = process.platform === "win32" ? 3 : 1;
7686
7686
  const retryBuf = maxReadAttempts > 1 ? new Int32Array(new SharedArrayBuffer(4)) : void 0;
7687
7687
  for (let attempt = 0; attempt < maxReadAttempts; attempt++) try {
7688
- const raw = fs$1.readFileSync(storePath, "utf-8");
7688
+ const raw = syncFs.readFileSync(storePath, "utf-8");
7689
7689
  if (raw.length === 0 && attempt < maxReadAttempts - 1) {
7690
7690
  Atomics.wait(retryBuf, 0, 0, 50);
7691
7691
  continue;
@@ -7839,7 +7839,7 @@ async function saveSessionStoreUnlocked(storePath, store, opts) {
7839
7839
  });
7840
7840
  }
7841
7841
  }
7842
- await fs$1.promises.mkdir(path.dirname(storePath), { recursive: true });
7842
+ await syncFs.promises.mkdir(path.dirname(storePath), { recursive: true });
7843
7843
  const json = JSON.stringify(store, null, 2);
7844
7844
  if (getSerializedSessionStore(storePath) === json) {
7845
7845
  updateSessionStoreWriteCaches({
@@ -8176,8 +8176,8 @@ function resolveMirroredTranscriptText(params) {
8176
8176
  return trimmed ? trimmed : null;
8177
8177
  }
8178
8178
  async function ensureSessionHeader(params) {
8179
- if (fs$1.existsSync(params.sessionFile)) return;
8180
- await fs$1.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
8179
+ if (syncFs.existsSync(params.sessionFile)) return;
8180
+ await syncFs.promises.mkdir(path.dirname(params.sessionFile), { recursive: true });
8181
8181
  const header = {
8182
8182
  type: "session",
8183
8183
  version: CURRENT_SESSION_VERSION,
@@ -8185,7 +8185,7 @@ async function ensureSessionHeader(params) {
8185
8185
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
8186
8186
  cwd: process.cwd()
8187
8187
  };
8188
- await fs$1.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
8188
+ await syncFs.promises.writeFile(params.sessionFile, `${JSON.stringify(header)}\n`, {
8189
8189
  encoding: "utf-8",
8190
8190
  mode: 384
8191
8191
  });
@@ -8420,13 +8420,13 @@ async function ensureSandboxWorkspace(workspaceDir, seedFrom, skipBootstrap) {
8420
8420
  });
8421
8421
  if (!opened.ok) continue;
8422
8422
  try {
8423
- const content = fs$1.readFileSync(opened.fd, "utf-8");
8423
+ const content = syncFs.readFileSync(opened.fd, "utf-8");
8424
8424
  await fs.writeFile(dest, content, {
8425
8425
  encoding: "utf-8",
8426
8426
  flag: "wx"
8427
8427
  });
8428
8428
  } finally {
8429
- fs$1.closeSync(opened.fd);
8429
+ syncFs.closeSync(opened.fd);
8430
8430
  }
8431
8431
  } catch {}
8432
8432
  }
@@ -6,7 +6,7 @@ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug
6
6
  import { r as normalizeChannelId, x as normalizeChatType } from "./plugins-D-0WTgB3.js";
7
7
  import { t as generateSecureToken } from "./secure-random-D68-1Hhs.js";
8
8
  import { i as getImageMetadata, m as normalizeMessageChannel, n as buildImageResizeSideGrid, p as listDeliverableMessageChannels, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-H7-oxso2.js";
9
- import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-DWoTm_BG.js";
9
+ import { C as ensureChromeExtensionRelayServer, D as PROFILE_POST_RESTART_WS_TIMEOUT_MS, E as PROFILE_ATTACH_RETRY_TIMEOUT_MS, G as DEFAULT_BROWSER_EVALUATE_ENABLED, H as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, I as resolveWritablePathWithinRoot, J as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, K as DEFAULT_OPENCLAW_BROWSER_COLOR, M as DEFAULT_TRACE_DIR, N as DEFAULT_UPLOAD_DIR, O as resolveCdpReachabilityTimeouts, P as resolveExistingPathsWithinRoot, R as normalizeBrowserFormField, T as CDP_JSON_NEW_TIMEOUT_MS, U as DEFAULT_AI_SNAPSHOT_MAX_CHARS, V as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, W as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, _ as withBrowserNavigationPolicy, a as resolveOpenClawUserDataDir, b as fetchOk, c as resolveBrowserExecutableForPlatform, f as normalizeCdpWsUrl, g as assertBrowserNavigationResultAllowed, h as assertBrowserNavigationAllowed, i as launchOpenClawChrome, j as DEFAULT_DOWNLOAD_DIR, l as captureScreenshot, m as InvalidBrowserNavigationUrlError, n as isChromeCdpReady, o as stopOpenClawChrome, p as snapshotAria, q as DEFAULT_OPENCLAW_BROWSER_ENABLED, r as isChromeReachable, u as createTargetViaCdp, v as appendCdpPath, w as stopChromeExtensionRelayServer, y as fetchJson, z as isLoopbackHost } from "./chrome-jdOx2dAl.js";
10
10
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DYPNXcqp.js";
11
11
  import { t as PATH_ALIAS_POLICIES } from "./path-alias-guards-CnMi477K.js";
12
12
  import { n as extractErrorCode, r as formatErrorMessage } from "./errors-LUTSBF6A.js";
@@ -1350,7 +1350,7 @@ function isModuleNotFoundError(err) {
1350
1350
  }
1351
1351
  async function loadPwAiModule(mode) {
1352
1352
  try {
1353
- return await import("./pw-ai-Mq6HuD9y.js");
1353
+ return await import("./pw-ai-C99W41P5.js");
1354
1354
  } catch (err) {
1355
1355
  if (mode === "soft") return null;
1356
1356
  if (isModuleNotFoundError(err)) return null;
@@ -3716,7 +3716,7 @@ function createProfileAvailability({ opts, profile, state, getProfileState, setP
3716
3716
  //#region src/browser/server-context.reset.ts
3717
3717
  async function closePlaywrightBrowserConnection() {
3718
3718
  try {
3719
- await (await import("./pw-ai-Mq6HuD9y.js")).closePlaywrightBrowserConnection();
3719
+ await (await import("./pw-ai-C99W41P5.js")).closePlaywrightBrowserConnection();
3720
3720
  } catch {}
3721
3721
  }
3722
3722
  function createProfileResetOps({ profile, getProfileState, stopRunningBrowser, isHttpReachable, resolveOpenClawUserDataDir }) {
@@ -0,0 +1,11 @@
1
+ import "./run-with-concurrency-Ccm0w34R.js";
2
+ import "./paths-C6TxBCvO.js";
3
+ import "./subsystem-W834z9Wa.js";
4
+ import "./workspace-BhNk7PBH.js";
5
+ import "./logger-D4RcXHR-.js";
6
+ import "./model-selection-CLGE3YIs.js";
7
+ import "./github-copilot-token-D13V9YBz.js";
8
+ import "./legacy-names-Bkl4tjN-.js";
9
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-vsJpfYA9.js";
10
+
11
+ export { discoverAuthStorage, discoverModels };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { ar as ensureAuthProfileStore, c as normalizeProviderId } from "./model-selection-DX7XfNlF.js";
2
+ import { ar as ensureAuthProfileStore, c as normalizeProviderId } from "./model-selection-CLGE3YIs.js";
3
3
  import path from "node:path";
4
- import fs from "node:fs";
4
+ import syncFs from "node:fs";
5
5
  import * as PiCodingAgent from "@mariozechner/pi-coding-agent";
6
6
 
7
7
  //#region src/agents/pi-auth-credentials.ts
@@ -70,10 +70,10 @@ function isRecord(value) {
70
70
  }
71
71
  function scrubLegacyStaticAuthJsonEntries(pathname) {
72
72
  if (process.env.OPENCLAW_AUTH_STORE_READONLY === "1") return;
73
- if (!fs.existsSync(pathname)) return;
73
+ if (!syncFs.existsSync(pathname)) return;
74
74
  let parsed;
75
75
  try {
76
- parsed = JSON.parse(fs.readFileSync(pathname, "utf8"));
76
+ parsed = JSON.parse(syncFs.readFileSync(pathname, "utf8"));
77
77
  } catch {
78
78
  return;
79
79
  }
@@ -87,11 +87,11 @@ function scrubLegacyStaticAuthJsonEntries(pathname) {
87
87
  }
88
88
  if (!changed) return;
89
89
  if (Object.keys(parsed).length === 0) {
90
- fs.rmSync(pathname, { force: true });
90
+ syncFs.rmSync(pathname, { force: true });
91
91
  return;
92
92
  }
93
- fs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
94
- fs.chmodSync(pathname, 384);
93
+ syncFs.writeFileSync(pathname, `${JSON.stringify(parsed, null, 2)}\n`, "utf8");
94
+ syncFs.chmodSync(pathname, 384);
95
95
  }
96
96
  function createAuthStorage(AuthStorageLike, path, creds) {
97
97
  const withInMemory = AuthStorageLike;
@@ -1,12 +1,12 @@
1
- import "./run-with-concurrency-B8f7bYi3.js";
2
- import "./paths-Cvc9EM8Y.js";
3
- import { t as createSubsystemLogger } from "./subsystem-CdFYjh2k.js";
4
- import "./workspace-DKhOowSl.js";
5
- import { D as isPlainObject } from "./logger-LCC1m_20.js";
6
- import "./model-selection-DX7XfNlF.js";
7
- import "./github-copilot-token-BDioPmd6.js";
8
- import "./legacy-names-DZdACm3t.js";
9
- import { p as getDiagnosticSessionState, s as logToolLoopAction } from "./diagnostic-pXxnbxER.js";
1
+ import "./run-with-concurrency-Ccm0w34R.js";
2
+ import "./paths-C6TxBCvO.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-W834z9Wa.js";
4
+ import "./workspace-BhNk7PBH.js";
5
+ import { D as isPlainObject } from "./logger-D4RcXHR-.js";
6
+ import "./model-selection-CLGE3YIs.js";
7
+ import "./github-copilot-token-D13V9YBz.js";
8
+ import "./legacy-names-Bkl4tjN-.js";
9
+ import { p as getDiagnosticSessionState, s as logToolLoopAction } from "./diagnostic-Dt3OGXoB.js";
10
10
  import { createHash } from "node:crypto";
11
11
 
12
12
  //#region src/agents/tool-loop-detection.ts