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

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 (98) hide show
  1. package/dist/{agents-BtqLW18n.js → agents-CuMsK_DS.js} +4 -4
  2. package/dist/{agents.config-B-tuPgrg.js → agents.config-BXoIfujZ.js} +1 -1
  3. package/dist/{agents.config-ICVDwC0C.js → agents.config-e_xeppAS.js} +1 -1
  4. package/dist/{auth-choice-6iuXqwcN.js → auth-choice-B45xiAZ_.js} +1 -1
  5. package/dist/{auth-choice-BjZRva43.js → auth-choice-Cds0pSuL.js} +1 -1
  6. package/dist/{banner-B3WC17dn.js → banner-BrBNvO5B.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +1 -1
  9. package/dist/bundled/session-memory/handler.js +1 -1
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-G8V1c6AS.js → channel-options-HIUzORO6.js} +1 -1
  12. package/dist/{channel-options-BDj65ZyO.js → channel-options-K4gVRVl0.js} +1 -1
  13. package/dist/{channel-web-B_ZYKCEQ.js → channel-web-BhQMRa2x.js} +1 -1
  14. package/dist/{channels-cli-raxsTCN2.js → channels-cli-RbZdgktP.js} +4 -4
  15. package/dist/{channels-cli-DqFbn6qS.js → channels-cli-SwsUfdhN.js} +4 -4
  16. package/dist/{cli-CR9BTL9c.js → cli-DCtguEMl.js} +1 -1
  17. package/dist/{cli-E0T5u43Z.js → cli-DZR34VYb.js} +1 -1
  18. package/dist/{command-registry-BmpWsMTW.js → command-registry-CuwwryVI.js} +9 -9
  19. package/dist/{completion-cli-ilRVVz-z.js → completion-cli-CHvR27lh.js} +2 -2
  20. package/dist/{completion-cli-S4G6qt8g.js → completion-cli-Cq8iP9Aw.js} +1 -1
  21. package/dist/{config-cli-WbPlELKk.js → config-cli-BwShV3v6.js} +1 -1
  22. package/dist/{config-cli-Cko5ncf5.js → config-cli-Ci5S1iD4.js} +1 -1
  23. package/dist/{configure-BBkx0Gee.js → configure-DPlBhyXy.js} +3 -3
  24. package/dist/{configure-B-GCDUGh.js → configure-D_1pz9E3.js} +3 -3
  25. package/dist/{doctor-completion-7mRw3cHh.js → doctor-completion-BJIw8vai.js} +1 -1
  26. package/dist/{doctor-completion-CJKoQcYI.js → doctor-completion-BfrgA2mV.js} +1 -1
  27. package/dist/entry.js +1 -1
  28. package/dist/extensionAPI.js +1 -1
  29. package/dist/{gateway-cli-AhPjzNqQ.js → gateway-cli-BeBfQrbx.js} +8 -8
  30. package/dist/{gateway-cli-CmSTW0ue.js → gateway-cli-yqwgOF3f.js} +8 -8
  31. package/dist/{health-ADwLM-Or.js → health-BTIp89si.js} +1 -1
  32. package/dist/{health-fiXB0fGK.js → health-CKF0OJ25.js} +1 -1
  33. package/dist/{hooks-cli-DRoJbg8P.js → hooks-cli-BKn8RjUM.js} +2 -2
  34. package/dist/{hooks-cli-XfbsybsC.js → hooks-cli-Cjs7SuB4.js} +2 -2
  35. package/dist/index.js +6 -6
  36. package/dist/llm-slug-generator.js +1 -1
  37. package/dist/{models-2tG63q_V.js → models-C08NQUuO.js} +2 -2
  38. package/dist/{models-cli-CR_SMGJ0.js → models-cli-COXYLQjz.js} +2 -2
  39. package/dist/{models-cli-BWxHuaVU.js → models-cli-uJJpIivJ.js} +3 -3
  40. package/dist/{onboard-a3lJkMHB.js → onboard-CnHHrRkg.js} +2 -2
  41. package/dist/{onboard-DBSlZhzk.js → onboard-D9sqU2kW.js} +2 -2
  42. package/dist/{onboard-channels-B8j2CJsJ.js → onboard-channels-DFdGULvK.js} +1 -1
  43. package/dist/{onboard-channels-BUE80D3V.js → onboard-channels-FyoGJoRI.js} +1 -1
  44. package/dist/{onboarding-BPiYCwYW.js → onboarding-BMdfhdc1.js} +3 -3
  45. package/dist/{onboarding-vEEafQpu.js → onboarding-ys5PK2iC.js} +3 -3
  46. package/dist/{onboarding.finalize-ASGzuJ_m.js → onboarding.finalize-Czj9rIDx.js} +6 -6
  47. package/dist/{onboarding.finalize-C7185nuS.js → onboarding.finalize-DGwRmQPQ.js} +5 -5
  48. package/dist/{pi-embedded-BfX7An0n.js → pi-embedded-BFfZiGJD.js} +38 -5
  49. package/dist/{pi-embedded-DtVM2K0j.js → pi-embedded-CQ9C6y-Z.js} +38 -5
  50. package/dist/{plugin-registry-DAvWT8O2.js → plugin-registry-Bm3oXtZ_.js} +1 -1
  51. package/dist/{plugin-registry-CDCLBIsW.js → plugin-registry-CbLd0SuX.js} +1 -1
  52. package/dist/plugin-sdk/{channel-web-D7oXjz9F.js → channel-web-BijwJ-sy.js} +1 -1
  53. package/dist/plugin-sdk/index.js +2 -2
  54. package/dist/plugin-sdk/{reply-CcZVzbxJ.js → reply-7CRdEEVf.js} +38 -5
  55. package/dist/plugin-sdk/{web-DKcOGlkN.js → web-DbfteoVI.js} +2 -2
  56. package/dist/{plugins-cli-BUojFAGL.js → plugins-cli-CuZ9yeLM.js} +2 -2
  57. package/dist/{plugins-cli-ekc2VJ2E.js → plugins-cli-D9kYnV70.js} +2 -2
  58. package/dist/{program-C6lY3-78.js → program-DnLmcYvI.js} +7 -7
  59. package/dist/{program-context-Cf4DLb4D.js → program-context-BFlDtZ7u.js} +17 -17
  60. package/dist/{prompt-select-styled-DZrDBBvM.js → prompt-select-styled-ByfdmSdC.js} +4 -4
  61. package/dist/{prompt-select-styled-BB0toldS.js → prompt-select-styled-vecx8TWe.js} +4 -4
  62. package/dist/{provider-auth-helpers-DzLX-hrT.js → provider-auth-helpers-CDiCEf5I.js} +1 -1
  63. package/dist/{provider-auth-helpers-BmRtSzv1.js → provider-auth-helpers-D5aiUDUx.js} +1 -1
  64. package/dist/{push-apns-BoavuUl1.js → push-apns-CIFN_ehC.js} +1 -1
  65. package/dist/{push-apns-DRicQb8n.js → push-apns-DnQI6P_1.js} +1 -1
  66. package/dist/{register.agent-BmmgT0mN.js → register.agent-BAb4XSav.js} +5 -5
  67. package/dist/{register.agent-Ddx0H8cv.js → register.agent-m9s6Wdxg.js} +6 -6
  68. package/dist/{register.configure-DJnHqk6O.js → register.configure-CH9nyxsf.js} +6 -6
  69. package/dist/{register.configure-CQU6KgeW.js → register.configure-lUHQYgJj.js} +6 -6
  70. package/dist/{register.maintenance-Cqc5yCQG.js → register.maintenance-BZ5w5uEj.js} +7 -7
  71. package/dist/{register.maintenance-BV1xriuR.js → register.maintenance-D6b4iNV5.js} +8 -8
  72. package/dist/{register.message-Ihec9Qhj.js → register.message-BNwoWgh6.js} +2 -2
  73. package/dist/{register.message-CNpNd0Ap.js → register.message-DrqsD-cs.js} +2 -2
  74. package/dist/{register.onboard-CL9W60Ru.js → register.onboard-BJC-pkiP.js} +4 -4
  75. package/dist/{register.onboard-DIwP9ira.js → register.onboard-CWGIbeMt.js} +4 -4
  76. package/dist/{register.setup-CsdexgyX.js → register.setup-B2Q7oNUf.js} +4 -4
  77. package/dist/{register.setup-2GCiWxqM.js → register.setup-Cyy-u_LT.js} +4 -4
  78. package/dist/{register.status-health-sessions-GhqBz76y.js → register.status-health-sessions-CbFmRZ23.js} +3 -3
  79. package/dist/{register.status-health-sessions-CZoLCevz.js → register.status-health-sessions-XToqPPob.js} +3 -3
  80. package/dist/{register.subclis-B4o6BJ2N.js → register.subclis-kiCDYnvk.js} +9 -9
  81. package/dist/{reply-CebOfFpO.js → reply-BLgYvx8K.js} +38 -5
  82. package/dist/{run-main-Dhw3C-_j.js → run-main-ClQN17NG.js} +14 -14
  83. package/dist/{server-node-events-Cd_Um0Ih.js → server-node-events-CtGYZ4NX.js} +2 -2
  84. package/dist/{server-node-events-Cx6vpHYY.js → server-node-events-D8mdarwc.js} +2 -2
  85. package/dist/{session-dirs-D1JZtaFB.js → session-dirs-CLp_APkW.js} +1 -1
  86. package/dist/{session-dirs-BksC_ZJx.js → session-dirs-qa1wz8KY.js} +1 -1
  87. package/dist/{status-vxjEMgge.js → status-B0DTmnlx.js} +1 -1
  88. package/dist/{status-BcZRY3RM.js → status-BpU9At8G.js} +1 -1
  89. package/dist/{status-CadxgcYe.js → status-CUi6ZcuM.js} +2 -2
  90. package/dist/{status-UO6LTko9.js → status-DlprmiLH.js} +2 -2
  91. package/dist/{subagent-registry-DxAANdOO.js → subagent-registry-DoLtM6tb.js} +38 -5
  92. package/dist/{update-cli-CqsOKfGt.js → update-cli-DDK1P0nj.js} +7 -7
  93. package/dist/{update-cli-CidTQDU8.js → update-cli-eHwjFIY5.js} +8 -8
  94. package/dist/{web-CxJJ94q0.js → web-BNiJyHah.js} +1 -1
  95. package/dist/{web-BBMLIpu1.js → web-DPUOYear.js} +1 -1
  96. package/dist/{web-IvoqYVGl.js → web-gOkp0QXS.js} +1 -1
  97. package/dist/{web-IgO1--qh.js → web-w_Wqd8mO.js} +2 -2
  98. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import "./paths-B4BZAPZh.js";
2
2
  import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-BlC2Fskb.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-CebOfFpO.js";
4
+ import "./reply-BLgYvx8K.js";
5
5
  import "./registry-Dygi7Azw.js";
6
6
  import { f as defaultRuntime } from "./subsystem-8bY95KEB.js";
7
7
  import "./exec-BmMB8-Xs.js";
@@ -108,7 +108,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
108
108
  import { t as renderTable } from "./table-i7J9YlN5.js";
109
109
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-DpGqXq9W.js";
110
110
  import { t as buildWorkspaceHookStatus } from "./hooks-status-DZI7Fkka.js";
111
- import { t as buildPluginStatusReport } from "./status-BcZRY3RM.js";
111
+ import { t as buildPluginStatusReport } from "./status-BpU9At8G.js";
112
112
  import fs from "node:fs";
113
113
  import path from "node:path";
114
114
  import fs$1 from "node:fs/promises";
@@ -15,7 +15,7 @@ import "./client-DrK7aLru.js";
15
15
  import "./call-mR3kLwRx.js";
16
16
  import "./message-channel-CVHJDItx.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import "./subagent-registry-DxAANdOO.js";
18
+ import "./subagent-registry-DoLtM6tb.js";
19
19
  import "./sessions-CPk6B4FT.js";
20
20
  import "./tokens-ANnYrShl.js";
21
21
  import "./plugins-Dhh2a3qc.js";
@@ -104,7 +104,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
104
104
  import { t as renderTable } from "./table-C9BoE_4p.js";
105
105
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-DWI9N-Ks.js";
106
106
  import { t as buildWorkspaceHookStatus } from "./hooks-status-CNo1bkDq.js";
107
- import { t as buildPluginStatusReport } from "./status-vxjEMgge.js";
107
+ import { t as buildPluginStatusReport } from "./status-B0DTmnlx.js";
108
108
  import path from "node:path";
109
109
  import fs from "node:fs";
110
110
  import fs$1 from "node:fs/promises";
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import "./paths-B4BZAPZh.js";
3
3
  import { B as theme, P as setVerbose, T as toWhatsappJid, l as escapeRegExp, m as normalizeE164, n as assertWebChannel, z as isRich } from "./utils-BlC2Fskb.js";
4
4
  import "./thinking-EAliFiVK.js";
5
- import { Vt as createDefaultDeps, t as getReplyFromConfig, wt as resolveCommitHash } from "./reply-CebOfFpO.js";
5
+ import { Vt as createDefaultDeps, t as getReplyFromConfig, wt as resolveCommitHash } from "./reply-BLgYvx8K.js";
6
6
  import "./registry-Dygi7Azw.js";
7
7
  import { f as defaultRuntime, r as enableConsoleCapture, u as visibleWidth } from "./subsystem-8bY95KEB.js";
8
8
  import { n as runExec, t as runCommandWithTimeout } from "./exec-BmMB8-Xs.js";
@@ -103,7 +103,7 @@ import "./control-service-FOBhD0N3.js";
103
103
  import "./stagger-B6VQyn1F.js";
104
104
  import "./channel-selection-C27fdBDC.js";
105
105
  import "./pi-tools.policy-B3nJHwWp.js";
106
- import { r as waitForever, t as monitorWebChannel } from "./channel-web-B_ZYKCEQ.js";
106
+ import { r as waitForever, t as monitorWebChannel } from "./channel-web-BhQMRa2x.js";
107
107
  import "./outbound-DDOgGWA0.js";
108
108
  import "./session-Bx9d5CDa.js";
109
109
  import "./login-CLJDOcdf.js";
@@ -112,10 +112,10 @@ import { t as ensureOpenClawCliOnPath } from "./path-env-Cd727z3O.js";
112
112
  import { t as assertSupportedRuntime } from "./runtime-guard-BYGIYhEa.js";
113
113
  import "./ports-Bha3elHt.js";
114
114
  import { a as hasFlag, i as getVerboseFlag, n as getCommandPath, o as hasHelpOrVersion, s as hasRootVersionAlias } from "./argv-iDNY1AU9.js";
115
- import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-Cf4DLb4D.js";
115
+ import { i as getCoreCliCommandsWithSubcommands, n as setProgramContext, o as registerProgramCommands, s as getSubCliCommandsWithSubcommands } from "./program-context-BFlDtZ7u.js";
116
116
  import "./catalog-C7TxlaHu.js";
117
- import "./plugin-registry-CDCLBIsW.js";
118
- import { n as resolveCliChannelOptions } from "./channel-options-BDj65ZyO.js";
117
+ import "./plugin-registry-CbLd0SuX.js";
118
+ import { n as resolveCliChannelOptions } from "./channel-options-K4gVRVl0.js";
119
119
  import process$1 from "node:process";
120
120
  import { fileURLToPath } from "node:url";
121
121
  import { Command } from "commander";
@@ -515,7 +515,7 @@ function registerPreActionHooks(program, programVersion) {
515
515
  commandPath
516
516
  });
517
517
  if (PLUGIN_REQUIRED_COMMANDS.has(commandPath[0])) {
518
- const { ensurePluginRegistryLoaded } = await import("./plugin-registry-CDCLBIsW.js").then((n) => n.n);
518
+ const { ensurePluginRegistryLoaded } = await import("./plugin-registry-CbLd0SuX.js").then((n) => n.n);
519
519
  ensurePluginRegistryLoaded();
520
520
  }
521
521
  });
@@ -4,7 +4,7 @@ import { c as resolveDefaultAgentId, r as resolveAgentDir, s as resolveAgentWork
4
4
  import "./subsystem-BF9jT_Nw.js";
5
5
  import "./workspace-D-fnhRGM.js";
6
6
  import "./tokens-B-c56SkM.js";
7
- import { t as runEmbeddedPiAgent } from "./pi-embedded-BfX7An0n.js";
7
+ import { t as runEmbeddedPiAgent } from "./pi-embedded-BFfZiGJD.js";
8
8
  import "./plugins-BfEZesgD.js";
9
9
  import "./accounts-C8m4ADkw.js";
10
10
  import "./boolean-B8-BqKGQ.js";
@@ -7,7 +7,7 @@ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-BnX14koJ.j
7
7
  import { i as resolveForwardCompatModel, r as ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES } from "./model-ChKLb_d2.js";
8
8
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Do3xMEtM.js";
9
9
  import { C as parseDurationMs, i as loadConfig } from "./config-D-Tvm4yj.js";
10
- import { en as loadProviderUsageSummary, gn as formatRemainingShort, hn as buildAuthHealthSummary, mn as DEFAULT_OAUTH_WARN_MS, mt as describeFailoverError, nn as formatUsageWindowSummary, pn as maskApiKey, rn as resolveUsageProviderId, s as runEmbeddedPiAgent } from "./subagent-registry-DxAANdOO.js";
10
+ import { en as loadProviderUsageSummary, gn as formatRemainingShort, hn as buildAuthHealthSummary, mn as DEFAULT_OAUTH_WARN_MS, mt as describeFailoverError, nn as formatUsageWindowSummary, pn as maskApiKey, rn as resolveUsageProviderId, s as runEmbeddedPiAgent } from "./subagent-registry-DoLtM6tb.js";
11
11
  import { i as resolveSessionTranscriptPath, s as resolveSessionTranscriptsDirForAgent } from "./paths-DNdWAq7b.js";
12
12
  import { t as ensureOpenClawModelsJson } from "./models-config-Cn16PIi1.js";
13
13
  import { n as loadModelCatalog } from "./model-catalog-BArXr_C_.js";
@@ -21,7 +21,7 @@ import { n as redactSecrets } from "./format-B0yJsjEo.js";
21
21
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-CoT9ivCt.js";
22
22
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-ED-ILVvP.js";
23
23
  import { n as logConfigUpdated } from "./logging-PVQxLC6I.js";
24
- import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-DzLX-hrT.js";
24
+ import { a as createVpsAwareOAuthHandlers, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-CDiCEf5I.js";
25
25
  import path from "node:path";
26
26
  import fs from "node:fs/promises";
27
27
  import { complete, getEnvApiKey, getModel } from "@mariozechner/pi-ai";
@@ -1,7 +1,7 @@
1
1
  import { t as CONFIG_PATH } from "./paths-B4BZAPZh.js";
2
2
  import { B as theme, R as colorize, S as shortenHomePath, z as isRich$1 } from "./utils-BlC2Fskb.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Ct as resolveUsageProviderId, Jt as describeFailoverError, St as formatUsageWindowSummary, bt as loadProviderUsageSummary, dr as maskApiKey, fr as DEFAULT_OAUTH_WARN_MS, l as runEmbeddedPiAgent, mr as formatRemainingShort, pr as buildAuthHealthSummary } from "./reply-CebOfFpO.js";
4
+ import { Ct as resolveUsageProviderId, Jt as describeFailoverError, St as formatUsageWindowSummary, bt as loadProviderUsageSummary, dr as maskApiKey, fr as DEFAULT_OAUTH_WARN_MS, l as runEmbeddedPiAgent, mr as formatRemainingShort, pr as buildAuthHealthSummary } from "./reply-BLgYvx8K.js";
5
5
  import "./registry-Dygi7Azw.js";
6
6
  import { f as defaultRuntime } from "./subsystem-8bY95KEB.js";
7
7
  import "./exec-BmMB8-Xs.js";
@@ -110,7 +110,7 @@ import { n as redactSecrets } from "./format-DNqZrSx7.js";
110
110
  import { a as isLocalBaseUrl, c as normalizeAlias, d as resolveModelTarget, f as updateConfig, i as formatTokenK, l as resolveKnownAgentId, n as ensureFlagCompatibility, o as loadValidConfigOrThrow, r as formatMs, s as mergePrimaryFallbackConfig, t as applyDefaultModelPrimaryUpdate, u as resolveModelKeysFromEntries } from "./shared-CeEsUjjY.js";
111
111
  import { d as applyAuthProfileConfig, n as validateAnthropicSetupToken } from "./auth-token-DtCLmYKX.js";
112
112
  import { n as logConfigUpdated } from "./logging-DNqMaj3H.js";
113
- import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-BmRtSzv1.js";
113
+ import { a as createVpsAwareOAuthHandlers, c as githubCopilotLoginCommand, i as resolveProviderMatch, n as mergeConfigPatch, o as isRemoteEnvironment, r as pickAuthMethod, s as resolvePluginProviders, t as applyDefaultModel } from "./provider-auth-helpers-D5aiUDUx.js";
114
114
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./system-cli-B1UbaLLO.js";
115
115
  import path from "node:path";
116
116
  import fs from "node:fs/promises";
@@ -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-DxAANdOO.js";
17
+ import "./subagent-registry-DoLtM6tb.js";
18
18
  import "./sessions-CPk6B4FT.js";
19
19
  import "./tokens-ANnYrShl.js";
20
20
  import "./plugins-Dhh2a3qc.js";
@@ -104,8 +104,8 @@ import "./table-C9BoE_4p.js";
104
104
  import "./shared-CoT9ivCt.js";
105
105
  import "./auth-token-ED-ILVvP.js";
106
106
  import "./logging-PVQxLC6I.js";
107
- import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-DzLX-hrT.js";
108
- import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-2tG63q_V.js";
107
+ import { c as githubCopilotLoginCommand } from "./provider-auth-helpers-CDiCEf5I.js";
108
+ import { C as modelsAliasesListCommand, S as modelsAliasesAddCommand, _ as modelsAuthOrderSetCommand, a as modelsStatusCommand, b as modelsAuthPasteTokenCommand, c as modelsImageFallbacksClearCommand, d as modelsFallbacksAddCommand, f as modelsFallbacksClearCommand, g as modelsAuthOrderGetCommand, h as modelsAuthOrderClearCommand, i as modelsScanCommand, l as modelsImageFallbacksListCommand, m as modelsFallbacksRemoveCommand, n as modelsSetImageCommand, o as modelsListCommand, p as modelsFallbacksListCommand, r as modelsSetCommand, s as modelsImageFallbacksAddCommand, u as modelsImageFallbacksRemoveCommand, v as modelsAuthAddCommand, w as modelsAliasesRemoveCommand, x as modelsAuthSetupTokenCommand, y as modelsAuthLoginCommand } from "./models-C08NQUuO.js";
109
109
 
110
110
  //#region src/cli/models-cli.ts
111
111
  function runModelsCommand(action) {
@@ -11,8 +11,8 @@ import { t as createClackPrompter } from "./clack-prompter-Cpl8cd_B.js";
11
11
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGatewayDaemonRuntime, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D5lkiu2O.js";
12
12
  import { r as isSystemdUserServiceAvailable } from "./systemd-Dq5fANx0.js";
13
13
  import { t as resolveGatewayService } from "./service-CJGWS46r.js";
14
- import { r as healthCommand } from "./health-ADwLM-Or.js";
15
- import { t as runOnboardingWizard } from "./onboarding-BPiYCwYW.js";
14
+ import { r as healthCommand } from "./health-BTIp89si.js";
15
+ import { t as runOnboardingWizard } from "./onboarding-BMdfhdc1.js";
16
16
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-DtCLmYKX.js";
17
17
  import { n as logConfigUpdated } from "./logging-DNqMaj3H.js";
18
18
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-aJ8D6F_s.js";
@@ -9,8 +9,8 @@ import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, r as isGate
9
9
  import { t as assertSupportedRuntime } from "./runtime-guard-Cs_ClFhP.js";
10
10
  import { r as isSystemdUserServiceAvailable } from "./systemd-BrybH4HV.js";
11
11
  import { t as resolveGatewayService } from "./service-DcFI40_W.js";
12
- import { r as healthCommand } from "./health-fiXB0fGK.js";
13
- import { t as runOnboardingWizard } from "./onboarding-vEEafQpu.js";
12
+ import { r as healthCommand } from "./health-CKF0OJ25.js";
13
+ import { t as runOnboardingWizard } from "./onboarding-ys5PK2iC.js";
14
14
  import { $ as setHuggingfaceApiKey, A as applyXaiConfig, B as applyVercelAiGatewayConfig, E as applyTogetherConfig, I as applyLitellmConfig, M as applyXiaomiConfig, O as applyVeniceConfig, P as applyZaiConfig, Q as setGeminiApiKey, R as applyCloudflareAiGatewayConfig, S as applyQianfanConfig, X as setAnthropicApiKey, Z as setCloudflareAiGatewayConfig, _ as applyMoonshotConfigCn, a as applyMinimaxApiConfig, at as setOpenrouterApiKey, b as applyOpenrouterConfig, ct as setTogetherApiKey, d as applyAuthProfileConfig, dt as setXaiApiKey, et as setKimiCodingApiKey, f as applyHuggingfaceConfig, ft as setXiaomiApiKey, g as applyMoonshotConfig, it as setOpencodeZenApiKey, l as applyMinimaxConfig, lt as setVeniceApiKey, m as applyKimiCodeConfig, n as validateAnthropicSetupToken, nt as setMinimaxApiKey, o as applyMinimaxApiConfigCn, ot as setQianfanApiKey, pt as setZaiApiKey, r as applyOpencodeZenConfig, rt as setMoonshotApiKey, st as setSyntheticApiKey, t as buildTokenProfileId, tt as setLitellmApiKey, ut as setVercelAiGatewayApiKey, w as applySyntheticConfig } from "./auth-token-ED-ILVvP.js";
15
15
  import { n as logConfigUpdated } from "./logging-PVQxLC6I.js";
16
16
  import { n as isDeprecatedAuthChoice, r as normalizeLegacyOnboardAuthChoice } from "./auth-choice-legacy-DxCamFcQ.js";
@@ -3,7 +3,7 @@ import { E as formatChannelSelectionLine, O as listChatChannels, T as formatChan
3
3
  import { t as formatCliCommand } from "./command-format-D3syQOZg.js";
4
4
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DjZ7Z1hW.js";
5
5
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-DhajVyRS.js";
6
- import { g as loadOpenClawPlugins, h as createPluginLoaderLogger } from "./subagent-registry-DxAANdOO.js";
6
+ import { g as loadOpenClawPlugins, h as createPluginLoaderLogger } from "./subagent-registry-DoLtM6tb.js";
7
7
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-Dhh2a3qc.js";
8
8
  import { t as formatDocsLink } from "./links-CW8Bx7rK.js";
9
9
  import { r as listChannelPluginCatalogEntries } from "./catalog-Da8o-cxw.js";
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { gt as loadOpenClawPlugins, ht as createPluginLoaderLogger } from "./reply-CebOfFpO.js";
2
+ import { gt as loadOpenClawPlugins, ht as createPluginLoaderLogger } from "./reply-BLgYvx8K.js";
3
3
  import { h as normalizeAccountId, m as DEFAULT_ACCOUNT_ID } from "./session-key-DCt45XZa.js";
4
4
  import { a as formatChannelSelectionLine, i as formatChannelPrimerLine, s as listChatChannels } from "./registry-Dygi7Azw.js";
5
5
  import { t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
@@ -225,7 +225,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
225
225
  const { ensureAuthProfileStore } = await import("./model-selection-LsyfCl3e.js").then((n) => n.dt);
226
226
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-Cn6U3t8O.js").then((n) => n.t);
227
227
  const { promptCustomApiConfig } = await import("./onboard-custom-BxSvKcCx.js").then((n) => n.r);
228
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-6iuXqwcN.js").then((n) => n.t);
228
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-B45xiAZ_.js").then((n) => n.t);
229
229
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-7lns6xv3.js").then((n) => n.i);
230
230
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
231
231
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -278,7 +278,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
278
278
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
279
279
  else {
280
280
  const { listChannelPlugins } = await import("./plugins-C-_54oRw.js").then((n) => n.i);
281
- const { setupChannels } = await import("./onboard-channels-BUE80D3V.js").then((n) => n.n);
281
+ const { setupChannels } = await import("./onboard-channels-FyoGJoRI.js").then((n) => n.n);
282
282
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
283
283
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
284
284
  allowSignalInstall: true,
@@ -304,7 +304,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
304
304
  mode
305
305
  });
306
306
  await writeConfigFile(nextConfig);
307
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-C7185nuS.js");
307
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-DGwRmQPQ.js");
308
308
  const { launchedTui } = await finalizeOnboardingWizard({
309
309
  flow,
310
310
  opts,
@@ -223,7 +223,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
223
223
  const { ensureAuthProfileStore } = await import("./auth-profiles-C7RTY9Sv.js").then((n) => n.t);
224
224
  const { promptAuthChoiceGrouped } = await import("./auth-choice-prompt-DF6R_pgV.js").then((n) => n.t);
225
225
  const { promptCustomApiConfig } = await import("./onboard-custom-zhlfzOTA.js").then((n) => n.r);
226
- const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-BjZRva43.js").then((n) => n.t);
226
+ const { applyAuthChoice, resolvePreferredProviderForAuthChoice, warnIfModelConfigLooksOff } = await import("./auth-choice-Cds0pSuL.js").then((n) => n.t);
227
227
  const { applyPrimaryModel, promptDefaultModel } = await import("./model-picker-CpR4F3Tp.js").then((n) => n.i);
228
228
  const authStore = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false });
229
229
  const authChoiceFromPrompt = opts.authChoice === void 0;
@@ -276,7 +276,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
276
276
  if (opts.skipChannels ?? opts.skipProviders) await prompter.note("Skipping channel setup.", "Channels");
277
277
  else {
278
278
  const { listChannelPlugins } = await import("./plugins-Dhh2a3qc.js").then((n) => n.i);
279
- const { setupChannels } = await import("./onboard-channels-B8j2CJsJ.js").then((n) => n.n);
279
+ const { setupChannels } = await import("./onboard-channels-DFdGULvK.js").then((n) => n.n);
280
280
  const quickstartAllowFromChannels = flow === "quickstart" ? listChannelPlugins().filter((plugin) => plugin.meta.quickstartAllowFrom).map((plugin) => plugin.id) : [];
281
281
  nextConfig = await setupChannels(nextConfig, runtime, prompter, {
282
282
  allowSignalInstall: true,
@@ -302,7 +302,7 @@ async function runOnboardingWizard(opts, runtime = defaultRuntime, prompter) {
302
302
  mode
303
303
  });
304
304
  await writeConfigFile(nextConfig);
305
- const { finalizeOnboardingWizard } = await import("./onboarding.finalize-ASGzuJ_m.js");
305
+ const { finalizeOnboardingWizard } = await import("./onboarding.finalize-Czj9rIDx.js");
306
306
  const { launchedTui } = await finalizeOnboardingWizard({
307
307
  flow,
308
308
  opts,
@@ -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-DxAANdOO.js";
17
+ import "./subagent-registry-DoLtM6tb.js";
18
18
  import "./sessions-CPk6B4FT.js";
19
19
  import "./tokens-ANnYrShl.js";
20
20
  import "./plugins-Dhh2a3qc.js";
@@ -99,18 +99,18 @@ import "./prompt-style-DwCXob2h.js";
99
99
  import "./pairing-labels-D5pZ7KsY.js";
100
100
  import "./pi-tools.policy-C4HlSnsO.js";
101
101
  import "./note-DDecZomM.js";
102
- import "./register.subclis-B4o6BJ2N.js";
103
- import "./command-registry-BmpWsMTW.js";
102
+ import "./register.subclis-kiCDYnvk.js";
103
+ import "./command-registry-CuwwryVI.js";
104
104
  import "./program-context-5q-A0wbP.js";
105
- import { r as installCompletion } from "./completion-cli-ilRVVz-z.js";
105
+ import { r as installCompletion } from "./completion-cli-CHvR27lh.js";
106
106
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-DAGH3gDr.js";
107
107
  import "./runtime-guard-Cs_ClFhP.js";
108
108
  import { r as isSystemdUserServiceAvailable } from "./systemd-BrybH4HV.js";
109
109
  import { t as resolveGatewayService } from "./service-DcFI40_W.js";
110
- import { r as healthCommand } from "./health-fiXB0fGK.js";
110
+ import { r as healthCommand } from "./health-CKF0OJ25.js";
111
111
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BC2GSxMJ.js";
112
112
  import { t as formatHealthCheckFailure } from "./health-format-DkjSgkDx.js";
113
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-7mRw3cHh.js";
113
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BJIw8vai.js";
114
114
  import { t as runTui } from "./tui-BE7l4bos.js";
115
115
  import os from "node:os";
116
116
  import path from "node:path";
@@ -1,7 +1,7 @@
1
1
  import "./paths-B4BZAPZh.js";
2
2
  import { h as pathExists, y as resolveUserPath } from "./utils-BlC2Fskb.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import "./reply-CebOfFpO.js";
4
+ import "./reply-BLgYvx8K.js";
5
5
  import "./registry-Dygi7Azw.js";
6
6
  import { p as restoreTerminalState } from "./subsystem-8bY95KEB.js";
7
7
  import "./exec-BmMB8-Xs.js";
@@ -103,16 +103,16 @@ import "./stagger-B6VQyn1F.js";
103
103
  import "./channel-selection-C27fdBDC.js";
104
104
  import "./pi-tools.policy-B3nJHwWp.js";
105
105
  import "./runtime-guard-BYGIYhEa.js";
106
- import "./program-context-Cf4DLb4D.js";
106
+ import "./program-context-BFlDtZ7u.js";
107
107
  import "./note-DRZSQe0n.js";
108
- import { r as installCompletion } from "./completion-cli-S4G6qt8g.js";
108
+ import { r as installCompletion } from "./completion-cli-Cq8iP9Aw.js";
109
109
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D5lkiu2O.js";
110
110
  import { r as isSystemdUserServiceAvailable } from "./systemd-Dq5fANx0.js";
111
111
  import { t as resolveGatewayService } from "./service-CJGWS46r.js";
112
- import { r as healthCommand } from "./health-ADwLM-Or.js";
112
+ import { r as healthCommand } from "./health-BTIp89si.js";
113
113
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CjH2ywP0.js";
114
114
  import { t as formatHealthCheckFailure } from "./health-format-D6i_RyWd.js";
115
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-CJKoQcYI.js";
115
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BfrgA2mV.js";
116
116
  import { t as runTui } from "./tui-CtmZFfLN.js";
117
117
  import os from "node:os";
118
118
  import path from "node:path";
@@ -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-BBMLIpu1.js");
51484
+ const { sendMessageWhatsApp } = await import("./web-DPUOYear.js");
51485
51485
  return await sendMessageWhatsApp(...args);
51486
51486
  },
51487
51487
  sendMessageTelegram: async (...args) => {
@@ -60272,7 +60272,10 @@ function registerSlackMessageEvents(params) {
60272
60272
  ctx.app.event("app_mention", async ({ event, body }) => {
60273
60273
  try {
60274
60274
  if (ctx.shouldDropMismatchedSlackEvent(body)) return;
60275
- await handleSlackMessage(event, {
60275
+ const mention = event;
60276
+ const channelType = mention.channel_type;
60277
+ if (channelType === "im" || channelType === "mpim") return;
60278
+ await handleSlackMessage(mention, {
60276
60279
  source: "app_mention",
60277
60280
  wasMentioned: true
60278
60281
  });
@@ -61808,6 +61811,11 @@ function createSlackThreadTsResolver(params) {
61808
61811
 
61809
61812
  //#endregion
61810
61813
  //#region src/slack/monitor/message-handler.ts
61814
+ const APP_MENTION_RETRY_TTL_MS = 6e4;
61815
+ function buildSeenMessageKey(channelId, ts) {
61816
+ if (!channelId || !ts) return null;
61817
+ return `${channelId}:${ts}`;
61818
+ }
61811
61819
  function createSlackMessageHandler(params) {
61812
61820
  const { ctx, account } = params;
61813
61821
  const debounceMs = resolveInboundDebounceMs({
@@ -61815,6 +61823,21 @@ function createSlackMessageHandler(params) {
61815
61823
  channel: "slack"
61816
61824
  });
61817
61825
  const threadTsResolver = createSlackThreadTsResolver({ client: ctx.app.client });
61826
+ const appMentionRetryKeys = /* @__PURE__ */ new Map();
61827
+ const pruneAppMentionRetryKeys = (now) => {
61828
+ for (const [key, expiresAt] of appMentionRetryKeys) if (expiresAt <= now) appMentionRetryKeys.delete(key);
61829
+ };
61830
+ const rememberAppMentionRetryKey = (key) => {
61831
+ const now = Date.now();
61832
+ pruneAppMentionRetryKeys(now);
61833
+ appMentionRetryKeys.set(key, now + APP_MENTION_RETRY_TTL_MS);
61834
+ };
61835
+ const consumeAppMentionRetryKey = (key) => {
61836
+ pruneAppMentionRetryKeys(Date.now());
61837
+ if (!appMentionRetryKeys.has(key)) return false;
61838
+ appMentionRetryKeys.delete(key);
61839
+ return true;
61840
+ };
61818
61841
  const debouncer = createInboundDebouncer({
61819
61842
  debounceMs,
61820
61843
  buildKey: (entry) => {
@@ -61847,7 +61870,14 @@ function createSlackMessageHandler(params) {
61847
61870
  wasMentioned: combinedMentioned || last.opts.wasMentioned
61848
61871
  }
61849
61872
  });
61850
- if (!prepared) return;
61873
+ 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;
61879
+ }
61880
+ if (seenMessageKey) appMentionRetryKeys.delete(seenMessageKey);
61851
61881
  if (entries.length > 1) {
61852
61882
  const ids = entries.map((entry) => entry.message.ts).filter(Boolean);
61853
61883
  if (ids.length > 0) {
@@ -61865,7 +61895,10 @@ function createSlackMessageHandler(params) {
61865
61895
  return async (message, opts) => {
61866
61896
  if (opts.source === "message" && message.type !== "message") return;
61867
61897
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message") return;
61868
- if (ctx.markMessageSeen(message.channel, message.ts)) return;
61898
+ const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
61899
+ if (seenMessageKey && ctx.markMessageSeen(message.channel, message.ts)) {
61900
+ if (opts.source !== "app_mention" || !consumeAppMentionRetryKey(seenMessageKey)) return;
61901
+ }
61869
61902
  const resolvedMessage = await threadTsResolver.resolve({
61870
61903
  message,
61871
61904
  source: opts.source
@@ -66769,7 +66802,7 @@ function loadWebLoginQr() {
66769
66802
  return webLoginQrPromise;
66770
66803
  }
66771
66804
  function loadWebChannel() {
66772
- webChannelPromise ??= import("./web-BBMLIpu1.js");
66805
+ webChannelPromise ??= import("./web-DPUOYear.js");
66773
66806
  return webChannelPromise;
66774
66807
  }
66775
66808
  function loadWhatsAppActions() {
@@ -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-IvoqYVGl.js");
51482
+ const { sendMessageWhatsApp } = await import("./web-gOkp0QXS.js");
51483
51483
  return await sendMessageWhatsApp(...args);
51484
51484
  },
51485
51485
  sendMessageTelegram: async (...args) => {
@@ -60270,7 +60270,10 @@ function registerSlackMessageEvents(params) {
60270
60270
  ctx.app.event("app_mention", async ({ event, body }) => {
60271
60271
  try {
60272
60272
  if (ctx.shouldDropMismatchedSlackEvent(body)) return;
60273
- await handleSlackMessage(event, {
60273
+ const mention = event;
60274
+ const channelType = mention.channel_type;
60275
+ if (channelType === "im" || channelType === "mpim") return;
60276
+ await handleSlackMessage(mention, {
60274
60277
  source: "app_mention",
60275
60278
  wasMentioned: true
60276
60279
  });
@@ -61806,6 +61809,11 @@ function createSlackThreadTsResolver(params) {
61806
61809
 
61807
61810
  //#endregion
61808
61811
  //#region src/slack/monitor/message-handler.ts
61812
+ const APP_MENTION_RETRY_TTL_MS = 6e4;
61813
+ function buildSeenMessageKey(channelId, ts) {
61814
+ if (!channelId || !ts) return null;
61815
+ return `${channelId}:${ts}`;
61816
+ }
61809
61817
  function createSlackMessageHandler(params) {
61810
61818
  const { ctx, account } = params;
61811
61819
  const debounceMs = resolveInboundDebounceMs({
@@ -61813,6 +61821,21 @@ function createSlackMessageHandler(params) {
61813
61821
  channel: "slack"
61814
61822
  });
61815
61823
  const threadTsResolver = createSlackThreadTsResolver({ client: ctx.app.client });
61824
+ const appMentionRetryKeys = /* @__PURE__ */ new Map();
61825
+ const pruneAppMentionRetryKeys = (now) => {
61826
+ for (const [key, expiresAt] of appMentionRetryKeys) if (expiresAt <= now) appMentionRetryKeys.delete(key);
61827
+ };
61828
+ const rememberAppMentionRetryKey = (key) => {
61829
+ const now = Date.now();
61830
+ pruneAppMentionRetryKeys(now);
61831
+ appMentionRetryKeys.set(key, now + APP_MENTION_RETRY_TTL_MS);
61832
+ };
61833
+ const consumeAppMentionRetryKey = (key) => {
61834
+ pruneAppMentionRetryKeys(Date.now());
61835
+ if (!appMentionRetryKeys.has(key)) return false;
61836
+ appMentionRetryKeys.delete(key);
61837
+ return true;
61838
+ };
61816
61839
  const debouncer = createInboundDebouncer({
61817
61840
  debounceMs,
61818
61841
  buildKey: (entry) => {
@@ -61845,7 +61868,14 @@ function createSlackMessageHandler(params) {
61845
61868
  wasMentioned: combinedMentioned || last.opts.wasMentioned
61846
61869
  }
61847
61870
  });
61848
- if (!prepared) return;
61871
+ 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;
61877
+ }
61878
+ if (seenMessageKey) appMentionRetryKeys.delete(seenMessageKey);
61849
61879
  if (entries.length > 1) {
61850
61880
  const ids = entries.map((entry) => entry.message.ts).filter(Boolean);
61851
61881
  if (ids.length > 0) {
@@ -61863,7 +61893,10 @@ function createSlackMessageHandler(params) {
61863
61893
  return async (message, opts) => {
61864
61894
  if (opts.source === "message" && message.type !== "message") return;
61865
61895
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message") return;
61866
- if (ctx.markMessageSeen(message.channel, message.ts)) return;
61896
+ const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
61897
+ if (seenMessageKey && ctx.markMessageSeen(message.channel, message.ts)) {
61898
+ if (opts.source !== "app_mention" || !consumeAppMentionRetryKey(seenMessageKey)) return;
61899
+ }
61867
61900
  const resolvedMessage = await threadTsResolver.resolve({
61868
61901
  message,
61869
61902
  source: opts.source
@@ -66767,7 +66800,7 @@ function loadWebLoginQr() {
66767
66800
  return webLoginQrPromise;
66768
66801
  }
66769
66802
  function loadWebChannel() {
66770
- webChannelPromise ??= import("./web-IvoqYVGl.js");
66803
+ webChannelPromise ??= import("./web-gOkp0QXS.js");
66771
66804
  return webChannelPromise;
66772
66805
  }
66773
66806
  function loadWhatsAppActions() {
@@ -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-DxAANdOO.js";
5
+ import { g as loadOpenClawPlugins } from "./subagent-registry-DoLtM6tb.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-CebOfFpO.js";
2
+ import { gt as loadOpenClawPlugins } from "./reply-BLgYvx8K.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-CcZVzbxJ.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";
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-CcZVzbxJ.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";
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-D7oXjz9F.js";
50
+ import { r as resolveWhatsAppHeartbeatRecipients } from "./channel-web-BijwJ-sy.js";
51
51
  import "./image-DN02b1Un.js";
52
52
  import "./pi-model-discovery-LbcEa65a.js";
53
53
  import "./api-key-rotation-DVRFDYWE.js";