@lawpath-tech/openclaw 2026.2.21-5 → 2026.2.21-7

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 (105) hide show
  1. package/dist/{agents-CuMsK_DS.js → agents-7Q8UpA5j.js} +4 -4
  2. package/dist/{agents.config-e_xeppAS.js → agents.config-B15zpZGt.js} +1 -1
  3. package/dist/{agents.config-BXoIfujZ.js → agents.config-CwEtNKiI.js} +1 -1
  4. package/dist/{audio-preflight-DSln0Zsg.js → audio-preflight-ZIJNGHIM.js} +4 -4
  5. package/dist/{auth-choice-Cds0pSuL.js → auth-choice-Budhs7AA.js} +1 -1
  6. package/dist/{auth-choice-B45xiAZ_.js → auth-choice-DFbnmkw5.js} +1 -1
  7. package/dist/{banner-BrBNvO5B.js → banner-DxWInoxb.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +6 -6
  10. package/dist/bundled/session-memory/handler.js +6 -6
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-HIUzORO6.js → channel-options-DWLeOUBy.js} +1 -1
  13. package/dist/{channel-options-K4gVRVl0.js → channel-options-W6nGSLO0.js} +1 -1
  14. package/dist/{channel-web-BhQMRa2x.js → channel-web-CJyeVI48.js} +1 -1
  15. package/dist/{channels-cli-SwsUfdhN.js → channels-cli-BvtSTQfF.js} +4 -4
  16. package/dist/{channels-cli-RbZdgktP.js → channels-cli-C33gfn1H.js} +4 -4
  17. package/dist/{chrome-_026ohiG.js → chrome-HMhmjNaM.js} +7 -7
  18. package/dist/{cli-DCtguEMl.js → cli-A46q0zpY.js} +1 -1
  19. package/dist/{cli-DZR34VYb.js → cli-XcEs8KK_.js} +1 -1
  20. package/dist/{command-registry-CuwwryVI.js → command-registry-BNqpshUx.js} +9 -9
  21. package/dist/{completion-cli-Cq8iP9Aw.js → completion-cli-CIFG5xWV.js} +1 -1
  22. package/dist/{completion-cli-CHvR27lh.js → completion-cli-Ceqiqhkn.js} +2 -2
  23. package/dist/{config-cli-Ci5S1iD4.js → config-cli-CXWx88no.js} +1 -1
  24. package/dist/{config-cli-BwShV3v6.js → config-cli-eyAbRY_5.js} +1 -1
  25. package/dist/{configure-DPlBhyXy.js → configure-DVaPAS_m.js} +3 -3
  26. package/dist/{configure-D_1pz9E3.js → configure-bWqFA3HM.js} +3 -3
  27. package/dist/{deliver-CChv42uL.js → deliver-CjITvpSg.js} +1 -1
  28. package/dist/{doctor-completion-BJIw8vai.js → doctor-completion-5E2ZEWx5.js} +1 -1
  29. package/dist/{doctor-completion-BfrgA2mV.js → doctor-completion-9UfiLRPo.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +1 -1
  32. package/dist/{gateway-cli-BeBfQrbx.js → gateway-cli-DZa4pL87.js} +14 -9
  33. package/dist/{gateway-cli-yqwgOF3f.js → gateway-cli-_LSIHPmW.js} +14 -9
  34. package/dist/{health-BTIp89si.js → health-Bj5SETXV.js} +1 -1
  35. package/dist/{health-CKF0OJ25.js → health-CCZhny3_.js} +1 -1
  36. package/dist/{hooks-cli-Cjs7SuB4.js → hooks-cli-BSS-5THm.js} +2 -2
  37. package/dist/{hooks-cli-BKn8RjUM.js → hooks-cli-Bmqf1lky.js} +2 -2
  38. package/dist/{image-B9TdLqUC.js → image-DtRcO0W5.js} +1 -1
  39. package/dist/index.js +6 -6
  40. package/dist/llm-slug-generator.js +6 -6
  41. package/dist/{models-C08NQUuO.js → models-DxDVtTQ_.js} +2 -2
  42. package/dist/{models-cli-COXYLQjz.js → models-cli--9ogIpnA.js} +2 -2
  43. package/dist/{models-cli-uJJpIivJ.js → models-cli-B3OGW16o.js} +3 -3
  44. package/dist/{onboard-CnHHrRkg.js → onboard-Bf3Du6Lh.js} +2 -2
  45. package/dist/{onboard-D9sqU2kW.js → onboard-Bx0l-ThR.js} +2 -2
  46. package/dist/{onboard-channels-DFdGULvK.js → onboard-channels-DnVJfSLM.js} +1 -1
  47. package/dist/{onboard-channels-FyoGJoRI.js → onboard-channels-kZWwETyO.js} +1 -1
  48. package/dist/{onboarding-ys5PK2iC.js → onboarding-BulXrKLU.js} +3 -3
  49. package/dist/{onboarding-BMdfhdc1.js → onboarding-BwpIqFy7.js} +3 -3
  50. package/dist/{onboarding.finalize-DGwRmQPQ.js → onboarding.finalize-BMjuATUX.js} +5 -5
  51. package/dist/{onboarding.finalize-Czj9rIDx.js → onboarding.finalize-DKPzqhHG.js} +6 -6
  52. package/dist/{pi-embedded-CQ9C6y-Z.js → pi-embedded-BvySB0sN.js} +18 -9
  53. package/dist/{pi-embedded-BFfZiGJD.js → pi-embedded-DXyDVB4-.js} +32 -23
  54. package/dist/{pi-embedded-helpers-Mzn8kkGx.js → pi-embedded-helpers-YPvzHDpd.js} +4 -4
  55. package/dist/{plugin-registry-Bm3oXtZ_.js → plugin-registry-BaocjXe1.js} +1 -1
  56. package/dist/{plugin-registry-CbLd0SuX.js → plugin-registry-DBbZIWU8.js} +1 -1
  57. package/dist/plugin-sdk/{channel-web-BijwJ-sy.js → channel-web-DHH_bts_.js} +1 -1
  58. package/dist/plugin-sdk/index.js +2 -2
  59. package/dist/plugin-sdk/{reply-7CRdEEVf.js → reply-Ctmq0UrQ.js} +18 -9
  60. package/dist/plugin-sdk/{web-DbfteoVI.js → web-D1aGJ2Sm.js} +2 -2
  61. package/dist/{plugins-cli-D9kYnV70.js → plugins-cli-DB5K4VPo.js} +2 -2
  62. package/dist/{plugins-cli-CuZ9yeLM.js → plugins-cli-s8CoSlEa.js} +2 -2
  63. package/dist/{program-DnLmcYvI.js → program-1YJsHnzE.js} +7 -7
  64. package/dist/{program-context-BFlDtZ7u.js → program-context-1gnu7TsY.js} +17 -17
  65. package/dist/{prompt-select-styled-vecx8TWe.js → prompt-select-styled-CZjpMPcG.js} +4 -4
  66. package/dist/{prompt-select-styled-ByfdmSdC.js → prompt-select-styled-DHscKoJh.js} +4 -4
  67. package/dist/{provider-auth-helpers-D5aiUDUx.js → provider-auth-helpers-BADMU-gY.js} +1 -1
  68. package/dist/{provider-auth-helpers-CDiCEf5I.js → provider-auth-helpers-DTztOrzV.js} +1 -1
  69. package/dist/{push-apns-CIFN_ehC.js → push-apns-B3AqbUSc.js} +1 -1
  70. package/dist/{push-apns-DnQI6P_1.js → push-apns-CxOD57Cj.js} +1 -1
  71. package/dist/{pw-ai-BE9RDOQB.js → pw-ai-CgdTTLSx.js} +1 -1
  72. package/dist/{register.agent-m9s6Wdxg.js → register.agent-AEomswlU.js} +6 -6
  73. package/dist/{register.agent-BAb4XSav.js → register.agent-Do_Gd0GT.js} +5 -5
  74. package/dist/{register.configure-lUHQYgJj.js → register.configure-CjqsbKAa.js} +6 -6
  75. package/dist/{register.configure-CH9nyxsf.js → register.configure-eUF_ZUCV.js} +6 -6
  76. package/dist/{register.maintenance-D6b4iNV5.js → register.maintenance-DYOC2Zvi.js} +8 -8
  77. package/dist/{register.maintenance-BZ5w5uEj.js → register.maintenance-abhqOe8J.js} +7 -7
  78. package/dist/{register.message-DrqsD-cs.js → register.message-CjR1KXY8.js} +2 -2
  79. package/dist/{register.message-BNwoWgh6.js → register.message-DMy_CNDU.js} +2 -2
  80. package/dist/{register.onboard-CWGIbeMt.js → register.onboard-BBd_n0-D.js} +4 -4
  81. package/dist/{register.onboard-BJC-pkiP.js → register.onboard-Cc24eL4m.js} +4 -4
  82. package/dist/{register.setup-B2Q7oNUf.js → register.setup-B3NPY8uf.js} +4 -4
  83. package/dist/{register.setup-Cyy-u_LT.js → register.setup-C9e2P0Ve.js} +4 -4
  84. package/dist/{register.status-health-sessions-CbFmRZ23.js → register.status-health-sessions-Bah8_vHz.js} +3 -3
  85. package/dist/{register.status-health-sessions-XToqPPob.js → register.status-health-sessions-CBsUg8MP.js} +3 -3
  86. package/dist/{register.subclis-kiCDYnvk.js → register.subclis-B7MsoFZQ.js} +9 -9
  87. package/dist/{reply-BLgYvx8K.js → reply-CzyQ7_dW.js} +18 -9
  88. package/dist/{run-main-ClQN17NG.js → run-main-DVjbTOri.js} +14 -14
  89. package/dist/{runner-DU6rPdbF.js → runner-C4xlUAR9.js} +1 -1
  90. package/dist/{server-node-events-D8mdarwc.js → server-node-events-DW1wcD9u.js} +2 -2
  91. package/dist/{server-node-events-CtGYZ4NX.js → server-node-events-Lfb6LBpF.js} +2 -2
  92. package/dist/{session-dirs-CLp_APkW.js → session-dirs-C8HpuvAC.js} +1 -1
  93. package/dist/{session-dirs-qa1wz8KY.js → session-dirs-Co80nucN.js} +1 -1
  94. package/dist/{status-DlprmiLH.js → status-B88vffEy.js} +2 -2
  95. package/dist/{status-CUi6ZcuM.js → status-C9mzS9f-.js} +2 -2
  96. package/dist/{status-B0DTmnlx.js → status-CpRINy6s.js} +1 -1
  97. package/dist/{status-BpU9At8G.js → status-M-5d2BWR.js} +1 -1
  98. package/dist/{subagent-registry-DoLtM6tb.js → subagent-registry-wQzxRrPx.js} +18 -9
  99. package/dist/{update-cli-eHwjFIY5.js → update-cli-ChjFReVc.js} +8 -8
  100. package/dist/{update-cli-DDK1P0nj.js → update-cli-DPQq4Xxx.js} +7 -7
  101. package/dist/{web-DPUOYear.js → web-CwxAht8t.js} +6 -6
  102. package/dist/{web-BNiJyHah.js → web-F3oNAXT3.js} +1 -1
  103. package/dist/{web-w_Wqd8mO.js → web-LbWfo0bk.js} +2 -2
  104. package/dist/{web-gOkp0QXS.js → web-yhRvp7S-.js} +1 -1
  105. package/package.json +1 -1
@@ -51479,7 +51479,7 @@ function isVoiceChannelType(type) {
51479
51479
  function createDefaultDeps() {
51480
51480
  return {
51481
51481
  sendMessageWhatsApp: async (...args) => {
51482
- const { sendMessageWhatsApp } = await import("./web-gOkp0QXS.js");
51482
+ const { sendMessageWhatsApp } = await import("./web-yhRvp7S-.js");
51483
51483
  return await sendMessageWhatsApp(...args);
51484
51484
  },
51485
51485
  sendMessageTelegram: async (...args) => {
@@ -61822,8 +61822,10 @@ function createSlackMessageHandler(params) {
61822
61822
  });
61823
61823
  const threadTsResolver = createSlackThreadTsResolver({ client: ctx.app.client });
61824
61824
  const appMentionRetryKeys = /* @__PURE__ */ new Map();
61825
+ const appMentionDispatchedKeys = /* @__PURE__ */ new Map();
61825
61826
  const pruneAppMentionRetryKeys = (now) => {
61826
61827
  for (const [key, expiresAt] of appMentionRetryKeys) if (expiresAt <= now) appMentionRetryKeys.delete(key);
61828
+ for (const [key, expiresAt] of appMentionDispatchedKeys) if (expiresAt <= now) appMentionDispatchedKeys.delete(key);
61827
61829
  };
61828
61830
  const rememberAppMentionRetryKey = (key) => {
61829
61831
  const now = Date.now();
@@ -61869,13 +61871,17 @@ function createSlackMessageHandler(params) {
61869
61871
  }
61870
61872
  });
61871
61873
  const seenMessageKey = buildSeenMessageKey(last.message.channel, last.message.ts);
61872
- if (!prepared) {
61873
- const hasMessageSource = entries.some((entry) => entry.opts.source === "message");
61874
- const hasAppMentionSource = entries.some((entry) => entry.opts.source === "app_mention");
61875
- if (seenMessageKey && hasMessageSource && !hasAppMentionSource) rememberAppMentionRetryKey(seenMessageKey);
61876
- return;
61874
+ if (!prepared) return;
61875
+ if (seenMessageKey) {
61876
+ pruneAppMentionRetryKeys(Date.now());
61877
+ if (last.opts.source === "app_mention") appMentionDispatchedKeys.set(seenMessageKey, Date.now() + APP_MENTION_RETRY_TTL_MS);
61878
+ else if (last.opts.source === "message" && appMentionDispatchedKeys.has(seenMessageKey)) {
61879
+ appMentionDispatchedKeys.delete(seenMessageKey);
61880
+ appMentionRetryKeys.delete(seenMessageKey);
61881
+ return;
61882
+ }
61883
+ appMentionRetryKeys.delete(seenMessageKey);
61877
61884
  }
61878
- if (seenMessageKey) appMentionRetryKeys.delete(seenMessageKey);
61879
61885
  if (entries.length > 1) {
61880
61886
  const ids = entries.map((entry) => entry.message.ts).filter(Boolean);
61881
61887
  if (ids.length > 0) {
@@ -61894,7 +61900,9 @@ function createSlackMessageHandler(params) {
61894
61900
  if (opts.source === "message" && message.type !== "message") return;
61895
61901
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message") return;
61896
61902
  const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
61897
- if (seenMessageKey && ctx.markMessageSeen(message.channel, message.ts)) {
61903
+ const wasSeen = seenMessageKey ? ctx.markMessageSeen(message.channel, message.ts) : false;
61904
+ if (seenMessageKey && opts.source === "message" && !wasSeen) rememberAppMentionRetryKey(seenMessageKey);
61905
+ if (seenMessageKey && wasSeen) {
61898
61906
  if (opts.source !== "app_mention" || !consumeAppMentionRetryKey(seenMessageKey)) return;
61899
61907
  }
61900
61908
  const resolvedMessage = await threadTsResolver.resolve({
@@ -66800,7 +66808,7 @@ function loadWebLoginQr() {
66800
66808
  return webLoginQrPromise;
66801
66809
  }
66802
66810
  function loadWebChannel() {
66803
- webChannelPromise ??= import("./web-gOkp0QXS.js");
66811
+ webChannelPromise ??= import("./web-yhRvp7S-.js");
66804
66812
  return webChannelPromise;
66805
66813
  }
66806
66814
  function loadWhatsAppActions() {
@@ -71589,6 +71597,7 @@ function resolveSessionLane(key) {
71589
71597
  }
71590
71598
  function resolveGlobalLane(lane) {
71591
71599
  const cleaned = lane?.trim();
71600
+ if (cleaned === CommandLane.Cron) return CommandLane.Nested;
71592
71601
  return cleaned ? cleaned : CommandLane.Main;
71593
71602
  }
71594
71603
  function resolveEmbeddedSessionLane(key) {
@@ -13,7 +13,7 @@ import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
13
13
  import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BOHIfoCX.js";
14
14
  import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CcqTwaor.js";
15
15
  import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-CT34cBxw.js";
16
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CChv42uL.js";
16
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CjITvpSg.js";
17
17
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-DriDPU6M.js";
18
18
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
19
19
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CQT5u65w.js";
@@ -23,10 +23,10 @@ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider
23
23
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-Dgb9dAHW.js";
24
24
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
25
25
  import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-CHYSjmbr.js";
26
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-Mzn8kkGx.js";
26
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-YPvzHDpd.js";
27
27
  import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-CScuPNjn.js";
28
28
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverOpenClawPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-Dhk4A5vb.js";
29
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-_026ohiG.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-HMhmjNaM.js";
30
30
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DgwYCNoi.js";
31
31
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
32
32
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -37,7 +37,7 @@ import { t as resolveIMessageAccount } from "./accounts-DFrH9IVU.js";
37
37
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BEAbheM8.js";
38
38
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
39
39
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-i5cb4-nX.js";
40
- import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-B9TdLqUC.js";
40
+ import { S as ensureOpenClawModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-DtRcO0W5.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CssWitTj.js";
42
42
  import { n as resolveMemorySearchConfig } from "./manager-CHKGgP5H.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-C3XxSzBN.js";
@@ -51,7 +51,7 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-p6xtdC2E.js";
51
51
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-3kTkR4r1.js";
52
52
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-BTCEJgtW.js";
53
53
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
54
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DU6rPdbF.js";
54
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-C4xlUAR9.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DtI0mtzx.js";
56
56
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
57
57
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BgsTqLau.js";
@@ -81,7 +81,7 @@ import { EdgeTTS } from "node-edge-tts";
81
81
  import AjvPkg from "ajv";
82
82
  import { createServer } from "node:http";
83
83
  import { ProxyAgent, fetch as fetch$1 } from "undici";
84
- import WebSocket, { WebSocket as WebSocket$1 } from "ws";
84
+ import WebSocket$1, { WebSocket } from "ws";
85
85
  import { Buffer as Buffer$1 } from "node:buffer";
86
86
  import { createJiti } from "jiti";
87
87
  import { Type } from "@sinclair/typebox";
@@ -5715,7 +5715,7 @@ var GatewayClient = class {
5715
5715
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5716
5716
  });
5717
5717
  }
5718
- this.ws = new WebSocket$1(url, wsOptions);
5718
+ this.ws = new WebSocket(url, wsOptions);
5719
5719
  this.ws.on("open", () => {
5720
5720
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5721
5721
  const tlsError = this.validateTlsFingerprint();
@@ -5934,7 +5934,7 @@ var GatewayClient = class {
5934
5934
  return null;
5935
5935
  }
5936
5936
  async request(method, params, opts) {
5937
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
5937
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
5938
5938
  const id = randomUUID();
5939
5939
  const frame = {
5940
5940
  type: "req",
@@ -7198,7 +7198,7 @@ async function routeReply(params) {
7198
7198
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7199
7199
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7200
7200
  try {
7201
- const { deliverOutboundPayloads } = await import("./deliver-CChv42uL.js").then((n) => n.n);
7201
+ const { deliverOutboundPayloads } = await import("./deliver-CjITvpSg.js").then((n) => n.n);
7202
7202
  return {
7203
7203
  ok: true,
7204
7204
  messageId: (await deliverOutboundPayloads({
@@ -41571,7 +41571,7 @@ async function deliverSessionMaintenanceWarning(params) {
41571
41571
  return;
41572
41572
  }
41573
41573
  try {
41574
- const { deliverOutboundPayloads } = await import("./deliver-CChv42uL.js").then((n) => n.n);
41574
+ const { deliverOutboundPayloads } = await import("./deliver-CjITvpSg.js").then((n) => n.n);
41575
41575
  await deliverOutboundPayloads({
41576
41576
  cfg: params.cfg,
41577
41577
  channel,
@@ -45014,7 +45014,7 @@ async function describeStickerImage(params) {
45014
45014
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
45015
45015
  try {
45016
45016
  const buffer = await fs.readFile(imagePath);
45017
- const { describeImageWithModel } = await import("./image-B9TdLqUC.js").then((n) => n.n);
45017
+ const { describeImageWithModel } = await import("./image-DtRcO0W5.js").then((n) => n.n);
45018
45018
  return (await describeImageWithModel({
45019
45019
  buffer,
45020
45020
  fileName: "sticker.webp",
@@ -47475,7 +47475,7 @@ async function preflightDiscordMessage(params) {
47475
47475
  let preflightTranscript;
47476
47476
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47477
47477
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47478
- const { transcribeFirstAudio } = await import("./audio-preflight-DSln0Zsg.js");
47478
+ const { transcribeFirstAudio } = await import("./audio-preflight-ZIJNGHIM.js");
47479
47479
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47480
47480
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47481
47481
  ctx: {
@@ -51481,7 +51481,7 @@ function isVoiceChannelType(type) {
51481
51481
  function createDefaultDeps() {
51482
51482
  return {
51483
51483
  sendMessageWhatsApp: async (...args) => {
51484
- const { sendMessageWhatsApp } = await import("./web-DPUOYear.js");
51484
+ const { sendMessageWhatsApp } = await import("./web-CwxAht8t.js");
51485
51485
  return await sendMessageWhatsApp(...args);
51486
51486
  },
51487
51487
  sendMessageTelegram: async (...args) => {
@@ -54394,7 +54394,7 @@ function createDiscordGatewayPlugin(params) {
54394
54394
  super(options);
54395
54395
  }
54396
54396
  createWebSocket(url) {
54397
- return new WebSocket(url, { agent });
54397
+ return new WebSocket$1(url, { agent });
54398
54398
  }
54399
54399
  }
54400
54400
  return new ProxyGatewayPlugin();
@@ -61824,8 +61824,10 @@ function createSlackMessageHandler(params) {
61824
61824
  });
61825
61825
  const threadTsResolver = createSlackThreadTsResolver({ client: ctx.app.client });
61826
61826
  const appMentionRetryKeys = /* @__PURE__ */ new Map();
61827
+ const appMentionDispatchedKeys = /* @__PURE__ */ new Map();
61827
61828
  const pruneAppMentionRetryKeys = (now) => {
61828
61829
  for (const [key, expiresAt] of appMentionRetryKeys) if (expiresAt <= now) appMentionRetryKeys.delete(key);
61830
+ for (const [key, expiresAt] of appMentionDispatchedKeys) if (expiresAt <= now) appMentionDispatchedKeys.delete(key);
61829
61831
  };
61830
61832
  const rememberAppMentionRetryKey = (key) => {
61831
61833
  const now = Date.now();
@@ -61871,13 +61873,17 @@ function createSlackMessageHandler(params) {
61871
61873
  }
61872
61874
  });
61873
61875
  const seenMessageKey = buildSeenMessageKey(last.message.channel, last.message.ts);
61874
- if (!prepared) {
61875
- const hasMessageSource = entries.some((entry) => entry.opts.source === "message");
61876
- const hasAppMentionSource = entries.some((entry) => entry.opts.source === "app_mention");
61877
- if (seenMessageKey && hasMessageSource && !hasAppMentionSource) rememberAppMentionRetryKey(seenMessageKey);
61878
- return;
61876
+ if (!prepared) return;
61877
+ if (seenMessageKey) {
61878
+ pruneAppMentionRetryKeys(Date.now());
61879
+ if (last.opts.source === "app_mention") appMentionDispatchedKeys.set(seenMessageKey, Date.now() + APP_MENTION_RETRY_TTL_MS);
61880
+ else if (last.opts.source === "message" && appMentionDispatchedKeys.has(seenMessageKey)) {
61881
+ appMentionDispatchedKeys.delete(seenMessageKey);
61882
+ appMentionRetryKeys.delete(seenMessageKey);
61883
+ return;
61884
+ }
61885
+ appMentionRetryKeys.delete(seenMessageKey);
61879
61886
  }
61880
- if (seenMessageKey) appMentionRetryKeys.delete(seenMessageKey);
61881
61887
  if (entries.length > 1) {
61882
61888
  const ids = entries.map((entry) => entry.message.ts).filter(Boolean);
61883
61889
  if (ids.length > 0) {
@@ -61896,7 +61902,9 @@ function createSlackMessageHandler(params) {
61896
61902
  if (opts.source === "message" && message.type !== "message") return;
61897
61903
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message") return;
61898
61904
  const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
61899
- if (seenMessageKey && ctx.markMessageSeen(message.channel, message.ts)) {
61905
+ const wasSeen = seenMessageKey ? ctx.markMessageSeen(message.channel, message.ts) : false;
61906
+ if (seenMessageKey && opts.source === "message" && !wasSeen) rememberAppMentionRetryKey(seenMessageKey);
61907
+ if (seenMessageKey && wasSeen) {
61900
61908
  if (opts.source !== "app_mention" || !consumeAppMentionRetryKey(seenMessageKey)) return;
61901
61909
  }
61902
61910
  const resolvedMessage = await threadTsResolver.resolve({
@@ -64645,7 +64653,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64645
64653
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64646
64654
  let preflightTranscript;
64647
64655
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64648
- const { transcribeFirstAudio } = await import("./audio-preflight-DSln0Zsg.js");
64656
+ const { transcribeFirstAudio } = await import("./audio-preflight-ZIJNGHIM.js");
64649
64657
  preflightTranscript = await transcribeFirstAudio({
64650
64658
  ctx: {
64651
64659
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66802,7 +66810,7 @@ function loadWebLoginQr() {
66802
66810
  return webLoginQrPromise;
66803
66811
  }
66804
66812
  function loadWebChannel() {
66805
- webChannelPromise ??= import("./web-DPUOYear.js");
66813
+ webChannelPromise ??= import("./web-CwxAht8t.js");
66806
66814
  return webChannelPromise;
66807
66815
  }
66808
66816
  function loadWhatsAppActions() {
@@ -71591,6 +71599,7 @@ function resolveSessionLane(key) {
71591
71599
  }
71592
71600
  function resolveGlobalLane(lane) {
71593
71601
  const cleaned = lane?.trim();
71602
+ if (cleaned === CommandLane.Cron) return CommandLane.Nested;
71594
71603
  return cleaned ? cleaned : CommandLane.Main;
71595
71604
  }
71596
71605
  function resolveEmbeddedSessionLane(key) {
@@ -12,7 +12,7 @@ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n a
12
12
  import { S as isPidAlive, x as resolveProcessScopedMap } from "./model-auth-3yb_4VXX.js";
13
13
  import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-CHYSjmbr.js";
14
14
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-CScuPNjn.js";
15
- import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-_026ohiG.js";
15
+ import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_OPENCLAW_BROWSER_ENABLED, N as DEFAULT_OPENCLAW_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveOpenClawUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchOpenClawChrome, j as DEFAULT_OPENCLAW_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopOpenClawChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-HMhmjNaM.js";
16
16
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-DgwYCNoi.js";
17
17
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-BoQgnc8X.js";
18
18
  import { t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
@@ -933,7 +933,7 @@ function isModuleNotFoundError(err) {
933
933
  }
934
934
  async function loadPwAiModule(mode) {
935
935
  try {
936
- return await import("./pw-ai-BE9RDOQB.js");
936
+ return await import("./pw-ai-CgdTTLSx.js");
937
937
  } catch (err) {
938
938
  if (mode === "soft") return null;
939
939
  if (isModuleNotFoundError(err)) return null;
@@ -3473,11 +3473,11 @@ function createProfileContext(opts, profile) {
3473
3473
  const userDataDir = resolveOpenClawUserDataDir(profile.name);
3474
3474
  const profileState = getProfileState();
3475
3475
  if (await isHttpReachable(300) && !profileState.running) try {
3476
- await (await import("./pw-ai-BE9RDOQB.js")).closePlaywrightBrowserConnection();
3476
+ await (await import("./pw-ai-CgdTTLSx.js")).closePlaywrightBrowserConnection();
3477
3477
  } catch {}
3478
3478
  if (profileState.running) await stopRunningBrowser();
3479
3479
  try {
3480
- await (await import("./pw-ai-BE9RDOQB.js")).closePlaywrightBrowserConnection();
3480
+ await (await import("./pw-ai-CgdTTLSx.js")).closePlaywrightBrowserConnection();
3481
3481
  } catch {}
3482
3482
  if (!fs$1.existsSync(userDataDir)) return {
3483
3483
  moved: false,
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-DhajVyRS.js";
4
4
  import { i as loadConfig } from "./config-D-Tvm4yj.js";
5
- import { g as loadOpenClawPlugins } from "./subagent-registry-DoLtM6tb.js";
5
+ import { g as loadOpenClawPlugins } from "./subagent-registry-wQzxRrPx.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { gt as loadOpenClawPlugins } from "./reply-BLgYvx8K.js";
2
+ import { gt as loadOpenClawPlugins } from "./reply-CzyQ7_dW.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Dygi7Azw.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-CU-9CR31.js";
@@ -1,6 +1,6 @@
1
1
  import { a as buildGroupHistoryKey, n as DEFAULT_MAIN_KEY, r as buildAgentMainSessionKey, s as normalizeAgentId } from "./session-key-C_0eELjb.js";
2
2
  import { f as readWebSelfId, o as getWebAuthAgeMs, r as resolveWhatsAppAccount } from "./accounts-fnLsjAOi.js";
3
- import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-7CRdEEVf.js";
3
+ import { E as enqueueSystemEvent, G as resolveMentionGating, W as shouldAckReactionForWhatsApp, X as buildHistoryContextFromEntries, Y as DEFAULT_GROUP_HISTORY_LIMIT, _ as resolveEnvelopeFormatOptions, c as computeBackoff, d as formatDurationPrecise, f as dispatchReplyWithBufferedBlockDispatcher, g as formatInboundEnvelope, h as resolveInboundDebounceMs, ht as createDedupeCache, l as sleepWithAbort, m as createInboundDebouncer, n as normalizeGroupActivation, nt as buildMentionRegexes, r as parseActivationCommand, rt as normalizeMentionText, t as getReplyFromConfig, tt as recordPendingHistoryEntryIfEnabled, u as buildPairingReply, v as hasControlCommand, y as shouldComputeCommandAuthorized } from "./reply-Ctmq0UrQ.js";
4
4
  import { A as normalizeE164, B as toWhatsappJid, K as logVerbose, N as resolveJidToE164, O as isSelfChatMode, R as sleep, Y as shouldLogVerbose, k as jidToE164, s as normalizeChatChannelId, tt as getChildLogger, x as clamp } from "./registry-DL-33c9X.js";
5
5
  import { n as loadConfig } from "./config-BT7sZurc.js";
6
6
  import { i as defaultRuntime, t as createSubsystemLogger } from "./subsystem-C9WnrKN8.js";
@@ -1,6 +1,6 @@
1
1
  import { f as DEFAULT_ACCOUNT_ID, p as normalizeAccountId } from "./session-key-C_0eELjb.js";
2
2
  import { _ as createAccountListHelpers, i as resolveWhatsAppAuthDir, n as resolveDefaultWhatsAppAccountId, r as resolveWhatsAppAccount, t as listWhatsAppAccountIds } from "./accounts-fnLsjAOi.js";
3
- import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-7CRdEEVf.js";
3
+ import { $ as clearHistoryEntriesIfEnabled, A as resolveDiscordUserAllowlist, B as logTypingFailure, C as stripMarkdown, Ct as unbindThreadBindingsBySessionKey, D as resolveSlackUserAllowlist, Dt as BLUEBUBBLES_ACTION_NAMES, Et as BLUEBUBBLES_ACTIONS, F as stringEnum, G as resolveMentionGating, H as removeAckReactionAfterReply, I as recordInboundSession, J as summarizeMapping, K as resolveMentionGatingWithBypass, L as resolveControlCommandGate, M as collectDiscordAuditChannelIds, N as formatDocsLink, O as resolveSlackChannelAllowlist, Ot as BLUEBUBBLES_GROUP_ACTIONS, P as optionalStringEnum, Q as clearHistoryEntries, R as logAckFailure, S as processLineMessage, St as listThreadBindingsBySessionKey, T as attachFooterText, Tt as resolveAllowlistMatchSimple, U as shouldAckReaction, V as createTypingCallbacks, W as shouldAckReactionForWhatsApp, Y as DEFAULT_GROUP_HISTORY_LIMIT, Z as buildPendingHistoryContextFromMap, _t as listDevicePairing, a as normalizeAccountId$1, at as isWSLEnv, bt as registerPluginHttpRoute, ct as DEFAULT_WEBHOOK_MAX_BODY_BYTES, dt as isRequestBodyLimitError, et as recordPendingHistoryEntry, ft as readJsonBodyWithLimit, gt as approveDevicePairing, ht as createDedupeCache, i as listLineAccountIds, it as isWSL2Sync, j as resolveDiscordChannelAllowlist, k as detectBinary, kt as CHANNEL_MESSAGE_ACTION_NAMES, lt as RequestBodyLimitError, mt as requestBodyErrorToText, o as resolveDefaultLineAccountId, ot as isWSLSync, pt as readRequestBodyWithLimit, q as mergeAllowlist, s as resolveLineAccount, st as DEFAULT_WEBHOOK_BODY_TIMEOUT_MS, tt as recordPendingHistoryEntryIfEnabled, ut as installRequestBodyLimitGuard, vt as rejectDevicePairing, w as createReceiptCard, wt as formatAllowlistMatchMeta, x as hasMarkdownToConvert, xt as autoBindSpawnedDiscordSubagent, yt as extractToolSend, z as logInboundDrop } from "./reply-Ctmq0UrQ.js";
4
4
  import "./paths-DVWx7USN.js";
5
5
  import "./github-copilot-token-Cg0YPPSu.js";
6
6
  import { D as resolveSlackAccount, E as resolveDefaultSlackAccountId, F as resolveDiscordAccount, M as listDiscordAccountIds, O as resolveSlackReplyToMode, P as resolveDefaultDiscordAccountId, S as resolveTelegramAccount, T as listSlackAccountIds, _ as normalizeWhatsAppTarget, a as listDiscordDirectoryPeersFromConfig, b as listTelegramAccountIds, c as listTelegramDirectoryGroupsFromConfig, d as listWhatsAppDirectoryPeersFromConfig, f as looksLikeSlackTargetId, g as isWhatsAppGroupJid, i as listDiscordDirectoryGroupsFromConfig, l as listTelegramDirectoryPeersFromConfig, o as listSlackDirectoryGroupsFromConfig, p as normalizeSlackMessagingTarget, s as listSlackDirectoryPeersFromConfig, u as listWhatsAppDirectoryGroupsFromConfig, w as listEnabledSlackAccounts, x as resolveDefaultTelegramAccountId } from "./plugins-a8_TtkpO.js";
@@ -47,7 +47,7 @@ import "./paths-BNQjLbn7.js";
47
47
  import { h as onDiagnosticEvent, m as isDiagnosticsEnabled, p as emitDiagnosticEvent } from "./diagnostic-Up1aMyxZ.js";
48
48
  import { n as extractOriginalFilename } from "./store-CLotPIp_.js";
49
49
  import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-EACA6DIF.js";
50
- import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BijwJ-sy.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-DHH_bts_.js";
51
51
  import "./image-DN02b1Un.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-DVRFDYWE.js";
@@ -26832,7 +26832,7 @@ async function runWithImageModelFallback(params) {
26832
26832
  function createDefaultDeps() {
26833
26833
  return {
26834
26834
  sendMessageWhatsApp: async (...args) => {
26835
- const { sendMessageWhatsApp } = await import("./web-DbfteoVI.js");
26835
+ const { sendMessageWhatsApp } = await import("./web-D1aGJ2Sm.js");
26836
26836
  return await sendMessageWhatsApp(...args);
26837
26837
  },
26838
26838
  sendMessageTelegram: async (...args) => {
@@ -36956,8 +36956,10 @@ function createSlackMessageHandler(params) {
36956
36956
  });
36957
36957
  const threadTsResolver = createSlackThreadTsResolver({ client: ctx.app.client });
36958
36958
  const appMentionRetryKeys = /* @__PURE__ */ new Map();
36959
+ const appMentionDispatchedKeys = /* @__PURE__ */ new Map();
36959
36960
  const pruneAppMentionRetryKeys = (now) => {
36960
36961
  for (const [key, expiresAt] of appMentionRetryKeys) if (expiresAt <= now) appMentionRetryKeys.delete(key);
36962
+ for (const [key, expiresAt] of appMentionDispatchedKeys) if (expiresAt <= now) appMentionDispatchedKeys.delete(key);
36961
36963
  };
36962
36964
  const rememberAppMentionRetryKey = (key) => {
36963
36965
  const now = Date.now();
@@ -37003,13 +37005,17 @@ function createSlackMessageHandler(params) {
37003
37005
  }
37004
37006
  });
37005
37007
  const seenMessageKey = buildSeenMessageKey(last.message.channel, last.message.ts);
37006
- if (!prepared) {
37007
- const hasMessageSource = entries.some((entry) => entry.opts.source === "message");
37008
- const hasAppMentionSource = entries.some((entry) => entry.opts.source === "app_mention");
37009
- if (seenMessageKey && hasMessageSource && !hasAppMentionSource) rememberAppMentionRetryKey(seenMessageKey);
37010
- return;
37008
+ if (!prepared) return;
37009
+ if (seenMessageKey) {
37010
+ pruneAppMentionRetryKeys(Date.now());
37011
+ if (last.opts.source === "app_mention") appMentionDispatchedKeys.set(seenMessageKey, Date.now() + APP_MENTION_RETRY_TTL_MS);
37012
+ else if (last.opts.source === "message" && appMentionDispatchedKeys.has(seenMessageKey)) {
37013
+ appMentionDispatchedKeys.delete(seenMessageKey);
37014
+ appMentionRetryKeys.delete(seenMessageKey);
37015
+ return;
37016
+ }
37017
+ appMentionRetryKeys.delete(seenMessageKey);
37011
37018
  }
37012
- if (seenMessageKey) appMentionRetryKeys.delete(seenMessageKey);
37013
37019
  if (entries.length > 1) {
37014
37020
  const ids = entries.map((entry) => entry.message.ts).filter(Boolean);
37015
37021
  if (ids.length > 0) {
@@ -37028,7 +37034,9 @@ function createSlackMessageHandler(params) {
37028
37034
  if (opts.source === "message" && message.type !== "message") return;
37029
37035
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message") return;
37030
37036
  const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
37031
- if (seenMessageKey && ctx.markMessageSeen(message.channel, message.ts)) {
37037
+ const wasSeen = seenMessageKey ? ctx.markMessageSeen(message.channel, message.ts) : false;
37038
+ if (seenMessageKey && opts.source === "message" && !wasSeen) rememberAppMentionRetryKey(seenMessageKey);
37039
+ if (seenMessageKey && wasSeen) {
37032
37040
  if (opts.source !== "app_mention" || !consumeAppMentionRetryKey(seenMessageKey)) return;
37033
37041
  }
37034
37042
  const resolvedMessage = await threadTsResolver.resolve({
@@ -44497,7 +44505,7 @@ function loadWebLoginQr() {
44497
44505
  return webLoginQrPromise;
44498
44506
  }
44499
44507
  function loadWebChannel() {
44500
- webChannelPromise ??= import("./web-DbfteoVI.js");
44508
+ webChannelPromise ??= import("./web-D1aGJ2Sm.js");
44501
44509
  return webChannelPromise;
44502
44510
  }
44503
44511
  function loadWhatsAppActions() {
@@ -63221,6 +63229,7 @@ function resolveSessionLane(key) {
63221
63229
  }
63222
63230
  function resolveGlobalLane(lane) {
63223
63231
  const cleaned = lane?.trim();
63232
+ if (cleaned === CommandLane.Cron) return CommandLane.Nested;
63224
63233
  return cleaned ? cleaned : CommandLane.Main;
63225
63234
  }
63226
63235
  function resolveEmbeddedSessionLane(key) {
@@ -1,5 +1,5 @@
1
1
  import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-fnLsjAOi.js";
2
- import "./reply-7CRdEEVf.js";
2
+ import "./reply-Ctmq0UrQ.js";
3
3
  import "./paths-DVWx7USN.js";
4
4
  import "./github-copilot-token-Cg0YPPSu.js";
5
5
  import "./plugins-a8_TtkpO.js";
@@ -45,7 +45,7 @@ import "./pi-embedded-helpers-HEdGJVz9.js";
45
45
  import "./paths-BNQjLbn7.js";
46
46
  import "./diagnostic-Up1aMyxZ.js";
47
47
  import "./store-CLotPIp_.js";
48
- import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-BijwJ-sy.js";
48
+ import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-DHH_bts_.js";
49
49
  import "./image-DN02b1Un.js";
50
50
  import "./pi-model-discovery-LbcEa65a.js";
51
51
  import "./api-key-rotation-DVRFDYWE.js";
@@ -1,7 +1,7 @@
1
1
  import { g as resolveStateDir } from "./paths-B4BZAPZh.js";
2
2
  import { B as theme, S as shortenHomePath, g as resolveConfigDir, x as shortenHomeInString, y as resolveUserPath } from "./utils-BlC2Fskb.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-BLgYvx8K.js";
4
+ import "./reply-CzyQ7_dW.js";
5
5
  import "./registry-Dygi7Azw.js";
6
6
  import { f as defaultRuntime } from "./subsystem-8bY95KEB.js";
7
7
  import "./exec-BmMB8-Xs.js";
@@ -106,7 +106,7 @@ import "./npm-registry-spec-DVXqd4Pf.js";
106
106
  import "./skill-scanner-CMBwwxis.js";
107
107
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-B9skpWIo.js";
108
108
  import { t as renderTable } from "./table-i7J9YlN5.js";
109
- import { t as buildPluginStatusReport } from "./status-BpU9At8G.js";
109
+ import { t as buildPluginStatusReport } from "./status-M-5d2BWR.js";
110
110
  import { n as updateNpmInstalledPlugins } from "./update-BS8h2lwA.js";
111
111
  import fs from "node:fs";
112
112
  import os from "node:os";
@@ -13,7 +13,7 @@ import "./client-DrK7aLru.js";
13
13
  import "./call-mR3kLwRx.js";
14
14
  import "./message-channel-CVHJDItx.js";
15
15
  import "./pairing-token-Byh6drgn.js";
16
- import "./subagent-registry-DoLtM6tb.js";
16
+ import "./subagent-registry-wQzxRrPx.js";
17
17
  import "./sessions-CPk6B4FT.js";
18
18
  import "./tokens-ANnYrShl.js";
19
19
  import "./plugins-Dhh2a3qc.js";
@@ -102,7 +102,7 @@ import "./npm-registry-spec-DkaZNHAW.js";
102
102
  import "./skill-scanner-Cb7mXGIR.js";
103
103
  import { i as resolvePluginInstallDir, n as installPluginFromNpmSpec, r as installPluginFromPath, t as recordPluginInstall } from "./installs-DDy4Ij7L.js";
104
104
  import { t as renderTable } from "./table-C9BoE_4p.js";
105
- import { t as buildPluginStatusReport } from "./status-B0DTmnlx.js";
105
+ import { t as buildPluginStatusReport } from "./status-CpRINy6s.js";
106
106
  import { n as updateNpmInstalledPlugins } from "./update-ChO83Ek6.js";
107
107
  import os from "node:os";
108
108
  import path from "node:path";
@@ -14,7 +14,7 @@ import "./client-DrK7aLru.js";
14
14
  import "./call-mR3kLwRx.js";
15
15
  import "./message-channel-CVHJDItx.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import "./subagent-registry-DoLtM6tb.js";
17
+ import "./subagent-registry-wQzxRrPx.js";
18
18
  import "./sessions-CPk6B4FT.js";
19
19
  import "./tokens-ANnYrShl.js";
20
20
  import "./plugins-Dhh2a3qc.js";
@@ -99,13 +99,13 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D5pZ7KsY.js";
100
100
  import "./pi-tools.policy-C4HlSnsO.js";
101
101
  import "./catalog-Da8o-cxw.js";
102
- import "./plugin-registry-Bm3oXtZ_.js";
103
- import { n as resolveCliChannelOptions } from "./channel-options-HIUzORO6.js";
104
- import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-kiCDYnvk.js";
105
- import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-CuwwryVI.js";
102
+ import "./plugin-registry-BaocjXe1.js";
103
+ import { n as resolveCliChannelOptions } from "./channel-options-DWLeOUBy.js";
104
+ import { t as getSubCliCommandsWithSubcommands } from "./register.subclis-B7MsoFZQ.js";
105
+ import { a as registerProgramCommands, r as getCoreCliCommandsWithSubcommands } from "./command-registry-BNqpshUx.js";
106
106
  import { r as setProgramContext } from "./program-context-5q-A0wbP.js";
107
107
  import { t as forceFreePort } from "./ports-BxzJ3ENr.js";
108
- import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-BrBNvO5B.js";
108
+ import { n as formatCliBannerLine, r as hasEmittedCliBanner, t as emitCliBanner } from "./banner-DxWInoxb.js";
109
109
  import { Command } from "commander";
110
110
 
111
111
  //#region src/cli/program/context.ts
@@ -213,7 +213,7 @@ function registerPreActionHooks(program, programVersion) {
213
213
  commandPath
214
214
  });
215
215
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
216
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-Bm3oXtZ_.js").then((n) => n.n);
216
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-BaocjXe1.js").then((n) => n.n);
217
217
  ensurePluginRegistryLoaded();
218
218
  }
219
219
  });