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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/{agents-DBULaIPd.js → agents-Acsw6oEr.js} +4 -4
  2. package/dist/{agents.config-Cd3-RJ-K.js → agents.config-BAILtL0e.js} +1 -1
  3. package/dist/{agents.config-DANgtZcG.js → agents.config-DA4Kt9C5.js} +1 -1
  4. package/dist/{audio-preflight-Bqg8wRF0.js → audio-preflight-B45_FIbf.js} +4 -4
  5. package/dist/{audio-preflight-CSF2zAiB.js → audio-preflight-C56sndLt.js} +3 -3
  6. package/dist/{audio-preflight-DUN77LMG.js → audio-preflight-DTxmK1ti.js} +3 -3
  7. package/dist/{audio-preflight-DESlWRvS.js → audio-preflight-UmMU18Rf.js} +3 -3
  8. package/dist/{auth-choice-Bx0wfZkb.js → auth-choice-B0ExtimG.js} +1 -1
  9. package/dist/{auth-choice-EsB1VBYk.js → auth-choice-Cc9nPCSG.js} +1 -1
  10. package/dist/{banner-DSmZ1r91.js → banner-l8hdGVT6.js} +1 -1
  11. package/dist/build-info.json +3 -3
  12. package/dist/bundled/boot-md/handler.js +6 -6
  13. package/dist/bundled/session-memory/handler.js +6 -6
  14. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  15. package/dist/{channel-options-tp4SdwWn.js → channel-options-BOgY_qkz.js} +1 -1
  16. package/dist/{channel-options-BFQz6sGG.js → channel-options-DU0lH77F.js} +1 -1
  17. package/dist/{channel-web-BLVzXq0y.js → channel-web-Bn_o0ClJ.js} +2 -2
  18. package/dist/{channels-cli-BfRfj__G.js → channels-cli-B8iPHVyY.js} +8 -8
  19. package/dist/{channels-cli-DZWnK7L3.js → channels-cli-HyoLT0X_.js} +8 -8
  20. package/dist/{chrome-CnYcE5rb.js → chrome-DBIqeaeX.js} +7 -7
  21. package/dist/{cli-BMvkWAfY.js → cli-BjW27QBR.js} +5 -5
  22. package/dist/{cli-B5YSj6kb.js → cli-CB8wKUFa.js} +5 -5
  23. package/dist/{command-registry-DTFv7rlA.js → command-registry-43P-_3eW.js} +9 -9
  24. package/dist/{completion-cli-CJW4fXUd.js → completion-cli-BrkMcxdh.js} +1 -1
  25. package/dist/{completion-cli-BkAlGttV.js → completion-cli-CSoJQQhc.js} +2 -2
  26. package/dist/{config-cli-C0De5m2w.js → config-cli-CV3y1IAq.js} +1 -1
  27. package/dist/{config-cli-BBaQ2Rhl.js → config-cli-Cuv_T0Jj.js} +1 -1
  28. package/dist/{configure-DC4J1Gf2.js → configure-80FWz9jT.js} +3 -3
  29. package/dist/{configure-_wGqIyys.js → configure-BHGABgNw.js} +3 -3
  30. package/dist/control-ui/assets/{index-Cx1_w3YP.js → index-BfDl8X4O.js} +2 -2
  31. package/dist/control-ui/assets/index-BfDl8X4O.js.map +1 -0
  32. package/dist/control-ui/index.html +1 -1
  33. package/dist/{deliver-D22uPds_.js → deliver-BLkQFTzD.js} +11 -6
  34. package/dist/{deliver-D3HyJhTX.js → deliver-BTK-PB1e.js} +11 -6
  35. package/dist/{deliver-Ct_AlJg5.js → deliver-J2cVd3TS.js} +11 -6
  36. package/dist/{deliver-BAjdrEoI.js → deliver-meQdcFaA.js} +11 -6
  37. package/dist/{doctor-completion-Cr7pfPFT.js → doctor-completion-CszISgAZ.js} +1 -1
  38. package/dist/{doctor-completion-C9EazQOq.js → doctor-completion-xnrUSWAw.js} +1 -1
  39. package/dist/entry.js +1 -1
  40. package/dist/extensionAPI.js +5 -5
  41. package/dist/{gateway-cli-CUZeW2km.js → gateway-cli-1XLrLurk.js} +15 -14
  42. package/dist/{gateway-cli-DyK2K5AK.js → gateway-cli-ElJ71Lxb.js} +15 -14
  43. package/dist/{health-DB9FsqfO.js → health-BfWYn33I.js} +2 -2
  44. package/dist/{health-C1FEsrl3.js → health-DEibfTDK.js} +2 -2
  45. package/dist/{hooks-cli-ChPkWEjM.js → hooks-cli-D-nL8J6w.js} +6 -6
  46. package/dist/{hooks-cli-CrVA4n9U.js → hooks-cli-wQnxbc8T.js} +6 -6
  47. package/dist/{image-CvBYo9Bu.js → image-C8HOu4vb.js} +2 -2
  48. package/dist/{image-paXd6zl5.js → image-Cj9tfO74.js} +2 -2
  49. package/dist/{image-D-DzmVjC.js → image-Dozs-5EW.js} +2 -2
  50. package/dist/{image-DfOLBle4.js → image-DuT8yGCI.js} +2 -2
  51. package/dist/index.js +10 -10
  52. package/dist/llm-slug-generator.js +6 -6
  53. package/dist/{models-D1lcFJXE.js → models-DFRcZ415.js} +2 -2
  54. package/dist/{models-cli-B-AmUt5Z.js → models-cli-CwEUrjU_.js} +7 -7
  55. package/dist/{models-cli-B5hzd5e-.js → models-cli-t1rYl_DG.js} +6 -6
  56. package/dist/{onboard-BN9SewlV.js → onboard-BgexsYYf.js} +2 -2
  57. package/dist/{onboard-Bv6hNNhV.js → onboard-CE7hjJi-.js} +2 -2
  58. package/dist/{onboard-channels-DtiMw5DM.js → onboard-channels-Cb8T_ers.js} +1 -1
  59. package/dist/{onboard-channels-B9_hnbkl.js → onboard-channels-vQihczqp.js} +1 -1
  60. package/dist/{onboarding-BIFLJGsw.js → onboarding-BIEWyZPf.js} +3 -3
  61. package/dist/{onboarding-wkMK4RdO.js → onboarding-CX9LQxj2.js} +3 -3
  62. package/dist/{onboarding.finalize-C5_35yUD.js → onboarding.finalize-BUNWcC3i.js} +11 -11
  63. package/dist/{onboarding.finalize-Cq_uG8Il.js → onboarding.finalize-COQ2A83D.js} +10 -10
  64. package/dist/{pi-embedded-26dX6W8j.js → pi-embedded-BywyyGi2.js} +16 -12
  65. package/dist/{pi-embedded-Bt3VYQ6Q.js → pi-embedded-KtxTxaXU.js} +21 -17
  66. package/dist/{pi-embedded-helpers-ISSMvBMe.js → pi-embedded-helpers-B6070OEj.js} +44 -12
  67. package/dist/{pi-embedded-helpers-Cx3WmubG.js → pi-embedded-helpers-C4Annkh_.js} +40 -8
  68. package/dist/{pi-embedded-helpers-DOmGm3QX.js → pi-embedded-helpers-C_U_c_EU.js} +40 -8
  69. package/dist/{pi-embedded-helpers-DcmNfC3F.js → pi-embedded-helpers-Dl_FdUMU.js} +40 -8
  70. package/dist/{plugin-registry-CktL7kDf.js → plugin-registry-BrN1y1ig.js} +1 -1
  71. package/dist/{plugin-registry-DmGXbeyU.js → plugin-registry-CtLhKV8N.js} +1 -1
  72. package/dist/plugin-sdk/agents/pi-embedded-helpers/errors.d.ts +1 -0
  73. package/dist/plugin-sdk/{audio-preflight-DTmPFRJ7.js → audio-preflight-zFFuY6Bd.js} +3 -3
  74. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +1 -0
  75. package/dist/plugin-sdk/{channel-web-DBdAyFSo.js → channel-web-DfA1sgI9.js} +3 -3
  76. package/dist/plugin-sdk/commands/agent/types.d.ts +2 -0
  77. package/dist/plugin-sdk/{deliver-DvIFVzAj.js → deliver-D4QMj1KQ.js} +11 -6
  78. package/dist/plugin-sdk/{image-p_nEsuRt.js → image-Bu6pmW6i.js} +2 -2
  79. package/dist/plugin-sdk/index.js +6 -6
  80. package/dist/plugin-sdk/{pi-embedded-helpers-jfXMARle.js → pi-embedded-helpers-DBCtPcLq.js} +40 -8
  81. package/dist/plugin-sdk/{reply-CvZLZLYC.js → reply-Dl9JHnGW.js} +16 -12
  82. package/dist/plugin-sdk/{runner-B5paaQ1f.js → runner-DvYaPG7_.js} +1 -1
  83. package/dist/plugin-sdk/{web-xeAk5-Yr.js → web-BFEz8bk-.js} +6 -6
  84. package/dist/{plugins-cli-BB_bSrdc.js → plugins-cli-ByB9fyeR.js} +6 -6
  85. package/dist/{plugins-cli-B8LToOz_.js → plugins-cli-CP_m4f99.js} +6 -6
  86. package/dist/{program-CUQ4Dd4D.js → program-B51CfijA.js} +11 -11
  87. package/dist/{program-context-BL-eWj4d.js → program-context-DFA11MB9.js} +18 -18
  88. package/dist/{prompt-select-styled-Dw_5UkIh.js → prompt-select-styled-kNFZiNLD.js} +4 -4
  89. package/dist/{prompt-select-styled-OmW6kagQ.js → prompt-select-styled-y8kycqep.js} +4 -4
  90. package/dist/{provider-auth-helpers-CUdqrUdl.js → provider-auth-helpers-AORB3hk9.js} +1 -1
  91. package/dist/{provider-auth-helpers-Dj1zmS_9.js → provider-auth-helpers-TZ3D-fXq.js} +1 -1
  92. package/dist/{push-apns-BLl3-YNl.js → push-apns-BTcu7pip.js} +1 -1
  93. package/dist/{push-apns-DzvwLYLa.js → push-apns-CSSSwhDY.js} +1 -1
  94. package/dist/{pw-ai-MQ_9Ke4J.js → pw-ai-BW_4y-Af.js} +1 -1
  95. package/dist/{register.agent-DL4xNjz5.js → register.agent-C4G2zuxZ.js} +9 -9
  96. package/dist/{register.agent-DdcJgcQB.js → register.agent-xMmK5W-R.js} +10 -10
  97. package/dist/{register.configure-CahYnp2K.js → register.configure-CeFYJnjt.js} +10 -10
  98. package/dist/{register.configure-BOUoS25O.js → register.configure-aXmgTNuB.js} +10 -10
  99. package/dist/{register.maintenance-BBtBnw4T.js → register.maintenance-BD4w3mhl.js} +12 -12
  100. package/dist/{register.maintenance-CA0hn73s.js → register.maintenance-h74is0GZ.js} +11 -11
  101. package/dist/{register.message-C38olCA-.js → register.message-42he49is.js} +6 -6
  102. package/dist/{register.message-Bd2B4_gS.js → register.message-Cx6UTHOb.js} +6 -6
  103. package/dist/{register.onboard-CBcolfXI.js → register.onboard-CgQM-nZ7.js} +8 -8
  104. package/dist/{register.onboard-DmsHuosI.js → register.onboard-CnByKpp_.js} +8 -8
  105. package/dist/{register.setup-sWIbdPfJ.js → register.setup-B4qai0DZ.js} +8 -8
  106. package/dist/{register.setup-V09teeGQ.js → register.setup-CkW4jPu_.js} +8 -8
  107. package/dist/{register.status-health-sessions-BrlTrkeO.js → register.status-health-sessions-DHHGaJsX.js} +7 -7
  108. package/dist/{register.status-health-sessions-BHSA4iZL.js → register.status-health-sessions-DNqvYowR.js} +7 -7
  109. package/dist/{register.subclis-CNgqotfk.js → register.subclis-CSqyRt2t.js} +10 -10
  110. package/dist/{reply-BpeNwiEB.js → reply-V8UXM1XU.js} +16 -12
  111. package/dist/{run-main-ClMNdr5y.js → run-main-B3sc7X8M.js} +18 -18
  112. package/dist/{runner-Be7-7BcC.js → runner-CbkB3vpb.js} +1 -1
  113. package/dist/{runner-B9g6ervv.js → runner-D4U7RPrD.js} +1 -1
  114. package/dist/{runner-BIWQkeih.js → runner-DkWpm1Ly.js} +1 -1
  115. package/dist/{runner-D_-7GNC1.js → runner-DzmbTP-U.js} +1 -1
  116. package/dist/{server-node-events-C0ZzfaPA.js → server-node-events-D5Fen-q2.js} +6 -6
  117. package/dist/{server-node-events-CDra4Gjc.js → server-node-events-Dm6MSKk0.js} +6 -6
  118. package/dist/{session-dirs-D6iw22_Q.js → session-dirs-BmVdF2KM.js} +1 -1
  119. package/dist/{session-dirs-Cwn4le95.js → session-dirs-CRnGB63U.js} +1 -1
  120. package/dist/{status-CCPKZiSX.js → status-2w8d47j-.js} +2 -2
  121. package/dist/{status-DFs0LUlA.js → status-Bi_g-8aS.js} +1 -1
  122. package/dist/{status-CGTYQeqD.js → status-BjjDHl4v.js} +1 -1
  123. package/dist/{status-Rw3st2w_.js → status-DQEnKbht.js} +2 -2
  124. package/dist/{subagent-registry-C7ua7m8M.js → subagent-registry-DGNGenUN.js} +16 -12
  125. package/dist/{tui-C8TIc36Z.js → tui-BPSckkGa.js} +1 -1
  126. package/dist/{tui-dDj0kI9K.js → tui-Dn3NzP7B.js} +1 -1
  127. package/dist/{tui-cli-B1R2UxjK.js → tui-cli-DYhd0RT6.js} +2 -2
  128. package/dist/{tui-cli-DXNQuXf_.js → tui-cli-Dscc8usx.js} +2 -2
  129. package/dist/{update-cli-BxaSmz5G.js → update-cli-CLaJrUF4.js} +11 -11
  130. package/dist/{update-cli-DEMP1mj0.js → update-cli-DHAT02hj.js} +12 -12
  131. package/dist/{web-gSQnImv2.js → web-BpYdg2HU.js} +6 -6
  132. package/dist/{web-jg0rymdq.js → web-Ciz1i7yI.js} +6 -6
  133. package/dist/{web-D1CVLSCy.js → web-H55ayBNa.js} +5 -5
  134. package/dist/{web-YTTXENUe.js → web-aUEiU7C4.js} +5 -5
  135. package/package.json +1 -1
  136. package/dist/control-ui/assets/index-Cx1_w3YP.js.map +0 -1
@@ -8,7 +8,7 @@
8
8
  <link rel="icon" type="image/svg+xml" href="./favicon.svg" />
9
9
  <link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
10
10
  <link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
11
- <script type="module" crossorigin src="./assets/index-Cx1_w3YP.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-BfDl8X4O.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="./assets/index-DNdFNvs2.css">
13
13
  </head>
14
14
  <body>
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, y as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-SGZR4BSj.js";
6
6
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-DnMmat9I.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DjlLrXSL.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DcmNfC3F.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-Dl_FdUMU.js";
9
9
  import { d as getChannelDock } from "./thinking-CNzwETSv.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-B0zJTLYu.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-B4egH__c.js";
@@ -412,8 +412,13 @@ function getGlobalHookRunner() {
412
412
  //#region src/utils/directive-tags.ts
413
413
  const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
414
414
  const REPLY_TAG_RE = /\[\[\s*(?:reply_to_current|reply_to\s*:\s*([^\]\n]+))\s*\]\]/gi;
415
+ function replacementPreservesWordBoundary(source, offset, length) {
416
+ const before = source[offset - 1];
417
+ const after = source[offset + length];
418
+ return before && after && !/\s/u.test(before) && !/\s/u.test(after) ? " " : "";
419
+ }
415
420
  function normalizeDirectiveWhitespace(text) {
416
- return text.replace(/[ \t]+/g, " ").replace(/[ \t]*\n[ \t]*/g, "\n").trim();
421
+ return text.replace(/\r\n/g, "\n").replace(/([^\s])[ \t]{2,}([^\s])/g, "$1 $2").replace(/^\n+/, "").replace(/^[ \t](?=\S)/, "").replace(/[ \t]+\n/g, "\n").replace(/\n{3,}/g, "\n\n").trimEnd();
417
422
  }
418
423
  function parseInlineDirectives(text, options = {}) {
419
424
  const { currentMessageId, stripAudioTag = true, stripReplyTags = true } = options;
@@ -430,19 +435,19 @@ function parseInlineDirectives(text, options = {}) {
430
435
  let hasReplyTag = false;
431
436
  let sawCurrent = false;
432
437
  let lastExplicitId;
433
- cleaned = cleaned.replace(AUDIO_TAG_RE, (match) => {
438
+ cleaned = cleaned.replace(AUDIO_TAG_RE, (match, offset, source) => {
434
439
  audioAsVoice = true;
435
440
  hasAudioTag = true;
436
- return stripAudioTag ? " " : match;
441
+ return stripAudioTag ? replacementPreservesWordBoundary(source, offset, match.length) : match;
437
442
  });
438
- cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw) => {
443
+ cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw, offset, source) => {
439
444
  hasReplyTag = true;
440
445
  if (idRaw === void 0) sawCurrent = true;
441
446
  else {
442
447
  const id = idRaw.trim();
443
448
  if (id) lastExplicitId = id;
444
449
  }
445
- return stripReplyTags ? " " : match;
450
+ return stripReplyTags ? replacementPreservesWordBoundary(source, offset, match.length) : match;
446
451
  });
447
452
  cleaned = normalizeDirectiveWhitespace(cleaned);
448
453
  const replyToId = lastExplicitId ?? (sawCurrent ? currentMessageId?.trim() || void 0 : void 0);
@@ -5,7 +5,7 @@ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as trigge
5
5
  import { t as createSubsystemLogger } from "./subsystem-BF9jT_Nw.js";
6
6
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-B-c56SkM.js";
7
7
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-C-vY-rpl.js";
8
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-ISSMvBMe.js";
8
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-B6070OEj.js";
9
9
  import { d as getChannelDock } from "./thinking-4v3LHcV9.js";
10
10
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-fZrBDWYg.js";
11
11
  import { n as resolveMarkdownTableMode } from "./markdown-tables-_MkcNWbe.js";
@@ -412,8 +412,13 @@ function getGlobalHookRunner() {
412
412
  //#region src/utils/directive-tags.ts
413
413
  const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
414
414
  const REPLY_TAG_RE = /\[\[\s*(?:reply_to_current|reply_to\s*:\s*([^\]\n]+))\s*\]\]/gi;
415
+ function replacementPreservesWordBoundary(source, offset, length) {
416
+ const before = source[offset - 1];
417
+ const after = source[offset + length];
418
+ return before && after && !/\s/u.test(before) && !/\s/u.test(after) ? " " : "";
419
+ }
415
420
  function normalizeDirectiveWhitespace(text) {
416
- return text.replace(/[ \t]+/g, " ").replace(/[ \t]*\n[ \t]*/g, "\n").trim();
421
+ return text.replace(/\r\n/g, "\n").replace(/([^\s])[ \t]{2,}([^\s])/g, "$1 $2").replace(/^\n+/, "").replace(/^[ \t](?=\S)/, "").replace(/[ \t]+\n/g, "\n").replace(/\n{3,}/g, "\n\n").trimEnd();
417
422
  }
418
423
  function parseInlineDirectives(text, options = {}) {
419
424
  const { currentMessageId, stripAudioTag = true, stripReplyTags = true } = options;
@@ -430,19 +435,19 @@ function parseInlineDirectives(text, options = {}) {
430
435
  let hasReplyTag = false;
431
436
  let sawCurrent = false;
432
437
  let lastExplicitId;
433
- cleaned = cleaned.replace(AUDIO_TAG_RE, (match) => {
438
+ cleaned = cleaned.replace(AUDIO_TAG_RE, (match, offset, source) => {
434
439
  audioAsVoice = true;
435
440
  hasAudioTag = true;
436
- return stripAudioTag ? " " : match;
441
+ return stripAudioTag ? replacementPreservesWordBoundary(source, offset, match.length) : match;
437
442
  });
438
- cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw) => {
443
+ cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw, offset, source) => {
439
444
  hasReplyTag = true;
440
445
  if (idRaw === void 0) sawCurrent = true;
441
446
  else {
442
447
  const id = idRaw.trim();
443
448
  if (id) lastExplicitId = id;
444
449
  }
445
- return stripReplyTags ? " " : match;
450
+ return stripReplyTags ? replacementPreservesWordBoundary(source, offset, match.length) : match;
446
451
  });
447
452
  cleaned = normalizeDirectiveWhitespace(cleaned);
448
453
  const replyToId = lastExplicitId ?? (sawCurrent ? currentMessageId?.trim() || void 0 : void 0);
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { g as normalizeOptionalAccountId, h as normalizeAccountId } from "./session-key-DCt45XZa.js";
3
3
  import { C as createInternalHookEvent, T as triggerInternalHook, d as getActivePluginRegistry } from "./registry-Dygi7Azw.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
5
- import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-Cx3WmubG.js";
5
+ import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-C4Annkh_.js";
6
6
  import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-BXbSUMYn.js";
7
7
  import { t as getChannelDock } from "./dock-BGIuBSsT.js";
8
8
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-NiQscOMo.js";
@@ -474,8 +474,13 @@ function throwIfAborted(abortSignal) {
474
474
  //#region src/utils/directive-tags.ts
475
475
  const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
476
476
  const REPLY_TAG_RE = /\[\[\s*(?:reply_to_current|reply_to\s*:\s*([^\]\n]+))\s*\]\]/gi;
477
+ function replacementPreservesWordBoundary(source, offset, length) {
478
+ const before = source[offset - 1];
479
+ const after = source[offset + length];
480
+ return before && after && !/\s/u.test(before) && !/\s/u.test(after) ? " " : "";
481
+ }
477
482
  function normalizeDirectiveWhitespace(text) {
478
- return text.replace(/[ \t]+/g, " ").replace(/[ \t]*\n[ \t]*/g, "\n").trim();
483
+ return text.replace(/\r\n/g, "\n").replace(/([^\s])[ \t]{2,}([^\s])/g, "$1 $2").replace(/^\n+/, "").replace(/^[ \t](?=\S)/, "").replace(/[ \t]+\n/g, "\n").replace(/\n{3,}/g, "\n\n").trimEnd();
479
484
  }
480
485
  function parseInlineDirectives(text, options = {}) {
481
486
  const { currentMessageId, stripAudioTag = true, stripReplyTags = true } = options;
@@ -492,19 +497,19 @@ function parseInlineDirectives(text, options = {}) {
492
497
  let hasReplyTag = false;
493
498
  let sawCurrent = false;
494
499
  let lastExplicitId;
495
- cleaned = cleaned.replace(AUDIO_TAG_RE, (match) => {
500
+ cleaned = cleaned.replace(AUDIO_TAG_RE, (match, offset, source) => {
496
501
  audioAsVoice = true;
497
502
  hasAudioTag = true;
498
- return stripAudioTag ? " " : match;
503
+ return stripAudioTag ? replacementPreservesWordBoundary(source, offset, match.length) : match;
499
504
  });
500
- cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw) => {
505
+ cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw, offset, source) => {
501
506
  hasReplyTag = true;
502
507
  if (idRaw === void 0) sawCurrent = true;
503
508
  else {
504
509
  const id = idRaw.trim();
505
510
  if (id) lastExplicitId = id;
506
511
  }
507
- return stripReplyTags ? " " : match;
512
+ return stripReplyTags ? replacementPreservesWordBoundary(source, offset, match.length) : match;
508
513
  });
509
514
  cleaned = normalizeDirectiveWhitespace(cleaned);
510
515
  const replyToId = lastExplicitId ?? (sawCurrent ? currentMessageId?.trim() || void 0 : void 0);
@@ -4,7 +4,7 @@ import { g as normalizeOptionalAccountId, h as normalizeAccountId } from "./sess
4
4
  import { i as resolveMirroredTranscriptText, r as appendAssistantMessageToSessionTranscript } from "./sessions-BVmrZrFA.js";
5
5
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-ANnYrShl.js";
6
6
  import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BxYZzFkm.js";
7
- import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-DOmGm3QX.js";
7
+ import { i as isMessagingToolDuplicate } from "./pi-embedded-helpers-C_U_c_EU.js";
8
8
  import { t as getChannelDock } from "./dock-BSksHMjn.js";
9
9
  import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-D6AoZjLE.js";
10
10
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CnOKVCsP.js";
@@ -422,8 +422,13 @@ async function runGlobalGatewayStopSafely(params) {
422
422
  //#region src/utils/directive-tags.ts
423
423
  const AUDIO_TAG_RE = /\[\[\s*audio_as_voice\s*\]\]/gi;
424
424
  const REPLY_TAG_RE = /\[\[\s*(?:reply_to_current|reply_to\s*:\s*([^\]\n]+))\s*\]\]/gi;
425
+ function replacementPreservesWordBoundary(source, offset, length) {
426
+ const before = source[offset - 1];
427
+ const after = source[offset + length];
428
+ return before && after && !/\s/u.test(before) && !/\s/u.test(after) ? " " : "";
429
+ }
425
430
  function normalizeDirectiveWhitespace(text) {
426
- return text.replace(/[ \t]+/g, " ").replace(/[ \t]*\n[ \t]*/g, "\n").trim();
431
+ return text.replace(/\r\n/g, "\n").replace(/([^\s])[ \t]{2,}([^\s])/g, "$1 $2").replace(/^\n+/, "").replace(/^[ \t](?=\S)/, "").replace(/[ \t]+\n/g, "\n").replace(/\n{3,}/g, "\n\n").trimEnd();
427
432
  }
428
433
  function parseInlineDirectives(text, options = {}) {
429
434
  const { currentMessageId, stripAudioTag = true, stripReplyTags = true } = options;
@@ -440,19 +445,19 @@ function parseInlineDirectives(text, options = {}) {
440
445
  let hasReplyTag = false;
441
446
  let sawCurrent = false;
442
447
  let lastExplicitId;
443
- cleaned = cleaned.replace(AUDIO_TAG_RE, (match) => {
448
+ cleaned = cleaned.replace(AUDIO_TAG_RE, (match, offset, source) => {
444
449
  audioAsVoice = true;
445
450
  hasAudioTag = true;
446
- return stripAudioTag ? " " : match;
451
+ return stripAudioTag ? replacementPreservesWordBoundary(source, offset, match.length) : match;
447
452
  });
448
- cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw) => {
453
+ cleaned = cleaned.replace(REPLY_TAG_RE, (match, idRaw, offset, source) => {
449
454
  hasReplyTag = true;
450
455
  if (idRaw === void 0) sawCurrent = true;
451
456
  else {
452
457
  const id = idRaw.trim();
453
458
  if (id) lastExplicitId = id;
454
459
  }
455
- return stripReplyTags ? " " : match;
460
+ return stripReplyTags ? replacementPreservesWordBoundary(source, offset, match.length) : match;
456
461
  });
457
462
  cleaned = normalizeDirectiveWhitespace(cleaned);
458
463
  const replyToId = lastExplicitId ?? (sawCurrent ? currentMessageId?.trim() || void 0 : void 0);
@@ -1,7 +1,7 @@
1
1
  import { r as resolveCliName } from "./command-format-D3syQOZg.js";
2
2
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-xuQjCjjV.js";
3
3
  import { t as note } from "./note-DDecZomM.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BkAlGttV.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CSoJQQhc.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { t as resolveOpenClawPackageRoot } from "./openclaw-root-CQJwyH9q.js";
2
2
  import { r as resolveCliName } from "./command-format-DEKzLnLg.js";
3
3
  import { t as note } from "./note-DRZSQe0n.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-CJW4fXUd.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BrkMcxdh.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -2547,7 +2547,7 @@ if (!ensureExperimentalWarningSuppressed()) {
2547
2547
  applyCliProfileEnv({ profile: parsed.profile });
2548
2548
  process$1.argv = parsed.argv;
2549
2549
  }
2550
- import("./run-main-ClMNdr5y.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2550
+ import("./run-main-B3sc7X8M.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2551
2551
  console.error("[openclaw] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2552
2552
  process$1.exitCode = 1;
2553
2553
  });
@@ -7,13 +7,13 @@ import { a as resolveAgentIdentity } from "./reply-prefix-CUsSiMpe.js";
7
7
  import "./github-copilot-token-ttqQRqMA.js";
8
8
  import "./env-DulyEJtM.js";
9
9
  import "./tokens-DnMmat9I.js";
10
- import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-26dX6W8j.js";
10
+ import { D as resolveAgentTimeoutMs, t as runEmbeddedPiAgent } from "./pi-embedded-BywyyGi2.js";
11
11
  import "./plugins-DjlLrXSL.js";
12
12
  import "./accounts-Cxza2UXO.js";
13
13
  import "./bindings-h0Wd5bGl.js";
14
14
  import "./send-DIoqNZGo.js";
15
15
  import "./send-BJZNl-To.js";
16
- import "./deliver-D22uPds_.js";
16
+ import "./deliver-BLkQFTzD.js";
17
17
  import "./diagnostic-DzmNBZt3.js";
18
18
  import "./diagnostic-session-state-C1vRJs5w.js";
19
19
  import "./accounts-sr0G5UOe.js";
@@ -21,7 +21,7 @@ import "./send-7EKmAIkQ.js";
21
21
  import "./image-ops-BJidZpId.js";
22
22
  import "./pi-model-discovery-j5tVLINv.js";
23
23
  import "./message-channel-DNOtJsL1.js";
24
- import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-DcmNfC3F.js";
24
+ import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-Dl_FdUMU.js";
25
25
  import "./config-Bj1BETyH.js";
26
26
  import "./manifest-registry-sze5OW-s.js";
27
27
  import "./chrome-EGHj-WC_.js";
@@ -34,7 +34,7 @@ import "./thinking-CNzwETSv.js";
34
34
  import "./accounts-DAZL5b5o.js";
35
35
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-5iQF9bSz.js";
36
36
  import "./tool-images-o5KE8ifY.js";
37
- import "./image-DfOLBle4.js";
37
+ import "./image-DuT8yGCI.js";
38
38
  import "./manager-isQiMuR_.js";
39
39
  import "./gemini-auth-7_-6Idt9.js";
40
40
  import "./sqlite-CmTvWxxq.js";
@@ -47,7 +47,7 @@ import "./ir-D0XFjNjt.js";
47
47
  import "./render-B1VqYyvo.js";
48
48
  import "./commands-registry-Cc65BLE0.js";
49
49
  import "./skill-commands-WUe5qD2m.js";
50
- import "./runner-D_-7GNC1.js";
50
+ import "./runner-DzmbTP-U.js";
51
51
  import "./fetch-BMa0enEg.js";
52
52
  import "./channel-activity-7fb2OxTV.js";
53
53
  import "./tables-BipcRDfG.js";
@@ -22,7 +22,7 @@ import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
22
22
  import { a as isValidIPv4, c as resolveClientIp, d as resolveHostName, f as rawDataToString, i as isTrustedProxyAddress, l as resolveGatewayBindHost, n as isLoopbackHost, o as normalizeHostHeader, s as pickPrimaryLanIPv4, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-DZ5Ayk-W.js";
23
23
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
24
24
  import { i as normalizeInputProvenance } from "./input-provenance-D0lNkCf6.js";
25
- import { $n as resolveTtsProviderOrder, A as resolveAgentAvatar, An as normalizeMimeList, At as normalizeRequiredName, Bt as isExternalHookSession, C as agentCommand, Ct as normalizeCronJobCreate, D as createOutboundSendDeps, Dn as DEFAULT_INPUT_TIMEOUT_MS, Dt as normalizeOptionalSessionKey, E as resolveAgentOutboundTarget, En as DEFAULT_INPUT_MAX_REDIRECTS, Et as normalizeOptionalAgentId, Gn as resolveUserTimezone, Gt as emitGatewayRestart, H as dispatchInboundMessage, Hn as stopSubagentsForRequester, Ht as persistBrowserProxyFiles, Jn as isTtsProviderConfigured, Jt as scheduleGatewaySigusr1Restart, Kn as getTtsProvider, Kt as isGatewaySigusr1RestartExternallyAllowed, L as buildHistoryContextFromEntries, Lt as buildSafeExternalPrompt, Mt as buildDeliveryFromLegacyPayload, Nn as resolveAgentTimeoutMs, Nt as hasLegacyDeliveryHints, O as createDefaultDeps, On as extractFileContentFromSource, Ot as normalizeOptionalText, Pt as stripLegacyDeliveryFields, Q as runCliAgent, Qn as resolveTtsPrefsPath, Qt as normalizeGroupActivation, Rn as formatZonedTimestamp, Rt as detectSuspiciousPatterns, S as sleepWithAbort, St as normalizeHttpWebhookUrl, T as resolveAgentDeliveryPlan, Tn as DEFAULT_INPUT_IMAGE_MIMES, Tt as inferLegacyName, U as createReplyDispatcher, Ut as consumeGatewaySigusr1RestartAuthorization, Vn as isAbortTrigger, Vt as applyBrowserProxyPaths, W as getTotalPendingReplies, Wt as deferGatewayRestartUntilIdle, X as getCliSessionId, Xn as resolveTtsAutoMode, Xt as setPreRestartDeferralCheck, Y as resolveCronStyleNow, Yn as resolveTtsApiKey, Yt as setGatewaySigusr1RestartPolicy, Z as setCliSessionId, Zn as resolveTtsConfig, Zt as unbindThreadBindingsBySessionKey, _n as applyModelOverrideToSessionEntry, _r as clearAgentRunContext, _t as formatRestartSentinelMessage, a as runSubagentAnnounceFlow, ar as getActiveTaskCount, at as resolveOutboundSessionRoute, b as requestBodyErrorToText, bn as enqueueSystemEvent, br as onAgentEvent, c as abortEmbeddedPiRun, cn as requestHeartbeatNow, cr as resetAllLanes, ct as resolveOutboundTarget, d as applyToolPolicyPipeline, dn as normalizeSendPolicy, dr as CommandLane, dt as resetDirectoryCache, en as loadProviderUsageSummary, er as setTtsEnabled, et as createOpenClawTools, f as buildDefaultToolPolicyPipelineSteps, fn as resolveSendPolicy, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, g as loadOpenClawPlugins, gr as stripHeartbeatToken, gt as formatDoctorNonInteractiveHint, ht as consumeRestartSentinel, ir as OPENAI_TTS_VOICES, it as ensureOutboundSessionEntry, jn as resolveInputFileLimits, jt as migrateLegacyCronPayload, k as createOutboundSendDeps$1, kn as extractImageContentFromSource, kt as normalizePayloadToSystemText, l as getActiveEmbeddedRunCount, lr as setCommandLaneConcurrency, lt as resolveSessionDeliveryTarget, m as getPluginToolMeta, n as initSubagentRegistry, nr as textToSpeech, nt as resolveAnnounceTargetFromKey, o as clearSessionQueues, pt as runWithModelFallback, q as BARE_SESSION_RESET_PROMPT, qn as isTtsEnabled, qt as markGatewaySigusr1RestartHandled, r as listDescendantRunsForRequester, rr as OPENAI_TTS_MODELS, s as runEmbeddedPiAgent, sr as getTotalQueueSize, t as countActiveDescendantRuns, tr as setTtsProvider, tt as readLatestAssistantReply, u as waitForEmbeddedPiRunEnd, ur as waitForActiveTasks, v as handleSlackHttpRequest, vn as applyVerboseOverride, vr as emitAgentEvent, wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, wt as normalizeCronJobPatch, x as computeBackoff, xn as isSystemEventContextChanged, xr as registerAgentRunContext, xt as writeRestartSentinel, y as readJsonBodyWithLimit, yn as parseVerboseOverride, yr as getAgentRunContext, yt as summarizeRestartSentinel, zt as getHookType } from "./subagent-registry-C7ua7m8M.js";
25
+ import { $n as resolveTtsProviderOrder, A as resolveAgentAvatar, An as normalizeMimeList, At as normalizeRequiredName, Bt as isExternalHookSession, C as agentCommand, Ct as normalizeCronJobCreate, D as createOutboundSendDeps, Dn as DEFAULT_INPUT_TIMEOUT_MS, Dt as normalizeOptionalSessionKey, E as resolveAgentOutboundTarget, En as DEFAULT_INPUT_MAX_REDIRECTS, Et as normalizeOptionalAgentId, Gn as resolveUserTimezone, Gt as emitGatewayRestart, H as dispatchInboundMessage, Hn as stopSubagentsForRequester, Ht as persistBrowserProxyFiles, Jn as isTtsProviderConfigured, Jt as scheduleGatewaySigusr1Restart, Kn as getTtsProvider, Kt as isGatewaySigusr1RestartExternallyAllowed, L as buildHistoryContextFromEntries, Lt as buildSafeExternalPrompt, Mt as buildDeliveryFromLegacyPayload, Nn as resolveAgentTimeoutMs, Nt as hasLegacyDeliveryHints, O as createDefaultDeps, On as extractFileContentFromSource, Ot as normalizeOptionalText, Pt as stripLegacyDeliveryFields, Q as runCliAgent, Qn as resolveTtsPrefsPath, Qt as normalizeGroupActivation, Rn as formatZonedTimestamp, Rt as detectSuspiciousPatterns, S as sleepWithAbort, St as normalizeHttpWebhookUrl, T as resolveAgentDeliveryPlan, Tn as DEFAULT_INPUT_IMAGE_MIMES, Tt as inferLegacyName, U as createReplyDispatcher, Ut as consumeGatewaySigusr1RestartAuthorization, Vn as isAbortTrigger, Vt as applyBrowserProxyPaths, W as getTotalPendingReplies, Wt as deferGatewayRestartUntilIdle, X as getCliSessionId, Xn as resolveTtsAutoMode, Xt as setPreRestartDeferralCheck, Y as resolveCronStyleNow, Yn as resolveTtsApiKey, Yt as setGatewaySigusr1RestartPolicy, Z as setCliSessionId, Zn as resolveTtsConfig, Zt as unbindThreadBindingsBySessionKey, _n as applyModelOverrideToSessionEntry, _r as clearAgentRunContext, _t as formatRestartSentinelMessage, a as runSubagentAnnounceFlow, ar as getActiveTaskCount, at as resolveOutboundSessionRoute, b as requestBodyErrorToText, bn as enqueueSystemEvent, br as onAgentEvent, c as abortEmbeddedPiRun, cn as requestHeartbeatNow, cr as resetAllLanes, ct as resolveOutboundTarget, d as applyToolPolicyPipeline, dn as normalizeSendPolicy, dr as CommandLane, dt as resetDirectoryCache, en as loadProviderUsageSummary, er as setTtsEnabled, et as createOpenClawTools, f as buildDefaultToolPolicyPipelineSteps, fn as resolveSendPolicy, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, g as loadOpenClawPlugins, gr as stripHeartbeatToken, gt as formatDoctorNonInteractiveHint, ht as consumeRestartSentinel, ir as OPENAI_TTS_VOICES, it as ensureOutboundSessionEntry, jn as resolveInputFileLimits, jt as migrateLegacyCronPayload, k as createOutboundSendDeps$1, kn as extractImageContentFromSource, kt as normalizePayloadToSystemText, l as getActiveEmbeddedRunCount, lr as setCommandLaneConcurrency, lt as resolveSessionDeliveryTarget, m as getPluginToolMeta, n as initSubagentRegistry, nr as textToSpeech, nt as resolveAnnounceTargetFromKey, o as clearSessionQueues, pt as runWithModelFallback, q as BARE_SESSION_RESET_PROMPT, qn as isTtsEnabled, qt as markGatewaySigusr1RestartHandled, r as listDescendantRunsForRequester, rr as OPENAI_TTS_MODELS, s as runEmbeddedPiAgent, sr as getTotalQueueSize, t as countActiveDescendantRuns, tr as setTtsProvider, tt as readLatestAssistantReply, u as waitForEmbeddedPiRunEnd, ur as waitForActiveTasks, v as handleSlackHttpRequest, vn as applyVerboseOverride, vr as emitAgentEvent, wn as DEFAULT_INPUT_IMAGE_MAX_BYTES, wt as normalizeCronJobPatch, x as computeBackoff, xn as isSystemEventContextChanged, xr as registerAgentRunContext, xt as writeRestartSentinel, y as readJsonBodyWithLimit, yn as parseVerboseOverride, yr as getAgentRunContext, yt as summarizeRestartSentinel, zt as getHookType } from "./subagent-registry-DGNGenUN.js";
26
26
  import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, J as normalizeSessionDeliveryFields, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, P as resolveExplicitAgentSessionKey, R as snapshotSessionOrigin, S as stripEnvelopeFromMessages, T as evaluateSessionFreshness, W as deliveryContextFromSession, _ as capArrayByJsonBytes, d as updateSessionStore, g as archiveSessionTranscripts, h as archiveFileOnDisk, n as parseSessionThreadInfo, o as loadSessionStore, t as extractDeliveryInfo, v as readSessionMessages, x as resolveSessionTranscriptCandidates, y as readSessionPreviewItemsFromTranscript } from "./sessions-BVmrZrFA.js";
27
27
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-ANnYrShl.js";
28
28
  import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BxYZzFkm.js";
@@ -32,13 +32,13 @@ import "./logging-CFvkxgcX.js";
32
32
  import "./send-mdCBM_lP.js";
33
33
  import "./send-ENOozmo1.js";
34
34
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName } from "./with-timeout-BJj1dns_.js";
35
- import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-BAjdrEoI.js";
35
+ import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-meQdcFaA.js";
36
36
  import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-C6WTf4ZE.js";
37
37
  import "./diagnostic-session-state-CIjIGxEE.js";
38
38
  import "./accounts-1gFWxwAw.js";
39
39
  import "./send-Dd6W68eD.js";
40
40
  import { c as detectMime } from "./image-ops-CKJNUuNW.js";
41
- import "./pi-embedded-helpers-DOmGm3QX.js";
41
+ import "./pi-embedded-helpers-C_U_c_EU.js";
42
42
  import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-BMaHJcKh.js";
43
43
  import "./chrome-DOT5Dxfr.js";
44
44
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-BxzsxqAY.js";
@@ -74,9 +74,9 @@ import "./ir-DetFY9t5.js";
74
74
  import "./render-e7fENCYH.js";
75
75
  import { r as isRestartEnabled } from "./commands-CDrOx1RO.js";
76
76
  import "./commands-registry-BcqdkMzV.js";
77
- import "./image-CvBYo9Bu.js";
77
+ import "./image-C8HOu4vb.js";
78
78
  import "./tool-display-DixohEVL.js";
79
- import { d as registerUnhandledRejectionHandler } from "./runner-Be7-7BcC.js";
79
+ import { d as registerUnhandledRejectionHandler } from "./runner-CbkB3vpb.js";
80
80
  import { n as loadModelCatalog } from "./model-catalog-DzKq0MC2.js";
81
81
  import { a as loadCombinedSessionStoreForGateway, c as resolveGatewaySessionStoreTarget, i as listSessionsFromStore, l as resolveSessionModelRef, o as loadSessionEntry, r as listAgentsForGateway, s as pruneLegacyStoreKeys, t as canonicalizeSpawnedByForAgent, u as lookupContextTokens } from "./session-utils-DbIfE0Ek.js";
82
82
  import { S as registerSkillsChangeListener, _ as requestNodePairing, c as recordRemoteNodeInfo, d as removeRemoteNodeInfo, f as setSkillsRemoteRegistry, g as renamePairedNode, h as rejectNodePairing, l as refreshRemoteBinsForConnectedNodes, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, s as primeRemoteSkillsCache, u as refreshRemoteNodeBins, v as updatePairedNodeMetadata, x as getSkillsSnapshotVersion, y as verifyNodeToken } from "./skill-commands-BdHYzdEB.js";
@@ -134,20 +134,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
134
134
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-BLko2ysA.js";
135
135
  import { c as probeGateway, o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-C1XET3ZE.js";
136
136
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-Dey40AZW.js";
137
- import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-Rw3st2w_.js";
138
- import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-C1FEsrl3.js";
137
+ import { i as pickGatewaySelfPresence, r as getStatusSummary } from "./status-DQEnKbht.js";
138
+ import { a as styleHealthChannelLine, c as setHeartbeatsEnabled, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-DEibfTDK.js";
139
139
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Yp3N6NZ_.js";
140
140
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-DfBZVR4k.js";
141
- import { t as runOnboardingWizard } from "./onboarding-BIFLJGsw.js";
142
- import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-DzvwLYLa.js";
141
+ import { t as runOnboardingWizard } from "./onboarding-BIEWyZPf.js";
142
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-CSSSwhDY.js";
143
143
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-D5-xvxtS.js";
144
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-Cd3-RJ-K.js";
144
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BAILtL0e.js";
145
145
  import "./dm-policy-shared-BY9lE-FE.js";
146
146
  import "./node-service-B1F4gM4E.js";
147
147
  import "./status.update-CI9MUGyA.js";
148
148
  import { t as resolveSystemRunCommand } from "./system-run-command-DKiCEPJc.js";
149
149
  import { t as installSkill } from "./skills-install-BOt50Tao.js";
150
- import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-Cwn4le95.js";
150
+ import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-CRnGB63U.js";
151
151
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DWI9N-Ks.js";
152
152
  import { n as forceFreePortAndWait } from "./ports-BxzJ3ENr.js";
153
153
  import { spawn, spawnSync } from "node:child_process";
@@ -3379,7 +3379,8 @@ async function runCronIsolatedAgentTurn(params) {
3379
3379
  timeoutMs,
3380
3380
  runId: cronSession.sessionEntry.sessionId,
3381
3381
  requireExplicitMessageTarget: true,
3382
- disableMessageTool: deliveryRequested
3382
+ disableMessageTool: deliveryRequested,
3383
+ streamParams: { cacheRetention: "long" }
3383
3384
  });
3384
3385
  }
3385
3386
  });
@@ -12405,7 +12406,7 @@ const nodeHandlers = {
12405
12406
  const p = params;
12406
12407
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
12407
12408
  await respondUnavailableOnThrow(respond, async () => {
12408
- const { handleNodeEvent } = await import("./server-node-events-CDra4Gjc.js");
12409
+ const { handleNodeEvent } = await import("./server-node-events-Dm6MSKk0.js");
12409
12410
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
12410
12411
  await handleNodeEvent({
12411
12412
  deps: context.deps,
@@ -20289,7 +20290,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
20289
20290
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
20290
20291
  if (!minimalTestGateway) (async () => {
20291
20292
  const { recoverPendingDeliveries } = await import("./delivery-queue-CzNZXd1M.js").then((n) => n.n);
20292
- const { deliverOutboundPayloads } = await import("./deliver-BAjdrEoI.js").then((n) => n.n);
20293
+ const { deliverOutboundPayloads } = await import("./deliver-meQdcFaA.js").then((n) => n.n);
20293
20294
  await recoverPendingDeliveries({
20294
20295
  deliver: deliverOutboundPayloads,
20295
20296
  log: log.child("delivery-recovery"),
@@ -1,7 +1,7 @@
1
1
  import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-B4BZAPZh.js";
2
2
  import { B as theme, D as isPlainObject, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, r as clamp, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-BlC2Fskb.js";
3
3
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-EAliFiVK.js";
4
- import { $ as normalizeOptionalSessionKey, $t as buildSafeExternalPrompt, At as agentCommand, B as setPreRestartDeferralCheck, Bn as isTtsEnabled, Bt as resolveSendPolicy, C as loadSessionEntry, Cn as isAbortTrigger, Cr as DEFAULT_INPUT_IMAGE_MIMES, Dn as countActiveDescendantRuns, Dr as extractImageContentFromSource, Dt as requestBodyErrorToText, E as resolveSessionModelRef, Er as extractFileContentFromSource, Et as readJsonBodyWithLimit, F as emitGatewayRestart, Fn as getAgentRunContext, G as summarizeRestartSentinel, Gn as resolveTtsPrefsPath, Gt as setCliSessionId, H as formatDoctorNonInteractiveHint, Hn as resolveTtsApiKey, Ht as createOutboundSendDeps$1, I as isGatewaySigusr1RestartExternallyAllowed, In as onAgentEvent, It as resolveOutboundTarget, J as normalizeHttpWebhookUrl, Jn as setTtsProvider, Kn as resolveTtsProviderOrder, Kt as runCliAgent, L as markGatewaySigusr1RestartHandled, Ln as registerAgentRunContext, Lt as resolveSessionDeliveryTarget, Mn as readLatestAssistantReply, Mt as resolveAgentDeliveryPlan, N as consumeGatewaySigusr1RestartAuthorization, Nn as clearAgentRunContext, Nt as resolveAgentOutboundTarget, O as ensureOutboundSessionEntry, On as initSubagentRegistry, Or as normalizeMimeList, Ot as computeBackoff, P as deferGatewayRestartUntilIdle, Pn as emitAgentEvent, Q as normalizeOptionalAgentId, Qn as getActiveTaskCount, R as scheduleGatewaySigusr1Restart, Rn as resolveUserTimezone, Rt as createOutboundSendDeps, S as loadCombinedSessionStoreForGateway, Sr as DEFAULT_INPUT_IMAGE_MAX_BYTES, T as resolveGatewaySessionStoreTarget, Tr as DEFAULT_INPUT_TIMEOUT_MS, Tt as handleSlackHttpRequest, U as formatRestartSentinelMessage, Un as resolveTtsAutoMode, Ut as runWithModelFallback, V as consumeRestartSentinel, Vn as isTtsProviderConfigured, Vt as createDefaultDeps, Wn as resolveTtsConfig, Wt as getCliSessionId, X as normalizeCronJobPatch, Xn as OPENAI_TTS_MODELS, Y as normalizeCronJobCreate, Yn as textToSpeech, Yt as resolveAgentAvatar, Z as inferLegacyName, Zn as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _r as parseVerboseOverride, ar as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, at as hasLegacyDeliveryHints, b as listAgentsForGateway, bn as formatZonedTimestamp, bt as loadProviderUsageSummary, c as clearSessionQueues, d as getActiveEmbeddedRunCount, dt as requestHeartbeatNow, en as detectSuspiciousPatterns, er as getTotalQueueSize, et as normalizeOptionalText, f as waitForEmbeddedPiRunEnd, fn as dispatchInboundMessage, g as createOpenClawTools, gr as applyVerboseOverride, gt as loadOpenClawPlugins, hr as applyModelOverrideToSessionEntry, i as resolveCronStyleNow, ir as CommandLane, it as buildDeliveryFromLegacyPayload, j as resetDirectoryCache, jn as runSubagentAnnounceFlow, jr as resolveAgentTimeoutMs, k as resolveOutboundSessionRoute, kn as listDescendantRunsForRequester, kr as resolveInputFileLimits, kt as sleepWithAbort, l as runEmbeddedPiAgent, lr as stripHeartbeatToken, lt as applyBrowserProxyPaths, m as buildDefaultToolPolicyPipelineSteps, mn as getTotalPendingReplies, mt as getPluginToolMeta, n as BARE_SESSION_RESET_PROMPT, nn as isExternalHookSession, nr as setCommandLaneConcurrency, nt as normalizeRequiredName, ot as stripLegacyDeliveryFields, p as applyToolPolicyPipeline, pn as createReplyDispatcher, q as writeRestartSentinel, qn as setTtsEnabled, rn as unbindThreadBindingsBySessionKey, rr as waitForActiveTasks, rt as migrateLegacyCronPayload, sn as buildHistoryContextFromEntries, tn as getHookType, tr as resetAllLanes, tt as normalizePayloadToSystemText, u as abortEmbeddedPiRun, ur as lookupContextTokens, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vr as enqueueSystemEvent, vt as normalizeGroupActivation, w as pruneLegacyStoreKeys, wn as stopSubagentsForRequester, wr as DEFAULT_INPUT_MAX_REDIRECTS, x as listSessionsFromStore, yr as isSystemEventContextChanged, z as setGatewaySigusr1RestartPolicy, zn as getTtsProvider, zt as normalizeSendPolicy } from "./reply-BpeNwiEB.js";
4
+ import { $ as normalizeOptionalSessionKey, $t as buildSafeExternalPrompt, At as agentCommand, B as setPreRestartDeferralCheck, Bn as isTtsEnabled, Bt as resolveSendPolicy, C as loadSessionEntry, Cn as isAbortTrigger, Cr as DEFAULT_INPUT_IMAGE_MIMES, Dn as countActiveDescendantRuns, Dr as extractImageContentFromSource, Dt as requestBodyErrorToText, E as resolveSessionModelRef, Er as extractFileContentFromSource, Et as readJsonBodyWithLimit, F as emitGatewayRestart, Fn as getAgentRunContext, G as summarizeRestartSentinel, Gn as resolveTtsPrefsPath, Gt as setCliSessionId, H as formatDoctorNonInteractiveHint, Hn as resolveTtsApiKey, Ht as createOutboundSendDeps$1, I as isGatewaySigusr1RestartExternallyAllowed, In as onAgentEvent, It as resolveOutboundTarget, J as normalizeHttpWebhookUrl, Jn as setTtsProvider, Kn as resolveTtsProviderOrder, Kt as runCliAgent, L as markGatewaySigusr1RestartHandled, Ln as registerAgentRunContext, Lt as resolveSessionDeliveryTarget, Mn as readLatestAssistantReply, Mt as resolveAgentDeliveryPlan, N as consumeGatewaySigusr1RestartAuthorization, Nn as clearAgentRunContext, Nt as resolveAgentOutboundTarget, O as ensureOutboundSessionEntry, On as initSubagentRegistry, Or as normalizeMimeList, Ot as computeBackoff, P as deferGatewayRestartUntilIdle, Pn as emitAgentEvent, Q as normalizeOptionalAgentId, Qn as getActiveTaskCount, R as scheduleGatewaySigusr1Restart, Rn as resolveUserTimezone, Rt as createOutboundSendDeps, S as loadCombinedSessionStoreForGateway, Sr as DEFAULT_INPUT_IMAGE_MAX_BYTES, T as resolveGatewaySessionStoreTarget, Tr as DEFAULT_INPUT_TIMEOUT_MS, Tt as handleSlackHttpRequest, U as formatRestartSentinelMessage, Un as resolveTtsAutoMode, Ut as runWithModelFallback, V as consumeRestartSentinel, Vn as isTtsProviderConfigured, Vt as createDefaultDeps, Wn as resolveTtsConfig, Wt as getCliSessionId, X as normalizeCronJobPatch, Xn as OPENAI_TTS_MODELS, Y as normalizeCronJobCreate, Yn as textToSpeech, Yt as resolveAgentAvatar, Z as inferLegacyName, Zn as OPENAI_TTS_VOICES, _ as resolveAnnounceTargetFromKey, _r as parseVerboseOverride, ar as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, at as hasLegacyDeliveryHints, b as listAgentsForGateway, bn as formatZonedTimestamp, bt as loadProviderUsageSummary, c as clearSessionQueues, d as getActiveEmbeddedRunCount, dt as requestHeartbeatNow, en as detectSuspiciousPatterns, er as getTotalQueueSize, et as normalizeOptionalText, f as waitForEmbeddedPiRunEnd, fn as dispatchInboundMessage, g as createOpenClawTools, gr as applyVerboseOverride, gt as loadOpenClawPlugins, hr as applyModelOverrideToSessionEntry, i as resolveCronStyleNow, ir as CommandLane, it as buildDeliveryFromLegacyPayload, j as resetDirectoryCache, jn as runSubagentAnnounceFlow, jr as resolveAgentTimeoutMs, k as resolveOutboundSessionRoute, kn as listDescendantRunsForRequester, kr as resolveInputFileLimits, kt as sleepWithAbort, l as runEmbeddedPiAgent, lr as stripHeartbeatToken, lt as applyBrowserProxyPaths, m as buildDefaultToolPolicyPipelineSteps, mn as getTotalPendingReplies, mt as getPluginToolMeta, n as BARE_SESSION_RESET_PROMPT, nn as isExternalHookSession, nr as setCommandLaneConcurrency, nt as normalizeRequiredName, ot as stripLegacyDeliveryFields, p as applyToolPolicyPipeline, pn as createReplyDispatcher, q as writeRestartSentinel, qn as setTtsEnabled, rn as unbindThreadBindingsBySessionKey, rr as waitForActiveTasks, rt as migrateLegacyCronPayload, sn as buildHistoryContextFromEntries, tn as getHookType, tr as resetAllLanes, tt as normalizePayloadToSystemText, u as abortEmbeddedPiRun, ur as lookupContextTokens, ut as persistBrowserProxyFiles, v as canonicalizeSpawnedByForAgent, vr as enqueueSystemEvent, vt as normalizeGroupActivation, w as pruneLegacyStoreKeys, wn as stopSubagentsForRequester, wr as DEFAULT_INPUT_MAX_REDIRECTS, x as listSessionsFromStore, yr as isSystemEventContextChanged, z as setGatewaySigusr1RestartPolicy, zn as getTtsProvider, zt as normalizeSendPolicy } from "./reply-V8UXM1XU.js";
5
5
  import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, p as toAgentStoreSessionKey, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
6
6
  import { r as matchesSkillFilter, t as resolveOpenClawPackageRoot } from "./openclaw-root-CQJwyH9q.js";
7
7
  import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, d as getActivePluginRegistry, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS, w as registerInternalHook } from "./registry-Dygi7Azw.js";
@@ -18,11 +18,11 @@ import "./send-Q-CNReiC.js";
18
18
  import { B as resolveAgentMaxConcurrent, C as parseDurationMs, H as VERSION, N as applyMergePatch, P as applyLegacyMigrations, S as sensitive, U as resolveRuntimeServiceVersion, V as resolveSubagentMaxConcurrent, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as OpenClawSchema, i as loadConfig, l as writeConfigFile, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins } from "./config-DuSkPZEG.js";
19
19
  import { l as isTestDefaultMemorySlotDisabled } from "./manifest-registry-YRUqEw3J.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-u6U1_9U0.js";
21
- import { d as registerUnhandledRejectionHandler } from "./runner-BIWQkeih.js";
22
- import "./image-paXd6zl5.js";
21
+ import { d as registerUnhandledRejectionHandler } from "./runner-DkWpm1Ly.js";
22
+ import "./image-Cj9tfO74.js";
23
23
  import "./models-config-BfWGJEDQ.js";
24
24
  import "./pi-model-discovery-4uUnLc3n.js";
25
- import "./pi-embedded-helpers-Cx3WmubG.js";
25
+ import "./pi-embedded-helpers-C4Annkh_.js";
26
26
  import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-BouZCtAZ.js";
27
27
  import "./chrome-DEbRGGI9.js";
28
28
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-pku0epOI.js";
@@ -63,7 +63,7 @@ import "./sqlite-Bbubvc33.js";
63
63
  import { n as loadModelCatalog } from "./model-catalog-DdfszCL_.js";
64
64
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BDil8-Uk.js";
65
65
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName } from "./with-timeout-B1xlb1Xx.js";
66
- import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-Ct_AlJg5.js";
66
+ import { C as getGlobalHookRunner, T as runGlobalGatewayStopSafely, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-J2cVd3TS.js";
67
67
  import { d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, m as isDiagnosticsEnabled } from "./diagnostic-BvpClNOn.js";
68
68
  import "./diagnostic-session-state-CUslJyKP.js";
69
69
  import "./send-BvoyQqdG.js";
@@ -139,20 +139,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
139
139
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-Dc97sW1v.js";
140
140
  import { c as probeGateway, o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-BYAONEme.js";
141
141
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-BlFVEHG-.js";
142
- import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-CCPKZiSX.js";
143
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, s as setHeartbeatsEnabled, t as formatHealthChannelLines } from "./health-DB9FsqfO.js";
142
+ import { n as getStatusSummary, r as pickGatewaySelfPresence } from "./status-2w8d47j-.js";
143
+ import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, s as setHeartbeatsEnabled, t as formatHealthChannelLines } from "./health-BfWYn33I.js";
144
144
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-d_j0Pdnj.js";
145
145
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-B-fJT8wY.js";
146
- import { t as runOnboardingWizard } from "./onboarding-wkMK4RdO.js";
147
- import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BLl3-YNl.js";
146
+ import { t as runOnboardingWizard } from "./onboarding-CX9LQxj2.js";
147
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, d as shouldLogWs, f as summarizeAgentEventForWsLog, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, p as setGatewayWsLogStyle, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration, u as logWs } from "./push-apns-BTcu7pip.js";
148
148
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-C47YdW4F.js";
149
- import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DANgtZcG.js";
149
+ import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-DA4Kt9C5.js";
150
150
  import "./dm-policy-shared-bsPE2aMP.js";
151
151
  import "./node-service-Da4wpz30.js";
152
152
  import "./status.update-BJHhhP0N.js";
153
153
  import { t as resolveSystemRunCommand } from "./system-run-command-DKiCEPJc.js";
154
154
  import { t as installSkill } from "./skills-install-jtm7_1nn.js";
155
- import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-D6iw22_Q.js";
155
+ import { n as runGatewayUpdate, t as resolveAgentSessionDirs } from "./session-dirs-BmVdF2KM.js";
156
156
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-DpGqXq9W.js";
157
157
  import { fileURLToPath, pathToFileURL } from "node:url";
158
158
  import * as fsSync from "node:fs";
@@ -3383,7 +3383,8 @@ async function runCronIsolatedAgentTurn(params) {
3383
3383
  timeoutMs,
3384
3384
  runId: cronSession.sessionEntry.sessionId,
3385
3385
  requireExplicitMessageTarget: true,
3386
- disableMessageTool: deliveryRequested
3386
+ disableMessageTool: deliveryRequested,
3387
+ streamParams: { cacheRetention: "long" }
3387
3388
  });
3388
3389
  }
3389
3390
  });
@@ -12409,7 +12410,7 @@ const nodeHandlers = {
12409
12410
  const p = params;
12410
12411
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
12411
12412
  await respondUnavailableOnThrow(respond, async () => {
12412
- const { handleNodeEvent } = await import("./server-node-events-C0ZzfaPA.js");
12413
+ const { handleNodeEvent } = await import("./server-node-events-D5Fen-q2.js");
12413
12414
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
12414
12415
  await handleNodeEvent({
12415
12416
  deps: context.deps,
@@ -20293,7 +20294,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
20293
20294
  if (!minimalTestGateway) cron.start().catch((err) => logCron.error(`failed to start: ${String(err)}`));
20294
20295
  if (!minimalTestGateway) (async () => {
20295
20296
  const { recoverPendingDeliveries } = await import("./delivery-queue-CxDDEWQg.js").then((n) => n.n);
20296
- const { deliverOutboundPayloads } = await import("./deliver-Ct_AlJg5.js").then((n) => n.n);
20297
+ const { deliverOutboundPayloads } = await import("./deliver-J2cVd3TS.js").then((n) => n.n);
20297
20298
  await recoverPendingDeliveries({
20298
20299
  deliver: deliverOutboundPayloads,
20299
20300
  log: log.child("delivery-recovery"),
@@ -1,5 +1,5 @@
1
1
  import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-BlC2Fskb.js";
2
- import { $n as getQueueSize, Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget, Rn as resolveUserTimezone, ar as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, br as peekSystemEventEntries, cr as resolveHeartbeatPrompt$1, dt as requestHeartbeatNow, ft as setHeartbeatWakeHandler, ir as CommandLane, lr as stripHeartbeatToken, or as DEFAULT_HEARTBEAT_EVERY, pt as resolveHeartbeatReasonKind, r as appendCronStyleCurrentTimeLine, sr as isHeartbeatContentEffectivelyEmpty, t as getReplyFromConfig } from "./reply-BpeNwiEB.js";
2
+ import { $n as getQueueSize, Ft as resolveHeartbeatSenderContext, Pt as resolveHeartbeatDeliveryTarget, Rn as resolveUserTimezone, ar as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, br as peekSystemEventEntries, cr as resolveHeartbeatPrompt$1, dt as requestHeartbeatNow, ft as setHeartbeatWakeHandler, ir as CommandLane, lr as stripHeartbeatToken, or as DEFAULT_HEARTBEAT_EVERY, pt as resolveHeartbeatReasonKind, r as appendCronStyleCurrentTimeLine, sr as isHeartbeatContentEffectivelyEmpty, t as getReplyFromConfig } from "./reply-V8UXM1XU.js";
3
3
  import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-DCt45XZa.js";
4
4
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-8bY95KEB.js";
5
5
  import { c as resolveAgentWorkspaceDir, g as DEFAULT_HEARTBEAT_FILENAME, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-Dl-vG2QO.js";
@@ -11,7 +11,7 @@ import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-NiQscO
11
11
  import { a as resolvePreferredAccountId, t as buildChannelAccountBindings } from "./bindings-BZ4ZLq8H.js";
12
12
  import { c as resolveStorePath, n as resolveSessionFilePath } from "./paths-C6eomcf_.js";
13
13
  import { t as HEARTBEAT_TOKEN } from "./tokens-BDil8-Uk.js";
14
- import { t as deliverOutboundPayloads } from "./deliver-Ct_AlJg5.js";
14
+ import { t as deliverOutboundPayloads } from "./deliver-J2cVd3TS.js";
15
15
  import { o as resolveEffectiveMessagesConfig } from "./reply-prefix-8FTZTxLD.js";
16
16
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BRa7cSJX.js";
17
17
  import { n as withProgress } from "./progress-CjVenbge.js";
@@ -4,12 +4,12 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
4
4
  import { c as resolveAgentWorkspaceDir, g as DEFAULT_HEARTBEAT_FILENAME, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-BhZr1_OI.js";
5
5
  import { C as parseDurationMs, i as loadConfig } from "./config-26MDXfhB.js";
6
6
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-HzbpjcFE.js";
7
- import { Gn as resolveUserTimezone, J as appendCronStyleCurrentTimeLine, K as getReplyFromConfig, Sn as peekSystemEventEntries, cn as requestHeartbeatNow, dr as CommandLane, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, gr as stripHeartbeatToken, hr as resolveHeartbeatPrompt$1, ln as setHeartbeatWakeHandler, mr as isHeartbeatContentEffectivelyEmpty, or as getQueueSize, ot as resolveHeartbeatDeliveryTarget, pr as DEFAULT_HEARTBEAT_EVERY, st as resolveHeartbeatSenderContext, un as resolveHeartbeatReasonKind } from "./subagent-registry-C7ua7m8M.js";
7
+ import { Gn as resolveUserTimezone, J as appendCronStyleCurrentTimeLine, K as getReplyFromConfig, Sn as peekSystemEventEntries, cn as requestHeartbeatNow, dr as CommandLane, fr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, gr as stripHeartbeatToken, hr as resolveHeartbeatPrompt$1, ln as setHeartbeatWakeHandler, mr as isHeartbeatContentEffectivelyEmpty, or as getQueueSize, ot as resolveHeartbeatDeliveryTarget, pr as DEFAULT_HEARTBEAT_EVERY, st as resolveHeartbeatSenderContext, un as resolveHeartbeatReasonKind } from "./subagent-registry-DGNGenUN.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-BVmrZrFA.js";
9
9
  import { t as HEARTBEAT_TOKEN } from "./tokens-ANnYrShl.js";
10
10
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-BxYZzFkm.js";
11
11
  import { a as resolvePreferredAccountId, t as buildChannelAccountBindings } from "./bindings-BANaKLsQ.js";
12
- import { t as deliverOutboundPayloads } from "./deliver-BAjdrEoI.js";
12
+ import { t as deliverOutboundPayloads } from "./deliver-meQdcFaA.js";
13
13
  import { i as hasErrnoCode, n as formatErrorMessage } from "./errors-Ba_ROWsq.js";
14
14
  import { c as resolveStorePath, n as resolveSessionFilePath } from "./paths-DNdWAq7b.js";
15
15
  import { o as resolveEffectiveMessagesConfig } from "./reply-prefix-C2G22afw.js";
@@ -15,7 +15,7 @@ import "./client-DrK7aLru.js";
15
15
  import "./call-HzbpjcFE.js";
16
16
  import "./message-channel-CVHJDItx.js";
17
17
  import "./pairing-token-Byh6drgn.js";
18
- import "./subagent-registry-C7ua7m8M.js";
18
+ import "./subagent-registry-DGNGenUN.js";
19
19
  import "./sessions-BVmrZrFA.js";
20
20
  import "./tokens-ANnYrShl.js";
21
21
  import "./plugins-BxYZzFkm.js";
@@ -25,13 +25,13 @@ import "./logging-CFvkxgcX.js";
25
25
  import "./send-mdCBM_lP.js";
26
26
  import "./send-ENOozmo1.js";
27
27
  import "./with-timeout-BJj1dns_.js";
28
- import "./deliver-BAjdrEoI.js";
28
+ import "./deliver-meQdcFaA.js";
29
29
  import "./diagnostic-C6WTf4ZE.js";
30
30
  import "./diagnostic-session-state-CIjIGxEE.js";
31
31
  import "./accounts-1gFWxwAw.js";
32
32
  import "./send-Dd6W68eD.js";
33
33
  import "./image-ops-CKJNUuNW.js";
34
- import "./pi-embedded-helpers-DOmGm3QX.js";
34
+ import "./pi-embedded-helpers-C_U_c_EU.js";
35
35
  import "./sandbox-BMaHJcKh.js";
36
36
  import "./chrome-DOT5Dxfr.js";
37
37
  import { l as promptYesNo } from "./tailscale-BxzsxqAY.js";
@@ -67,9 +67,9 @@ import "./ir-DetFY9t5.js";
67
67
  import "./render-e7fENCYH.js";
68
68
  import "./commands-CDrOx1RO.js";
69
69
  import "./commands-registry-BcqdkMzV.js";
70
- import "./image-CvBYo9Bu.js";
70
+ import "./image-C8HOu4vb.js";
71
71
  import "./tool-display-DixohEVL.js";
72
- import "./runner-Be7-7BcC.js";
72
+ import "./runner-CbkB3vpb.js";
73
73
  import "./model-catalog-DzKq0MC2.js";
74
74
  import "./session-utils-DbIfE0Ek.js";
75
75
  import "./skill-commands-BdHYzdEB.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-CGTYQeqD.js";
107
+ import { t as buildPluginStatusReport } from "./status-BjjDHl4v.js";
108
108
  import path from "node:path";
109
109
  import fs from "node:fs";
110
110
  import fs$1 from "node:fs/promises";