@symerian/symi 2.8.12 → 2.8.14

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 (229) hide show
  1. package/dist/{accounts-BuZxOb3B.js → accounts-Bsg6r6H7.js} +1 -1
  2. package/dist/{accounts-BRw8yhIW.js → accounts-BsgY6sda.js} +21 -21
  3. package/dist/{accounts-3dCrO3oZ.js → accounts-wWWkC0JH.js} +1 -1
  4. package/dist/{active-listener-BVZOh2T1.js → active-listener-AVNn5_U9.js} +1 -1
  5. package/dist/{agent-scope-CpEJ0B88.js → agent-scope-Cpm7a9ss.js} +3 -3
  6. package/dist/{agents-OAonMxYV.js → agents-DlAvDWxz.js} +4 -4
  7. package/dist/{agents.config-BIhaDwT2.js → agents.config-BKKMbeeE.js} +1 -1
  8. package/dist/{agents.config-DGu_K5xz.js → agents.config-Dd-11klq.js} +1 -1
  9. package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-rrz8KyHd.js} +29 -29
  10. package/dist/{audit-Bi9Je9FZ.js → audit-BhCJV2l6.js} +1 -1
  11. package/dist/{audit-Oa5dsn5p.js → audit-CB97BqHJ.js} +1 -1
  12. package/dist/{auth-choice-BvPX7B4c.js → auth-choice-C6woT6k2.js} +1 -1
  13. package/dist/{auth-choice-DDzWns1k.js → auth-choice-CRQRPwQt.js} +1 -1
  14. package/dist/{auth-profiles-C2vj6htZ.js → auth-profiles-BzB_Exeq.js} +17 -17
  15. package/dist/{banner-BFdiq-O5.js → banner-DrNha2_N.js} +1 -1
  16. package/dist/{bindings-BsHoBLIE.js → bindings-xcRox9xM.js} +2 -2
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +54 -54
  19. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  20. package/dist/bundled/command-logger/handler.js +1 -1
  21. package/dist/bundled/session-memory/handler.js +54 -54
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-activity-D8QD7GoV.js → channel-activity-CzHaIUAp.js} +1 -1
  24. package/dist/{channel-options-DTqUB0OP.js → channel-options-D8q9En4T.js} +1 -1
  25. package/dist/{channel-options-tfnOGSNF.js → channel-options-DYy2sCfN.js} +1 -1
  26. package/dist/{channel-web-CcUXobcu.js → channel-web-CRBU4eZk.js} +1 -1
  27. package/dist/{channels-cli-CmShA-wJ.js → channels-cli-BUk43hHR.js} +7 -7
  28. package/dist/{channels-cli-BcE5tHIr.js → channels-cli-Dk3kUw9A.js} +7 -7
  29. package/dist/{chrome-ROtrXlNs.js → chrome-DwXnykXR.js} +14 -14
  30. package/dist/{chunk-BRe1o4Af.js → chunk-BcxcL1U3.js} +1 -1
  31. package/dist/{cli-BxoD2wzk.js → cli-5gWsnsB7.js} +4 -4
  32. package/dist/{cli-CKG2iAr3.js → cli-DjZzJy3t.js} +4 -4
  33. package/dist/{command-registry-D1Le-Fmh.js → command-registry-LjFltTU9.js} +10 -10
  34. package/dist/{commands-registry-DxbSTLNQ.js → commands-registry-ByGkL6hs.js} +4 -4
  35. package/dist/{completion-cli-DgiFjSGS.js → completion-cli-BVTGy8th.js} +1 -1
  36. package/dist/{completion-cli-D9pC-ttw.js → completion-cli-Cf6fYZWL.js} +2 -2
  37. package/dist/{config-BkZ9HOKT.js → config-C4WnAd-c.js} +17 -17
  38. package/dist/{config-cli-C_uZQsTl.js → config-cli-C7DIbGxx.js} +1 -1
  39. package/dist/{config-cli-5mFA0UDP.js → config-cli-EgWrCemi.js} +1 -1
  40. package/dist/{configure-BJcy7wXm.js → configure-B67uIawm.js} +3 -3
  41. package/dist/{configure-DuRTFCuW.js → configure-Bk-snuxh.js} +3 -3
  42. package/dist/{consolidate-07QMweFF.js → consolidate-DRtVvG2U.js} +4 -4
  43. package/dist/{deliver-B0OUq6RP.js → deliver-SLYAWE19.js} +20 -20
  44. package/dist/{diagnostic-BUcR3Meg.js → diagnostic-DTkZsRNM.js} +1 -1
  45. package/dist/{doctor-completion-sQVhKKei.js → doctor-completion-By066O3p.js} +1 -1
  46. package/dist/{doctor-completion-DCRTHpiY.js → doctor-completion-lE_33xaY.js} +1 -1
  47. package/dist/entry.js +1 -1
  48. package/dist/{env-BDXYbTKj.js → env-CB65jmJQ.js} +1 -1
  49. package/dist/extensionAPI.js +2 -2
  50. package/dist/{frontmatter-CTR5f_Ez.js → frontmatter-CT1M0pRK.js} +4 -4
  51. package/dist/{gateway-cli-C3ujhxO0.js → gateway-cli-C6uT2x34.js} +182 -13
  52. package/dist/{gateway-cli-C_MT4JFm.js → gateway-cli-DqEgqVKC.js} +182 -13
  53. package/dist/{gemini-auth-BefM10YB.js → gemini-auth-D80BsXr2.js} +1 -1
  54. package/dist/{github-copilot-token-cCYzSU9h.js → github-copilot-token-B8B2pmph.js} +7 -7
  55. package/dist/{glass-ui-ws-ColAiWUr.js → glass-ui-ws-77TY57IO.js} +11 -11
  56. package/dist/{glass-ui-ws-B7zRY2BL.js → glass-ui-ws-CLAUHeZR.js} +11 -11
  57. package/dist/{health-C12hy3Ao.js → health-2jkjZxY8.js} +1 -1
  58. package/dist/{health-vKJZ7iJR.js → health-CvMHgR-L.js} +1 -1
  59. package/dist/{hooks-cli-CdUQvj8s.js → hooks-cli-CRZySOiz.js} +5 -5
  60. package/dist/{hooks-cli-fCPl5hur.js → hooks-cli-DSaezFsD.js} +5 -5
  61. package/dist/{image-BuVL0jHI.js → image-BHF_fnIp.js} +4 -4
  62. package/dist/{image-ops-C7CauEK8.js → image-ops-CY7v6vvp.js} +16 -16
  63. package/dist/index.js +9 -9
  64. package/dist/{internal-DjnxpF_K.js → internal-FNqguZSK.js} +11 -11
  65. package/dist/{ir-7tMVY7D_.js → ir-D6MiJpAy.js} +4 -4
  66. package/dist/llm-slug-generator.js +54 -54
  67. package/dist/{local-roots-ClipCZ9s.js → local-roots-tcdaIEhh.js} +5 -5
  68. package/dist/{login-D4rZWBXe.js → login-D4ZkmSrY.js} +7 -7
  69. package/dist/{login-qr-DdAVHOEC.js → login-qr-C9ftIq3n.js} +12 -12
  70. package/dist/{manager-DHRBy5oR.js → manager-BtWtmpxN.js} +1 -1
  71. package/dist/{manager-CLrJn9l-.js → manager-DDELj5o9.js} +1 -1
  72. package/dist/{manager-BJvYQ7xP.js → manager-DrmlegR2.js} +1 -1
  73. package/dist/{manager-Df_ZdrNG.js → manager-DxCmjSfP.js} +24 -24
  74. package/dist/{manifest-registry-CBCGTsIb.js → manifest-registry-BvGv6lp9.js} +19 -19
  75. package/dist/{markdown-tables-x2Xe2UXh.js → markdown-tables-CE-qSMGB.js} +1 -1
  76. package/dist/{memory-cli-T-a5-lqZ.js → memory-cli-ENCASZJk.js} +3 -3
  77. package/dist/{memory-cli-BgJciaHC.js → memory-cli-Qgbcxvuf.js} +3 -3
  78. package/dist/{message-channel-OlFBYAw8.js → message-channel-lwVT8QjK.js} +1 -1
  79. package/dist/{models-BXXV_sZU.js → models-COhUz7M9.js} +2 -2
  80. package/dist/{models-cli-BI-DyItH.js → models-cli-CCxYcF4R.js} +5 -5
  81. package/dist/{models-cli-Bs6JAGq-.js → models-cli-CYvXBvmZ.js} +6 -6
  82. package/dist/{onboard-Czi_FRdi.js → onboard-CQNUYBIp.js} +2 -2
  83. package/dist/{onboard-channels-sTuhQBVu.js → onboard-channels-9erx07qe.js} +1 -1
  84. package/dist/{onboard-channels-BUCYZF02.js → onboard-channels-CWw8G-6n.js} +1 -1
  85. package/dist/{onboard-DKDCWveE.js → onboard-fVpLVnwg.js} +2 -2
  86. package/dist/{onboarding-Bgx0qZhA.js → onboarding-CtEiH9WG.js} +3 -3
  87. package/dist/{onboarding-CokRRVEi.js → onboarding-D-OIkDwZ.js} +3 -3
  88. package/dist/{onboarding.finalize-BCv5jB0d.js → onboarding.finalize-BY3HNjX4.js} +9 -9
  89. package/dist/{onboarding.finalize-BzEKyraI.js → onboarding.finalize-DTbpLV-T.js} +8 -8
  90. package/dist/{outbound-Zmd7UyQH.js → outbound-C6Gm22UF.js} +7 -7
  91. package/dist/{outbound-attachment-DeCnZT-8.js → outbound-attachment-BWyKV1Gy.js} +2 -2
  92. package/dist/paths-CYmyCDsE.js +212 -0
  93. package/dist/{paths-CbQV9WEg.js → paths-DEuVuViW.js} +1 -1
  94. package/dist/{pi-auth-json-RXOlh8ar.js → pi-auth-json-Bv1NzJdR.js} +1 -1
  95. package/dist/{pi-embedded-DXY7TLac.js → pi-embedded-CdOdQw2i.js} +265 -13
  96. package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-DwQ9wJeT.js} +73 -73
  97. package/dist/{pi-tools.policy-BZrM6a-w.js → pi-tools.policy-Bx5zp45n.js} +2 -0
  98. package/dist/{pi-tools.policy-QIVWAVVI.js → pi-tools.policy-o0ytjRqu.js} +2 -0
  99. package/dist/{plugin-registry-CyrsJDyE.js → plugin-registry-BrJ0-qlu.js} +1 -1
  100. package/dist/{plugin-registry-B2cpTmJz.js → plugin-registry-Cuc8ORuR.js} +1 -1
  101. package/dist/plugin-sdk/agents/pi-embedded-runner/long-task-prompt.d.ts +7 -0
  102. package/dist/plugin-sdk/agents/tools/task-tool.d.ts +7 -0
  103. package/dist/plugin-sdk/{channel-web-t6enTxNE.js → channel-web-t8UOP6Zu.js} +1 -1
  104. package/dist/plugin-sdk/index.js +3 -3
  105. package/dist/plugin-sdk/{manager-LRE7zEk2.js → manager-BPm5oefC.js} +1 -1
  106. package/dist/plugin-sdk/{reply-JypoGhql.js → reply-BKAHTugL.js} +265 -13
  107. package/dist/plugin-sdk/{synthesis-_WpVyZKx.js → synthesis-CVF7Fwhd.js} +2 -2
  108. package/dist/plugin-sdk/{web-BTVj4kiQ.js → web-D0DsmFvw.js} +3 -3
  109. package/dist/{plugins-cli-B-zoQyqU.js → plugins-cli-BDalhI46.js} +5 -5
  110. package/dist/{plugins-cli-DJwRd3EZ.js → plugins-cli-DFmriy-c.js} +5 -5
  111. package/dist/{plugins-BzmbgY7s.js → plugins-v8k1XVOy.js} +9 -9
  112. package/dist/{program-H7h6Iqrq.js → program-DKh41c2a.js} +10 -10
  113. package/dist/{program-context-BgecQAHU.js → program-context-Cq7pqOrw.js} +19 -19
  114. package/dist/{prompt-select-styled-BglmD29e.js → prompt-select-styled-BFCAZLwK.js} +6 -6
  115. package/dist/{prompt-select-styled-BDN2o35i.js → prompt-select-styled-DvvSE_ni.js} +6 -6
  116. package/dist/{provider-auth-helpers-BGIgr7xM.js → provider-auth-helpers-B-LkDxxi.js} +1 -1
  117. package/dist/{provider-auth-helpers-MfKmTeLY.js → provider-auth-helpers-DXppgV1l.js} +1 -1
  118. package/dist/{push-apns-b6bH1EBC.js → push-apns-DCA47WA5.js} +1 -1
  119. package/dist/{push-apns-IcfSTzfr.js → push-apns-DvudhEAb.js} +1 -1
  120. package/dist/{pw-ai-DWkC5eGA.js → pw-ai-XGqnSWju.js} +11 -11
  121. package/dist/{qmd-manager-BXkbA8Y9.js → qmd-manager-CbRJhonG.js} +8 -8
  122. package/dist/{register.agent-ChwMSIC4.js → register.agent-_BV5KyFb.js} +9 -9
  123. package/dist/{register.agent-BgyETrrj.js → register.agent-aFj_SMi3.js} +8 -8
  124. package/dist/{register.configure-DH3L2tqW.js → register.configure-CvOoD5gE.js} +9 -9
  125. package/dist/{register.configure-Bm4CvoLF.js → register.configure-Dx0Uhmlz.js} +9 -9
  126. package/dist/{register.maintenance-BbOBw1eI.js → register.maintenance-BuZpoSik.js} +10 -10
  127. package/dist/{register.maintenance-CAyHUEzP.js → register.maintenance-CMeJR7DG.js} +11 -11
  128. package/dist/{register.message-DheqsiR0.js → register.message-qysZPg3G.js} +5 -5
  129. package/dist/{register.message-DQ3MOWFE.js → register.message-xxGePuRC.js} +5 -5
  130. package/dist/{register.onboard-DOJkUhoY.js → register.onboard-1MP2I0q4.js} +7 -7
  131. package/dist/{register.onboard-CxqR4S1C.js → register.onboard-D4Aow7Gc.js} +7 -7
  132. package/dist/{register.setup-zdrIJA2P.js → register.setup-BT74aXzA.js} +7 -7
  133. package/dist/{register.setup-48YBHzMZ.js → register.setup-DzliKkWh.js} +7 -7
  134. package/dist/{register.status-health-sessions-CeT5pVXb.js → register.status-health-sessions-B3K2gZ72.js} +7 -7
  135. package/dist/{register.status-health-sessions-CimrhScH.js → register.status-health-sessions-D7VYZlrU.js} +7 -7
  136. package/dist/{register.subclis-B-zh940S.js → register.subclis-BCy0IDRv.js} +10 -10
  137. package/dist/{registry-DYq1AYOv.js → registry-X6fUE0K7.js} +19 -19
  138. package/dist/{replies-CUWXgyx2.js → replies-86F3PldM.js} +3 -3
  139. package/dist/{reply-CUR4xpYM.js → reply-Dg1ZU3DZ.js} +263 -13
  140. package/dist/{reply-prefix-CvEIl6_d.js → reply-prefix-CI_IdwqH.js} +1 -1
  141. package/dist/{resolve-route-Jy5dFY67.js → resolve-route-BgSuN9c6.js} +4 -4
  142. package/dist/{retry-B-y5suGA.js → retry-4oEAHckB.js} +1 -1
  143. package/dist/{run-main-CW_kj5Lj.js → run-main-OS2aFAJ2.js} +18 -18
  144. package/dist/{runner-ecX1WzDt.js → runner-B5oNTtgf.js} +22 -22
  145. package/dist/{security-cli-BpnzAB5_.js → security-cli-BadXDWTh.js} +2 -2
  146. package/dist/{security-cli-D9WEiEjD.js → security-cli-D5y28-RH.js} +2 -2
  147. package/dist/{send-DFtnbzqy.js → send-ASDB3AzC.js} +7 -7
  148. package/dist/{send-Bb4it0te.js → send-BTfqlrYd.js} +18 -18
  149. package/dist/{send-C0QjmPaf.js → send-CSydU49L.js} +10 -10
  150. package/dist/{send-Cpk3Ti6-.js → send-Du-IfSne.js} +6 -6
  151. package/dist/{send-BKo1T3HF.js → send-cCTQjuOZ.js} +6 -6
  152. package/dist/{server-methods-C1h0A5n0.js → server-methods-BszFAkbJ.js} +8 -8
  153. package/dist/{server-methods-C4id-H_X.js → server-methods-D_iKJ-sj.js} +8 -8
  154. package/dist/{server-node-events-CD2yDaEj.js → server-node-events-CENHuAVz.js} +5 -5
  155. package/dist/{server-node-events-BPZEGV_N.js → server-node-events-uBu3XOjd.js} +5 -5
  156. package/dist/{session-BTeY6Gn2.js → session-D8qLj_xN.js} +8 -8
  157. package/dist/{skill-commands-DG2lcozb.js → skill-commands-BcOduw6G.js} +16 -16
  158. package/dist/{skills-CXxrn_e2.js → skills-BrYDT4Jr.js} +24 -24
  159. package/dist/{sqlite-BN_hIcmu.js → sqlite-P-gMg7fi.js} +3 -3
  160. package/dist/{status-_xBnHTlx.js → status-BvbJavmh.js} +1 -1
  161. package/dist/{status-DCeW2a07.js → status-CA0mUJld.js} +4 -4
  162. package/dist/{status-Cb932Vl4.js → status-CBnCPUMG.js} +4 -4
  163. package/dist/{status-DvHD1cnq.js → status-DJAeKN4G.js} +1 -1
  164. package/dist/{store-01F_JM7O.js → store-Ceagbc4L.js} +6 -6
  165. package/dist/{subagent-registry-BKuL9PdW.js → subagent-registry-C1OyZl-M.js} +263 -13
  166. package/dist/{subsystem-BjyjJF-d.js → subsystem-CzXhCdeY.js} +1 -1
  167. package/dist/{synthesis-DOiTUsXQ.js → synthesis-DNTyB7JY.js} +2 -2
  168. package/dist/{synthesis-BUqDGjlc.js → synthesis-DuqSkHEr.js} +54 -54
  169. package/dist/{synthesis-C9RputIi.js → synthesis-brHrnNF2.js} +4 -4
  170. package/dist/{synthesis-Ia9egx87.js → synthesis-z5B41p_r.js} +4 -4
  171. package/dist/{tables-DoG-pFrf.js → tables-qbCoZrYA.js} +1 -1
  172. package/dist/{target-errors-DeJTztcq.js → target-errors-uNitqCCT.js} +2 -2
  173. package/dist/{thinking-BprCy23Z.js → thinking-BV7SCNJP.js} +5 -5
  174. package/dist/{tokens-W0JzCJJM.js → tokens-Bl5R3wPD.js} +1 -1
  175. package/dist/{tool-images-SqqWIT22.js → tool-images-JxNglLSr.js} +2 -2
  176. package/dist/{tool-loop-detection-Dj9h1ogr.js → tool-loop-detection-dfE771kg.js} +3 -3
  177. package/dist/{unified-runner-CVItnwwP.js → unified-runner-Czg3pdBc.js} +489 -237
  178. package/dist/{update-cli-ChEABesZ.js → update-cli-0lyGyl31.js} +11 -11
  179. package/dist/{update-cli-D6ax3jSX.js → update-cli-CIzkVfmj.js} +10 -10
  180. package/dist/{update-runner-B2EY9BWM.js → update-runner-D7-LDziQ.js} +1 -1
  181. package/dist/{update-runner-CWG6GxKs.js → update-runner-aYPcKYAN.js} +1 -1
  182. package/dist/{web-z-yQ8riS.js → web-B90A99YU.js} +58 -58
  183. package/dist/{web-CpSE67Jp.js → web-BJ5dUZso.js} +5 -5
  184. package/dist/{web-D6PPeyG7.js → web-CN7wnU7w.js} +4 -4
  185. package/dist/{web-DMdb2p-h.js → web-Wk1ay1eQ.js} +2 -2
  186. package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-llk0IUn2.js} +23 -23
  187. package/dist/{workspace-DscDraUb.js → workspace-CywO4ayZ.js} +27 -27
  188. package/extensions/bluebubbles/package.json +1 -1
  189. package/extensions/copilot-proxy/package.json +1 -1
  190. package/extensions/diagnostics-otel/package.json +1 -1
  191. package/extensions/discord/package.json +1 -1
  192. package/extensions/feishu/package.json +1 -1
  193. package/extensions/google-antigravity-auth/package.json +1 -1
  194. package/extensions/google-gemini-cli-auth/package.json +1 -1
  195. package/extensions/googlechat/package.json +1 -1
  196. package/extensions/imessage/package.json +1 -1
  197. package/extensions/irc/package.json +1 -1
  198. package/extensions/learning-loop/package.json +1 -1
  199. package/extensions/line/package.json +1 -1
  200. package/extensions/llm-task/package.json +1 -1
  201. package/extensions/matrix/CHANGELOG.md +12 -0
  202. package/extensions/matrix/package.json +1 -1
  203. package/extensions/mattermost/package.json +1 -1
  204. package/extensions/memory-core/package.json +1 -1
  205. package/extensions/memory-lancedb/package.json +1 -1
  206. package/extensions/minimax-portal-auth/package.json +1 -1
  207. package/extensions/msteams/CHANGELOG.md +12 -0
  208. package/extensions/msteams/package.json +1 -1
  209. package/extensions/nextcloud-talk/package.json +1 -1
  210. package/extensions/nostr/CHANGELOG.md +12 -0
  211. package/extensions/nostr/package.json +1 -1
  212. package/extensions/open-prose/package.json +1 -1
  213. package/extensions/outlook/package.json +1 -1
  214. package/extensions/pipeline/package.json +1 -1
  215. package/extensions/signal/package.json +1 -1
  216. package/extensions/slack/package.json +1 -1
  217. package/extensions/telegram/package.json +1 -1
  218. package/extensions/tlon/package.json +1 -1
  219. package/extensions/twitch/CHANGELOG.md +12 -0
  220. package/extensions/twitch/package.json +1 -1
  221. package/extensions/voice-call/CHANGELOG.md +12 -0
  222. package/extensions/voice-call/package.json +1 -1
  223. package/extensions/whatsapp/package.json +1 -1
  224. package/extensions/zalo/CHANGELOG.md +12 -0
  225. package/extensions/zalo/package.json +1 -1
  226. package/extensions/zalouser/CHANGELOG.md +12 -0
  227. package/extensions/zalouser/package.json +1 -1
  228. package/package.json +1 -1
  229. package/skills/long-task/scripts/detach-task.sh +57 -5
@@ -206,7 +206,7 @@ async function runConfigUnset(opts) {
206
206
  }
207
207
  function registerConfigCli(program) {
208
208
  const cmd = program.command("config").description("Non-interactive config helpers (get/set/unset). Run without subcommand for the setup wizard.").addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/config", "docs.symi.ai/cli/config")}\n`).option("--section <section>", "Configure wizard sections (repeatable). Use with no subcommand.", (value, previous) => [...previous, value], []).action(async (opts) => {
209
- const { configureCommandFromSectionsArg } = await import("./configure-BJcy7wXm.js").then((n) => n.t);
209
+ const { configureCommandFromSectionsArg } = await import("./configure-B67uIawm.js").then((n) => n.t);
210
210
  await configureCommandFromSectionsArg(opts.section, defaultRuntime);
211
211
  });
212
212
  cmd.command("get").description("Get a config value by dot path").argument("<path>", "Config path (dot or bracket notation)").option("--json", "Output JSON", false).action(async (path, opts) => {
@@ -13,14 +13,14 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
13
13
  import { t as note$1 } from "./note-ByDX0v9V.js";
14
14
  import { t as WizardCancelledError } from "./prompts-NOUgk6FH.js";
15
15
  import { t as createClackPrompter } from "./clack-prompter-CM5UgVAv.js";
16
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-sTuhQBVu.js";
16
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-9erx07qe.js";
17
17
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-Cp7obV7Q.js";
18
18
  import { t as resolveGatewayService } from "./service-DzLem5vL.js";
19
- import { r as healthCommand } from "./health-vKJZ7iJR.js";
19
+ import { r as healthCommand } from "./health-CvMHgR-L.js";
20
20
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-BrP31IQR.js";
21
21
  import { n as logConfigUpdated } from "./logging-CZuxhCZR.js";
22
22
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-PeQmwVpp.js";
23
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-DDzWns1k.js";
23
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-CRQRPwQt.js";
24
24
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-BNWV-jU4.js";
25
25
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-0C265XKH.js";
26
26
  import { a as promptCustomApiConfig } from "./onboard-custom-Dk9cL3Uu.js";
@@ -11,14 +11,14 @@ import { n as stylePromptMessage, r as stylePromptTitle, t as stylePromptHint }
11
11
  import { t as note$1 } from "./note-DewoEWtc.js";
12
12
  import { t as WizardCancelledError } from "./prompts-DbHSz44H.js";
13
13
  import { t as createClackPrompter } from "./clack-prompter-CTPf_777.js";
14
- import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-BUCYZF02.js";
14
+ import { r as setupChannels, t as noteChannelStatus } from "./onboard-channels-CWw8G-6n.js";
15
15
  import { a as gatewayInstallErrorHint, i as buildGatewayInstallPlan, n as GATEWAY_DAEMON_RUNTIME_OPTIONS, t as DEFAULT_GATEWAY_DAEMON_RUNTIME } from "./daemon-runtime-D_elkkFW.js";
16
16
  import { t as resolveGatewayService } from "./service-RxN7lQKN.js";
17
- import { r as healthCommand } from "./health-C12hy3Ao.js";
17
+ import { r as healthCommand } from "./health-2jkjZxY8.js";
18
18
  import { t as ensureControlUiAssetsBuilt } from "./control-ui-assets-Clf7H-Sm.js";
19
19
  import { n as logConfigUpdated } from "./logging-PVQxLC6I.js";
20
20
  import { n as promptAuthChoiceGrouped } from "./auth-choice-prompt-DF6R_pgV.js";
21
- import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-BvPX7B4c.js";
21
+ import { i as applyAuthChoice, n as resolvePreferredProviderForAuthChoice } from "./auth-choice-C6woT6k2.js";
22
22
  import { a as promptDefaultModel, n as applyModelFallbacksFromSelection, o as promptModelAllowlist, r as applyPrimaryModel, t as applyModelAllowlist } from "./model-picker-n7beL1F5.js";
23
23
  import { t as ensureSystemdUserLingerInteractive } from "./systemd-linger-ipoPa7o0.js";
24
24
  import { a as promptCustomApiConfig } from "./onboard-custom-CJGSIPt3.js";
@@ -1,7 +1,7 @@
1
- import "./paths-CE7eVGHg.js";
2
- import "./registry-DYq1AYOv.js";
3
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
4
- import { l as parseEmbedding, r as cosineSimilarity } from "./internal-DjnxpF_K.js";
1
+ import "./paths-CYmyCDsE.js";
2
+ import "./registry-X6fUE0K7.js";
3
+ import { t as createSubsystemLogger } from "./subsystem-CzXhCdeY.js";
4
+ import { l as parseEmbedding, r as cosineSimilarity } from "./internal-FNqguZSK.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs/promises";
7
7
  import crypto from "node:crypto";
@@ -1,18 +1,18 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as resolveStateDir } from "./paths-CE7eVGHg.js";
2
+ import { s as resolveStateDir } from "./paths-CYmyCDsE.js";
3
3
  import { m as normalizeOptionalAccountId, p as normalizeAccountId } from "./session-key-BCzIW1Y2.js";
4
- import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-DYq1AYOv.js";
5
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
6
- import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-D1_Sab0M.js";
7
- import { d as getChannelDock } from "./thinking-BprCy23Z.js";
8
- import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-BzmbgY7s.js";
9
- import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-W0JzCJJM.js";
10
- import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BRe1o4Af.js";
11
- import { n as resolveMarkdownTableMode } from "./markdown-tables-x2Xe2UXh.js";
12
- import { t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
13
- import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-Cpk3Ti6-.js";
4
+ import { c as getActivePluginRegistry, v as createInternalHookEvent, x as triggerInternalHook } from "./registry-X6fUE0K7.js";
5
+ import { t as createSubsystemLogger } from "./subsystem-CzXhCdeY.js";
6
+ import { B as resolveMirroredTranscriptText, i as isMessagingToolDuplicate, z as appendAssistantMessageToSessionTranscript } from "./pi-embedded-helpers-DwQ9wJeT.js";
7
+ import { d as getChannelDock } from "./thinking-BV7SCNJP.js";
8
+ import { r as normalizeChannelId, t as getChannelPlugin } from "./plugins-v8k1XVOy.js";
9
+ import { a as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-Bl5R3wPD.js";
10
+ import { c as resolveChunkMode, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, n as chunkByParagraph } from "./chunk-BcxcL1U3.js";
11
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-CE-qSMGB.js";
12
+ import { t as getAgentScopedMediaLocalRoots } from "./local-roots-tcdaIEhh.js";
13
+ import { l as markdownToSignalTextChunks, t as sendMessageSignal } from "./send-Du-IfSne.js";
14
14
  import path from "node:path";
15
- import fs from "node:fs";
15
+ import fsSync from "node:fs";
16
16
  import crypto from "node:crypto";
17
17
 
18
18
  //#region src/plugins/hooks.ts
@@ -721,11 +721,11 @@ function resolveFailedDir(stateDir) {
721
721
  /** Ensure the queue directory (and failed/ subdirectory) exist. */
722
722
  async function ensureQueueDir(stateDir) {
723
723
  const queueDir = resolveQueueDir(stateDir);
724
- await fs.promises.mkdir(queueDir, {
724
+ await fsSync.promises.mkdir(queueDir, {
725
725
  recursive: true,
726
726
  mode: 448
727
727
  });
728
- await fs.promises.mkdir(resolveFailedDir(stateDir), {
728
+ await fsSync.promises.mkdir(resolveFailedDir(stateDir), {
729
729
  recursive: true,
730
730
  mode: 448
731
731
  });
@@ -752,18 +752,18 @@ async function enqueueDelivery(params, stateDir) {
752
752
  const filePath = path.join(queueDir, `${id}.json`);
753
753
  const tmp = `${filePath}.${process.pid}.tmp`;
754
754
  const json = JSON.stringify(entry, null, 2);
755
- await fs.promises.writeFile(tmp, json, {
755
+ await fsSync.promises.writeFile(tmp, json, {
756
756
  encoding: "utf-8",
757
757
  mode: 384
758
758
  });
759
- await fs.promises.rename(tmp, filePath);
759
+ await fsSync.promises.rename(tmp, filePath);
760
760
  return id;
761
761
  }
762
762
  /** Remove a successfully delivered entry from the queue. */
763
763
  async function ackDelivery(id, stateDir) {
764
764
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
765
765
  try {
766
- await fs.promises.unlink(filePath);
766
+ await fsSync.promises.unlink(filePath);
767
767
  } catch (err) {
768
768
  if ((err && typeof err === "object" && "code" in err ? String(err.code) : null) !== "ENOENT") throw err;
769
769
  }
@@ -771,16 +771,16 @@ async function ackDelivery(id, stateDir) {
771
771
  /** Update a queue entry after a failed delivery attempt. */
772
772
  async function failDelivery(id, error, stateDir) {
773
773
  const filePath = path.join(resolveQueueDir(stateDir), `${id}.json`);
774
- const raw = await fs.promises.readFile(filePath, "utf-8");
774
+ const raw = await fsSync.promises.readFile(filePath, "utf-8");
775
775
  const entry = JSON.parse(raw);
776
776
  entry.retryCount += 1;
777
777
  entry.lastError = error;
778
778
  const tmp = `${filePath}.${process.pid}.tmp`;
779
- await fs.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
779
+ await fsSync.promises.writeFile(tmp, JSON.stringify(entry, null, 2), {
780
780
  encoding: "utf-8",
781
781
  mode: 384
782
782
  });
783
- await fs.promises.rename(tmp, filePath);
783
+ await fsSync.promises.rename(tmp, filePath);
784
784
  }
785
785
 
786
786
  //#endregion
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
2
+ import { t as createSubsystemLogger } from "./subsystem-CzXhCdeY.js";
3
3
  import { i as pruneDiagnosticSessionStates, r as getDiagnosticSessionState, t as diagnosticSessionStates } from "./diagnostic-session-state-Zw87xFym.js";
4
4
 
5
5
  //#region src/infra/diagnostic-events.ts
@@ -1,7 +1,7 @@
1
1
  import { r as resolveCliName } from "./command-format-BtYOfWxC.js";
2
2
  import { t as resolveSymiPackageRoot } from "./symi-root-BNuQ4lAT.js";
3
3
  import { t as note } from "./note-DewoEWtc.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-D9pC-ttw.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-Cf6fYZWL.js";
5
5
  import { spawnSync } from "node:child_process";
6
6
  import path from "node:path";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
2
2
  import { r as resolveCliName } from "./command-format-COaS-S7B.js";
3
3
  import { t as note } from "./note-ByDX0v9V.js";
4
- import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-DgiFjSGS.js";
4
+ import { a as resolveCompletionCachePath, i as isCompletionInstalled, o as resolveShellFromEnv, r as installCompletion, s as usesSlowDynamicCompletion, t as completionCacheExists } from "./completion-cli-BVTGy8th.js";
5
5
  import path from "node:path";
6
6
  import { spawnSync } from "node:child_process";
7
7
 
package/dist/entry.js CHANGED
@@ -2500,7 +2500,7 @@ if (!ensureExperimentalWarningSuppressed()) {
2500
2500
  applyCliProfileEnv({ profile: parsed.profile });
2501
2501
  process$1.argv = parsed.argv;
2502
2502
  }
2503
- import("./run-main-CW_kj5Lj.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2503
+ import("./run-main-OS2aFAJ2.js").then(({ runCli }) => runCli(process$1.argv)).catch((error) => {
2504
2504
  console.error("[symi] Failed to start CLI:", error instanceof Error ? error.stack ?? error.message : error);
2505
2505
  process$1.exitCode = 1;
2506
2506
  });
@@ -1,4 +1,4 @@
1
- import { t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
1
+ import { t as createSubsystemLogger } from "./subsystem-CzXhCdeY.js";
2
2
  import { t as parseBooleanValue } from "./boolean-CE7i9tBR.js";
3
3
  import path from "node:path";
4
4
 
@@ -7,7 +7,7 @@ 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-CdOdQw2i.js";
11
11
  import "./plugins-71oIavrF.js";
12
12
  import "./accounts-DDEyGwby.js";
13
13
  import "./bindings-DYVakimr.js";
@@ -35,7 +35,7 @@ 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
37
  import "./image-MNvheU8U.js";
38
- import "./manager-DHRBy5oR.js";
38
+ import "./manager-BtWtmpxN.js";
39
39
  import "./gemini-auth-DVcG-42i.js";
40
40
  import "./retry-QGp0jvVi.js";
41
41
  import "./sqlite-Bo4pHfp8.js";
@@ -1,8 +1,8 @@
1
1
  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
- import fs from "node:fs";
5
- import JSON5 from "json5";
4
+ import fsSync from "node:fs";
5
+ import json5 from "json5";
6
6
  import YAML from "yaml";
7
7
 
8
8
  //#region src/shared/config-eval.ts
@@ -79,7 +79,7 @@ function hasBinary(bin) {
79
79
  for (const part of parts) for (const ext of extensions) {
80
80
  const candidate = path.join(part, bin + ext);
81
81
  try {
82
- fs.accessSync(candidate, fs.constants.X_OK);
82
+ fsSync.accessSync(candidate, fsSync.constants.X_OK);
83
83
  hasBinaryCache.set(bin, true);
84
84
  return true;
85
85
  } catch {}
@@ -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 { $ 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-C1OyZl-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-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-Qgbcxvuf.js";
64
+ import { a as resolveMemorySearchConfig } from "./manager-DDELj5o9.js";
65
65
  import "./gemini-auth-DEakvf-D.js";
66
66
  import "./retry-C4Q_VPOo.js";
67
67
  import "./sqlite-BP8tiuca.js";
@@ -106,7 +106,7 @@ import "./replies-Sxbew659.js";
106
106
  import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-CF0Cp3OB.js";
107
107
  import "./prompt-style-BxVdnrLq.js";
108
108
  import "./pairing-labels-BHx_CdbP.js";
109
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-QIVWAVVI.js";
109
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-o0ytjRqu.js";
110
110
  import { i as onHeartbeatEvent, t as resolveHeartbeatVisibility } from "./heartbeat-visibility-D0_vbMWW.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";
@@ -129,22 +129,22 @@ import "./diagnostics-C6xPE2ln.js";
129
129
  import "./table-Bka4fasy.js";
130
130
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-BrG9qS1M.js";
131
131
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-vevi4OAS.js";
132
- import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-Oa5dsn5p.js";
132
+ import { c as probeGateway, s as resolveNodeCommandAllowlist } from "./audit-CB97BqHJ.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-CBnCPUMG.js";
135
+ import { a as styleHealthChannelLine, l as startHeartbeatRunner, n as getHealthSnapshot, s as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-2jkjZxY8.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-CtEiH9WG.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-BszFAkbJ.js";
140
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DvudhEAb.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-BKKMbeeE.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-aYPcKYAN.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-CLAUHeZR.js");
11959
12128
  glassUiBridgeCleanup = createGlassUiBridge({
11960
12129
  wss: glassUiWss,
11961
12130
  context: gatewayRequestContext,