@symerian/symi 2.8.12 → 2.8.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 (222) hide show
  1. package/dist/{agents-OAonMxYV.js → agents-CgCg4syn.js} +4 -4
  2. package/dist/{agents.config-BIhaDwT2.js → agents.config-BnPC7uct.js} +1 -1
  3. package/dist/{agents.config-DGu_K5xz.js → agents.config-DqWxpgkX.js} +1 -1
  4. package/dist/{audio-preflight-C6vpFnOG.js → audio-preflight-NdNUAZ0y.js} +4 -4
  5. package/dist/{auth-choice-DDzWns1k.js → auth-choice-BIlBt2d0.js} +1 -1
  6. package/dist/{auth-choice-BvPX7B4c.js → auth-choice-BKwypsnS.js} +1 -1
  7. package/dist/{banner-BFdiq-O5.js → banner-CX5CuLWQ.js} +1 -1
  8. package/dist/build-info.json +3 -3
  9. package/dist/bundled/boot-md/handler.js +2 -2
  10. package/dist/bundled/session-memory/handler.js +2 -2
  11. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  12. package/dist/{channel-options-tfnOGSNF.js → channel-options-7y9EuPLO.js} +1 -1
  13. package/dist/{channel-options-DTqUB0OP.js → channel-options-mUKQVJQl.js} +1 -1
  14. package/dist/{channel-web-CcUXobcu.js → channel-web-Dldh4zVI.js} +1 -1
  15. package/dist/{channels-cli-CmShA-wJ.js → channels-cli-Dz9vV1KL.js} +6 -6
  16. package/dist/{channels-cli-BcE5tHIr.js → channels-cli-Q6Q8LokG.js} +6 -6
  17. package/dist/{chrome-B14NNyfm.js → chrome-BUT--ob3.js} +7 -7
  18. package/dist/{cli-CKG2iAr3.js → cli-D4WYEtu4.js} +3 -3
  19. package/dist/{cli-BxoD2wzk.js → cli-DMsLCQbO.js} +3 -3
  20. package/dist/{command-registry-D1Le-Fmh.js → command-registry-cEqGIx4b.js} +10 -10
  21. package/dist/{completion-cli-DgiFjSGS.js → completion-cli-Bw0jbNaG.js} +1 -1
  22. package/dist/{completion-cli-D9pC-ttw.js → completion-cli-C5GCKfKT.js} +2 -2
  23. package/dist/{config-cli-C_uZQsTl.js → config-cli-DP0hP7WR.js} +1 -1
  24. package/dist/{config-cli-5mFA0UDP.js → config-cli-DgHooQ4_.js} +1 -1
  25. package/dist/{configure-DuRTFCuW.js → configure-BQUkaPdS.js} +3 -3
  26. package/dist/{configure-BJcy7wXm.js → configure-OUiXvgMg.js} +3 -3
  27. package/dist/{deliver-D0bWiRCg.js → deliver-B_Q_nWJV.js} +1 -1
  28. package/dist/{doctor-completion-DCRTHpiY.js → doctor-completion-BSMAyCq_.js} +1 -1
  29. package/dist/{doctor-completion-sQVhKKei.js → doctor-completion-DlKvncR9.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +7 -7
  32. package/dist/{gateway-cli-C3ujhxO0.js → gateway-cli-BlRNLVfU.js} +180 -11
  33. package/dist/{gateway-cli-C_MT4JFm.js → gateway-cli-NI7W2QxR.js} +180 -11
  34. package/dist/{glass-ui-ws-ColAiWUr.js → glass-ui-ws-BBkFBsKB.js} +9 -9
  35. package/dist/{glass-ui-ws-B7zRY2BL.js → glass-ui-ws-DxrESDzy.js} +9 -9
  36. package/dist/{health-vKJZ7iJR.js → health-D4vU-wV-.js} +1 -1
  37. package/dist/{health-C12hy3Ao.js → health-fOu0S75U.js} +1 -1
  38. package/dist/{hooks-cli-CdUQvj8s.js → hooks-cli-BdgnXYmw.js} +4 -4
  39. package/dist/{hooks-cli-fCPl5hur.js → hooks-cli-DdSggQYs.js} +4 -4
  40. package/dist/{image-MNvheU8U.js → image-tzIqIuKx.js} +1 -1
  41. package/dist/index.js +8 -8
  42. package/dist/llm-slug-generator.js +2 -2
  43. package/dist/{manager-DHRBy5oR.js → manager-DRrGn88w.js} +1 -1
  44. package/dist/{manager-BJvYQ7xP.js → manager-TOeH0D8K.js} +1 -1
  45. package/dist/{manager-Df_ZdrNG.js → manager-_RGWWymD.js} +1 -1
  46. package/dist/{manager-CLrJn9l-.js → manager-syNf_ZrI.js} +1 -1
  47. package/dist/{memory-cli-T-a5-lqZ.js → memory-cli-0jm-n36m.js} +3 -3
  48. package/dist/{memory-cli-BgJciaHC.js → memory-cli-BSOOwpt1.js} +3 -3
  49. package/dist/{models-cli-BI-DyItH.js → models-cli-CtkoEyh3.js} +4 -4
  50. package/dist/{models-cli-Bs6JAGq-.js → models-cli-DV-J1cm0.js} +5 -5
  51. package/dist/{models-BXXV_sZU.js → models-sGeWQOmg.js} +2 -2
  52. package/dist/{onboard-DKDCWveE.js → onboard-CWBYuaCm.js} +2 -2
  53. package/dist/{onboard-Czi_FRdi.js → onboard-FeTHeA1y.js} +2 -2
  54. package/dist/{onboard-channels-BUCYZF02.js → onboard-channels-D8bDJYPc.js} +1 -1
  55. package/dist/{onboard-channels-sTuhQBVu.js → onboard-channels-DpZkjldS.js} +1 -1
  56. package/dist/{onboarding-Bgx0qZhA.js → onboarding-BsPnnH5g.js} +3 -3
  57. package/dist/{onboarding-CokRRVEi.js → onboarding-c2qhwP0x.js} +3 -3
  58. package/dist/{onboarding.finalize-BCv5jB0d.js → onboarding.finalize-7St3fmk2.js} +8 -8
  59. package/dist/{onboarding.finalize-BzEKyraI.js → onboarding.finalize-id9EHg1P.js} +7 -7
  60. package/dist/{pi-embedded-DXY7TLac.js → pi-embedded-DCBB1_SC.js} +20 -23
  61. package/dist/{pi-embedded-helpers-TcYQOZAY.js → pi-embedded-helpers-DjSdA5BG.js} +4 -4
  62. package/dist/{plugin-registry-CyrsJDyE.js → plugin-registry-BJSfTT8c.js} +1 -1
  63. package/dist/{plugin-registry-B2cpTmJz.js → plugin-registry-Cy1kfzAy.js} +1 -1
  64. package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
  65. package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
  66. package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
  67. package/dist/plugin-sdk/{active-listener-CJuvR4C2.js → active-listener-DYjn3fML.js} +1 -1
  68. package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
  69. package/dist/plugin-sdk/{api-key-rotation-CBsLb_4V.js → api-key-rotation-DGJZ8SVa.js} +1 -1
  70. package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CiVw8470.js} +24 -24
  71. package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
  72. package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
  73. package/dist/plugin-sdk/{channel-web-t6enTxNE.js → channel-web-BSDjZSwm.js} +22 -22
  74. package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CEqfiEs0.js} +3 -3
  75. package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
  76. package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
  77. package/dist/plugin-sdk/{commands-registry-BuYpmEx-.js → commands-registry-BhW_oGNt.js} +4 -4
  78. package/dist/plugin-sdk/{config-BzupW6LN.js → config-Ckum15iC.js} +9 -9
  79. package/dist/plugin-sdk/{consolidate-CafShdsH.js → consolidate-COuTEt4Z.js} +2 -2
  80. package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-B8Y2t-RH.js} +10 -10
  81. package/dist/plugin-sdk/{diagnostic-_oc91gNi.js → diagnostic-BR07buTm.js} +1 -1
  82. package/dist/plugin-sdk/{image-DFyINnvE.js → image-CCmNHDV0.js} +4 -4
  83. package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
  84. package/dist/plugin-sdk/index.js +54 -54
  85. package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
  86. package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
  87. package/dist/plugin-sdk/{login-K1YB_7-t.js → login-g_rQAcuM.js} +7 -7
  88. package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-BOUmLSY3.js} +9 -9
  89. package/dist/plugin-sdk/{manager-LRE7zEk2.js → manager-B9GigLWj.js} +9 -9
  90. package/dist/plugin-sdk/{manifest-registry-hy3Bn-r9.js → manifest-registry-BRx4JDK0.js} +1 -1
  91. package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
  92. package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
  93. package/dist/plugin-sdk/{model-selection-CtVwtb6y.js → model-selection-Bbs4XGPG.js} +4 -4
  94. package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-BVhSNFy0.js} +7 -7
  95. package/dist/plugin-sdk/{outbound-attachment-D7ME_Kib.js → outbound-attachment-B56R1Wi4.js} +2 -2
  96. package/dist/plugin-sdk/{pi-auth-json-DiyK6bgV.js → pi-auth-json-CB2bV0Jd.js} +1 -1
  97. package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-dd3G9Hfi.js} +17 -17
  98. package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
  99. package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-BXeOYCz_.js} +8 -8
  100. package/dist/plugin-sdk/{qmd-manager-BlUikj9s.js → qmd-manager-wIr8qz2n.js} +4 -4
  101. package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
  102. package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-CQ4szNhV.js} +3 -3
  103. package/dist/plugin-sdk/{reply-JypoGhql.js → reply-DD8z_dUW.js} +79 -82
  104. package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
  105. package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
  106. package/dist/plugin-sdk/{resolve-route-CHQ7BTlU.js → resolve-route-CWfcnhza.js} +3 -3
  107. package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
  108. package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-BuxCHv_O.js} +9 -9
  109. package/dist/plugin-sdk/{send-CGhw9mO3.js → send-BtO-7fHs.js} +6 -6
  110. package/dist/plugin-sdk/{send-DLO_yV5_.js → send-CKXzQuXo.js} +10 -10
  111. package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-Djq5IPRa.js} +10 -10
  112. package/dist/plugin-sdk/{send-jsofmTfJ.js → send-XSuwT1PC.js} +7 -7
  113. package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-fNRDT21N.js} +6 -6
  114. package/dist/plugin-sdk/{session-BfyK_04G.js → session-ARbcLHE9.js} +4 -4
  115. package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-yzJVuTIW.js} +5 -5
  116. package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-BfsaS1F9.js} +7 -7
  117. package/dist/plugin-sdk/{sqlite-CmVrFEYD.js → sqlite-A3wGzttn.js} +1 -1
  118. package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
  119. package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
  120. package/dist/plugin-sdk/{synthesis-_WpVyZKx.js → synthesis-Dv5GwSky.js} +49 -49
  121. package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
  122. package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
  123. package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
  124. package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
  125. package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
  126. package/dist/plugin-sdk/{tool-loop-detection-DseOlBug.js → tool-loop-detection-gmtzSlNZ.js} +2 -2
  127. package/dist/plugin-sdk/web-CmKqZEsX.js +66 -0
  128. package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-B_1l8JMU.js} +21 -21
  129. package/dist/{plugins-cli-B-zoQyqU.js → plugins-cli-6UYkZBH0.js} +4 -4
  130. package/dist/{plugins-cli-DJwRd3EZ.js → plugins-cli-DPetEhfv.js} +4 -4
  131. package/dist/{program-H7h6Iqrq.js → program-CVy9LVoS.js} +9 -9
  132. package/dist/{program-context-BgecQAHU.js → program-context-CBI6gIf-.js} +18 -18
  133. package/dist/{prompt-select-styled-BglmD29e.js → prompt-select-styled-BlXl_Qf7.js} +6 -6
  134. package/dist/{prompt-select-styled-BDN2o35i.js → prompt-select-styled-Bv675D48.js} +6 -6
  135. package/dist/{provider-auth-helpers-MfKmTeLY.js → provider-auth-helpers-BB1lhCy5.js} +1 -1
  136. package/dist/{provider-auth-helpers-BGIgr7xM.js → provider-auth-helpers-RUQD5XAm.js} +1 -1
  137. package/dist/{push-apns-b6bH1EBC.js → push-apns-Cr-a1KBt.js} +1 -1
  138. package/dist/{push-apns-IcfSTzfr.js → push-apns-rPetW5cI.js} +1 -1
  139. package/dist/{pw-ai-40Jf9QIb.js → pw-ai-CQtaPvM8.js} +1 -1
  140. package/dist/{register.agent-ChwMSIC4.js → register.agent-DKDwNHQi.js} +8 -8
  141. package/dist/{register.agent-BgyETrrj.js → register.agent-j6OlKEU-.js} +7 -7
  142. package/dist/{register.configure-Bm4CvoLF.js → register.configure-BgIXIq9d.js} +8 -8
  143. package/dist/{register.configure-DH3L2tqW.js → register.configure-CopgSygi.js} +8 -8
  144. package/dist/{register.maintenance-CAyHUEzP.js → register.maintenance-BKsCM6NG.js} +10 -10
  145. package/dist/{register.maintenance-BbOBw1eI.js → register.maintenance-DjaGkVtr.js} +9 -9
  146. package/dist/{register.message-DheqsiR0.js → register.message-C3oHvmdl.js} +4 -4
  147. package/dist/{register.message-DQ3MOWFE.js → register.message-bxhUcSyj.js} +4 -4
  148. package/dist/{register.onboard-CxqR4S1C.js → register.onboard-D0DHcb20.js} +6 -6
  149. package/dist/{register.onboard-DOJkUhoY.js → register.onboard-DijWH8Vd.js} +6 -6
  150. package/dist/{register.setup-48YBHzMZ.js → register.setup-CrFzd94c.js} +6 -6
  151. package/dist/{register.setup-zdrIJA2P.js → register.setup-XlCTnTm_.js} +6 -6
  152. package/dist/{register.status-health-sessions-CimrhScH.js → register.status-health-sessions-AWCg_uLf.js} +5 -5
  153. package/dist/{register.status-health-sessions-CeT5pVXb.js → register.status-health-sessions-VwvDWUxZ.js} +5 -5
  154. package/dist/{register.subclis-B-zh940S.js → register.subclis-Bw8k5Z5C.js} +9 -9
  155. package/dist/{reply-CUR4xpYM.js → reply-D7_t00Jt.js} +5 -8
  156. package/dist/{run-main-CW_kj5Lj.js → run-main-7BEaNeDG.js} +17 -17
  157. package/dist/{runner-DFuAePEr.js → runner-Dpjulwnm.js} +1 -1
  158. package/dist/{server-methods-C1h0A5n0.js → server-methods-CTeJHJSZ.js} +7 -7
  159. package/dist/{server-methods-C4id-H_X.js → server-methods-FQ-PqiVC.js} +7 -7
  160. package/dist/{server-node-events-CD2yDaEj.js → server-node-events-BqvcHbuK.js} +4 -4
  161. package/dist/{server-node-events-BPZEGV_N.js → server-node-events-Z7epDloV.js} +4 -4
  162. package/dist/{status-_xBnHTlx.js → status-CKROJwI2.js} +1 -1
  163. package/dist/{status-DCeW2a07.js → status-DLFbpd9v.js} +3 -3
  164. package/dist/{status-Cb932Vl4.js → status-DMigoL7q.js} +3 -3
  165. package/dist/{status-DvHD1cnq.js → status-x7WCSVhG.js} +1 -1
  166. package/dist/{subagent-registry-BKuL9PdW.js → subagent-registry-BvP8AGdE.js} +5 -8
  167. package/dist/{synthesis-Ia9egx87.js → synthesis-By7KPUAm.js} +3 -3
  168. package/dist/{synthesis-C9RputIi.js → synthesis-DDId6n26.js} +3 -3
  169. package/dist/{synthesis-DOiTUsXQ.js → synthesis-DgQz6kPf.js} +7 -7
  170. package/dist/{synthesis-BUqDGjlc.js → synthesis-E4flT91F.js} +2 -2
  171. package/dist/{unified-runner-CVItnwwP.js → unified-runner-DaSb-TsZ.js} +6 -9
  172. package/dist/{update-cli-D6ax3jSX.js → update-cli-C5H6DkNM.js} +9 -9
  173. package/dist/{update-cli-ChEABesZ.js → update-cli-D0relAZw.js} +10 -10
  174. package/dist/{update-runner-CWG6GxKs.js → update-runner-B_yVOk8Z.js} +1 -1
  175. package/dist/{update-runner-B2EY9BWM.js → update-runner-D99V_zHX.js} +1 -1
  176. package/dist/{web-z-yQ8riS.js → web-BBz1kF_9.js} +2 -2
  177. package/dist/{web-D6PPeyG7.js → web-BQh2S6oq.js} +3 -3
  178. package/dist/{web-CpSE67Jp.js → web-Bdebat5l.js} +4 -4
  179. package/dist/{web-DMdb2p-h.js → web-CiYoJfrl.js} +7 -7
  180. package/extensions/bluebubbles/package.json +1 -1
  181. package/extensions/copilot-proxy/package.json +1 -1
  182. package/extensions/diagnostics-otel/package.json +1 -1
  183. package/extensions/discord/package.json +1 -1
  184. package/extensions/feishu/package.json +1 -1
  185. package/extensions/google-antigravity-auth/package.json +1 -1
  186. package/extensions/google-gemini-cli-auth/package.json +1 -1
  187. package/extensions/googlechat/package.json +1 -1
  188. package/extensions/imessage/package.json +1 -1
  189. package/extensions/irc/package.json +1 -1
  190. package/extensions/learning-loop/package.json +1 -1
  191. package/extensions/line/package.json +1 -1
  192. package/extensions/llm-task/package.json +1 -1
  193. package/extensions/matrix/CHANGELOG.md +6 -0
  194. package/extensions/matrix/package.json +1 -1
  195. package/extensions/mattermost/package.json +1 -1
  196. package/extensions/memory-core/package.json +1 -1
  197. package/extensions/memory-lancedb/package.json +1 -1
  198. package/extensions/minimax-portal-auth/package.json +1 -1
  199. package/extensions/msteams/CHANGELOG.md +6 -0
  200. package/extensions/msteams/package.json +1 -1
  201. package/extensions/nextcloud-talk/package.json +1 -1
  202. package/extensions/nostr/CHANGELOG.md +6 -0
  203. package/extensions/nostr/package.json +1 -1
  204. package/extensions/open-prose/package.json +1 -1
  205. package/extensions/outlook/package.json +1 -1
  206. package/extensions/pipeline/package.json +1 -1
  207. package/extensions/signal/package.json +1 -1
  208. package/extensions/slack/package.json +1 -1
  209. package/extensions/telegram/package.json +1 -1
  210. package/extensions/tlon/package.json +1 -1
  211. package/extensions/twitch/CHANGELOG.md +6 -0
  212. package/extensions/twitch/package.json +1 -1
  213. package/extensions/voice-call/CHANGELOG.md +6 -0
  214. package/extensions/voice-call/package.json +1 -1
  215. package/extensions/whatsapp/package.json +1 -1
  216. package/extensions/zalo/CHANGELOG.md +6 -0
  217. package/extensions/zalo/package.json +1 -1
  218. package/extensions/zalouser/CHANGELOG.md +6 -0
  219. package/extensions/zalouser/package.json +1 -1
  220. package/package.json +1 -1
  221. package/skills/long-task/scripts/detach-task.sh +57 -5
  222. package/dist/plugin-sdk/web-BTVj4kiQ.js +0 -66
@@ -7,13 +7,13 @@ import { a as resolveAgentIdentity } from "./reply-prefix-K_J_nfgx.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
8
  import "./env-CQ_DQOwT.js";
9
9
  import "./tokens-Cn6drXx2.js";
10
- import { O as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-DXY7TLac.js";
10
+ import { O as resolveAgentTimeoutMs, m as runEmbeddedPiAgent } from "./pi-embedded-DCBB1_SC.js";
11
11
  import "./plugins-71oIavrF.js";
12
12
  import "./accounts-DDEyGwby.js";
13
13
  import "./bindings-DYVakimr.js";
14
14
  import "./send-BaBv1rAU.js";
15
15
  import "./send-DLVrnezL.js";
16
- import "./deliver-D0bWiRCg.js";
16
+ import "./deliver-B_Q_nWJV.js";
17
17
  import "./diagnostic-Kbl70eCP.js";
18
18
  import "./diagnostic-session-state-C1vRJs5w.js";
19
19
  import "./accounts-8zZqL37v.js";
@@ -21,10 +21,10 @@ import "./send-B5kAnKqP.js";
21
21
  import "./image-ops-ByaQt43P.js";
22
22
  import "./pi-model-discovery-j5tVLINv.js";
23
23
  import "./message-channel-BQINJQIT.js";
24
- import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-TcYQOZAY.js";
24
+ import { G as saveSessionStore, H as loadSessionStore } from "./pi-embedded-helpers-DjSdA5BG.js";
25
25
  import "./config-BAVNLbja.js";
26
26
  import "./manifest-registry-DWdYdchb.js";
27
- import "./chrome-B14NNyfm.js";
27
+ import "./chrome-BUT--ob3.js";
28
28
  import "./skills-XEbTRNYL.js";
29
29
  import "./redact-1NGYV_8p.js";
30
30
  import "./errors-CPfngF0S.js";
@@ -34,8 +34,8 @@ import "./thinking-W85Rb32m.js";
34
34
  import "./accounts-DImOt9jX.js";
35
35
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-DkMamAQ-.js";
36
36
  import "./tool-images-ChC2CXaN.js";
37
- import "./image-MNvheU8U.js";
38
- import "./manager-DHRBy5oR.js";
37
+ import "./image-tzIqIuKx.js";
38
+ import "./manager-DRrGn88w.js";
39
39
  import "./gemini-auth-DVcG-42i.js";
40
40
  import "./retry-QGp0jvVi.js";
41
41
  import "./sqlite-Bo4pHfp8.js";
@@ -47,7 +47,7 @@ import "./ir-0kwEfxD4.js";
47
47
  import "./render-qcqmrHse.js";
48
48
  import "./commands-registry-ke7KirEH.js";
49
49
  import "./skill-commands-CSF7Poen.js";
50
- import "./runner-DFuAePEr.js";
50
+ import "./runner-Dpjulwnm.js";
51
51
  import "./fetch-WLZaC77l.js";
52
52
  import "./channel-activity-C-6tM-GK.js";
53
53
  import "./tables-BE0lT1IV.js";
@@ -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 { $ as getCliSessionId, $t as setPreRestartDeferralCheck, An as DEFAULT_INPUT_TIMEOUT_MS, At as normalizeOptionalSessionKey, Bt as buildSafeExternalPrompt, Cn as enqueueSystemEvent, Cr as onAgentEvent, Dn as DEFAULT_INPUT_IMAGE_MAX_BYTES, E as createDefaultDeps, F as buildHistoryContextFromEntries, Ft as buildDeliveryFromLegacyPayload, H as getTotalPendingReplies, Ht as getHookType, In as resolveAgentTimeoutMs, It as hasLegacyDeliveryHints, J as runAgentTurn, Jt as emitGatewayRestart, Kt as consumeGatewaySigusr1RestartAuthorization, Lt as stripLegacyDeliveryFields, Mn as extractImageContentFromSource, Mt as normalizePayloadToSystemText, Nn as normalizeMimeList, Nt as normalizeRequiredName, O as resolveAgentAvatar, On as DEFAULT_INPUT_IMAGE_MIMES, Ot as inferLegacyName, Pn as resolveInputFileLimits, Pt as migrateLegacyCronPayload, Q as resolveModelProfile, Qt as setGatewaySigusr1RestartPolicy, Sr as getAgentRunContext, St as summarizeRestartSentinel, T as createOutboundSendDeps, Tt as normalizeHttpWebhookUrl, Ut as isExternalHookSession, Vt as detectSuspiciousPatterns, X as getActiveEmbeddedRunCount, Xt as markGatewaySigusr1RestartHandled, Yt as isGatewaySigusr1RestartExternallyAllowed, _ as readJsonBodyWithLimit, at as resolveAnnounceTargetFromKey, b as sleepWithAbort, br as clearAgentRunContext, bt as formatRestartSentinelMessage, cr as getActiveTaskCount, ct as resolveOutboundSessionRoute, dn as requestHeartbeatNow, dr as resetAllLanes, dt as resolveOutboundTarget, et as setCliSessionId, f as getPluginToolMeta, fr as setCommandLaneConcurrency, ft as resolveSessionDeliveryTarget, g as handleSlackHttpRequest, gt as runWithModelFallback, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, i as listDescendantRunsForRequester, it as readLatestAssistantReply, jn as extractFileContentFromSource, jt as normalizeOptionalText, kn as DEFAULT_INPUT_MAX_REDIRECTS, kt as normalizeOptionalAgentId, l as applyToolPolicyPipeline, m as loadSymiPlugins, mr as CommandLane, mt as resetDirectoryCache, n as countActiveRunsForSession, pr as waitForActiveTasks, q as resolveCronStyleNow, qt as deferGatewayRestartUntilIdle, r as initSubagentRegistry, rt as createSymiTools, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as runCliAgent, u as buildDefaultToolPolicyPipelineSteps, ur as getTotalQueueSize, v as requestBodyErrorToText, vt as consumeRestartSentinel, wr as registerAgentRunContext, x as agentCommand, xr as emitAgentEvent, y as computeBackoff, yr as stripHeartbeatToken } from "./subagent-registry-BKuL9PdW.js";
25
+ import { $ as getCliSessionId, $t as setPreRestartDeferralCheck, An as DEFAULT_INPUT_TIMEOUT_MS, At as normalizeOptionalSessionKey, Bt as buildSafeExternalPrompt, Cn as enqueueSystemEvent, Cr as onAgentEvent, Dn as DEFAULT_INPUT_IMAGE_MAX_BYTES, E as createDefaultDeps, F as buildHistoryContextFromEntries, Ft as buildDeliveryFromLegacyPayload, H as getTotalPendingReplies, Ht as getHookType, In as resolveAgentTimeoutMs, It as hasLegacyDeliveryHints, J as runAgentTurn, Jt as emitGatewayRestart, Kt as consumeGatewaySigusr1RestartAuthorization, Lt as stripLegacyDeliveryFields, Mn as extractImageContentFromSource, Mt as normalizePayloadToSystemText, Nn as normalizeMimeList, Nt as normalizeRequiredName, O as resolveAgentAvatar, On as DEFAULT_INPUT_IMAGE_MIMES, Ot as inferLegacyName, Pn as resolveInputFileLimits, Pt as migrateLegacyCronPayload, Q as resolveModelProfile, Qt as setGatewaySigusr1RestartPolicy, Sr as getAgentRunContext, St as summarizeRestartSentinel, T as createOutboundSendDeps, Tt as normalizeHttpWebhookUrl, Ut as isExternalHookSession, Vt as detectSuspiciousPatterns, X as getActiveEmbeddedRunCount, Xt as markGatewaySigusr1RestartHandled, Yt as isGatewaySigusr1RestartExternallyAllowed, _ as readJsonBodyWithLimit, at as resolveAnnounceTargetFromKey, b as sleepWithAbort, br as clearAgentRunContext, bt as formatRestartSentinelMessage, cr as getActiveTaskCount, ct as resolveOutboundSessionRoute, dn as requestHeartbeatNow, dr as resetAllLanes, dt as resolveOutboundTarget, et as setCliSessionId, f as getPluginToolMeta, fr as setCommandLaneConcurrency, ft as resolveSessionDeliveryTarget, g as handleSlackHttpRequest, gt as runWithModelFallback, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, i as listDescendantRunsForRequester, it as readLatestAssistantReply, jn as extractFileContentFromSource, jt as normalizeOptionalText, kn as DEFAULT_INPUT_MAX_REDIRECTS, kt as normalizeOptionalAgentId, l as applyToolPolicyPipeline, m as loadSymiPlugins, mr as CommandLane, mt as resetDirectoryCache, n as countActiveRunsForSession, pr as waitForActiveTasks, q as resolveCronStyleNow, qt as deferGatewayRestartUntilIdle, r as initSubagentRegistry, rt as createSymiTools, s as runSubagentAnnounceFlow, t as countActiveDescendantRuns, tt as runCliAgent, u as buildDefaultToolPolicyPipelineSteps, ur as getTotalQueueSize, v as requestBodyErrorToText, vt as consumeRestartSentinel, wr as registerAgentRunContext, x as agentCommand, xr as emitAgentEvent, y as computeBackoff, yr as stripHeartbeatToken } from "./subagent-registry-BvP8AGdE.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-BPD85pWA.js";
27
27
  import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Csntmwwn.js";
28
28
  import { n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CwSlLxM8.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-J1x_DaPn.js";
62
62
  import { a as resolveAgentIdentity } from "./reply-prefix-BUN71nd5.js";
63
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BgJciaHC.js";
64
- import { a as resolveMemorySearchConfig } from "./manager-CLrJn9l-.js";
63
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-BSOOwpt1.js";
64
+ import { a as resolveMemorySearchConfig } from "./manager-syNf_ZrI.js";
65
65
  import "./gemini-auth-DEakvf-D.js";
66
66
  import "./retry-C4Q_VPOo.js";
67
67
  import "./sqlite-BP8tiuca.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-Oa5dsn5p.js";
133
133
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-BWaTCKHh.js";
134
- import { i as pickGatewaySelfPresence } from "./status-Cb932Vl4.js";
135
- import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-C12hy3Ao.js";
134
+ import { i as pickGatewaySelfPresence } from "./status-DMigoL7q.js";
135
+ import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-fOu0S75U.js";
136
136
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Clf7H-Sm.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-Bgx0qZhA.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-C1h0A5n0.js";
140
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-IcfSTzfr.js";
138
+ import { t as runOnboardingWizard } from "./onboarding-BsPnnH5g.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-CTeJHJSZ.js";
140
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-rPetW5cI.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-BIhaDwT2.js";
142
+ import "./agents.config-BnPC7uct.js";
143
143
  import "./dm-policy-shared-JiSNSaKz.js";
144
144
  import "./node-service-B-qdOCNb.js";
145
145
  import "./status.update-B5zI1_Id.js";
146
146
  import "./skills-install-BnEN_qla.js";
147
- import "./update-runner-CWG6GxKs.js";
147
+ import "./update-runner-B_yVOk8Z.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";
@@ -5405,6 +5405,174 @@ function applyGatewayLaneConcurrency(cfg) {
5405
5405
  setCommandLaneConcurrency(CommandLane.Subagent, resolveSubagentMaxConcurrent(cfg));
5406
5406
  }
5407
5407
 
5408
+ //#endregion
5409
+ //#region src/infra/long-task-janitor.ts
5410
+ const TASK_FILE_SUFFIXES = [
5411
+ ".pid",
5412
+ ".cmd",
5413
+ ".started",
5414
+ ".log",
5415
+ ".status"
5416
+ ];
5417
+ const TASK_FILE_PREFIX = "task-";
5418
+ const DEFAULT_TASK_FILE_AGE_MS = 10080 * 60 * 1e3;
5419
+ const DEFAULT_SWEEP_INTERVAL_MS = 1440 * 60 * 1e3;
5420
+ function defaultIsPidAlive(pid) {
5421
+ try {
5422
+ process.kill(pid, 0);
5423
+ return true;
5424
+ } catch (err) {
5425
+ if (err.code === "EPERM") return true;
5426
+ return false;
5427
+ }
5428
+ }
5429
+ /**
5430
+ * Sweep dead-task state files from a single workspace directory.
5431
+ *
5432
+ * A task-id is eligible for sweep when its recorded PID is no longer alive
5433
+ * AND the oldest of its state files is older than ageMs. Conservative on
5434
+ * purpose: leaving a stale set for one extra cycle is harmless; deleting
5435
+ * the state of a live task is not.
5436
+ *
5437
+ * Orphans without a `.pid` file (parent crashed before line 180) are also
5438
+ * caught — we key on any task-<id>.<suffix> match.
5439
+ */
5440
+ async function sweepLongTaskFiles(workdir, options = {}) {
5441
+ const result = {
5442
+ scanned: 0,
5443
+ swept: 0,
5444
+ errors: 0,
5445
+ sweptIds: []
5446
+ };
5447
+ const now = options.now ?? Date.now();
5448
+ const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
5449
+ const isPidAlive = options.isPidAlive ?? defaultIsPidAlive;
5450
+ let entries;
5451
+ try {
5452
+ entries = await fs.promises.readdir(workdir);
5453
+ } catch {
5454
+ return result;
5455
+ }
5456
+ const taskIds = /* @__PURE__ */ new Set();
5457
+ for (const entry of entries) {
5458
+ if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
5459
+ for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
5460
+ const id = entry.slice(5, -suffix.length);
5461
+ if (id.length > 0) taskIds.add(id);
5462
+ break;
5463
+ }
5464
+ }
5465
+ for (const taskId of taskIds) {
5466
+ result.scanned++;
5467
+ const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
5468
+ let pid = 0;
5469
+ let pidStatMs = null;
5470
+ try {
5471
+ const pidText = await fs.promises.readFile(pidPath, "utf8");
5472
+ pid = Number.parseInt(pidText.trim(), 10);
5473
+ pidStatMs = (await fs.promises.stat(pidPath)).mtimeMs;
5474
+ } catch (err) {
5475
+ if (err.code !== "ENOENT") {
5476
+ result.errors++;
5477
+ continue;
5478
+ }
5479
+ }
5480
+ if (pid > 0 && Number.isFinite(pid) && isPidAlive(pid)) continue;
5481
+ let oldestMs = pidStatMs ?? Number.POSITIVE_INFINITY;
5482
+ for (const suffix of TASK_FILE_SUFFIXES) {
5483
+ if (suffix === ".pid" && pidStatMs !== null) continue;
5484
+ try {
5485
+ const stat = await fs.promises.stat(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
5486
+ if (stat.mtimeMs < oldestMs) oldestMs = stat.mtimeMs;
5487
+ } catch {}
5488
+ }
5489
+ if (!Number.isFinite(oldestMs)) continue;
5490
+ if (now - oldestMs < ageMs) continue;
5491
+ let unlinkErrors = 0;
5492
+ for (const suffix of TASK_FILE_SUFFIXES) try {
5493
+ await fs.promises.unlink(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
5494
+ } catch (err) {
5495
+ if (err.code !== "ENOENT") unlinkErrors++;
5496
+ }
5497
+ if (unlinkErrors > 0) result.errors++;
5498
+ else {
5499
+ result.swept++;
5500
+ result.sweptIds.push(taskId);
5501
+ }
5502
+ }
5503
+ return result;
5504
+ }
5505
+ async function collectAgentWorkspaces(cfg) {
5506
+ const config = cfg ?? loadConfig();
5507
+ const seen = /* @__PURE__ */ new Set();
5508
+ for (const agentId of listAgentIds(config)) try {
5509
+ const ws = resolveAgentWorkspaceDir(config, agentId);
5510
+ if (ws) seen.add(ws);
5511
+ } catch {}
5512
+ return [...seen];
5513
+ }
5514
+ let janitorTimer = null;
5515
+ let janitorBootKick = null;
5516
+ function startLongTaskJanitor(options = {}) {
5517
+ if (janitorTimer) return () => stopLongTaskJanitor();
5518
+ const log = getChildLogger({ module: "long-task-janitor" });
5519
+ const intervalMs = options.intervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
5520
+ const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
5521
+ const getWorkspaces = options.getWorkspaces ?? (() => collectAgentWorkspaces());
5522
+ const nowFn = options.now ?? Date.now;
5523
+ const sweep = async () => {
5524
+ let workspaces = [];
5525
+ try {
5526
+ workspaces = await getWorkspaces();
5527
+ } catch (err) {
5528
+ log.warn({ err: String(err) }, "long-task-janitor: collect workspaces failed");
5529
+ return;
5530
+ }
5531
+ let scanned = 0;
5532
+ let swept = 0;
5533
+ let errors = 0;
5534
+ for (const ws of workspaces) try {
5535
+ const r = await sweepLongTaskFiles(ws, {
5536
+ now: nowFn(),
5537
+ ageMs
5538
+ });
5539
+ scanned += r.scanned;
5540
+ swept += r.swept;
5541
+ errors += r.errors;
5542
+ } catch (err) {
5543
+ errors++;
5544
+ log.warn({
5545
+ err: String(err),
5546
+ workdir: ws
5547
+ }, "long-task-janitor: sweep failed");
5548
+ }
5549
+ if (swept > 0 || errors > 0) log.info({
5550
+ scanned,
5551
+ swept,
5552
+ errors
5553
+ }, "long-task-janitor: sweep complete");
5554
+ };
5555
+ janitorBootKick = setTimeout(() => {
5556
+ sweep();
5557
+ }, 6e4);
5558
+ janitorBootKick.unref?.();
5559
+ janitorTimer = setInterval(() => {
5560
+ sweep();
5561
+ }, intervalMs);
5562
+ janitorTimer.unref?.();
5563
+ return () => stopLongTaskJanitor();
5564
+ }
5565
+ function stopLongTaskJanitor() {
5566
+ if (janitorTimer) {
5567
+ clearInterval(janitorTimer);
5568
+ janitorTimer = null;
5569
+ }
5570
+ if (janitorBootKick) {
5571
+ clearTimeout(janitorBootKick);
5572
+ janitorBootKick = null;
5573
+ }
5574
+ }
5575
+
5408
5576
  //#endregion
5409
5577
  //#region src/gateway/server/health-state.ts
5410
5578
  let presenceVersion = 1;
@@ -5493,6 +5661,7 @@ function startGatewayMaintenanceTimers(params) {
5493
5661
  params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`refresh failed: ${formatError(err)}`));
5494
5662
  }, HEALTH_REFRESH_INTERVAL_MS);
5495
5663
  params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`initial refresh failed: ${formatError(err)}`));
5664
+ startLongTaskJanitor();
5496
5665
  return {
5497
5666
  tickInterval,
5498
5667
  healthInterval,
@@ -11955,7 +12124,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11955
12124
  });
11956
12125
  let glassUiBridgeCleanup = null;
11957
12126
  if (!minimalTestGateway) {
11958
- const { createGlassUiBridge } = await import("./glass-ui-ws-B7zRY2BL.js");
12127
+ const { createGlassUiBridge } = await import("./glass-ui-ws-DxrESDzy.js");
11959
12128
  glassUiBridgeCleanup = createGlassUiBridge({
11960
12129
  wss: glassUiWss,
11961
12130
  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 { d as supportsXHighThinking, l as normalizeVerboseLevel, s as normalizeThinkLevel } from "./thinking-EAliFiVK.js";
4
- import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-CUR4xpYM.js";
4
+ import { $ as buildDeliveryFromLegacyPayload, A as emitGatewayRestart, An as initSubagentRegistry, Ar as extractImageContentFromSource, B as summarizeRestartSentinel, Bn as registerAgentRunContext, Ct as requestBodyErrorToText, Dr as DEFAULT_INPUT_MAX_REDIRECTS, E as resetDirectoryCache, Er as DEFAULT_INPUT_IMAGE_MIMES, Et as agentCommand, F as setPreRestartDeferralCheck, Fn as readLatestAssistantReply, Gt as getCliSessionId, I as consumeRestartSentinel, In as clearAgentRunContext, J as normalizeOptionalSessionKey, K as inferLegacyName, Kt as setCliSessionId, Ln as emitAgentEvent, Lt as createDefaultDeps, M as markGatewaySigusr1RestartHandled, Mr as resolveInputFileLimits, Mt as resolveOutboundTarget, Nt as resolveSessionDeliveryTarget, O as consumeGatewaySigusr1RestartAuthorization, On as countActiveDescendantRuns, Or as DEFAULT_INPUT_TIMEOUT_MS, P as setGatewaySigusr1RestartPolicy, Pn as runSubagentAnnounceFlow, Pr as resolveAgentTimeoutMs, Pt as createOutboundSendDeps, Q as migrateLegacyCronPayload, R as formatRestartSentinelMessage, Rn as getAgentRunContext, St as readJsonBodyWithLimit, Tr as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as sleepWithAbort, U as normalizeHttpWebhookUrl, Ut as resolveModelProfile, Vt as getActiveEmbeddedRunCount, Wt as runWithModelFallback, X as normalizePayloadToSystemText, Xt as resolveAgentAvatar, Y as normalizeOptionalText, Z as normalizeRequiredName, _ as loadCombinedSessionStoreForGateway, ar as setCommandLaneConcurrency, cn as buildHistoryContextFromEntries, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, d as createSymiTools, en as buildSafeExternalPrompt, et as hasLegacyDeliveryHints, f as resolveAnnounceTargetFromKey, fr as stripHeartbeatToken, ft as loadSymiPlugins, g as listSessionsFromStore, hn as getTotalPendingReplies, i as resolveCronStyleNow, ir as resetAllLanes, j as isGatewaySigusr1RestartExternallyAllowed, jn as listDescendantRunsForRequester, jr as normalizeMimeList, k as deferGatewayRestartUntilIdle, kn as countActiveRunsForSession, kr as extractFileContentFromSource, l as applyToolPolicyPipeline, nn as getHookType, or as waitForActiveTasks, pr as lookupContextTokens, q as normalizeOptionalAgentId, qt as runCliAgent, rn as isExternalHookSession, rr as getTotalQueueSize, sr as CommandLane, st as requestHeartbeatNow, tn as detectSuspiciousPatterns, tr as getActiveTaskCount, tt as stripLegacyDeliveryFields, u as buildDefaultToolPolicyPipelineSteps, ut as getPluginToolMeta, v as loadSessionEntry, w as resolveOutboundSessionRoute, wt as computeBackoff, xr as enqueueSystemEvent, xt as handleSlackHttpRequest, zn as onAgentEvent, zt as runAgentTurn } from "./reply-D7_t00Jt.js";
5
5
  import { S as parseAgentSessionKey, c as normalizeMainKey, f as toAgentRequestSessionKey, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, 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 resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, S as clearInternalHooks, T as triggerInternalHook, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL, w as registerInternalHook } from "./registry-Cja8eT7G.js";
@@ -67,8 +67,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
67
67
  import "./send-DpMnSIi5.js";
68
68
  import "./model-ECsJuJew.js";
69
69
  import { a as resolveAgentIdentity } from "./reply-prefix-CE2YmmsD.js";
70
- import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-T-a5-lqZ.js";
71
- import { a as resolveMemorySearchConfig } from "./manager-BJvYQ7xP.js";
70
+ import { i as resolveMemoryBackendConfig, r as getMemorySearchManager } from "./memory-cli-0jm-n36m.js";
71
+ import { a as resolveMemorySearchConfig } from "./manager-TOeH0D8K.js";
72
72
  import "./retry-BoS4e4X_.js";
73
73
  import "./sqlite-D55gRQbH.js";
74
74
  import { a as ToolInputError } from "./target-errors-C9e6dMU_.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-pJIdlnB5.js";
137
137
  import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Bi9Je9FZ.js";
138
138
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-CDkyebpA.js";
139
- import { r as pickGatewaySelfPresence } from "./status-DCeW2a07.js";
140
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-vKJZ7iJR.js";
139
+ import { r as pickGatewaySelfPresence } from "./status-DLFbpd9v.js";
140
+ import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-D4vU-wV-.js";
141
141
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BrP31IQR.js";
142
142
  import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-Bbvpax6u.js";
143
- import { t as runOnboardingWizard } from "./onboarding-CokRRVEi.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-C4id-H_X.js";
145
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-b6bH1EBC.js";
143
+ import { t as runOnboardingWizard } from "./onboarding-c2qhwP0x.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-FQ-PqiVC.js";
145
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-Cr-a1KBt.js";
146
146
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CjltkjCx.js";
147
- import "./agents.config-DGu_K5xz.js";
147
+ import "./agents.config-DqWxpgkX.js";
148
148
  import "./dm-policy-shared-KlzpDeT_.js";
149
149
  import "./node-service-DxPZ_ZFk.js";
150
150
  import "./status.update-8HXdAdwz.js";
151
151
  import "./skills-install-B8r7cGKR.js";
152
- import "./update-runner-B2EY9BWM.js";
152
+ import "./update-runner-D99V_zHX.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-D2fHsr-Z.js";
155
155
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -5409,6 +5409,174 @@ function applyGatewayLaneConcurrency(cfg) {
5409
5409
  setCommandLaneConcurrency(CommandLane.Subagent, resolveSubagentMaxConcurrent(cfg));
5410
5410
  }
5411
5411
 
5412
+ //#endregion
5413
+ //#region src/infra/long-task-janitor.ts
5414
+ const TASK_FILE_SUFFIXES = [
5415
+ ".pid",
5416
+ ".cmd",
5417
+ ".started",
5418
+ ".log",
5419
+ ".status"
5420
+ ];
5421
+ const TASK_FILE_PREFIX = "task-";
5422
+ const DEFAULT_TASK_FILE_AGE_MS = 10080 * 60 * 1e3;
5423
+ const DEFAULT_SWEEP_INTERVAL_MS = 1440 * 60 * 1e3;
5424
+ function defaultIsPidAlive(pid) {
5425
+ try {
5426
+ process.kill(pid, 0);
5427
+ return true;
5428
+ } catch (err) {
5429
+ if (err.code === "EPERM") return true;
5430
+ return false;
5431
+ }
5432
+ }
5433
+ /**
5434
+ * Sweep dead-task state files from a single workspace directory.
5435
+ *
5436
+ * A task-id is eligible for sweep when its recorded PID is no longer alive
5437
+ * AND the oldest of its state files is older than ageMs. Conservative on
5438
+ * purpose: leaving a stale set for one extra cycle is harmless; deleting
5439
+ * the state of a live task is not.
5440
+ *
5441
+ * Orphans without a `.pid` file (parent crashed before line 180) are also
5442
+ * caught — we key on any task-<id>.<suffix> match.
5443
+ */
5444
+ async function sweepLongTaskFiles(workdir, options = {}) {
5445
+ const result = {
5446
+ scanned: 0,
5447
+ swept: 0,
5448
+ errors: 0,
5449
+ sweptIds: []
5450
+ };
5451
+ const now = options.now ?? Date.now();
5452
+ const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
5453
+ const isPidAlive = options.isPidAlive ?? defaultIsPidAlive;
5454
+ let entries;
5455
+ try {
5456
+ entries = await fs.promises.readdir(workdir);
5457
+ } catch {
5458
+ return result;
5459
+ }
5460
+ const taskIds = /* @__PURE__ */ new Set();
5461
+ for (const entry of entries) {
5462
+ if (!entry.startsWith(TASK_FILE_PREFIX)) continue;
5463
+ for (const suffix of TASK_FILE_SUFFIXES) if (entry.endsWith(suffix)) {
5464
+ const id = entry.slice(5, -suffix.length);
5465
+ if (id.length > 0) taskIds.add(id);
5466
+ break;
5467
+ }
5468
+ }
5469
+ for (const taskId of taskIds) {
5470
+ result.scanned++;
5471
+ const pidPath = path.join(workdir, `${TASK_FILE_PREFIX}${taskId}.pid`);
5472
+ let pid = 0;
5473
+ let pidStatMs = null;
5474
+ try {
5475
+ const pidText = await fs.promises.readFile(pidPath, "utf8");
5476
+ pid = Number.parseInt(pidText.trim(), 10);
5477
+ pidStatMs = (await fs.promises.stat(pidPath)).mtimeMs;
5478
+ } catch (err) {
5479
+ if (err.code !== "ENOENT") {
5480
+ result.errors++;
5481
+ continue;
5482
+ }
5483
+ }
5484
+ if (pid > 0 && Number.isFinite(pid) && isPidAlive(pid)) continue;
5485
+ let oldestMs = pidStatMs ?? Number.POSITIVE_INFINITY;
5486
+ for (const suffix of TASK_FILE_SUFFIXES) {
5487
+ if (suffix === ".pid" && pidStatMs !== null) continue;
5488
+ try {
5489
+ const stat = await fs.promises.stat(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
5490
+ if (stat.mtimeMs < oldestMs) oldestMs = stat.mtimeMs;
5491
+ } catch {}
5492
+ }
5493
+ if (!Number.isFinite(oldestMs)) continue;
5494
+ if (now - oldestMs < ageMs) continue;
5495
+ let unlinkErrors = 0;
5496
+ for (const suffix of TASK_FILE_SUFFIXES) try {
5497
+ await fs.promises.unlink(path.join(workdir, `${TASK_FILE_PREFIX}${taskId}${suffix}`));
5498
+ } catch (err) {
5499
+ if (err.code !== "ENOENT") unlinkErrors++;
5500
+ }
5501
+ if (unlinkErrors > 0) result.errors++;
5502
+ else {
5503
+ result.swept++;
5504
+ result.sweptIds.push(taskId);
5505
+ }
5506
+ }
5507
+ return result;
5508
+ }
5509
+ async function collectAgentWorkspaces(cfg) {
5510
+ const config = cfg ?? loadConfig();
5511
+ const seen = /* @__PURE__ */ new Set();
5512
+ for (const agentId of listAgentIds(config)) try {
5513
+ const ws = resolveAgentWorkspaceDir(config, agentId);
5514
+ if (ws) seen.add(ws);
5515
+ } catch {}
5516
+ return [...seen];
5517
+ }
5518
+ let janitorTimer = null;
5519
+ let janitorBootKick = null;
5520
+ function startLongTaskJanitor(options = {}) {
5521
+ if (janitorTimer) return () => stopLongTaskJanitor();
5522
+ const log = getChildLogger({ module: "long-task-janitor" });
5523
+ const intervalMs = options.intervalMs ?? DEFAULT_SWEEP_INTERVAL_MS;
5524
+ const ageMs = options.ageMs ?? DEFAULT_TASK_FILE_AGE_MS;
5525
+ const getWorkspaces = options.getWorkspaces ?? (() => collectAgentWorkspaces());
5526
+ const nowFn = options.now ?? Date.now;
5527
+ const sweep = async () => {
5528
+ let workspaces = [];
5529
+ try {
5530
+ workspaces = await getWorkspaces();
5531
+ } catch (err) {
5532
+ log.warn({ err: String(err) }, "long-task-janitor: collect workspaces failed");
5533
+ return;
5534
+ }
5535
+ let scanned = 0;
5536
+ let swept = 0;
5537
+ let errors = 0;
5538
+ for (const ws of workspaces) try {
5539
+ const r = await sweepLongTaskFiles(ws, {
5540
+ now: nowFn(),
5541
+ ageMs
5542
+ });
5543
+ scanned += r.scanned;
5544
+ swept += r.swept;
5545
+ errors += r.errors;
5546
+ } catch (err) {
5547
+ errors++;
5548
+ log.warn({
5549
+ err: String(err),
5550
+ workdir: ws
5551
+ }, "long-task-janitor: sweep failed");
5552
+ }
5553
+ if (swept > 0 || errors > 0) log.info({
5554
+ scanned,
5555
+ swept,
5556
+ errors
5557
+ }, "long-task-janitor: sweep complete");
5558
+ };
5559
+ janitorBootKick = setTimeout(() => {
5560
+ sweep();
5561
+ }, 6e4);
5562
+ janitorBootKick.unref?.();
5563
+ janitorTimer = setInterval(() => {
5564
+ sweep();
5565
+ }, intervalMs);
5566
+ janitorTimer.unref?.();
5567
+ return () => stopLongTaskJanitor();
5568
+ }
5569
+ function stopLongTaskJanitor() {
5570
+ if (janitorTimer) {
5571
+ clearInterval(janitorTimer);
5572
+ janitorTimer = null;
5573
+ }
5574
+ if (janitorBootKick) {
5575
+ clearTimeout(janitorBootKick);
5576
+ janitorBootKick = null;
5577
+ }
5578
+ }
5579
+
5412
5580
  //#endregion
5413
5581
  //#region src/gateway/server/health-state.ts
5414
5582
  let presenceVersion = 1;
@@ -5497,6 +5665,7 @@ function startGatewayMaintenanceTimers(params) {
5497
5665
  params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`refresh failed: ${formatError(err)}`));
5498
5666
  }, HEALTH_REFRESH_INTERVAL_MS);
5499
5667
  params.refreshGatewayHealthSnapshot({ probe: true }).catch((err) => params.logHealth.error(`initial refresh failed: ${formatError(err)}`));
5668
+ startLongTaskJanitor();
5500
5669
  return {
5501
5670
  tickInterval,
5502
5671
  healthInterval,
@@ -11959,7 +12128,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11959
12128
  });
11960
12129
  let glassUiBridgeCleanup = null;
11961
12130
  if (!minimalTestGateway) {
11962
- const { createGlassUiBridge } = await import("./glass-ui-ws-ColAiWUr.js");
12131
+ const { createGlassUiBridge } = await import("./glass-ui-ws-BBkFBsKB.js");
11963
12132
  glassUiBridgeCleanup = createGlassUiBridge({
11964
12133
  wss: glassUiWss,
11965
12134
  context: gatewayRequestContext,
@@ -1,7 +1,7 @@
1
1
  import "./paths-Cqn-zk3M.js";
2
2
  import "./utils-B-0b9bGM.js";
3
3
  import "./thinking-EAliFiVK.js";
4
- import { Ut as resolveModelProfile } from "./reply-CUR4xpYM.js";
4
+ import { Ut as resolveModelProfile } from "./reply-D7_t00Jt.js";
5
5
  import "./registry-Cja8eT7G.js";
6
6
  import "./subsystem-D9vIQve0.js";
7
7
  import "./exec-CWkblSrI.js";
@@ -60,8 +60,8 @@ import "./diagnostic-session-state-CUslJyKP.js";
60
60
  import "./send-DpMnSIi5.js";
61
61
  import "./model-ECsJuJew.js";
62
62
  import "./reply-prefix-CE2YmmsD.js";
63
- import "./memory-cli-T-a5-lqZ.js";
64
- import "./manager-BJvYQ7xP.js";
63
+ import "./memory-cli-0jm-n36m.js";
64
+ import "./manager-TOeH0D8K.js";
65
65
  import "./retry-BoS4e4X_.js";
66
66
  import "./sqlite-D55gRQbH.js";
67
67
  import "./target-errors-C9e6dMU_.js";
@@ -114,18 +114,18 @@ import "./service-DzLem5vL.js";
114
114
  import "./diagnostics-1uBuB9IE.js";
115
115
  import "./table-BWuvjnmY.js";
116
116
  import "./audit-Bi9Je9FZ.js";
117
- import "./status-DCeW2a07.js";
118
- import "./health-vKJZ7iJR.js";
117
+ import "./status-DLFbpd9v.js";
118
+ import "./health-D4vU-wV-.js";
119
119
  import "./control-ui-assets-BrP31IQR.js";
120
120
  import "./update-check-Bbvpax6u.js";
121
- import { n as handleGatewayRequest } from "./server-methods-C4id-H_X.js";
122
- import "./push-apns-b6bH1EBC.js";
123
- import "./agents.config-DGu_K5xz.js";
121
+ import { n as handleGatewayRequest } from "./server-methods-FQ-PqiVC.js";
122
+ import "./push-apns-Cr-a1KBt.js";
123
+ import "./agents.config-DqWxpgkX.js";
124
124
  import "./dm-policy-shared-KlzpDeT_.js";
125
125
  import "./node-service-DxPZ_ZFk.js";
126
126
  import "./status.update-8HXdAdwz.js";
127
127
  import "./skills-install-B8r7cGKR.js";
128
- import "./update-runner-B2EY9BWM.js";
128
+ import "./update-runner-D99V_zHX.js";
129
129
 
130
130
  //#region src/gateway/glass-ui-ws.ts
131
131
  const SESSION_KEY = "agent:main:main";
@@ -14,7 +14,7 @@ import "./client-qUlxXXVJ.js";
14
14
  import "./call-BrRWr7Lj.js";
15
15
  import "./message-channel-C9dERklz.js";
16
16
  import "./pairing-token-Byh6drgn.js";
17
- import { Q as resolveModelProfile } from "./subagent-registry-BKuL9PdW.js";
17
+ import { Q as resolveModelProfile } from "./subagent-registry-BvP8AGdE.js";
18
18
  import "./sessions-BPD85pWA.js";
19
19
  import "./tokens-Csntmwwn.js";
20
20
  import "./plugins-CwSlLxM8.js";
@@ -52,8 +52,8 @@ import "./tool-images-CVLISeRT.js";
52
52
  import "./thinking-8sKPnzpp.js";
53
53
  import "./models-config-J1x_DaPn.js";
54
54
  import "./reply-prefix-BUN71nd5.js";
55
- import "./memory-cli-BgJciaHC.js";
56
- import "./manager-CLrJn9l-.js";
55
+ import "./memory-cli-BSOOwpt1.js";
56
+ import "./manager-syNf_ZrI.js";
57
57
  import "./gemini-auth-DEakvf-D.js";
58
58
  import "./retry-C4Q_VPOo.js";
59
59
  import "./sqlite-BP8tiuca.js";
@@ -109,18 +109,18 @@ import "./service-RxN7lQKN.js";
109
109
  import "./diagnostics-C6xPE2ln.js";
110
110
  import "./table-Bka4fasy.js";
111
111
  import "./audit-Oa5dsn5p.js";
112
- import "./status-Cb932Vl4.js";
113
- import "./health-C12hy3Ao.js";
112
+ import "./status-DMigoL7q.js";
113
+ import "./health-fOu0S75U.js";
114
114
  import "./control-ui-assets-Clf7H-Sm.js";
115
115
  import "./update-check-BNjupSIM.js";
116
- import { n as handleGatewayRequest } from "./server-methods-C1h0A5n0.js";
117
- import "./push-apns-IcfSTzfr.js";
118
- import "./agents.config-BIhaDwT2.js";
116
+ import { n as handleGatewayRequest } from "./server-methods-CTeJHJSZ.js";
117
+ import "./push-apns-rPetW5cI.js";
118
+ import "./agents.config-BnPC7uct.js";
119
119
  import "./dm-policy-shared-JiSNSaKz.js";
120
120
  import "./node-service-B-qdOCNb.js";
121
121
  import "./status.update-B5zI1_Id.js";
122
122
  import "./skills-install-BnEN_qla.js";
123
- import "./update-runner-CWG6GxKs.js";
123
+ import "./update-runner-B_yVOk8Z.js";
124
124
 
125
125
  //#region src/gateway/glass-ui-ws.ts
126
126
  const SESSION_KEY = "agent:main:main";
@@ -1,5 +1,5 @@
1
1
  import { B as theme, k as info, l as escapeRegExp, z as isRich } from "./utils-B-0b9bGM.js";
2
- import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-CUR4xpYM.js";
2
+ import { At as resolveHeartbeatDeliveryTarget, Cr as peekSystemEventEntries, Vn as resolveUserTimezone, cr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, ct as setHeartbeatWakeHandler, dr as resolveHeartbeatPrompt$1, fr as stripHeartbeatToken, jt as resolveHeartbeatSenderContext, lr as DEFAULT_HEARTBEAT_EVERY, lt as resolveHeartbeatReasonKind, nr as getQueueSize, r as appendCronStyleCurrentTimeLine, sr as CommandLane, st as requestHeartbeatNow, t as getReplyFromConfig, ur as isHeartbeatContentEffectivelyEmpty } from "./reply-D7_t00Jt.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-D9vIQve0.js";
5
5
  import { b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId, r as resolveAgentConfig } from "./agent-scope-CgUHAtCo.js";
@@ -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-D-jRCY0d.js";
5
5
  import { C as parseDurationMs, i as loadConfig } from "./config-DXt3pc08.js";
6
6
  import { n as callGateway, t as buildGatewayConnectionDetails } from "./call-BrRWr7Lj.js";
7
- import { Jn as resolveUserTimezone, K as appendCronStyleCurrentTimeLine, Tn as peekSystemEventEntries, W as getReplyFromConfig, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-BKuL9PdW.js";
7
+ import { Jn as resolveUserTimezone, K as appendCronStyleCurrentTimeLine, Tn as peekSystemEventEntries, W as getReplyFromConfig, _r as isHeartbeatContentEffectivelyEmpty, dn as requestHeartbeatNow, fn as setHeartbeatWakeHandler, gr as DEFAULT_HEARTBEAT_EVERY, hr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, lr as getQueueSize, lt as resolveHeartbeatDeliveryTarget, mr as CommandLane, pn as resolveHeartbeatReasonKind, ut as resolveHeartbeatSenderContext, vr as resolveHeartbeatPrompt$1, yr as stripHeartbeatToken } from "./subagent-registry-BvP8AGdE.js";
8
8
  import { M as canonicalizeMainSessionAlias, N as resolveAgentMainSessionKey, d as updateSessionStore, l as saveSessionStore, o as loadSessionStore } from "./sessions-BPD85pWA.js";
9
9
  import { r as SYMIPULSE_TOKEN } from "./tokens-Csntmwwn.js";
10
10
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CwSlLxM8.js";