@symerian/symi 3.0.2 → 3.0.4

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 (267) hide show
  1. package/dist/{accounts-3dCrO3oZ.js → accounts-BaIiyR_C.js} +1 -1
  2. package/dist/{accounts-BRw8yhIW.js → accounts-D5o2mAKN.js} +3 -3
  3. package/dist/{accounts-BuZxOb3B.js → accounts-nSMFGcjE.js} +1 -1
  4. package/dist/{active-listener-BVZOh2T1.js → active-listener-u0n6lV-h.js} +1 -1
  5. package/dist/{agent-scope-Ddr0Ws7u.js → agent-scope-CEzt6H9x.js} +2 -2
  6. package/dist/{agents-DEYqmFEH.js → agents-CeafvAwk.js} +4 -4
  7. package/dist/{agents.config-TArPtTFt.js → agents.config-DyAqyKIS.js} +1 -1
  8. package/dist/{agents.config-ClI9Q05l.js → agents.config-wJSTSxHw.js} +1 -1
  9. package/dist/{audio-preflight-DrG2ef4O.js → audio-preflight-CWHghOEi.js} +26 -26
  10. package/dist/{audio-preflight-BrKBM7JM.js → audio-preflight-Cje-A0Fs.js} +4 -4
  11. package/dist/{auth-choice-kJVkaHx6.js → auth-choice-BrH3g0l7.js} +1 -1
  12. package/dist/{auth-choice-bOht3his.js → auth-choice-CSXt138B.js} +1 -1
  13. package/dist/{auth-profiles-Bs0Z0FzU.js → auth-profiles-BoHFXe5T.js} +4 -4
  14. package/dist/{banner--HSjGLhi.js → banner-kkSwCGXn.js} +1 -1
  15. package/dist/{bindings-D43o9y2s.js → bindings-B1fUDYvC.js} +2 -2
  16. package/dist/build-info.json +3 -3
  17. package/dist/bundled/boot-md/handler.js +51 -51
  18. package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
  19. package/dist/bundled/session-memory/handler.js +51 -51
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-activity-D8QD7GoV.js → channel-activity-cK3ZB6TE.js} +1 -1
  22. package/dist/{channel-options-C68HZtw7.js → channel-options-BC-QbEPJ.js} +1 -1
  23. package/dist/{channel-options-Cj2ZMHvy.js → channel-options-BdMw9pwh.js} +1 -1
  24. package/dist/{channel-web-BGZxsb8l.js → channel-web-B9o347ZR.js} +1 -1
  25. package/dist/{channels-cli-CLkq2ISd.js → channels-cli-CFZVgAxq.js} +6 -6
  26. package/dist/{channels-cli-C775zJjx.js → channels-cli-n1iS1gNN.js} +6 -6
  27. package/dist/{chrome-X5wmeW9f.js → chrome-BK_P1Tqm.js} +10 -10
  28. package/dist/{chrome-WfENE6tB.js → chrome-DaduLVA1.js} +7 -7
  29. package/dist/{chunk-BRe1o4Af.js → chunk-BMvnM1K5.js} +1 -1
  30. package/dist/{cli-B2FVKvPQ.js → cli-B3M7EAy1.js} +3 -3
  31. package/dist/{cli-8ibydSgl.js → cli-C852-xID.js} +3 -3
  32. package/dist/{command-registry-C-c2RS-n.js → command-registry-CsiR9i7E.js} +10 -10
  33. package/dist/{commands-registry-Tug42snN.js → commands-registry-D0jEfZ42.js} +4 -4
  34. package/dist/{completion-cli-BLO_wsYD.js → completion-cli-Bon9_6qA.js} +2 -2
  35. package/dist/{completion-cli-IKI4BpqL.js → completion-cli-Dnyp6OJy.js} +1 -1
  36. package/dist/{config-CCbXer2L.js → config-BmrykwKO.js} +9 -9
  37. package/dist/{config-cli-Bh8aPiiL.js → config-cli-BebhyWjM.js} +1 -1
  38. package/dist/{config-cli-d4RU82ov.js → config-cli-DqfKE_A1.js} +1 -1
  39. package/dist/{configure-jxJfT5_B.js → configure-DB-1UY2t.js} +3 -3
  40. package/dist/{configure-DKmHXbug.js → configure-HMRPjIFX.js} +3 -3
  41. package/dist/{consolidate-tpfmfqvr.js → consolidate-DT78djL9.js} +2 -2
  42. package/dist/control-ui/js/app.js +6 -2
  43. package/dist/{deliver-DShQE_sq.js → deliver-B6vfVmif.js} +1 -1
  44. package/dist/{deliver-BfgRx_NK.js → deliver-DbgdviSo.js} +9 -9
  45. package/dist/{diagnostic-BjfiehUF.js → diagnostic-B0Ynd2kf.js} +1 -1
  46. package/dist/{doctor-completion-VAGhCLD5.js → doctor-completion-D6U7k8ef.js} +1 -1
  47. package/dist/{doctor-completion-C7SuoBlz.js → doctor-completion-DlvHamvv.js} +1 -1
  48. package/dist/entry.js +1 -1
  49. package/dist/{env-BDXYbTKj.js → env-D9chTL63.js} +1 -1
  50. package/dist/extensionAPI.js +7 -7
  51. package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-BbIorbzs.js} +2 -2
  52. package/dist/{gateway-cli-BELyZGAU.js → gateway-cli-CX6HdZS6.js} +14 -13
  53. package/dist/{gateway-cli-D_SJFv7K.js → gateway-cli-ms7HH0-P.js} +14 -13
  54. package/dist/{gemini-auth-Cl5PvzLM.js → gemini-auth-D9vLhghA.js} +1 -1
  55. package/dist/{glass-ui-ws-0agRdhZD.js → glass-ui-ws-7O88M05N.js} +10 -10
  56. package/dist/{glass-ui-ws-qPJDDUD9.js → glass-ui-ws-b6N_1b40.js} +10 -10
  57. package/dist/{health-BnGM6Yux.js → health-_G7Dy5sq.js} +48 -18
  58. package/dist/{health-CCKCR4oM.js → health-xGaC5l7K.js} +48 -18
  59. package/dist/{heartbeat-visibility-CG080wT5.js → heartbeat-visibility-D6uZvFVV.js} +1 -1
  60. package/dist/{heartbeat-visibility-C4Sg0QOd.js → heartbeat-visibility-_mPYbQT2.js} +1 -1
  61. package/dist/{hooks-cli-CtuiPrKW.js → hooks-cli-BFZv9uGo.js} +4 -4
  62. package/dist/{hooks-cli-B2WVvhgH.js → hooks-cli-DuKd3-QN.js} +4 -4
  63. package/dist/{image-DfzwGNoa.js → image-C12-WOMI.js} +1 -1
  64. package/dist/{image-C2w5iw4N.js → image-D1wT_m5z.js} +4 -4
  65. package/dist/{image-ops-DFFGK0lW.js → image-ops-DuOHpA9U.js} +1 -1
  66. package/dist/index.js +9 -9
  67. package/dist/{ir-CC6LUYsV.js → ir-BpwvHMZb.js} +4 -4
  68. package/dist/llm-slug-generator.js +51 -51
  69. package/dist/{local-roots-jzqRdkXA.js → local-roots-BacHGRfJ.js} +4 -4
  70. package/dist/{login-DHJnG8aX.js → login-C9Nfj1r0.js} +7 -7
  71. package/dist/{login-qr-UB9DGMzi.js → login-qr-n2FhZV37.js} +10 -10
  72. package/dist/{manager-zwcQLMln.js → manager-C2jDmkaH.js} +9 -9
  73. package/dist/{manager-Mm_GQxOU.js → manager-C8BydiE8.js} +1 -1
  74. package/dist/{manager-DKUOUCmo.js → manager-DjHARmFk.js} +1 -1
  75. package/dist/{manager-B6EhIj3H.js → manager-DnkWmUWs.js} +1 -1
  76. package/dist/{manifest-registry-CBCGTsIb.js → manifest-registry-2WUbwZgO.js} +1 -1
  77. package/dist/{markdown-tables-bViwuQKQ.js → markdown-tables-stYj7BCB.js} +1 -1
  78. package/dist/{memory-cli-BEZM7jn9.js → memory-cli-D69x8sVz.js} +3 -3
  79. package/dist/{memory-cli-D4lLSeA1.js → memory-cli-z9Rsga03.js} +3 -3
  80. package/dist/{message-channel-OlFBYAw8.js → message-channel-w9cWbx_W.js} +1 -1
  81. package/dist/{models-ElQijvpq.js → models-U6PPfAmY.js} +2 -2
  82. package/dist/{models-cli-14U59ejI.js → models-cli-DDev4qyK.js} +5 -5
  83. package/dist/{models-cli-Dtf5Zpgd.js → models-cli-DiqDhhoK.js} +4 -4
  84. package/dist/{onboard-DN2xgEv1.js → onboard-B0Y1u3vK.js} +2 -2
  85. package/dist/{onboard-CaYQVQYI.js → onboard-Db6LQ1SN.js} +2 -2
  86. package/dist/{onboard-channels-C5sKGabO.js → onboard-channels-CkFD8gYa.js} +1 -1
  87. package/dist/{onboard-channels-B1fWI5k5.js → onboard-channels-Cky54l0-.js} +1 -1
  88. package/dist/{onboarding-BngFnwT6.js → onboarding-BSvR9bkU.js} +3 -3
  89. package/dist/{onboarding-DNIz481s.js → onboarding-DTs0CtTa.js} +3 -3
  90. package/dist/{onboarding.finalize-B-x_trN9.js → onboarding.finalize-BCiHVrC3.js} +8 -8
  91. package/dist/{onboarding.finalize-BA8-Tnhc.js → onboarding.finalize-CexXZw9D.js} +9 -9
  92. package/dist/{outbound-DUO7IkKe.js → outbound-BQZtNLk5.js} +7 -7
  93. package/dist/{outbound-attachment-CWi9cBa6.js → outbound-attachment-DhDAO6nl.js} +2 -2
  94. package/dist/{pi-auth-json-S_NBOBoK.js → pi-auth-json-h8jIzOEa.js} +1 -1
  95. package/dist/{pi-embedded-DUJ9Ytfn.js → pi-embedded-DFMFvHP5.js} +29 -20
  96. package/dist/{pi-embedded-helpers-YSU-xmLw.js → pi-embedded-helpers-C4GmoY6O.js} +18 -18
  97. package/dist/{pi-embedded-helpers-B1k1RWqM.js → pi-embedded-helpers-pMH6u36v.js} +4 -4
  98. package/dist/{plugin-registry-C1xFJkog.js → plugin-registry-2T2NDPGh.js} +1 -1
  99. package/dist/{plugin-registry-CZS8ioCg.js → plugin-registry-739qhWq3.js} +1 -1
  100. package/dist/plugin-sdk/{channel-web-B_XlrV_E.js → channel-web-DAJtsqF_.js} +1 -1
  101. package/dist/plugin-sdk/index.js +3 -3
  102. package/dist/plugin-sdk/infra/active-heartbeat-runs.d.ts +24 -7
  103. package/dist/plugin-sdk/{manager-CJd0vK4S.js → manager-DhiL-RSO.js} +1 -1
  104. package/dist/plugin-sdk/{synthesis-Cre_3fLT.js → synthesis-cOQ27lCy.js} +2 -2
  105. package/dist/plugin-sdk/{unified-runner-BNQKFoGX.js → unified-runner-KBVvJUFF.js} +15 -6
  106. package/dist/plugin-sdk/{web-CE-OsTKq.js → web-Bj-jTlHW.js} +3 -3
  107. package/dist/{plugins-BpFxTfLA.js → plugins-CneV0s1f.js} +4 -4
  108. package/dist/{plugins-cli-BGccb2gT.js → plugins-cli-BrLY9BMq.js} +4 -4
  109. package/dist/{plugins-cli-f_Ncophh.js → plugins-cli-rLBIo-nA.js} +4 -4
  110. package/dist/{program-5Hto31sk.js → program-POF8wz57.js} +9 -9
  111. package/dist/{program-context-Baw4Oc1H.js → program-context-DsPL6cge.js} +18 -18
  112. package/dist/{prompt-select-styled-Cm6mr7mH.js → prompt-select-styled-BaQx_oFk.js} +6 -6
  113. package/dist/{prompt-select-styled-DHSySGF2.js → prompt-select-styled-Cz2iXZki.js} +6 -6
  114. package/dist/{provider-auth-helpers-_aPYnJCR.js → provider-auth-helpers-D7_-bTJg.js} +1 -1
  115. package/dist/{provider-auth-helpers-FdlXX50k.js → provider-auth-helpers-tiuH9v1U.js} +1 -1
  116. package/dist/{push-apns-DnMyTqrU.js → push-apns-BP1rb3hW.js} +1 -1
  117. package/dist/{push-apns-Dusza10V.js → push-apns-CB9rSO0r.js} +1 -1
  118. package/dist/{pw-ai-hPAkCert.js → pw-ai-CZJaishg.js} +9 -9
  119. package/dist/{pw-ai-Dd_QrTWR.js → pw-ai-D0CMQA23.js} +1 -1
  120. package/dist/{qmd-manager-DDKAOUcn.js → qmd-manager-Cx3O7YFm.js} +5 -5
  121. package/dist/{register.agent-TI-lzUMT.js → register.agent-BXfiPWJL.js} +8 -8
  122. package/dist/{register.agent-DibuuULq.js → register.agent-BadsiDY7.js} +7 -7
  123. package/dist/{register.configure-CE6z4EEp.js → register.configure-DFUqXeRq.js} +9 -9
  124. package/dist/{register.configure-BbBU2vzP.js → register.configure-DLPSROfI.js} +9 -9
  125. package/dist/{register.maintenance-Dsw96Q5M.js → register.maintenance-CWCtxkNh.js} +10 -10
  126. package/dist/{register.maintenance-D_cRwoi6.js → register.maintenance-Jqn4H62V.js} +11 -11
  127. package/dist/{register.message-BqRfLqBs.js → register.message-CTQZsi6c.js} +4 -4
  128. package/dist/{register.message-7JdfRDPR.js → register.message-CyNUsm17.js} +4 -4
  129. package/dist/{register.onboard-Ca5HGO6E.js → register.onboard-BywdvE0H.js} +7 -7
  130. package/dist/{register.onboard-7iv0kkQk.js → register.onboard-DzX8ZUAK.js} +7 -7
  131. package/dist/{register.setup-D7AKohSt.js → register.setup-acIJDgl8.js} +7 -7
  132. package/dist/{register.setup-Cy3cIayc.js → register.setup-psP-ZtQm.js} +7 -7
  133. package/dist/{register.status-health-sessions-BW51mzBs.js → register.status-health-sessions-BQ9fEidS.js} +6 -6
  134. package/dist/{register.status-health-sessions-DOkSVuJk.js → register.status-health-sessions-C3Ekyerp.js} +6 -6
  135. package/dist/{register.subclis-p-z6ekaE.js → register.subclis-C-Y_J1yd.js} +9 -9
  136. package/dist/{registry-DYq1AYOv.js → registry-BIqyUxh_.js} +2 -2
  137. package/dist/{replies-CDz80zCR.js → replies-CvvV7FsP.js} +3 -3
  138. package/dist/{reply-prefix-C1Tw2ERK.js → reply-prefix-DqhURPy6.js} +1 -1
  139. package/dist/{resolve-route-Cz45JFdW.js → resolve-route-CAgv6NO0.js} +4 -4
  140. package/dist/{retry-B-y5suGA.js → retry-CmtozApI.js} +1 -1
  141. package/dist/{run-main-BhEacTM9.js → run-main-BUTiVWxn.js} +17 -17
  142. package/dist/{runner-CaXOtv_D.js → runner-7XhJhCc0.js} +1 -1
  143. package/dist/{runner-7_mUx-F3.js → runner-R8qsprXG.js} +9 -9
  144. package/dist/{send-BQTsCyf6.js → send-B_g1He3g.js} +10 -10
  145. package/dist/{send-R3nkEMMb.js → send-DGVcpcfh.js} +7 -7
  146. package/dist/{send-fVqebfsH.js → send-DWrapvrU.js} +6 -6
  147. package/dist/{send-DUmV-ltI.js → send-DXW6BXBH.js} +6 -6
  148. package/dist/{send-XAxr3MFp.js → send-DkU1UYlf.js} +10 -10
  149. package/dist/{server-methods-C8ff27p5.js → server-methods-B4SR9px-.js} +11 -10
  150. package/dist/{server-methods-Bcwa782q.js → server-methods-BAZKdAPo.js} +11 -10
  151. package/dist/{server-node-events-B85y_7eX.js → server-node-events-BH1YaeId.js} +4 -4
  152. package/dist/{server-node-events-h8Af4ZTV.js → server-node-events-C3EVBwcx.js} +4 -4
  153. package/dist/{session-Bs8nmUHx.js → session-CI7IFf_N.js} +4 -4
  154. package/dist/{skill-commands-BXs_duC2.js → skill-commands-C0wJE3kM.js} +5 -5
  155. package/dist/{skills-DjtoXuuJ.js → skills-DofJnEQw.js} +6 -6
  156. package/dist/{sqlite-VBmM_OHS.js → sqlite-C7SbUGaN.js} +1 -1
  157. package/dist/{status-DUGaRGN0.js → status-Cnr5heo3.js} +3 -3
  158. package/dist/{status-DsaLdb09.js → status-D5zp5rJK.js} +3 -3
  159. package/dist/{status-DFBG2hcx.js → status-DX8BiUs2.js} +1 -1
  160. package/dist/{status-JL0CD-E1.js → status-DyQuiOVn.js} +1 -1
  161. package/dist/{store-BOFCIL6J.js → store-Bihue0SL.js} +2 -2
  162. package/dist/{subagent-registry-DXCGIrYv.js → subagent-registry-Y_8a_o-m.js} +14 -5
  163. package/dist/{subsystem-BjyjJF-d.js → subsystem-dKFaD1RZ.js} +1 -1
  164. package/dist/{synthesis-CLt-6Pzu.js → synthesis-BVbYJPM-.js} +3 -3
  165. package/dist/{synthesis-BxwFFuqZ.js → synthesis-CIxaIZH1.js} +7 -7
  166. package/dist/{synthesis-BUbH-4DA.js → synthesis-CoWIFjai.js} +51 -51
  167. package/dist/{synthesis-ekn511D_.js → synthesis-ntqeiu25.js} +3 -3
  168. package/dist/{tables-DTIPf6oV.js → tables-DKFvaDXb.js} +1 -1
  169. package/dist/{target-errors-Bp-kjJP5.js → target-errors-S2DP7RcP.js} +2 -2
  170. package/dist/{thinking-awGU51JX.js → thinking-DOvUroda.js} +5 -5
  171. package/dist/{tokens-DLGDtW5r.js → tokens-CFTgwwnd.js} +1 -1
  172. package/dist/{tool-images-CiD-DaWf.js → tool-images-C6fG5hIF.js} +2 -2
  173. package/dist/{tool-loop-detection-Dj9h1ogr.js → tool-loop-detection-Bs0RG2qV.js} +2 -2
  174. package/dist/{unified-runner-DtJxJ016.js → unified-runner-BNiGGPbP.js} +94 -85
  175. package/dist/{unified-runner-CdBxbcO2.js → unified-runner-DWZT5BCl.js} +14 -5
  176. package/dist/{update-cli-4OzLcQIF.js → update-cli-BdYAIokj.js} +10 -10
  177. package/dist/{update-cli-CQbvni-d.js → update-cli-ul-BDwA3.js} +11 -11
  178. package/dist/{update-runner-DLCzD7sp.js → update-runner-D1V7cGWA.js} +1 -1
  179. package/dist/{update-runner-CiYhkA5I.js → update-runner-Des8yO8-.js} +1 -1
  180. package/dist/{web-CSDi520u.js → web-4pKRGaN9.js} +55 -55
  181. package/dist/{web-COnC7jb4.js → web-CeH7sXd1.js} +7 -7
  182. package/dist/{web-DMFKXi8s.js → web-Cm1sUEcG.js} +5 -5
  183. package/dist/{web-DiqLVzt7.js → web-Dd2K5DCI.js} +4 -4
  184. package/dist/{whatsapp-actions-XPj837oV.js → whatsapp-actions-BVTo7B3-.js} +21 -21
  185. package/dist/{workspace-CarmeCYN.js → workspace-D9KMUsNd.js} +2 -2
  186. package/extensions/bluebubbles/node_modules/.bin/symi +0 -0
  187. package/extensions/bluebubbles/package.json +1 -1
  188. package/extensions/copilot-proxy/node_modules/.bin/symi +0 -0
  189. package/extensions/copilot-proxy/package.json +1 -1
  190. package/extensions/diagnostics-otel/node_modules/.bin/acorn +0 -0
  191. package/extensions/diagnostics-otel/node_modules/.bin/symi +0 -0
  192. package/extensions/diagnostics-otel/package.json +1 -1
  193. package/extensions/discord/node_modules/.bin/symi +0 -0
  194. package/extensions/discord/package.json +1 -1
  195. package/extensions/feishu/node_modules/.bin/symi +0 -0
  196. package/extensions/feishu/package.json +1 -1
  197. package/extensions/google-antigravity-auth/node_modules/.bin/symi +0 -0
  198. package/extensions/google-antigravity-auth/package.json +1 -1
  199. package/extensions/google-gemini-cli-auth/node_modules/.bin/symi +0 -0
  200. package/extensions/google-gemini-cli-auth/package.json +1 -1
  201. package/extensions/googlechat/node_modules/.bin/symi +0 -0
  202. package/extensions/googlechat/package.json +1 -1
  203. package/extensions/imessage/node_modules/.bin/symi +0 -0
  204. package/extensions/imessage/package.json +1 -1
  205. package/extensions/irc/node_modules/.bin/symi +0 -0
  206. package/extensions/irc/package.json +1 -1
  207. package/extensions/learning-loop/node_modules/.bin/symi +0 -0
  208. package/extensions/learning-loop/package.json +1 -1
  209. package/extensions/line/node_modules/.bin/symi +0 -0
  210. package/extensions/line/package.json +1 -1
  211. package/extensions/llm-task/package.json +1 -1
  212. package/extensions/matrix/CHANGELOG.md +12 -0
  213. package/extensions/matrix/node_modules/.bin/markdown-it +0 -0
  214. package/extensions/matrix/node_modules/.bin/symi +0 -0
  215. package/extensions/matrix/package.json +1 -1
  216. package/extensions/mattermost/node_modules/.bin/symi +0 -0
  217. package/extensions/mattermost/package.json +1 -1
  218. package/extensions/memory-core/node_modules/.bin/symi +0 -0
  219. package/extensions/memory-core/package.json +1 -1
  220. package/extensions/memory-lancedb/node_modules/.bin/arrow2csv +0 -0
  221. package/extensions/memory-lancedb/node_modules/.bin/openai +0 -0
  222. package/extensions/memory-lancedb/node_modules/.bin/symi +0 -0
  223. package/extensions/memory-lancedb/package.json +1 -1
  224. package/extensions/minimax-portal-auth/node_modules/.bin/symi +0 -0
  225. package/extensions/minimax-portal-auth/package.json +1 -1
  226. package/extensions/msteams/CHANGELOG.md +12 -0
  227. package/extensions/msteams/node_modules/.bin/symi +0 -0
  228. package/extensions/msteams/package.json +1 -1
  229. package/extensions/nextcloud-talk/node_modules/.bin/symi +0 -0
  230. package/extensions/nextcloud-talk/package.json +1 -1
  231. package/extensions/nostr/CHANGELOG.md +12 -0
  232. package/extensions/nostr/node_modules/.bin/symi +0 -0
  233. package/extensions/nostr/node_modules/.bin/tsc +0 -0
  234. package/extensions/nostr/node_modules/.bin/tsserver +0 -0
  235. package/extensions/nostr/package.json +1 -1
  236. package/extensions/open-prose/package.json +1 -1
  237. package/extensions/outlook/node_modules/.bin/symi +0 -0
  238. package/extensions/outlook/package.json +1 -1
  239. package/extensions/pipeline/package.json +1 -1
  240. package/extensions/signal/node_modules/.bin/symi +0 -0
  241. package/extensions/signal/package.json +1 -1
  242. package/extensions/slack/node_modules/.bin/symi +0 -0
  243. package/extensions/slack/package.json +1 -1
  244. package/extensions/telegram/node_modules/.bin/symi +0 -0
  245. package/extensions/telegram/package.json +1 -1
  246. package/extensions/tlon/node_modules/.bin/symi +0 -0
  247. package/extensions/tlon/package.json +1 -1
  248. package/extensions/twitch/CHANGELOG.md +12 -0
  249. package/extensions/twitch/node_modules/.bin/symi +0 -0
  250. package/extensions/twitch/package.json +1 -1
  251. package/extensions/voice-call/CHANGELOG.md +12 -0
  252. package/extensions/voice-call/node_modules/.bin/symi +0 -0
  253. package/extensions/voice-call/package.json +1 -1
  254. package/extensions/whatsapp/node_modules/.bin/symi +0 -0
  255. package/extensions/whatsapp/package.json +1 -1
  256. package/extensions/zalo/CHANGELOG.md +12 -0
  257. package/extensions/zalo/node_modules/.bin/symi +0 -0
  258. package/extensions/zalo/package.json +1 -1
  259. package/extensions/zalouser/CHANGELOG.md +12 -0
  260. package/extensions/zalouser/node_modules/.bin/symi +0 -0
  261. package/extensions/zalouser/package.json +1 -1
  262. package/package.json +116 -86
  263. package/skills/long-task/scripts/detach-task.sh +0 -0
  264. package/skills/nano-banana-pro/scripts/generate_image.py +0 -0
  265. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -0
  266. package/skills/tmux/scripts/find-sessions.sh +0 -0
  267. package/skills/tmux/scripts/wait-for-text.sh +0 -0
@@ -2,7 +2,7 @@ import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
2
2
  import { n as MANIFEST_KEY, t as LEGACY_MANIFEST_KEYS } from "./legacy-names-CePMUvus.js";
3
3
  import path from "node:path";
4
4
  import fs from "node:fs";
5
- import JSON5 from "json5";
5
+ import json5 from "json5";
6
6
  import YAML from "yaml";
7
7
 
8
8
  //#region src/shared/config-eval.ts
@@ -210,7 +210,7 @@ function resolveSymiManifestBlock(params) {
210
210
  const raw = getFrontmatterString(params.frontmatter, params.key ?? "metadata");
211
211
  if (!raw) return;
212
212
  try {
213
- const parsed = JSON5.parse(raw);
213
+ const parsed = json5.parse(raw);
214
214
  if (!parsed || typeof parsed !== "object") return;
215
215
  const manifestKeys = [MANIFEST_KEY, ...LEGACY_MANIFEST_KEYS];
216
216
  for (const key of manifestKeys) {
@@ -22,7 +22,7 @@ import "./pairing-token-Byh6drgn.js";
22
22
  import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
23
23
  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, t as isLoopbackAddress, u as resolveGatewayListenHosts } from "./net-DZ5Ayk-W.js";
24
24
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-Cmumpn76.js";
25
- import { $t as emitGatewayRestart, A as runCliAgent, An as resolveInputFileLimits, Ar as emitAgentEvent, At as normalizeHttpWebhookUrl, Bt as buildDeliveryFromLegacyPayload, Cn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Cr as CommandLane, Ct as consumeRestartSentinel, Dn as extractFileContentFromSource, Dt as summarizeRestartSentinel, E as createDefaultDeps, En as DEFAULT_INPUT_TIMEOUT_MS, Ft as normalizeOptionalSessionKey, Gt as buildSafeExternalPrompt, Ht as stripLegacyDeliveryFields, It as normalizeOptionalText, Jt as isExternalHookSession, Kt as detectSuspiciousPatterns, Lt as normalizePayloadToSystemText, Mn as resolveAgentTimeoutMs, Mr as onAgentEvent, Nr as registerAgentRunContext, Nt as inferLegacyName, O as getCliSessionId, On as extractImageContentFromSource, Or as stripHeartbeatToken, Pn as enqueueSystemEvent, Pt as normalizeOptionalAgentId, Q as getActiveEmbeddedRunCount, Qt as deferGatewayRestartUntilIdle, R as buildHistoryContextFromEntries, Rt as normalizeRequiredName, Sr as waitForActiveTasks, T as createOutboundSendDeps, Tn as DEFAULT_INPUT_MAX_REDIRECTS, Tt as formatRestartSentinelMessage, Vt as hasLegacyDeliveryHints, W as getTotalPendingReplies, X as runAgentTurn, Zt as consumeGatewaySigusr1RestartAuthorization, _ as readJsonBodyWithLimit, _r as getActiveTaskCount, _t as resolveSessionDeliveryTarget, b as sleepWithAbort, br as resetAllLanes, dn as requestHeartbeatNow, en as isGatewaySigusr1RestartExternallyAllowed, f as getPluginToolMeta, g as handleSlackHttpRequest, gt as resolveOutboundTarget, i as listDescendantRunsForRequester, in as setPreRestartDeferralCheck, j as resolveAgentAvatar, jr as getAgentRunContext, k as setCliSessionId, kn as normalizeMimeList, kr as clearAgentRunContext, l as applyToolPolicyPipeline, lt as readLatestAssistantReply, m as loadSymiPlugins, n as countActiveRunsForSession, nt as classifyOutboundMessage, pt as resolveOutboundSessionRoute, qt as getHookType, r as initSubagentRegistry, rn as setGatewaySigusr1RestartPolicy, rt as resolveModelProfile, s as runSubagentAnnounceFlow, st as createSymiTools, t as countActiveDescendantRuns, tn as markGatewaySigusr1RestartHandled, u as buildDefaultToolPolicyPipelineSteps, ut as resolveAnnounceTargetFromKey, v as requestBodyErrorToText, wn as DEFAULT_INPUT_IMAGE_MIMES, wr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, x as agentCommand, xr as setCommandLaneConcurrency, xt as runWithModelFallback, y as computeBackoff, yr as getTotalQueueSize, yt as resetDirectoryCache, zt as migrateLegacyCronPayload } from "./subagent-registry-DXCGIrYv.js";
25
+ import { $t as emitGatewayRestart, A as runCliAgent, An as resolveInputFileLimits, Ar as emitAgentEvent, At as normalizeHttpWebhookUrl, Bt as buildDeliveryFromLegacyPayload, Cn as DEFAULT_INPUT_IMAGE_MAX_BYTES, Cr as CommandLane, Ct as consumeRestartSentinel, Dn as extractFileContentFromSource, Dt as summarizeRestartSentinel, E as createDefaultDeps, En as DEFAULT_INPUT_TIMEOUT_MS, Ft as normalizeOptionalSessionKey, Gt as buildSafeExternalPrompt, Ht as stripLegacyDeliveryFields, It as normalizeOptionalText, Jt as isExternalHookSession, Kt as detectSuspiciousPatterns, Lt as normalizePayloadToSystemText, Mn as resolveAgentTimeoutMs, Mr as onAgentEvent, Nr as registerAgentRunContext, Nt as inferLegacyName, O as getCliSessionId, On as extractImageContentFromSource, Or as stripHeartbeatToken, Pn as enqueueSystemEvent, Pt as normalizeOptionalAgentId, Q as getActiveEmbeddedRunCount, Qt as deferGatewayRestartUntilIdle, R as buildHistoryContextFromEntries, Rt as normalizeRequiredName, Sr as waitForActiveTasks, T as createOutboundSendDeps, Tn as DEFAULT_INPUT_MAX_REDIRECTS, Tt as formatRestartSentinelMessage, Vt as hasLegacyDeliveryHints, W as getTotalPendingReplies, X as runAgentTurn, Zt as consumeGatewaySigusr1RestartAuthorization, _ as readJsonBodyWithLimit, _r as getActiveTaskCount, _t as resolveSessionDeliveryTarget, b as sleepWithAbort, br as resetAllLanes, dn as requestHeartbeatNow, en as isGatewaySigusr1RestartExternallyAllowed, f as getPluginToolMeta, g as handleSlackHttpRequest, gt as resolveOutboundTarget, i as listDescendantRunsForRequester, in as setPreRestartDeferralCheck, j as resolveAgentAvatar, jr as getAgentRunContext, k as setCliSessionId, kn as normalizeMimeList, kr as clearAgentRunContext, l as applyToolPolicyPipeline, lt as readLatestAssistantReply, m as loadSymiPlugins, n as countActiveRunsForSession, nt as classifyOutboundMessage, pt as resolveOutboundSessionRoute, qt as getHookType, r as initSubagentRegistry, rn as setGatewaySigusr1RestartPolicy, rt as resolveModelProfile, s as runSubagentAnnounceFlow, st as createSymiTools, t as countActiveDescendantRuns, tn as markGatewaySigusr1RestartHandled, u as buildDefaultToolPolicyPipelineSteps, ut as resolveAnnounceTargetFromKey, v as requestBodyErrorToText, wn as DEFAULT_INPUT_IMAGE_MIMES, wr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, x as agentCommand, xr as setCommandLaneConcurrency, xt as runWithModelFallback, y as computeBackoff, yr as getTotalQueueSize, yt as resetDirectoryCache, zt as migrateLegacyCronPayload } from "./subagent-registry-Y_8a_o-m.js";
26
26
  import { D as resolveSessionResetPolicy, F as resolveMainSessionKey, H as cleanStaleLockFiles, I as resolveMainSessionKeyFromConfig, K as mergeDeliveryContext, M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, T as evaluateSessionFreshness, W as deliveryContextFromSession, d as updateSessionStore, n as parseSessionThreadInfo, o as loadSessionStore } from "./sessions-CBlCXpU2.js";
27
27
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-BEvOiQ65.js";
28
28
  import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-DTKQE9kt.js";
@@ -60,8 +60,8 @@ import "./tool-images-CVLISeRT.js";
60
60
  import { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-8sKPnzpp.js";
61
61
  import "./models-config-BjWk_WQa.js";
62
62
  import { a as resolveAgentIdentity } from "./reply-prefix-Pz-5t5RS.js";
63
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-D4lLSeA1.js";
64
- import { i as resolveMemorySearchConfig } from "./manager-B6EhIj3H.js";
63
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-z9Rsga03.js";
64
+ import { i as resolveMemorySearchConfig } from "./manager-DnkWmUWs.js";
65
65
  import "./gemini-auth-CdtQ-GuM.js";
66
66
  import "./retry-C4Q_VPOo.js";
67
67
  import "./sqlite-BP8tiuca.js";
@@ -107,7 +107,7 @@ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as han
107
107
  import "./prompt-style-BxVdnrLq.js";
108
108
  import "./pairing-labels-B6chnvfn.js";
109
109
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DcwVdzSK.js";
110
- import { i as onHeartbeatEvent, l as resolveCronStyleNow, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-CG080wT5.js";
110
+ import { i as onHeartbeatEvent, l as resolveCronStyleNow, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-D6uZvFVV.js";
111
111
  import { t as ensureSymiCliOnPath } from "./path-env-CaiY2aOj.js";
112
112
  import { n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./dangerous-tools-Cw6NBIXW.js";
113
113
  import { n as inheritOptionFromParent } from "./command-options-DbRrl8qF.js";
@@ -131,20 +131,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
131
131
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-vevi4OAS.js";
132
132
  import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-CfXVd09Y.js";
133
133
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-BWaTCKHh.js";
134
- import { i as pickGatewaySelfPresence } from "./status-DUGaRGN0.js";
135
- import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-BnGM6Yux.js";
134
+ import { i as pickGatewaySelfPresence } from "./status-Cnr5heo3.js";
135
+ import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-_G7Dy5sq.js";
136
136
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-DKcwWWGv.js";
137
137
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-BNjupSIM.js";
138
- import { t as runOnboardingWizard } from "./onboarding-BngFnwT6.js";
139
- import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-Bcwa782q.js";
140
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-Dusza10V.js";
138
+ import { t as runOnboardingWizard } from "./onboarding-BSvR9bkU.js";
139
+ import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-BAZKdAPo.js";
140
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CB9rSO0r.js";
141
141
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-YTXXLbHH.js";
142
- import "./agents.config-TArPtTFt.js";
142
+ import "./agents.config-DyAqyKIS.js";
143
143
  import "./dm-policy-shared-BSjL81w0.js";
144
144
  import "./node-service-B-qdOCNb.js";
145
145
  import "./status.update-DDeJEekl.js";
146
146
  import "./skills-install-DEq4Ey44.js";
147
- import "./update-runner-CiYhkA5I.js";
147
+ import "./update-runner-Des8yO8-.js";
148
148
  import { t as resolveAgentSessionDirs } from "./session-dirs-Dgz7kkUM.js";
149
149
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-mCPSj6kV.js";
150
150
  import { n as forceFreePortAndWait } from "./ports-DQg7kV5s.js";
@@ -2087,7 +2087,8 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
2087
2087
  sessionKey,
2088
2088
  seq,
2089
2089
  state: "error",
2090
- errorMessage: error ? formatForLog(error) : void 0
2090
+ errorMessage: error ? formatForLog(error) : void 0,
2091
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {}
2091
2092
  };
2092
2093
  broadcast("chat", payload);
2093
2094
  nodeSendToSession(sessionKey, "chat", payload);
@@ -12127,7 +12128,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
12127
12128
  });
12128
12129
  let glassUiBridgeCleanup = null;
12129
12130
  if (!minimalTestGateway) {
12130
- const { createGlassUiBridge } = await import("./glass-ui-ws-0agRdhZD.js");
12131
+ const { createGlassUiBridge } = await import("./glass-ui-ws-7O88M05N.js");
12131
12132
  glassUiBridgeCleanup = createGlassUiBridge({
12132
12133
  wss: glassUiWss,
12133
12134
  context: gatewayRequestContext,
@@ -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-Cqn-zk3M.js";
2
2
  import { B as theme, E as truncateUtf16Safe, H as getLogger, P as setVerbose, R as colorize, S as shortenHomePath, U as getResolvedLoggerSettings, V as getChildLogger, c as ensureDir, t as CONFIG_DIR, y as resolveUserPath, z as isRich } from "./utils-B-0b9bGM.js";
3
3
  import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Cz6cgZ7r.js";
4
- import { $ as loadSessionEntry, $n as readLatestAssistantReply, Ar as emitAgentEvent, At as buildDeliveryFromLegacyPayload, C as runCliAgent, Ct as inferLegacyName, Dr as waitForActiveTasks, Dt as normalizePayloadToSystemText, Er as setCommandLaneConcurrency, Et as normalizeOptionalText, Fr as resolveModelProfile, Ft as buildSafeExternalPrompt, G as createSymiTools, Gn as countActiveDescendantRuns, Gt as markGatewaySigusr1RestartHandled, Ht as deferGatewayRestartUntilIdle, It as detectSuspiciousPatterns, Jn as listDescendantRunsForRequester, Jt as setPreRestartDeferralCheck, Kn as countActiveRunsForSession, L as getTotalPendingReplies, Lr as runWithModelFallback, Lt as getHookType, Mr as onAgentEvent, Mt as stripLegacyDeliveryFields, Nr as registerAgentRunContext, Or as CommandLane, Ot as normalizeRequiredName, Pr as classifyOutboundMessage, Q as loadCombinedSessionStoreForGateway, Qn as runSubagentAnnounceFlow, Rt as isExternalHookSession, S as setCliSessionId, Sr as getActiveTaskCount, Tr as resetAllLanes, Tt as normalizeOptionalSessionKey, Ur as stripHeartbeatToken, Ut as emitGatewayRestart, Vt as consumeGatewaySigusr1RestartAuthorization, Wt as isGatewaySigusr1RestartExternallyAllowed, Z as listSessionsFromStore, Zn as resolveAgentTimeoutMs, _n as DEFAULT_INPUT_TIMEOUT_MS, _t as summarizeRestartSentinel, a as getPluginToolMeta, at as resolveOutboundSessionRoute, bn as normalizeMimeList, bt as normalizeHttpWebhookUrl, ct as resolveOutboundTarget, d as requestBodyErrorToText, dt as resetDirectoryCache, f as computeBackoff, gn as DEFAULT_INPUT_MAX_REDIRECTS, hn as DEFAULT_INPUT_IMAGE_MIMES, ht as formatRestartSentinelMessage, j as buildHistoryContextFromEntries, jr as getAgentRunContext, jt as hasLegacyDeliveryHints, kr as clearAgentRunContext, kt as migrateLegacyCronPayload, l as handleSlackHttpRequest, lt as resolveSessionDeliveryTarget, m as agentCommand, mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, n as applyToolPolicyPipeline, nr as getActiveEmbeddedRunCount, on as lookupContextTokens, p as sleepWithAbort, pt as consumeRestartSentinel, q as resolveAnnounceTargetFromKey, qn as initSubagentRegistry, qt as setGatewaySigusr1RestartPolicy, r as buildDefaultToolPolicyPipelineSteps, s as loadSymiPlugins, t as runAgentTurn, tn as requestHeartbeatNow, u as readJsonBodyWithLimit, v as createOutboundSendDeps, vn as extractFileContentFromSource, w as resolveAgentAvatar, wn as enqueueSystemEvent, wr as getTotalQueueSize, wt as normalizeOptionalAgentId, x as getCliSessionId, xn as resolveInputFileLimits, y as createDefaultDeps, yn as extractImageContentFromSource, zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./unified-runner-CdBxbcO2.js";
4
+ import { $ as loadSessionEntry, $n as readLatestAssistantReply, Ar as emitAgentEvent, At as buildDeliveryFromLegacyPayload, C as runCliAgent, Ct as inferLegacyName, Dr as waitForActiveTasks, Dt as normalizePayloadToSystemText, Er as setCommandLaneConcurrency, Et as normalizeOptionalText, Fr as resolveModelProfile, Ft as buildSafeExternalPrompt, G as createSymiTools, Gn as countActiveDescendantRuns, Gt as markGatewaySigusr1RestartHandled, Ht as deferGatewayRestartUntilIdle, It as detectSuspiciousPatterns, Jn as listDescendantRunsForRequester, Jt as setPreRestartDeferralCheck, Kn as countActiveRunsForSession, L as getTotalPendingReplies, Lr as runWithModelFallback, Lt as getHookType, Mr as onAgentEvent, Mt as stripLegacyDeliveryFields, Nr as registerAgentRunContext, Or as CommandLane, Ot as normalizeRequiredName, Pr as classifyOutboundMessage, Q as loadCombinedSessionStoreForGateway, Qn as runSubagentAnnounceFlow, Rt as isExternalHookSession, S as setCliSessionId, Sr as getActiveTaskCount, Tr as resetAllLanes, Tt as normalizeOptionalSessionKey, Ur as stripHeartbeatToken, Ut as emitGatewayRestart, Vt as consumeGatewaySigusr1RestartAuthorization, Wt as isGatewaySigusr1RestartExternallyAllowed, Z as listSessionsFromStore, Zn as resolveAgentTimeoutMs, _n as DEFAULT_INPUT_TIMEOUT_MS, _t as summarizeRestartSentinel, a as getPluginToolMeta, at as resolveOutboundSessionRoute, bn as normalizeMimeList, bt as normalizeHttpWebhookUrl, ct as resolveOutboundTarget, d as requestBodyErrorToText, dt as resetDirectoryCache, f as computeBackoff, gn as DEFAULT_INPUT_MAX_REDIRECTS, hn as DEFAULT_INPUT_IMAGE_MIMES, ht as formatRestartSentinelMessage, j as buildHistoryContextFromEntries, jr as getAgentRunContext, jt as hasLegacyDeliveryHints, kr as clearAgentRunContext, kt as migrateLegacyCronPayload, l as handleSlackHttpRequest, lt as resolveSessionDeliveryTarget, m as agentCommand, mn as DEFAULT_INPUT_IMAGE_MAX_BYTES, n as applyToolPolicyPipeline, nr as getActiveEmbeddedRunCount, on as lookupContextTokens, p as sleepWithAbort, pt as consumeRestartSentinel, q as resolveAnnounceTargetFromKey, qn as initSubagentRegistry, qt as setGatewaySigusr1RestartPolicy, r as buildDefaultToolPolicyPipelineSteps, s as loadSymiPlugins, t as runAgentTurn, tn as requestHeartbeatNow, u as readJsonBodyWithLimit, v as createOutboundSendDeps, vn as extractFileContentFromSource, w as resolveAgentAvatar, wn as enqueueSystemEvent, wr as getTotalQueueSize, wt as normalizeOptionalAgentId, x as getCliSessionId, xn as resolveInputFileLimits, y as createDefaultDeps, yn as extractImageContentFromSource, zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./unified-runner-DWZT5BCl.js";
5
5
  import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-ClO_zVv-.js";
6
6
  import { a as setConsoleSubsystemFilter, f as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
7
7
  import { Ht as DEFAULT_MODEL, N as getModelRefStatus, O as isPidAlive, P as isCliProvider, U as resolveHooksGmailModel, Ut as DEFAULT_PROVIDER, V as resolveConfiguredModelRef, Vt as DEFAULT_CONTEXT_TOKENS, q as resolveThinkingDefault, z as resolveAllowedModelRef } from "./auth-profiles-CtBXKml4.js";
@@ -62,8 +62,8 @@ import "./send-CrFVrFoV.js";
62
62
  import "./model-JOScPOPJ.js";
63
63
  import "./pi-model-discovery-CXXH7biP.js";
64
64
  import { a as resolveAgentIdentity } from "./reply-prefix-DnXliXio.js";
65
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BEZM7jn9.js";
66
- import { i as resolveMemorySearchConfig } from "./manager-DKUOUCmo.js";
65
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-D69x8sVz.js";
66
+ import { i as resolveMemorySearchConfig } from "./manager-DjHARmFk.js";
67
67
  import "./gemini-auth-rYBkv11i.js";
68
68
  import "./retry-DYICeae5.js";
69
69
  import "./sqlite-CRogFEk1.js";
@@ -110,7 +110,7 @@ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as han
110
110
  import "./prompt-style-CSNJI4MG.js";
111
111
  import "./pairing-labels-DJfFSZUS.js";
112
112
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-D4i_i5CV.js";
113
- import { c as resolveCronStyleNow, i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-C4Sg0QOd.js";
113
+ import { c as resolveCronStyleNow, i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-_mPYbQT2.js";
114
114
  import { t as ensureSymiCliOnPath } from "./path-env-D3HgzjnU.js";
115
115
  import "./runtime-guard-dBbuLE2m.js";
116
116
  import { t as forceFreePortAndWait } from "./ports-6ULVruzH.js";
@@ -136,20 +136,20 @@ import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } fr
136
136
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-DnATZix4.js";
137
137
  import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-BFAHZWI2.js";
138
138
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-PnjDY_wY.js";
139
- import { r as pickGatewaySelfPresence } from "./status-DsaLdb09.js";
140
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-CCKCR4oM.js";
139
+ import { r as pickGatewaySelfPresence } from "./status-D5zp5rJK.js";
140
+ import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-xGaC5l7K.js";
141
141
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-CtKVON4w.js";
142
142
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-BIE5FLmi.js";
143
- import { t as runOnboardingWizard } from "./onboarding-DNIz481s.js";
144
- import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-C8ff27p5.js";
145
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DnMyTqrU.js";
143
+ import { t as runOnboardingWizard } from "./onboarding-DTs0CtTa.js";
144
+ import { C as startGatewayConfigReloader, S as resolveCronRunLogPath, _ as MAX_PAYLOAD_BYTES, a as loadFavoritesSet, b as abortChatRunById, c as resolveAssistantIdentity, d as formatError, f as loadVoiceWakeConfig, g as MAX_BUFFERED_BYTES, h as HEALTH_REFRESH_INTERVAL_MS, i as safeParseJson, l as listSystemPresence, m as DEDUPE_TTL_MS, n as handleGatewayRequest, o as reconcileFavorites, p as DEDUPE_MAX, r as broadcastPresenceSnapshot, s as DEFAULT_ASSISTANT_IDENTITY, t as coreGatewayHandlers, u as upsertPresence, v as TICK_INTERVAL_MS, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-B4SR9px-.js";
145
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-BP1rb3hW.js";
146
146
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-BV1BJYYk.js";
147
- import "./agents.config-ClI9Q05l.js";
147
+ import "./agents.config-wJSTSxHw.js";
148
148
  import "./dm-policy-shared-Ca_yzxgO.js";
149
149
  import "./node-service-DiZDC-T7.js";
150
150
  import "./status.update-B7og6NgE.js";
151
151
  import "./skills-install-ClMBHyh2.js";
152
- import "./update-runner-DLCzD7sp.js";
152
+ import "./update-runner-D1V7cGWA.js";
153
153
  import { t as resolveAgentSessionDirs } from "./session-dirs-CBqamQff.js";
154
154
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-YQdb3RE6.js";
155
155
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -2091,7 +2091,8 @@ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSess
2091
2091
  sessionKey,
2092
2092
  seq,
2093
2093
  state: "error",
2094
- errorMessage: error ? formatForLog(error) : void 0
2094
+ errorMessage: error ? formatForLog(error) : void 0,
2095
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {}
2095
2096
  };
2096
2097
  broadcast("chat", payload);
2097
2098
  nodeSendToSession(sessionKey, "chat", payload);
@@ -12131,7 +12132,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
12131
12132
  });
12132
12133
  let glassUiBridgeCleanup = null;
12133
12134
  if (!minimalTestGateway) {
12134
- const { createGlassUiBridge } = await import("./glass-ui-ws-qPJDDUD9.js");
12135
+ const { createGlassUiBridge } = await import("./glass-ui-ws-b6N_1b40.js");
12135
12136
  glassUiBridgeCleanup = createGlassUiBridge({
12136
12137
  wss: glassUiWss,
12137
12138
  context: gatewayRequestContext,
@@ -1,4 +1,4 @@
1
- import { w as normalizeProviderId } from "./auth-profiles-Bs0Z0FzU.js";
1
+ import { w as normalizeProviderId } from "./auth-profiles-BoHFXe5T.js";
2
2
  import { n as formatErrorMessage } from "./errors-XIsvXeC-.js";
3
3
 
4
4
  //#region src/agents/live-auth-keys.ts
@@ -14,7 +14,7 @@ import "./client-CJIMV1WD.js";
14
14
  import "./call-e869fla2.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { rt as resolveModelProfile } from "./subagent-registry-DXCGIrYv.js";
17
+ import { rt as resolveModelProfile } from "./subagent-registry-Y_8a_o-m.js";
18
18
  import "./sessions-CBlCXpU2.js";
19
19
  import "./tokens-BEvOiQ65.js";
20
20
  import "./plugins-DTKQE9kt.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-BjWk_WQa.js";
54
54
  import "./reply-prefix-Pz-5t5RS.js";
55
- import "./memory-cli-D4lLSeA1.js";
56
- import "./manager-B6EhIj3H.js";
55
+ import "./memory-cli-z9Rsga03.js";
56
+ import "./manager-DnkWmUWs.js";
57
57
  import "./gemini-auth-CdtQ-GuM.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";
@@ -98,7 +98,7 @@ import "./onboard-helpers-C_ASAAp0.js";
98
98
  import "./prompt-style-BxVdnrLq.js";
99
99
  import "./pairing-labels-B6chnvfn.js";
100
100
  import "./pi-tools.policy-DcwVdzSK.js";
101
- import "./heartbeat-visibility-CG080wT5.js";
101
+ import "./heartbeat-visibility-D6uZvFVV.js";
102
102
  import "./dangerous-tools-Cw6NBIXW.js";
103
103
  import "./catalog-KcLvtTfa.js";
104
104
  import "./install-safe-path-C__62m3G.js";
@@ -110,18 +110,18 @@ import "./service-RxN7lQKN.js";
110
110
  import "./diagnostics-C6xPE2ln.js";
111
111
  import "./table-Bka4fasy.js";
112
112
  import "./audit-CfXVd09Y.js";
113
- import "./status-DUGaRGN0.js";
114
- import "./health-BnGM6Yux.js";
113
+ import "./status-Cnr5heo3.js";
114
+ import "./health-_G7Dy5sq.js";
115
115
  import "./control-ui-assets-DKcwWWGv.js";
116
116
  import "./update-check-BNjupSIM.js";
117
- import { n as handleGatewayRequest } from "./server-methods-Bcwa782q.js";
118
- import "./push-apns-Dusza10V.js";
119
- import "./agents.config-TArPtTFt.js";
117
+ import { n as handleGatewayRequest } from "./server-methods-BAZKdAPo.js";
118
+ import "./push-apns-CB9rSO0r.js";
119
+ import "./agents.config-DyAqyKIS.js";
120
120
  import "./dm-policy-shared-BSjL81w0.js";
121
121
  import "./node-service-B-qdOCNb.js";
122
122
  import "./status.update-DDeJEekl.js";
123
123
  import "./skills-install-DEq4Ey44.js";
124
- import "./update-runner-CiYhkA5I.js";
124
+ import "./update-runner-Des8yO8-.js";
125
125
 
126
126
  //#region src/gateway/glass-ui-ws.ts
127
127
  const SESSION_KEY = "agent:main:main";
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./tokens-Cz6cgZ7r.js";
4
- import { Fr as resolveModelProfile } from "./unified-runner-CdBxbcO2.js";
4
+ import { Fr as resolveModelProfile } from "./unified-runner-DWZT5BCl.js";
5
5
  import "./registry-ClO_zVv-.js";
6
6
  import "./subsystem-zqierDLj.js";
7
7
  import "./auth-profiles-CtBXKml4.js";
@@ -55,8 +55,8 @@ import "./send-CrFVrFoV.js";
55
55
  import "./model-JOScPOPJ.js";
56
56
  import "./pi-model-discovery-CXXH7biP.js";
57
57
  import "./reply-prefix-DnXliXio.js";
58
- import "./memory-cli-BEZM7jn9.js";
59
- import "./manager-DKUOUCmo.js";
58
+ import "./memory-cli-D69x8sVz.js";
59
+ import "./manager-DjHARmFk.js";
60
60
  import "./gemini-auth-rYBkv11i.js";
61
61
  import "./retry-DYICeae5.js";
62
62
  import "./sqlite-CRogFEk1.js";
@@ -102,7 +102,7 @@ import "./onboard-helpers-ncV67aOo.js";
102
102
  import "./prompt-style-CSNJI4MG.js";
103
103
  import "./pairing-labels-DJfFSZUS.js";
104
104
  import "./pi-tools.policy-D4i_i5CV.js";
105
- import "./heartbeat-visibility-C4Sg0QOd.js";
105
+ import "./heartbeat-visibility-_mPYbQT2.js";
106
106
  import "./runtime-guard-dBbuLE2m.js";
107
107
  import "./catalog-pt1jhhyb.js";
108
108
  import "./skills-status-DzvtNke3.js";
@@ -115,18 +115,18 @@ import "./service-CW2RUNzh.js";
115
115
  import "./diagnostics-D40jPn_9.js";
116
116
  import "./table-Cg6YZXv9.js";
117
117
  import "./audit-BFAHZWI2.js";
118
- import "./status-DsaLdb09.js";
119
- import "./health-CCKCR4oM.js";
118
+ import "./status-D5zp5rJK.js";
119
+ import "./health-xGaC5l7K.js";
120
120
  import "./control-ui-assets-CtKVON4w.js";
121
121
  import "./update-check-BIE5FLmi.js";
122
- import { n as handleGatewayRequest } from "./server-methods-C8ff27p5.js";
123
- import "./push-apns-DnMyTqrU.js";
124
- import "./agents.config-ClI9Q05l.js";
122
+ import { n as handleGatewayRequest } from "./server-methods-B4SR9px-.js";
123
+ import "./push-apns-BP1rb3hW.js";
124
+ import "./agents.config-wJSTSxHw.js";
125
125
  import "./dm-policy-shared-Ca_yzxgO.js";
126
126
  import "./node-service-DiZDC-T7.js";
127
127
  import "./status.update-B7og6NgE.js";
128
128
  import "./skills-install-ClMBHyh2.js";
129
- import "./update-runner-DLCzD7sp.js";
129
+ import "./update-runner-D1V7cGWA.js";
130
130
 
131
131
  //#region src/gateway/glass-ui-ws.ts
132
132
  const SESSION_KEY = "agent:main:main";
@@ -4,7 +4,7 @@ import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as no
4
4
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-xM36I1Em.js";
5
5
  import { C as parseDurationMs, i as loadConfig } from "./config-BaxT9cN4.js";
6
6
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-e869fla2.js";
7
- import { Cr as CommandLane, Dr as resolveHeartbeatPrompt$1, Er as isHeartbeatContentEffectivelyEmpty, In as peekSystemEventEntries, Or as stripHeartbeatToken, Tr as DEFAULT_HEARTBEAT_EVERY, dn as requestHeartbeatNow, et as resolveEmbeddedSessionLane, fn as setHeartbeatWakeHandler, ht as resolveHeartbeatSenderContext, mt as resolveHeartbeatDeliveryTarget, pn as resolveHeartbeatReasonKind, rr as resolveUserTimezone, vr as getQueueSize, wr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./subagent-registry-DXCGIrYv.js";
7
+ import { Cr as CommandLane, Dr as resolveHeartbeatPrompt$1, Er as isHeartbeatContentEffectivelyEmpty, In as peekSystemEventEntries, Or as stripHeartbeatToken, Tr as DEFAULT_HEARTBEAT_EVERY, dn as requestHeartbeatNow, et as resolveEmbeddedSessionLane, fn as setHeartbeatWakeHandler, ht as resolveHeartbeatSenderContext, mt as resolveHeartbeatDeliveryTarget, pn as resolveHeartbeatReasonKind, rr as resolveUserTimezone, vr as getQueueSize, wr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./subagent-registry-Y_8a_o-m.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-CBlCXpU2.js";
9
9
  import { r as SYMIPULSE_TOKEN } from "./tokens-BEvOiQ65.js";
10
10
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-DTKQE9kt.js";
@@ -14,7 +14,7 @@ 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-Pz-5t5RS.js";
16
16
  import { n as withProgress } from "./progress-HK2tT7Yf.js";
17
- import { a as resolveIndicatorType, c as appendCronStyleCurrentTimeLine, n as emitHeartbeatEvent, o as runReplyTurn, s as resolveHeartbeatReplyPayload, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-CG080wT5.js";
17
+ import { a as resolveIndicatorType, c as appendCronStyleCurrentTimeLine, n as emitHeartbeatEvent, o as runReplyTurn, s as resolveHeartbeatReplyPayload, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-D6uZvFVV.js";
18
18
  import { t as resolveChannelDefaultAccountId } from "./helpers-gWnZ9zWR.js";
19
19
  import path from "node:path";
20
20
  import fs from "node:fs/promises";
@@ -26,27 +26,49 @@ const activeHeartbeats = /* @__PURE__ */ new Map();
26
26
  * heartbeat run on `sessionKey`. If a previous controller exists for
27
27
  * the same key (shouldn't happen — heartbeats are serialized per
28
28
  * session — but be defensive), abort it before replacing.
29
+ *
30
+ * `runId` is optional — the heartbeat-runner registers the controller
31
+ * before runReplyTurn assigns the agent runId, then calls
32
+ * setHeartbeatRunId once the runId is known.
29
33
  */
30
- function registerHeartbeatRun(sessionKey, controller) {
34
+ function registerHeartbeatRun(sessionKey, controller, runId) {
31
35
  if (!sessionKey) return;
32
36
  const existing = activeHeartbeats.get(sessionKey);
33
- if (existing && existing !== controller) try {
34
- existing.abort();
37
+ if (existing && existing.controller !== controller) try {
38
+ existing.controller.abort();
35
39
  } catch {}
36
- activeHeartbeats.set(sessionKey, controller);
40
+ activeHeartbeats.set(sessionKey, {
41
+ controller,
42
+ runId
43
+ });
37
44
  }
38
45
  /**
39
- * Drop the controller for `sessionKey` from the registry. Called from
40
- * the heartbeat runner's finally block once the run has completed
41
- * (successfully, with an error, or via abort).
46
+ * Update the runId for the active heartbeat registration on `sessionKey`.
47
+ * No-op when no registration exists (e.g., if the run cleared between
48
+ * registerHeartbeatRun and onAgentRunStart). Wired from the heartbeat
49
+ * runner's onAgentRunStart callback so abortHeartbeatRunForSession can
50
+ * return the runId at preemption time.
51
+ */
52
+ function setHeartbeatRunId(sessionKey, runId) {
53
+ if (!sessionKey || !runId) return;
54
+ const existing = activeHeartbeats.get(sessionKey);
55
+ if (!existing) return;
56
+ existing.runId = runId;
57
+ }
58
+ /**
59
+ * Drop the registration for `sessionKey`. Called from the heartbeat
60
+ * runner's finally block once the run has completed (successfully,
61
+ * with an error, or via abort).
42
62
  */
43
63
  function clearHeartbeatRun(sessionKey) {
44
64
  if (!sessionKey) return;
45
65
  activeHeartbeats.delete(sessionKey);
46
66
  }
47
67
  /**
48
- * Abort the active heartbeat (if any) for `sessionKey`. Returns true
49
- * when an abort was issued, false when no heartbeat was in flight.
68
+ * Abort the active heartbeat (if any) for `sessionKey`. Returns
69
+ * `{ aborted: true, runId? }` when an abort was issued (runId may be
70
+ * undefined if the agent loop hadn't started yet) or `{ aborted: false }`
71
+ * when no heartbeat was in flight.
50
72
  *
51
73
  * Called from the chat.send handler before it enqueues the user turn,
52
74
  * so the user's message doesn't sit behind a heartbeat that may take
@@ -54,14 +76,17 @@ function clearHeartbeatRun(sessionKey) {
54
76
  * pulse interval — no state to recover.
55
77
  */
56
78
  function abortHeartbeatRunForSession(sessionKey) {
57
- if (!sessionKey) return false;
58
- const controller = activeHeartbeats.get(sessionKey);
59
- if (!controller) return false;
79
+ if (!sessionKey) return { aborted: false };
80
+ const registration = activeHeartbeats.get(sessionKey);
81
+ if (!registration) return { aborted: false };
60
82
  try {
61
- controller.abort();
83
+ registration.controller.abort();
62
84
  } catch {}
63
85
  activeHeartbeats.delete(sessionKey);
64
- return true;
86
+ return {
87
+ aborted: true,
88
+ runId: registration.runId
89
+ };
65
90
  }
66
91
 
67
92
  //#endregion
@@ -593,15 +618,20 @@ async function runHeartbeatOnce(opts) {
593
618
  });
594
619
  const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
595
620
  const suppressToolErrorWarnings = heartbeat?.suppressToolErrorWarnings === true;
621
+ const onAgentRunStart = (runId) => {
622
+ setHeartbeatRunId(sessionKey, runId);
623
+ };
596
624
  const replyResult = await runReplyTurn(ctx, heartbeatModelOverride ? {
597
625
  isHeartbeat: true,
598
626
  heartbeatModelOverride,
599
627
  suppressToolErrorWarnings,
600
- abortSignal: abortController.signal
628
+ abortSignal: abortController.signal,
629
+ onAgentRunStart
601
630
  } : {
602
631
  isHeartbeat: true,
603
632
  suppressToolErrorWarnings,
604
- abortSignal: abortController.signal
633
+ abortSignal: abortController.signal,
634
+ onAgentRunStart
605
635
  }, cfg);
606
636
  const replyPayload = resolveHeartbeatReplyPayload(replyResult);
607
637
  const reasoningPayloads = heartbeat?.includeReasoning === true ? resolveHeartbeatReasoningPayloads(replyResult).filter((payload) => payload !== replyPayload) : [];
@@ -1,6 +1,6 @@
1
1
  import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
2
2
  import { r as SYMIPULSE_TOKEN } from "./tokens-Cz6cgZ7r.js";
3
- import { Br as DEFAULT_HEARTBEAT_EVERY, Cr as getQueueSize, En as peekSystemEventEntries, Hr as resolveHeartbeatPrompt$1, Or as CommandLane, Ur as stripHeartbeatToken, Vr as isHeartbeatContentEffectivelyEmpty, ir as resolveEmbeddedSessionLane, nn as setHeartbeatWakeHandler, ot as resolveHeartbeatDeliveryTarget, rn as resolveHeartbeatReasonKind, sr as resolveUserTimezone, st as resolveHeartbeatSenderContext, tn as requestHeartbeatNow, zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./unified-runner-CdBxbcO2.js";
3
+ import { Br as DEFAULT_HEARTBEAT_EVERY, Cr as getQueueSize, En as peekSystemEventEntries, Hr as resolveHeartbeatPrompt$1, Or as CommandLane, Ur as stripHeartbeatToken, Vr as isHeartbeatContentEffectivelyEmpty, ir as resolveEmbeddedSessionLane, nn as setHeartbeatWakeHandler, ot as resolveHeartbeatDeliveryTarget, rn as resolveHeartbeatReasonKind, sr as resolveUserTimezone, st as resolveHeartbeatSenderContext, tn as requestHeartbeatNow, zr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS } from "./unified-runner-DWZT5BCl.js";
4
4
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-zqierDLj.js";
5
5
  import { l as resolveAgentIdFromSessionKey, p as toAgentStoreSessionKey, s as normalizeAgentId } from "./session-key-oOB32jSB.js";
6
6
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-BajBuriF.js";
@@ -15,7 +15,7 @@ import { t as deliverOutboundPayloads } from "./deliver-DdpsRFXi.js";
15
15
  import { o as resolveEffectiveMessagesConfig } from "./reply-prefix-DnXliXio.js";
16
16
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BT57Dzye.js";
17
17
  import { n as withProgress } from "./progress-Cx3xmP03.js";
18
- import { a as resolveIndicatorType, l as runReplyTurn, n as emitHeartbeatEvent, o as resolveHeartbeatReplyPayload, s as appendCronStyleCurrentTimeLine, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-C4Sg0QOd.js";
18
+ import { a as resolveIndicatorType, l as runReplyTurn, n as emitHeartbeatEvent, o as resolveHeartbeatReplyPayload, s as appendCronStyleCurrentTimeLine, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-_mPYbQT2.js";
19
19
  import { t as resolveChannelDefaultAccountId } from "./helpers-CYGbI-uz.js";
20
20
  import path from "node:path";
21
21
  import fs from "node:fs/promises";
@@ -27,27 +27,49 @@ const activeHeartbeats = /* @__PURE__ */ new Map();
27
27
  * heartbeat run on `sessionKey`. If a previous controller exists for
28
28
  * the same key (shouldn't happen — heartbeats are serialized per
29
29
  * session — but be defensive), abort it before replacing.
30
+ *
31
+ * `runId` is optional — the heartbeat-runner registers the controller
32
+ * before runReplyTurn assigns the agent runId, then calls
33
+ * setHeartbeatRunId once the runId is known.
30
34
  */
31
- function registerHeartbeatRun(sessionKey, controller) {
35
+ function registerHeartbeatRun(sessionKey, controller, runId) {
32
36
  if (!sessionKey) return;
33
37
  const existing = activeHeartbeats.get(sessionKey);
34
- if (existing && existing !== controller) try {
35
- existing.abort();
38
+ if (existing && existing.controller !== controller) try {
39
+ existing.controller.abort();
36
40
  } catch {}
37
- activeHeartbeats.set(sessionKey, controller);
41
+ activeHeartbeats.set(sessionKey, {
42
+ controller,
43
+ runId
44
+ });
38
45
  }
39
46
  /**
40
- * Drop the controller for `sessionKey` from the registry. Called from
41
- * the heartbeat runner's finally block once the run has completed
42
- * (successfully, with an error, or via abort).
47
+ * Update the runId for the active heartbeat registration on `sessionKey`.
48
+ * No-op when no registration exists (e.g., if the run cleared between
49
+ * registerHeartbeatRun and onAgentRunStart). Wired from the heartbeat
50
+ * runner's onAgentRunStart callback so abortHeartbeatRunForSession can
51
+ * return the runId at preemption time.
52
+ */
53
+ function setHeartbeatRunId(sessionKey, runId) {
54
+ if (!sessionKey || !runId) return;
55
+ const existing = activeHeartbeats.get(sessionKey);
56
+ if (!existing) return;
57
+ existing.runId = runId;
58
+ }
59
+ /**
60
+ * Drop the registration for `sessionKey`. Called from the heartbeat
61
+ * runner's finally block once the run has completed (successfully,
62
+ * with an error, or via abort).
43
63
  */
44
64
  function clearHeartbeatRun(sessionKey) {
45
65
  if (!sessionKey) return;
46
66
  activeHeartbeats.delete(sessionKey);
47
67
  }
48
68
  /**
49
- * Abort the active heartbeat (if any) for `sessionKey`. Returns true
50
- * when an abort was issued, false when no heartbeat was in flight.
69
+ * Abort the active heartbeat (if any) for `sessionKey`. Returns
70
+ * `{ aborted: true, runId? }` when an abort was issued (runId may be
71
+ * undefined if the agent loop hadn't started yet) or `{ aborted: false }`
72
+ * when no heartbeat was in flight.
51
73
  *
52
74
  * Called from the chat.send handler before it enqueues the user turn,
53
75
  * so the user's message doesn't sit behind a heartbeat that may take
@@ -55,14 +77,17 @@ function clearHeartbeatRun(sessionKey) {
55
77
  * pulse interval — no state to recover.
56
78
  */
57
79
  function abortHeartbeatRunForSession(sessionKey) {
58
- if (!sessionKey) return false;
59
- const controller = activeHeartbeats.get(sessionKey);
60
- if (!controller) return false;
80
+ if (!sessionKey) return { aborted: false };
81
+ const registration = activeHeartbeats.get(sessionKey);
82
+ if (!registration) return { aborted: false };
61
83
  try {
62
- controller.abort();
84
+ registration.controller.abort();
63
85
  } catch {}
64
86
  activeHeartbeats.delete(sessionKey);
65
- return true;
87
+ return {
88
+ aborted: true,
89
+ runId: registration.runId
90
+ };
66
91
  }
67
92
 
68
93
  //#endregion
@@ -594,15 +619,20 @@ async function runHeartbeatOnce(opts) {
594
619
  });
595
620
  const heartbeatModelOverride = heartbeat?.model?.trim() || void 0;
596
621
  const suppressToolErrorWarnings = heartbeat?.suppressToolErrorWarnings === true;
622
+ const onAgentRunStart = (runId) => {
623
+ setHeartbeatRunId(sessionKey, runId);
624
+ };
597
625
  const replyResult = await runReplyTurn(ctx, heartbeatModelOverride ? {
598
626
  isHeartbeat: true,
599
627
  heartbeatModelOverride,
600
628
  suppressToolErrorWarnings,
601
- abortSignal: abortController.signal
629
+ abortSignal: abortController.signal,
630
+ onAgentRunStart
602
631
  } : {
603
632
  isHeartbeat: true,
604
633
  suppressToolErrorWarnings,
605
- abortSignal: abortController.signal
634
+ abortSignal: abortController.signal,
635
+ onAgentRunStart
606
636
  }, cfg);
607
637
  const replyPayload = resolveHeartbeatReplyPayload(replyResult);
608
638
  const reasoningPayloads = heartbeat?.includeReasoning === true ? resolveHeartbeatReasoningPayloads(replyResult).filter((payload) => payload !== replyPayload) : [];
@@ -1,4 +1,4 @@
1
- import { J as withContextOverflowRecovery, Nn as prepareAgentRun, X as runAgentTurn, at as buildAgentTurnParams, it as composeTurnMiddleware, nr as resolveUserTimeFormat, ot as prepareReplyTurn, q as withContextUsageWarning, rr as resolveUserTimezone, tr as formatUserTime } from "./subagent-registry-DXCGIrYv.js";
1
+ import { J as withContextOverflowRecovery, Nn as prepareAgentRun, X as runAgentTurn, at as buildAgentTurnParams, it as composeTurnMiddleware, nr as resolveUserTimeFormat, ot as prepareReplyTurn, q as withContextUsageWarning, rr as resolveUserTimezone, tr as formatUserTime } from "./subagent-registry-Y_8a_o-m.js";
2
2
 
3
3
  //#region src/agents/current-time.ts
4
4
  function resolveCronStyleNow(cfg, nowMs) {
@@ -1,4 +1,4 @@
1
- import { B as withContextUsageWarning, Cn as prepareAgentRun, Ir as composeTurnMiddleware, U as buildAgentTurnParams, V as withContextOverflowRecovery, W as prepareReplyTurn, ar as formatUserTime, or as resolveUserTimeFormat, sr as resolveUserTimezone, t as runAgentTurn } from "./unified-runner-CdBxbcO2.js";
1
+ import { B as withContextUsageWarning, Cn as prepareAgentRun, Ir as composeTurnMiddleware, U as buildAgentTurnParams, V as withContextOverflowRecovery, W as prepareReplyTurn, ar as formatUserTime, or as resolveUserTimeFormat, sr as resolveUserTimezone, t as runAgentTurn } from "./unified-runner-DWZT5BCl.js";
2
2
 
3
3
  //#region src/auto-reply/run-reply-turn.ts
4
4
  /**
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import { B as theme, S as shortenHomePath, t as CONFIG_DIR, y as resolveUserPath } from "./utils-B-0b9bGM.js";
3
3
  import "./tokens-Cz6cgZ7r.js";
4
- import "./unified-runner-CdBxbcO2.js";
4
+ import "./unified-runner-DWZT5BCl.js";
5
5
  import "./registry-ClO_zVv-.js";
6
6
  import { f as defaultRuntime } from "./subsystem-zqierDLj.js";
7
7
  import "./auth-profiles-CtBXKml4.js";
@@ -57,8 +57,8 @@ import "./send-CrFVrFoV.js";
57
57
  import "./model-JOScPOPJ.js";
58
58
  import "./pi-model-discovery-CXXH7biP.js";
59
59
  import "./reply-prefix-DnXliXio.js";
60
- import "./memory-cli-BEZM7jn9.js";
61
- import "./manager-DKUOUCmo.js";
60
+ import "./memory-cli-D69x8sVz.js";
61
+ import "./manager-DjHARmFk.js";
62
62
  import "./gemini-auth-rYBkv11i.js";
63
63
  import "./retry-DYICeae5.js";
64
64
  import "./sqlite-CRogFEk1.js";
@@ -109,7 +109,7 @@ import { a as installPackageDir, i as withTempDir, n as installFromNpmSpecArchiv
109
109
  import { t as renderTable } from "./table-Cg6YZXv9.js";
110
110
  import { a as parseFrontmatter, t as loadWorkspaceHookEntries } from "./workspace-YQdb3RE6.js";
111
111
  import { t as buildWorkspaceHookStatus } from "./hooks-status-BCQtJpAk.js";
112
- import { t as buildPluginStatusReport } from "./status-DFBG2hcx.js";
112
+ import { t as buildPluginStatusReport } from "./status-DX8BiUs2.js";
113
113
  import fs from "node:fs";
114
114
  import path from "node:path";
115
115
  import fs$1 from "node:fs/promises";