@symerian/symi 3.1.0 → 3.1.2

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 (232) hide show
  1. package/dist/{acp-cli-DUfYPxyp.js → acp-cli-BfBM-bKP.js} +2 -2
  2. package/dist/{acp-cli-C9NtVXJ7.js → acp-cli-J89cntBu.js} +2 -2
  3. package/dist/{agent-DMDBKAcJ.js → agent-CEXPWtuC.js} +8 -8
  4. package/dist/{agent-DKz-M9N_.js → agent-DRRQgy58.js} +7 -7
  5. package/dist/{agents-DXs9Kjwj.js → agents-PqUWeR3A.js} +5 -5
  6. package/dist/{audit-CCWHhR0Z.js → audit-DK86QmIj.js} +5 -5
  7. package/dist/{audit-CHQE7ltJ.js → audit-hp8a-n1l.js} +5 -5
  8. package/dist/{auth-choice-6RytjsbC.js → auth-choice-DdATugur.js} +4 -4
  9. package/dist/{auth-choice-CG-QKZd6.js → auth-choice-YNYbPMs1.js} +4 -4
  10. package/dist/{banner-DQd0lIpu.js → banner-DAqLFzv_.js} +1 -1
  11. package/dist/{browser-cli-WqkpY2cc.js → browser-cli-BFWcoE7z.js} +3 -3
  12. package/dist/{browser-cli-Cldf7Y9g.js → browser-cli-xKtmzl_A.js} +3 -3
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +8 -8
  15. package/dist/bundled/session-memory/handler.js +7 -7
  16. package/dist/{call-C14bzfoZ.js → call-BWteI0cy.js} +1 -1
  17. package/dist/{call-Dlm86eg6.js → call-Ddoic0fC.js} +1 -1
  18. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  19. package/dist/{channel-options-Co6PcwNY.js → channel-options-Cj-XhO9V.js} +1 -1
  20. package/dist/{channel-options-CU13eaBX.js → channel-options-D2f8AA_b.js} +1 -1
  21. package/dist/{channels-cli-BT-CS0Dv.js → channels-cli-CeA5OW3-.js} +22 -22
  22. package/dist/{channels-cli-DwLILpia.js → channels-cli-CyfuYRAC.js} +24 -24
  23. package/dist/{chrome-B7_foWil.js → chrome-B8nPYMUV.js} +1 -1
  24. package/dist/{chrome-BLHu6Hyz.js → chrome-CsuV4F-9.js} +1 -1
  25. package/dist/{chrome-O5GtGEaR.js → chrome-DFQDh6ZB.js} +8 -8
  26. package/dist/{chrome-BkXobQ6Q.js → chrome-_qwUb3dO.js} +1 -1
  27. package/dist/cli/daemon-cli.js +1 -1
  28. package/dist/{cli-C10IlksY.js → cli-B9QF1-A3.js} +18 -18
  29. package/dist/{cli-BTsGbyHe.js → cli-FC0iA9c9.js} +20 -20
  30. package/dist/{command-registry-DmjX-MJb.js → command-registry-DrPydEca.js} +11 -11
  31. package/dist/{completion-cli-DezSeZQA.js → completion-cli-B14HjsvE.js} +2 -2
  32. package/dist/{completion-cli-CKczmer5.js → completion-cli-Cbn8Wdpx.js} +1 -1
  33. package/dist/{config-BKcjFxGR.js → config-BsPVEzE3.js} +2 -2
  34. package/dist/{config-D-YxNuAZ.js → config-Cxfzso_Z.js} +0 -8
  35. package/dist/{config-cli-DbYlv3aw.js → config-cli-CZW8jojl.js} +2 -2
  36. package/dist/{config-cli-DakRgeD4.js → config-cli-YoysCWxO.js} +2 -2
  37. package/dist/{config-guard-iJNdTPmt.js → config-guard-B0j0Tq1a.js} +2 -2
  38. package/dist/{config-guard-DviVtynm.js → config-guard-BYoKKsDW.js} +3 -3
  39. package/dist/{config-CYwm_UYz.js → config-scZRRn2T.js} +0 -8
  40. package/dist/{config-validation-Cn58Yz2s.js → config-validation-D7Od5Yqx.js} +1 -1
  41. package/dist/{config-validation-Dz_Chn19.js → config-validation-DmJ-I8eH.js} +1 -1
  42. package/dist/{configure-B7CIs5tQ.js → configure-B5KQwmrU.js} +10 -10
  43. package/dist/{configure-DFMNvP2v.js → configure-DcDDW9Dx.js} +10 -10
  44. package/dist/{control-service-C6SdUJGs.js → control-service-CDWcS4TE.js} +4 -4
  45. package/dist/{control-service-Cuc3K1O-.js → control-service-CROUSYRb.js} +4 -4
  46. package/dist/control-ui/js/app.js +34 -2
  47. package/dist/{cron-cli-BWyaUoA8.js → cron-cli-CtVolwJM.js} +3 -3
  48. package/dist/{cron-cli-DSyOv8Mh.js → cron-cli-xfWPxnjt.js} +3 -3
  49. package/dist/{daemon-cli-C6LEQAIf.js → daemon-cli-Bh8S3XNY.js} +6 -6
  50. package/dist/{daemon-cli-BN0BS9To.js → daemon-cli-CLoBnTjH.js} +6 -6
  51. package/dist/daemon-cli.js +0 -8
  52. package/dist/{daemon-runtime-bdvJvhh0.js → daemon-runtime-C1vaS1KN.js} +1 -1
  53. package/dist/{daemon-runtime-Bt9_ZcwQ.js → daemon-runtime-Ciny4f0a.js} +1 -1
  54. package/dist/{deliver-BMg6XjUA.js → deliver-B3SdFgzA.js} +5 -5
  55. package/dist/{deliver-Cxzii_el.js → deliver-BrnGAti2.js} +5 -5
  56. package/dist/{deliver-CCNTT73z.js → deliver-CBLpHLj6.js} +1 -1
  57. package/dist/{deliver-SxI9drJl.js → deliver-CqJ3B363.js} +1 -1
  58. package/dist/{deps-CAJEf96g.js → deps-MXbZhSGc.js} +1 -1
  59. package/dist/{devices-cli-DATAjJ0Q.js → devices-cli-DMrDlrXV.js} +2 -2
  60. package/dist/{devices-cli-CmMoR2St.js → devices-cli-DgofB48n.js} +2 -2
  61. package/dist/{directory-cli-DyC04ktV.js → directory-cli-CSsy_RiQ.js} +1 -1
  62. package/dist/{directory-cli-DVYDMCQg.js → directory-cli-Cq_gMduw.js} +1 -1
  63. package/dist/{dns-cli-zHmXgnTc.js → dns-cli-D-XQUb_J.js} +1 -1
  64. package/dist/{dns-cli-UVvW1-bj.js → dns-cli-DqVGfq3s.js} +1 -1
  65. package/dist/{doctor-completion-BCVASe0n.js → doctor-completion-0Ciu6bXw.js} +1 -1
  66. package/dist/{doctor-completion-AGw1egU_.js → doctor-completion-bp85dPn_.js} +1 -1
  67. package/dist/{doctor-config-flow-ClsCvpwI.js → doctor-config-flow-BAjJwPwp.js} +2 -2
  68. package/dist/{doctor-config-flow-Brr2nZj7.js → doctor-config-flow-BdDRykfz.js} +2 -2
  69. package/dist/entry.js +1 -1
  70. package/dist/{exec-approvals-cli-tYolA4fT.js → exec-approvals-cli-BGMboqEF.js} +4 -4
  71. package/dist/{exec-approvals-cli-sqdNtDAS.js → exec-approvals-cli-Dq0mIyao.js} +4 -4
  72. package/dist/extensionAPI.js +6 -6
  73. package/dist/{gateway-cli-CvFiUm5D.js → gateway-cli-B87rKDcz.js} +39 -387
  74. package/dist/{gateway-cli-BZXfKM1n.js → gateway-cli-DwmmDmvN.js} +38 -386
  75. package/dist/{gateway-rpc-I4V_rlyD.js → gateway-rpc-D7xbL4xK.js} +1 -1
  76. package/dist/{gateway-rpc-CEmRl_5F.js → gateway-rpc-DQJ06sR6.js} +1 -1
  77. package/dist/{glass-ui-ws-CHyGj7GA.js → glass-ui-ws-CWWX4RFk.js} +29 -29
  78. package/dist/{glass-ui-ws-BSTHY5PU.js → glass-ui-ws-DqoK5k3P.js} +30 -30
  79. package/dist/{health-vDQ4nRJB.js → health-Bd4Kn-Uq.js} +5 -5
  80. package/dist/{health-OGl_XbRn.js → health-BtU-6tKH.js} +6 -6
  81. package/dist/{hooks-cli-VqgCW0Qc.js → hooks-cli-BL3GZVk5.js} +19 -19
  82. package/dist/{hooks-cli-CrqaQVL9.js → hooks-cli-mDZU8rDD.js} +21 -21
  83. package/dist/index.js +25 -25
  84. package/dist/{lifecycle-core-DbKdqcKY.js → lifecycle-core-3xu6LRYA.js} +2 -2
  85. package/dist/{lifecycle-core-yGgMuHuO.js → lifecycle-core-DneYEGDD.js} +2 -2
  86. package/dist/llm-slug-generator.js +7 -7
  87. package/dist/{logs-cli-CwHWy3uX.js → logs-cli-BBAd4pwH.js} +3 -3
  88. package/dist/{logs-cli-Bm2kMpGM.js → logs-cli-ccmeDLDg.js} +3 -3
  89. package/dist/{manager-DSlfEjVk.js → manager-B2DFgFTm.js} +1 -1
  90. package/dist/{manager-BKktUaAk.js → manager-C1CQhXcw.js} +1 -1
  91. package/dist/{manager-BWi2hK4Y.js → manager-C7f-dMSW.js} +1 -1
  92. package/dist/{manager-BoTf2TBM.js → manager-I-tRC_wz.js} +1 -1
  93. package/dist/{memory-cli-B7Ls3Iv1.js → memory-cli-Bj9XSnKb.js} +4 -4
  94. package/dist/{memory-cli-stuQ5Kfc.js → memory-cli-WT8ROETg.js} +4 -4
  95. package/dist/{model-catalog-BaFhU6Fx.js → model-catalog-BBMq_UVY.js} +1 -1
  96. package/dist/{model-catalog-K_qqpcC9.js → model-catalog-BRC9B0qI.js} +2 -2
  97. package/dist/{model-picker-BawF3VfC.js → model-picker-DpqkZ7e1.js} +2 -2
  98. package/dist/{model-picker-DPAI_Ae2.js → model-picker-_zh6CfZc.js} +2 -2
  99. package/dist/{models-cli-DdfXroYi.js → models-cli-D8tfyD-y.js} +24 -24
  100. package/dist/{models-cli-D5fOoioI.js → models-cli-aErLhUPp.js} +22 -22
  101. package/dist/{models-config-B0mXwbnd.js → models-config-DjrYhBZX.js} +1 -1
  102. package/dist/{models-BNuVMqEB.js → models-vodK37zz.js} +8 -8
  103. package/dist/{node-cli-2WEdC_wl.js → node-cli-BUFlN1NC.js} +9 -9
  104. package/dist/{node-cli-CnFjINUo.js → node-cli-DvjDG6DY.js} +9 -9
  105. package/dist/{nodes-cli-CVaZrBSK.js → nodes-cli-BSRfBidu.js} +3 -3
  106. package/dist/{nodes-cli-CPDPd-lG.js → nodes-cli-Cxe4GDbb.js} +3 -3
  107. package/dist/{onboard-CHrTg-R0.js → onboard-RBwcsRLX.js} +7 -7
  108. package/dist/{onboard-channels-fgjkUOFq.js → onboard-channels-DTfKco-3.js} +1 -1
  109. package/dist/{onboard-channels-Bk10gQ24.js → onboard-channels-DVwRGIr8.js} +1 -1
  110. package/dist/{onboard-custom-DZ0tCPYA.js → onboard-custom-B9JDxREb.js} +2 -2
  111. package/dist/{onboard-custom-C6Ntk4T6.js → onboard-custom-DzHUFAMR.js} +2 -2
  112. package/dist/{onboard-helpers-CilvN36L.js → onboard-helpers-B8Cx3IOC.js} +2 -2
  113. package/dist/{onboard-helpers-ClA4h5_K.js → onboard-helpers-BII4m6Bg.js} +2 -2
  114. package/dist/{onboard-BzRDv60Y.js → onboard-pZ4uh1rG.js} +7 -7
  115. package/dist/{onboard-remote-CTIJEEno.js → onboard-remote-Dlbf_X-4.js} +5 -5
  116. package/dist/{onboard-remote-BldpXiDu.js → onboard-remote-Jw3zoknX.js} +1 -1
  117. package/dist/{onboard-skills-ADTC4TUU.js → onboard-skills-BII_cah6.js} +1 -1
  118. package/dist/{onboard-skills-o3A3Swd4.js → onboard-skills-Bavc8Y6d.js} +1 -1
  119. package/dist/{onboarding-ClbxBHpB.js → onboarding-Djyshvaw.js} +10 -10
  120. package/dist/{onboarding-BGwkx8NB.js → onboarding-ZEJVYSg3.js} +10 -10
  121. package/dist/{onboarding.finalize-D6zND3C7.js → onboarding.finalize-D10xj022.js} +26 -26
  122. package/dist/{onboarding.finalize-BnIBZwze.js → onboarding.finalize-Djz7joj6.js} +28 -28
  123. package/dist/{onboarding.gateway-config-D5P3DUUI.js → onboarding.gateway-config-BPR3HkR2.js} +4 -4
  124. package/dist/{onboarding.gateway-config-CCyqcBFt.js → onboarding.gateway-config-CsIQ9sAd.js} +4 -4
  125. package/dist/{outbound-send-deps-KBVliaIJ.js → outbound-send-deps-CWt3ExwB.js} +1 -1
  126. package/dist/{pairing-cli-v87bBSWV.js → pairing-cli-BrH39gjt.js} +1 -1
  127. package/dist/{pairing-cli-CCTGZIlT.js → pairing-cli-CraUdeOv.js} +1 -1
  128. package/dist/{pi-embedded-L-sMlPsa.js → pi-embedded-DuflRZe_.js} +13 -13
  129. package/dist/{pi-embedded-helpers-B4IwWdI4.js → pi-embedded-helpers-D0D-YFKs.js} +1 -1
  130. package/dist/{pi-embedded-helpers-WbBv3O-3.js → pi-embedded-helpers-D4ztxySY.js} +1 -1
  131. package/dist/{pi-tools.policy-Cm2mPWWM.js → pi-tools.policy-BF_-fAip.js} +2 -2
  132. package/dist/{pi-tools.policy-DNgBKXTL.js → pi-tools.policy-C_GiT5Ck.js} +2 -2
  133. package/dist/{plugin-registry-CqwECVKt.js → plugin-registry-DHfoCwrG.js} +2 -2
  134. package/dist/{plugin-registry-C46oqC4P.js → plugin-registry-DKcH2JE_.js} +2 -2
  135. package/dist/plugin-sdk/gateway/server-chat.d.ts +47 -0
  136. package/dist/plugin-sdk/index.js +0 -8
  137. package/dist/{plugins-cli-B02JN03S.js → plugins-cli-CWyPtszc.js} +21 -21
  138. package/dist/{plugins-cli-DEpMh_AU.js → plugins-cli-ssYO3M4S.js} +19 -19
  139. package/dist/{program-B8S2KFzC.js → program-BWzfeG-8.js} +27 -27
  140. package/dist/{program-context-DCb3cVEC.js → program-context-xIF2kV0x.js} +38 -38
  141. package/dist/{prompt-select-styled-BJ3NsTmX.js → prompt-select-styled-8b8DmPbN.js} +15 -15
  142. package/dist/{prompt-select-styled-ZdXAuRQQ.js → prompt-select-styled-BUEb8xR1.js} +15 -15
  143. package/dist/{provider-auth-helpers-BBApWDj8.js → provider-auth-helpers-DcNngSF0.js} +2 -2
  144. package/dist/{provider-auth-helpers-BHaaf_C1.js → provider-auth-helpers-vX_S0ALE.js} +2 -2
  145. package/dist/{push-apns-DlP4T9Pl.js → push-apns-DxBDQXtP.js} +1 -1
  146. package/dist/{push-apns-CZG-Sec1.js → push-apns-pjFzQgQX.js} +1 -1
  147. package/dist/{pw-ai-CcThCit8.js → pw-ai-D5XTVAAy.js} +2 -2
  148. package/dist/{pw-ai-BT6WYVgD.js → pw-ai-DFmjn-D8.js} +2 -2
  149. package/dist/{pw-ai-CYE0188Y.js → pw-ai-DGylJ6uj.js} +2 -2
  150. package/dist/{pw-ai-B9riepO_.js → pw-ai-MxiZ-sjO.js} +2 -2
  151. package/dist/{qr-cli-FyVy5rgL.js → qr-cli-X0AMG0ES.js} +1 -1
  152. package/dist/{qr-cli-De3FYKdn.js → qr-cli-ZQCsZbxy.js} +1 -1
  153. package/dist/{register.agent-B4MClVne.js → register.agent-88zeMqb_.js} +30 -30
  154. package/dist/{register.agent-BDaFZQMb.js → register.agent-C9ynHkGB.js} +27 -27
  155. package/dist/{register.configure-vxWz3QF_.js → register.configure-DlS5n4iv.js} +31 -31
  156. package/dist/{register.configure-Bbq6Pfz4.js → register.configure-nIyIBn3w.js} +31 -31
  157. package/dist/{register.maintenance-BBxWlFhs.js → register.maintenance-CnWw_Lyo.js} +29 -29
  158. package/dist/{register.maintenance-CX4sIokB.js → register.maintenance-D7vGx_sc.js} +31 -31
  159. package/dist/{register.message-pVlrdXcl.js → register.message-CMgjp7K9.js} +20 -20
  160. package/dist/{register.message-BdYU9TBN.js → register.message-CRbIEz_z.js} +22 -22
  161. package/dist/{register.onboard-Be8PMN1Z.js → register.onboard-BUBMscso.js} +27 -27
  162. package/dist/{register.onboard-UzFm__iV.js → register.onboard-D3Xe692c.js} +28 -28
  163. package/dist/{register.setup-w0_6rARS.js → register.setup-D7g2F9Ti.js} +28 -28
  164. package/dist/{register.setup-Dq7WlLOL.js → register.setup-DaglHDjt.js} +27 -27
  165. package/dist/{register.status-health-sessions-BoUKcfbS.js → register.status-health-sessions-17TPGabp.js} +26 -26
  166. package/dist/{register.status-health-sessions-Lxz44Abz.js → register.status-health-sessions-DHh9h8xA.js} +24 -24
  167. package/dist/{register.subclis-Cb1ErrVQ.js → register.subclis-B3hydKN2.js} +28 -28
  168. package/dist/{replies-BpJPH2hc.js → replies-BK444q35.js} +1 -1
  169. package/dist/{replies-DSaEOCgv.js → replies-C6QyTmQW.js} +1 -1
  170. package/dist/{replies-RnWQ3nKx.js → replies-CBXhYQKz.js} +1 -1
  171. package/dist/{replies-Cts6obnK.js → replies-Hxxgo5oF.js} +1 -1
  172. package/dist/{routes--kmISnRJ.js → routes-DxrqrN_9.js} +3 -3
  173. package/dist/{routes-BPOSBzut.js → routes-XZvpN4jt.js} +3 -3
  174. package/dist/{rpc-D8VMyohd.js → rpc-ChsvBOac.js} +1 -1
  175. package/dist/{rpc-Bm9M4Wg1.js → rpc-lrBk7i0P.js} +1 -1
  176. package/dist/{run-main-DmC4wWlp.js → run-main-Bt-WQm1x.js} +38 -38
  177. package/dist/{run-reply-turn-CrfZuxxN.js → run-reply-turn-BFPeqYgl.js} +1 -1
  178. package/dist/{sandbox-CKUsc_dq.js → sandbox-Cy3Vg-tx.js} +5 -5
  179. package/dist/{sandbox-iRNEuFgO.js → sandbox-D0BDTW6J.js} +5 -5
  180. package/dist/{sandbox-cli-EnXxgz9y.js → sandbox-cli-D7S-canm.js} +6 -6
  181. package/dist/{sandbox-cli-DxaSKb_E.js → sandbox-cli-DZljTg7d.js} +6 -6
  182. package/dist/{security-cli-3qifLVSV.js → security-cli-Bjhh88X6.js} +9 -9
  183. package/dist/{security-cli-CzIqX7ZY.js → security-cli-BuKw0-_8.js} +9 -9
  184. package/dist/{send-DSoVd8gQ.js → send-CcZ9i_LC.js} +1 -1
  185. package/dist/{send-BOhR5xu0.js → send-CpGIU58f.js} +1 -1
  186. package/dist/{send-DRmWH4n5.js → send-Ct2sWmDQ.js} +1 -1
  187. package/dist/{server-context-bi7CcxfQ.js → server-context-B9wEJH9W.js} +5 -5
  188. package/dist/{server-context-BmxBVIv7.js → server-context-CIMejxOx.js} +5 -5
  189. package/dist/{server-methods-C97G9dYe.js → server-methods-BBZIZzXL.js} +376 -20
  190. package/dist/{server-methods-DFt60s1H.js → server-methods-DaSFpTl-.js} +375 -19
  191. package/dist/{server-node-events-DZxA-yXb.js → server-node-events-BQEpHt9X.js} +23 -23
  192. package/dist/{server-node-events-D11AUIyh.js → server-node-events-IDt8hC2u.js} +21 -21
  193. package/dist/{session-utils-CrnY8rsC.js → session-utils-Cz8JJaAg.js} +3 -3
  194. package/dist/{sessions-CrQE7gq3.js → sessions-BXbrIigY.js} +1 -1
  195. package/dist/{sessions-LI9mFmYJ.js → sessions-CkXuHlJX.js} +1 -1
  196. package/dist/{sessions-SokOLKeJ.js → sessions-D6DTsw1W.js} +3 -3
  197. package/dist/{shared-7ryC0qEG.js → shared-BOTWXPOB.js} +1 -1
  198. package/dist/{shared-BLmd-eho.js → shared-p8Maztrs.js} +1 -1
  199. package/dist/{skills-cli-Ba5dqnlJ.js → skills-cli-B-cFIUJz.js} +1 -1
  200. package/dist/{skills-cli-DjB_y1v8.js → skills-cli-CmfEiLAw.js} +1 -1
  201. package/dist/{ssrf-BgA_8lbe.js → ssrf-Bw8oiPrP.js} +0 -8
  202. package/dist/{ssrf-CY_-n5zv.js → ssrf-D_Vm7pW2.js} +0 -8
  203. package/dist/{status-BIFL3qPs.js → status-6xghwlf1.js} +2 -2
  204. package/dist/{status-VrUpaIhD.js → status-C1mhNRbD.js} +9 -9
  205. package/dist/{status-er3ceIYD.js → status-DRVnRoTo.js} +10 -10
  206. package/dist/{status-H7a1x6Bo.js → status-DfZj0OL9.js} +2 -2
  207. package/dist/{status.update-BkqkfjdZ.js → status.update-BbUgxGoZ.js} +1 -1
  208. package/dist/{status.update-pKELdmOb.js → status.update-D2JhbGJA.js} +1 -1
  209. package/dist/{subagent-registry-DNcSxvl3.js → subagent-registry-Clebo068.js} +22 -22
  210. package/dist/{synthesis-CPZoVKlB.js → synthesis-CTniyTVP.js} +7 -7
  211. package/dist/{synthesis-DA7kfAUJ.js → synthesis-DNlJetcg.js} +6 -6
  212. package/dist/{synthesis-D9CyMOsH.js → synthesis-DmO9gicE.js} +18 -18
  213. package/dist/{synthesis-dF7N0Wom.js → synthesis-slPZ4fBh.js} +20 -20
  214. package/dist/{system-cli-BlFmLLLL.js → system-cli-C-ZdVxHQ.js} +3 -3
  215. package/dist/{system-cli-DJKNNfnj.js → system-cli-C2XPvZM1.js} +3 -3
  216. package/dist/{systemd-hints-DuKMWx63.js → systemd-hints-CTf6Uif8.js} +1 -1
  217. package/dist/{systemd-hints-YEalUHIV.js → systemd-hints-DtDxA-Zu.js} +1 -1
  218. package/dist/{tui-BcNRiyl9.js → tui-DtpuuaO4.js} +4 -4
  219. package/dist/{tui-DEGjDTCT.js → tui-IQDR3lwq.js} +4 -4
  220. package/dist/{tui-cli-D7CPaWwk.js → tui-cli-ChMTt69J.js} +9 -9
  221. package/dist/{tui-cli-CvdJmxYe.js → tui-cli-D7LRzH2F.js} +9 -9
  222. package/dist/{unified-runner-BdN9pHa8.js → unified-runner-B4vj4_WA.js} +11 -11
  223. package/dist/{unified-runner-BX17do1W.js → unified-runner-sIP8uml4.js} +20 -20
  224. package/dist/{update-cli-Bg3c9ORr.js → update-cli-DG6iVa21.js} +34 -34
  225. package/dist/{update-cli-DZtbV25O.js → update-cli-DldGC3QO.js} +32 -32
  226. package/dist/{update-runner-CwPl1B2f.js → update-runner-BrTc6tK0.js} +1 -1
  227. package/dist/{update-runner-BrVkeUcH.js → update-runner-D5HXwUeR.js} +1 -1
  228. package/dist/{webhooks-cli-BhV2FyAB.js → webhooks-cli-B-pptn0k.js} +1 -1
  229. package/dist/{webhooks-cli-B9_1T4Gi.js → webhooks-cli-C2eWOEg3.js} +1 -1
  230. package/dist/{with-timeout-D1RTXHZO.js → with-timeout-Bi143Knd.js} +1 -1
  231. package/dist/{with-timeout-DNvX8V3I.js → with-timeout-DFeXJy0t.js} +1 -1
  232. package/package.json +1 -1
@@ -1,52 +1,53 @@
1
1
  import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
2
2
  import { g as resolveUserPath, r as clamp, w as isPlainObject, z as getResolvedLoggerSettings } from "./utils-BwhNP0do.js";
3
- import { $ as normalizeCronJobCreate, $n as resolveTtsProviderOrder, A as loadSessionEntry, An as clearSessionQueues, Bt as resolveSendPolicy, C as listTasksInWorkdir, Cn as listSubagentRunsForRequester, D as listAgentsForGateway, Dt as loadProviderUsageSummary, F as ensureOutboundSessionEntry, Hn as resolveUserTimezone, I as resolveOutboundSessionRoute, Jn as isTtsProviderConfigured, Jt as parseVerboseOverride, K as formatDoctorNonInteractiveHint, Kn as getTtsProvider, Kt as applyModelOverrideToSessionEntry, M as resolveGatewaySessionStoreTarget, Mn as abortEmbeddedPiRun, N as resolveSessionModelRef, O as listSessionsFromStore, Pn as waitForEmbeddedPiRunEnd, Qn as resolveTtsPrefsPath, Sn as listDescendantRunsForRequester, T as canonicalizeSpawnedByForAgent, Tn as resolveAgentTimeoutMs, V as normalizePollInput, Xn as resolveTtsAutoMode, Yn as resolveTtsApiKey, Z as writeRestartSentinel, Zn as resolveTtsConfig, _n as isAbortTrigger, _t as applyBrowserProxyPaths, an as prepareAgentRun, b as buildAgentTurnParams, er as setTtsEnabled, et as normalizeCronJobPatch, f as getChannelActivity, g as buildGlassUiProfile, gn as formatZonedTimestamp, ir as OPENAI_TTS_VOICES, j as pruneLegacyStoreKeys, k as loadCombinedSessionStoreForGateway, m as createReplyDispatcher, mn as normalizeGroupActivation, nr as textToSpeech, on as enqueueSystemEvent, pn as BARE_SESSION_RESET_PROMPT, qn as isTtsEnabled, qt as applyVerboseOverride, rr as OPENAI_TTS_MODELS, s as loadSymiPlugins, sn as isSystemEventContextChanged, tr as setTtsProvider, vn as stopSubagentsForRequester, vr as onAgentEvent, vt as persistBrowserProxyFiles, wt as scheduleGatewaySigusr1Restart, x as prepareReplyTurn, y as runUnifiedTurn, yr as registerAgentRunContext, z as resolveOutboundTarget, zt as normalizeSendPolicy } from "./unified-runner-BX17do1W.js";
3
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-C8-rnk4H.js";
4
+ import { $ as normalizeCronJobCreate, $n as resolveTtsProviderOrder, A as loadSessionEntry, An as clearSessionQueues, Bt as resolveSendPolicy, C as listTasksInWorkdir, Cn as listSubagentRunsForRequester, D as listAgentsForGateway, Dr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Dt as loadProviderUsageSummary, F as ensureOutboundSessionEntry, Hn as resolveUserTimezone, I as resolveOutboundSessionRoute, Jn as isTtsProviderConfigured, Jt as parseVerboseOverride, K as formatDoctorNonInteractiveHint, Kn as getTtsProvider, Kt as applyModelOverrideToSessionEntry, M as resolveGatewaySessionStoreTarget, Mn as abortEmbeddedPiRun, N as resolveSessionModelRef, O as listSessionsFromStore, Pn as waitForEmbeddedPiRunEnd, Qn as resolveTtsPrefsPath, Sn as listDescendantRunsForRequester, T as canonicalizeSpawnedByForAgent, Tn as resolveAgentTimeoutMs, V as normalizePollInput, Xn as resolveTtsAutoMode, Yn as resolveTtsApiKey, Z as writeRestartSentinel, Zn as resolveTtsConfig, _n as isAbortTrigger, _r as getAgentRunContext, _t as applyBrowserProxyPaths, an as prepareAgentRun, b as buildAgentTurnParams, bn as countActiveRunsForSession, br as classifyOutboundMessage, er as setTtsEnabled, et as normalizeCronJobPatch, f as getChannelActivity, g as buildGlassUiProfile, gn as formatZonedTimestamp, ir as OPENAI_TTS_VOICES, j as pruneLegacyStoreKeys, k as loadCombinedSessionStoreForGateway, m as createReplyDispatcher, mn as normalizeGroupActivation, nr as textToSpeech, on as enqueueSystemEvent, pn as BARE_SESSION_RESET_PROMPT, qn as isTtsEnabled, qt as applyVerboseOverride, rr as OPENAI_TTS_MODELS, s as loadSymiPlugins, sn as isSystemEventContextChanged, tr as setTtsProvider, vn as stopSubagentsForRequester, vr as onAgentEvent, vt as persistBrowserProxyFiles, wt as scheduleGatewaySigusr1Restart, x as prepareReplyTurn, y as runUnifiedTurn, yr as registerAgentRunContext, z as resolveOutboundTarget, zt as normalizeSendPolicy } from "./unified-runner-sIP8uml4.js";
4
5
  import { C as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS, x as createInternalHookEvent } from "./registry-DVCe2mTM.js";
5
6
  import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-C22TrusW.js";
6
7
  import { Et as normalizeSecretInput, G as resolveSubagentConfiguredModelSelection, H as resolveDefaultModelForAgent, q as resolveThinkingDefault, z as resolveAllowedModelRef } from "./auth-profiles-BDYmaplg.js";
7
8
  import { a as classifySessionKeyShape, b as isSubagentSessionKey, c as resolveAgentIdFromSessionKey, o as normalizeAgentId, p as DEFAULT_ACCOUNT_ID, t as DEFAULT_AGENT_ID, x as parseAgentSessionKey } from "./session-key-DUSb7CCb.js";
8
9
  import { t as resolveSymiPackageRoot } from "./symi-root-7ei1lwo0.js";
9
10
  import { C as ensureAgentWorkspace, S as DEFAULT_USER_FILENAME, T as isWorkspaceOnboardingCompleted, _ as DEFAULT_MEMORY_ALT_FILENAME, b as DEFAULT_SYMIPULSE_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, n as listAgentIds, p as DEFAULT_AGENTS_FILENAME, t as listAgentEntries, v as DEFAULT_MEMORY_FILENAME, x as DEFAULT_TOOLS_FILENAME, y as DEFAULT_SYMICORE_FILENAME } from "./agent-scope-DIQXj3wd.js";
10
- import { N as VERSION, P as resolveRuntimeServiceVersion, T as applyLegacyMigrations, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, p as sensitive, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins, w as applyMergePatch } from "./config-CYwm_UYz.js";
11
+ import { N as VERSION, P as resolveRuntimeServiceVersion, T as applyLegacyMigrations, a as parseConfigJson5, c as resolveConfigSnapshotHash, d as SymiSchema, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, p as sensitive, s as readConfigFileSnapshotForWrite, u as validateConfigObjectWithPlugins, w as applyMergePatch } from "./config-scZRRn2T.js";
11
12
  import { c as pickPrimaryLanIPv4 } from "./ws-FAiTi9-v.js";
12
13
  import { i as loadWorkspaceSkillEntries } from "./skills-DmsZnJ3l.js";
13
14
  import { t as movePathToTrash } from "./trash-k7vYIza9.js";
14
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-LI9mFmYJ.js";
15
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, G as snapshotSessionOrigin, H as resolveMainSessionKey, O as stripEnvelopeFromMessages, S as archiveSessionTranscripts, T as readSessionPreviewItemsFromTranscript, U as resolveMainSessionKeyFromConfig, V as resolveExplicitAgentSessionKey, d as updateSessionStore, o as loadSessionStore, t as extractDeliveryInfo, w as readSessionMessages, x as archiveFileOnDisk, y as normalizeSessionDeliveryFields } from "./sessions-CkXuHlJX.js";
15
16
  import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessageChannel, l as normalizeMessageChannel, n as isDeliverableMessageChannel, t as INTERNAL_MESSAGE_CHANNEL } from "./message-channel-BJKlrpWl.js";
16
17
  import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CVy7TEFI.js";
17
18
  import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CdGa1jlU.js";
18
19
  import { i as normalizeInputProvenance } from "./input-provenance-iBlnbS1d.js";
19
- import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-BTh3b5vY.js";
20
- import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CCNTT73z.js";
20
+ import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-BTh3b5vY.js";
21
+ import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CBLpHLj6.js";
21
22
  import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-Dsr-Ma1K.js";
22
- import { n as createBrowserRouteDispatcher } from "./with-timeout-D1RTXHZO.js";
23
+ import { n as createBrowserRouteDispatcher } from "./with-timeout-Bi143Knd.js";
23
24
  import { a as resolveAgentIdentity, t as createReplyPrefixOptions } from "./reply-prefix-DdYC-lZI.js";
24
- import { r as getMemorySearchManager } from "./memory-cli-stuQ5Kfc.js";
25
+ import { r as getMemorySearchManager } from "./memory-cli-WT8ROETg.js";
25
26
  import { $ as validateNodePairRejectParams, A as validateCronStatusParams, At as validateWebLoginWaitParams, B as validateExecApprovalsGetParams, C as validateConfigSetParams, Ct as validateSkillsUpdateParams, D as validateCronRemoveParams, Dt as validateUpdateRunParams, E as validateCronListParams, Et as validateTasksListParams, F as validateDevicePairRemoveParams, G as validateModelsListParams, Gt as rejectDevicePairing, H as validateExecApprovalsNodeSetParams, I as validateDeviceTokenRevokeParams, It as ErrorCodes, J as validateNodeInvokeParams, Jt as revokeDeviceToken, K as validateNodeDescribeParams, Kt as removePairedDevice, L as validateDeviceTokenRotateParams, Lt as errorShape, M as validateDevicePairApproveParams, Mt as validateWizardNextParams, N as validateDevicePairListParams, Nt as validateWizardStartParams, O as validateCronRunParams, Ot as validateWakeParams, P as validateDevicePairRejectParams, Pt as validateWizardStatusParams, Q as validateNodePairListParams, S as validateConfigSchemaParams, St as validateSkillsStatusParams, T as validateCronAddParams, Tt as validateTalkModeParams, U as validateExecApprovalsSetParams, V as validateExecApprovalsNodeGetParams, Vt as approveDevicePairing, W as validateLogsTailParams, Wt as listDevicePairing, X as validateNodeListParams, Xt as summarizeDeviceTokens, Y as validateNodeInvokeResultParams, Yt as rotateDeviceToken, Z as validateNodePairApproveParams, _ as validateChatInjectParams, _t as validateSessionsRestoreParams, a as validateAgentWaitParams, b as validateConfigGetParams, bt as validateSkillsBinsParams, c as validateAgentsFilesGetParams, ct as validateSessionsCompactParams, d as validateAgentsListParams, dt as validateSessionsFavoriteFileParams, et as validateNodePairRequestParams, f as validateAgentsUpdateParams, ft as validateSessionsListParams, g as validateChatHistoryParams, gt as validateSessionsResolveParams, h as validateChatAbortParams, ht as validateSessionsResetParams, i as validateAgentParams, it as validatePushTestParams, j as validateCronUpdateParams, jt as validateWizardCancelParams, k as validateCronRunsParams, kt as validateWebLoginStartParams, l as validateAgentsFilesListParams, lt as validateSessionsDeleteFileParams, m as validateChannelsStatusParams, mt as validateSessionsPreviewParams, n as formatValidationErrors, nt as validateNodeRenameParams, o as validateAgentsCreateParams, ot as validateSendParams, p as validateChannelsLogoutParams, pt as validateSessionsPatchParams, q as validateNodeEventParams, r as validateAgentIdentityParams, rt as validatePollParams, s as validateAgentsDeleteParams, st as validateSessionsAdoptFileParams, tt as validateNodePairVerifyParams, u as validateAgentsFilesSetParams, ut as validateSessionsDeleteParams, v as validateChatSendParams, vt as validateSessionsSearchParams, wt as validateTalkConfigParams, x as validateConfigPatchParams, xt as validateSkillsInstallParams, y as validateConfigApplyParams, yt as validateSessionsUsageParams, zt as parseSessionLabel } from "./client-XT_SG-7E.js";
26
- import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-Dlm86eg6.js";
27
+ import { l as authorizeOperatorScopesForMethod, s as ADMIN_SCOPE$2, u as isNodeRoleMethod } from "./call-Ddoic0fC.js";
27
28
  import { c as writeJsonAtomic, o as createAsyncLock, s as readJsonFile } from "./pairing-token-BGsEdvN6.js";
28
29
  import { _ as requestNodePairing, g as renamePairedNode, h as rejectNodePairing, m as listNodePairing, o as getRemoteSkillEligibility, p as approveNodePairing, y as verifyNodeToken } from "./skill-commands-BbnAtJK6.js";
29
30
  import { t as listAgentWorkspaceDirs } from "./workspace-dirs-ogHdco2j.js";
30
31
  import { a as mergeExecApprovalsSocketDefaults, c as readExecApprovalsSnapshot, p as saveExecApprovals, r as ensureExecApprovals, s as normalizeExecApprovals } from "./exec-approvals-ahI4v3Aw.js";
31
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-C6SdUJGs.js";
32
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-CDWcS4TE.js";
32
33
  import { i as parseAbsoluteTimeMs } from "./stagger-C2kEx8j9.js";
33
- import { n as createOutboundSendDeps } from "./deps-CAJEf96g.js";
34
+ import { n as createOutboundSendDeps } from "./deps-MXbZhSGc.js";
34
35
  import { t as buildChannelUiCatalog } from "./catalog-ByDe_tgJ.js";
35
36
  import { t as buildWorkspaceSkillStatus } from "./skills-status-DW5xDDyW.js";
36
37
  import { t as WizardCancelledError } from "./prompts-BB5n00h-.js";
37
38
  import { t as resolveChannelDefaultAccountId } from "./helpers-CJNUfN8l.js";
38
39
  import { t as buildChannelAccountSnapshot } from "./status-DSFXGZ2N.js";
39
- import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-ClA4h5_K.js";
40
- import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CCWHhR0Z.js";
41
- import { n as getStatusSummary } from "./status-VrUpaIhD.js";
42
- import { f as abortHeartbeatRunForSession, s as setHeartbeatsEnabled, u as getLastHeartbeatEvent } from "./health-OGl_XbRn.js";
40
+ import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-BII4m6Bg.js";
41
+ import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-DK86QmIj.js";
42
+ import { n as getStatusSummary } from "./status-C1mhNRbD.js";
43
+ import { f as abortHeartbeatRunForSession, l as resolveHeartbeatVisibility, s as setHeartbeatsEnabled, u as getLastHeartbeatEvent } from "./health-BtU-6tKH.js";
43
44
  import { m as normalizeUpdateChannel } from "./update-check-g7MoURZH.js";
44
- import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DlP4T9Pl.js";
45
- import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DKz-M9N_.js";
45
+ import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DxBDQXtP.js";
46
+ import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DRRQgy58.js";
46
47
  import { a as pruneAgentConfig, i as loadAgentIdentity, r as findAgentEntryIndex, t as applyAgentConfig } from "./agents.config-BE_DKBeX.js";
47
48
  import { t as resolveSystemRunCommand } from "./system-run-command-CkyUAE3i.js";
48
49
  import { t as installSkill } from "./skills-install-BGhQLiB7.js";
49
- import { t as runGatewayUpdate } from "./update-runner-BrVkeUcH.js";
50
+ import { t as runGatewayUpdate } from "./update-runner-D5HXwUeR.js";
50
51
  import crypto, { randomUUID } from "node:crypto";
51
52
  import * as fs$2 from "node:fs";
52
53
  import fs from "node:fs";
@@ -405,6 +406,355 @@ function startGatewayConfigReloader(opts) {
405
406
  } };
406
407
  }
407
408
 
409
+ //#endregion
410
+ //#region src/gateway/server-chat.ts
411
+ function resolveHeartbeatAckMaxChars() {
412
+ try {
413
+ const cfg = loadConfig();
414
+ return Math.max(0, cfg.agents?.defaults?.heartbeat?.ackMaxChars ?? DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
415
+ } catch {
416
+ return DEFAULT_HEARTBEAT_ACK_MAX_CHARS;
417
+ }
418
+ }
419
+ function resolveHeartbeatContext(runId, sourceRunId) {
420
+ const primary = getAgentRunContext(runId);
421
+ if (primary?.isHeartbeat) return primary;
422
+ if (sourceRunId && sourceRunId !== runId) {
423
+ const source = getAgentRunContext(sourceRunId);
424
+ if (source?.isHeartbeat) return source;
425
+ }
426
+ return primary;
427
+ }
428
+ /**
429
+ * Check if heartbeat ACK/noise should be hidden from interactive chat surfaces.
430
+ */
431
+ function shouldHideHeartbeatChatOutput(runId, sourceRunId) {
432
+ if (!resolveHeartbeatContext(runId, sourceRunId)?.isHeartbeat) return false;
433
+ try {
434
+ return !resolveHeartbeatVisibility({
435
+ cfg: loadConfig(),
436
+ channel: "webchat"
437
+ }).showOk;
438
+ } catch {
439
+ return true;
440
+ }
441
+ }
442
+ function createChatRunRegistry() {
443
+ const chatRunSessions = /* @__PURE__ */ new Map();
444
+ const add = (sessionId, entry) => {
445
+ const queue = chatRunSessions.get(sessionId);
446
+ if (queue) queue.push(entry);
447
+ else chatRunSessions.set(sessionId, [entry]);
448
+ };
449
+ const peek = (sessionId) => chatRunSessions.get(sessionId)?.[0];
450
+ const shift = (sessionId) => {
451
+ const queue = chatRunSessions.get(sessionId);
452
+ if (!queue || queue.length === 0) return;
453
+ const entry = queue.shift();
454
+ if (!queue.length) chatRunSessions.delete(sessionId);
455
+ return entry;
456
+ };
457
+ const remove = (sessionId, clientRunId, sessionKey) => {
458
+ const queue = chatRunSessions.get(sessionId);
459
+ if (!queue || queue.length === 0) return;
460
+ const idx = queue.findIndex((entry) => entry.clientRunId === clientRunId && (sessionKey ? entry.sessionKey === sessionKey : true));
461
+ if (idx < 0) return;
462
+ const [entry] = queue.splice(idx, 1);
463
+ if (!queue.length) chatRunSessions.delete(sessionId);
464
+ return entry;
465
+ };
466
+ const clear = () => {
467
+ chatRunSessions.clear();
468
+ };
469
+ return {
470
+ add,
471
+ peek,
472
+ shift,
473
+ remove,
474
+ clear
475
+ };
476
+ }
477
+ function createChatRunState() {
478
+ const registry = createChatRunRegistry();
479
+ const buffers = /* @__PURE__ */ new Map();
480
+ const deltaSentAt = /* @__PURE__ */ new Map();
481
+ const pendingDeltaText = /* @__PURE__ */ new Map();
482
+ const abortedRuns = /* @__PURE__ */ new Map();
483
+ const clear = () => {
484
+ registry.clear();
485
+ buffers.clear();
486
+ deltaSentAt.clear();
487
+ pendingDeltaText.clear();
488
+ abortedRuns.clear();
489
+ };
490
+ return {
491
+ registry,
492
+ buffers,
493
+ deltaSentAt,
494
+ pendingDeltaText,
495
+ abortedRuns,
496
+ clear
497
+ };
498
+ }
499
+ const TOOL_EVENT_RECIPIENT_TTL_MS = 600 * 1e3;
500
+ const TOOL_EVENT_RECIPIENT_FINAL_GRACE_MS = 30 * 1e3;
501
+ function createToolEventRecipientRegistry() {
502
+ const recipients = /* @__PURE__ */ new Map();
503
+ const prune = () => {
504
+ if (recipients.size === 0) return;
505
+ const now = Date.now();
506
+ for (const [runId, entry] of recipients) if (now >= (entry.finalizedAt ? entry.finalizedAt + TOOL_EVENT_RECIPIENT_FINAL_GRACE_MS : entry.updatedAt + TOOL_EVENT_RECIPIENT_TTL_MS)) recipients.delete(runId);
507
+ };
508
+ const add = (runId, connId) => {
509
+ if (!runId || !connId) return;
510
+ const now = Date.now();
511
+ const existing = recipients.get(runId);
512
+ if (existing) {
513
+ existing.connIds.add(connId);
514
+ existing.updatedAt = now;
515
+ } else recipients.set(runId, {
516
+ connIds: new Set([connId]),
517
+ updatedAt: now
518
+ });
519
+ prune();
520
+ };
521
+ const get = (runId) => {
522
+ const entry = recipients.get(runId);
523
+ if (!entry) return;
524
+ entry.updatedAt = Date.now();
525
+ prune();
526
+ return entry.connIds;
527
+ };
528
+ const markFinal = (runId) => {
529
+ const entry = recipients.get(runId);
530
+ if (!entry) return;
531
+ entry.finalizedAt = Date.now();
532
+ prune();
533
+ };
534
+ return {
535
+ add,
536
+ get,
537
+ markFinal
538
+ };
539
+ }
540
+ function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSession, agentRunSeq, chatRunState, resolveSessionKeyForRun, clearAgentRunContext, toolEventRecipients }) {
541
+ const emitChatDelta = (sessionKey, clientRunId, sourceRunId, seq, text) => {
542
+ if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return;
543
+ const prev = chatRunState.buffers.get(clientRunId) ?? "";
544
+ chatRunState.buffers.set(clientRunId, prev + text);
545
+ if (shouldHideHeartbeatChatOutput(clientRunId, sourceRunId)) return;
546
+ const now = Date.now();
547
+ if (now - (chatRunState.deltaSentAt.get(clientRunId) ?? 0) < 150) {
548
+ chatRunState.pendingDeltaText.set(clientRunId, (chatRunState.pendingDeltaText.get(clientRunId) ?? "") + text);
549
+ return;
550
+ }
551
+ const buffered = chatRunState.pendingDeltaText.get(clientRunId) ?? "";
552
+ chatRunState.pendingDeltaText.delete(clientRunId);
553
+ const fullText = buffered + text;
554
+ chatRunState.deltaSentAt.set(clientRunId, now);
555
+ const payload = {
556
+ runId: clientRunId,
557
+ sessionKey,
558
+ seq,
559
+ state: "delta",
560
+ ...resolveHeartbeatContext(clientRunId, sourceRunId)?.isHeartbeat ? { isHeartbeat: true } : {},
561
+ message: {
562
+ role: "assistant",
563
+ content: [{
564
+ type: "text",
565
+ text: fullText
566
+ }],
567
+ timestamp: now
568
+ }
569
+ };
570
+ broadcast("chat", payload, { dropIfSlow: true });
571
+ nodeSendToSession(sessionKey, "chat", payload);
572
+ };
573
+ const emitChatFinal = (sessionKey, clientRunId, sourceRunId, seq, jobState, error) => {
574
+ const remainingDelta = chatRunState.pendingDeltaText.get(clientRunId);
575
+ if (remainingDelta && !shouldHideHeartbeatChatOutput(clientRunId, sourceRunId)) {
576
+ const flushPayload = {
577
+ runId: clientRunId,
578
+ sessionKey,
579
+ seq,
580
+ state: "delta",
581
+ ...resolveHeartbeatContext(clientRunId, sourceRunId)?.isHeartbeat ? { isHeartbeat: true } : {},
582
+ message: {
583
+ role: "assistant",
584
+ content: [{
585
+ type: "text",
586
+ text: remainingDelta
587
+ }],
588
+ timestamp: Date.now()
589
+ }
590
+ };
591
+ broadcast("chat", flushPayload);
592
+ nodeSendToSession(sessionKey, "chat", flushPayload);
593
+ }
594
+ chatRunState.pendingDeltaText.delete(clientRunId);
595
+ const bufferedText = chatRunState.buffers.get(clientRunId)?.trim() ?? "";
596
+ const heartbeatCtx = resolveHeartbeatContext(clientRunId, sourceRunId);
597
+ const isHeartbeatRun = !!heartbeatCtx?.isHeartbeat;
598
+ const heartbeatHidden = isHeartbeatRun && shouldHideHeartbeatChatOutput(clientRunId, sourceRunId);
599
+ const filterResult = isHeartbeatRun && !heartbeatHidden ? {
600
+ action: "deliver",
601
+ output: bufferedText,
602
+ reason: "deliver"
603
+ } : classifyOutboundMessage(bufferedText, {
604
+ isHeartbeat: heartbeatHidden,
605
+ heartbeatAckMaxChars: resolveHeartbeatAckMaxChars()
606
+ });
607
+ const text = filterResult.output.trim();
608
+ const shouldSuppressSilent = filterResult.action === "drop";
609
+ chatRunState.buffers.delete(clientRunId);
610
+ chatRunState.deltaSentAt.delete(clientRunId);
611
+ if (jobState === "done") {
612
+ const payload = {
613
+ runId: clientRunId,
614
+ sessionKey,
615
+ seq,
616
+ state: "final",
617
+ activeSubagentCount: countActiveRunsForSession(sessionKey),
618
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
619
+ message: text && !shouldSuppressSilent ? {
620
+ role: "assistant",
621
+ content: [{
622
+ type: "text",
623
+ text
624
+ }],
625
+ timestamp: Date.now()
626
+ } : void 0
627
+ };
628
+ broadcast("chat", payload);
629
+ nodeSendToSession(sessionKey, "chat", payload);
630
+ return;
631
+ }
632
+ const payload = {
633
+ runId: clientRunId,
634
+ sessionKey,
635
+ seq,
636
+ state: "error",
637
+ errorMessage: error ? formatForLog(error) : void 0,
638
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {}
639
+ };
640
+ broadcast("chat", payload);
641
+ nodeSendToSession(sessionKey, "chat", payload);
642
+ };
643
+ const resolveToolVerboseLevel = (runId, sessionKey) => {
644
+ const runVerbose = normalizeVerboseLevel(getAgentRunContext(runId)?.verboseLevel);
645
+ if (runVerbose) return runVerbose;
646
+ if (!sessionKey) return "off";
647
+ try {
648
+ const { cfg, entry } = loadSessionEntry(sessionKey);
649
+ const sessionVerbose = normalizeVerboseLevel(entry?.verboseLevel);
650
+ if (sessionVerbose) return sessionVerbose;
651
+ return normalizeVerboseLevel(cfg.agents?.defaults?.verboseDefault) ?? "off";
652
+ } catch {
653
+ return "off";
654
+ }
655
+ };
656
+ return (evt) => {
657
+ const chatLink = chatRunState.registry.peek(evt.runId);
658
+ const eventSessionKey = typeof evt.sessionKey === "string" && evt.sessionKey.trim() ? evt.sessionKey : void 0;
659
+ const sessionKey = chatLink?.sessionKey ?? eventSessionKey ?? resolveSessionKeyForRun(evt.runId);
660
+ if (sessionKey?.startsWith("temp:")) return;
661
+ const clientRunId = chatLink?.clientRunId ?? evt.runId;
662
+ const eventRunId = chatLink?.clientRunId ?? evt.runId;
663
+ const eventForClients = chatLink ? {
664
+ ...evt,
665
+ runId: eventRunId
666
+ } : evt;
667
+ const isAborted = chatRunState.abortedRuns.has(clientRunId) || chatRunState.abortedRuns.has(evt.runId);
668
+ const heartbeatAgentCtx = resolveHeartbeatContext(clientRunId, evt.runId);
669
+ const agentPayload = {
670
+ ...eventForClients,
671
+ ...sessionKey ? { sessionKey } : {},
672
+ ...heartbeatAgentCtx?.isHeartbeat ? { isHeartbeat: true } : {}
673
+ };
674
+ const last = agentRunSeq.get(evt.runId) ?? 0;
675
+ const isToolEvent = evt.stream === "tool";
676
+ const toolVerbose = isToolEvent ? resolveToolVerboseLevel(evt.runId, sessionKey) : "off";
677
+ const toolPayload = isToolEvent && toolVerbose !== "full" ? (() => {
678
+ const data = evt.data ? { ...evt.data } : {};
679
+ delete data.result;
680
+ delete data.partialResult;
681
+ return sessionKey ? {
682
+ ...eventForClients,
683
+ sessionKey,
684
+ data
685
+ } : {
686
+ ...eventForClients,
687
+ data
688
+ };
689
+ })() : agentPayload;
690
+ if (evt.seq !== last + 1) broadcast("agent", {
691
+ runId: eventRunId,
692
+ stream: "error",
693
+ ts: Date.now(),
694
+ sessionKey,
695
+ ...heartbeatAgentCtx?.isHeartbeat ? { isHeartbeat: true } : {},
696
+ data: {
697
+ reason: "seq gap",
698
+ expected: last + 1,
699
+ received: evt.seq
700
+ }
701
+ });
702
+ agentRunSeq.set(evt.runId, evt.seq);
703
+ if (isToolEvent) {
704
+ const recipients = toolEventRecipients.get(evt.runId);
705
+ if (recipients && recipients.size > 0) broadcastToConnIds("agent", toolPayload, recipients);
706
+ } else broadcast("agent", agentPayload);
707
+ const lifecyclePhase = evt.stream === "lifecycle" && typeof evt.data?.phase === "string" ? evt.data.phase : null;
708
+ if (lifecyclePhase === "start" && sessionKey && !isAborted) {
709
+ if (!resolveHeartbeatContext(clientRunId, evt.runId)?.isHeartbeat) broadcast("chat", {
710
+ runId: clientRunId,
711
+ sessionKey,
712
+ seq: evt.seq,
713
+ state: "thinking"
714
+ });
715
+ }
716
+ if (lifecyclePhase && sessionKey && sessionKey.includes(":subagent:")) {
717
+ if (lifecyclePhase === "start") broadcast("subagent", {
718
+ phase: "started",
719
+ sessionKey,
720
+ runId: clientRunId
721
+ });
722
+ else if (lifecyclePhase === "end" || lifecyclePhase === "error") broadcast("subagent", {
723
+ phase: "completed",
724
+ sessionKey,
725
+ runId: clientRunId
726
+ });
727
+ }
728
+ if (sessionKey) {
729
+ if (!isToolEvent || toolVerbose !== "off") nodeSendToSession(sessionKey, "agent", isToolEvent ? toolPayload : agentPayload);
730
+ if (!isAborted && evt.stream === "assistant" && typeof evt.data?.text === "string") {
731
+ const deltaText = typeof evt.data?.delta === "string" && evt.data.delta ? evt.data.delta : evt.data.text;
732
+ emitChatDelta(sessionKey, clientRunId, evt.runId, evt.seq, deltaText);
733
+ } else if (!isAborted && (lifecyclePhase === "end" || lifecyclePhase === "error")) if (chatLink) {
734
+ const finished = chatRunState.registry.shift(evt.runId);
735
+ if (!finished) {
736
+ clearAgentRunContext(evt.runId);
737
+ return;
738
+ }
739
+ emitChatFinal(finished.sessionKey, finished.clientRunId, evt.runId, evt.seq, lifecyclePhase === "error" ? "error" : "done", evt.data?.error);
740
+ } else emitChatFinal(sessionKey, eventRunId, evt.runId, evt.seq, lifecyclePhase === "error" ? "error" : "done", evt.data?.error);
741
+ else if (isAborted && (lifecyclePhase === "end" || lifecyclePhase === "error")) {
742
+ chatRunState.abortedRuns.delete(clientRunId);
743
+ chatRunState.abortedRuns.delete(evt.runId);
744
+ chatRunState.buffers.delete(clientRunId);
745
+ chatRunState.deltaSentAt.delete(clientRunId);
746
+ if (chatLink) chatRunState.registry.remove(evt.runId, clientRunId, sessionKey);
747
+ }
748
+ }
749
+ if (lifecyclePhase === "end" || lifecyclePhase === "error") {
750
+ toolEventRecipients.markFinal(evt.runId);
751
+ clearAgentRunContext(evt.runId);
752
+ agentRunSeq.delete(evt.runId);
753
+ agentRunSeq.delete(clientRunId);
754
+ }
755
+ };
756
+ }
757
+
408
758
  //#endregion
409
759
  //#region src/cron/run-log.ts
410
760
  function resolveCronRunLogPath(params) {
@@ -498,12 +848,14 @@ function resolveChatRunExpiresAtMs(params) {
498
848
  }
499
849
  function broadcastChatAborted(ops, params) {
500
850
  const { runId, sessionKey, stopReason, partialText } = params;
851
+ const heartbeatCtx = resolveHeartbeatContext(runId);
501
852
  const payload = {
502
853
  runId,
503
854
  sessionKey,
504
855
  seq: (ops.agentRunSeq.get(runId) ?? 0) + 1,
505
856
  state: "aborted",
506
857
  stopReason,
858
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
507
859
  message: partialText ? {
508
860
  role: "assistant",
509
861
  content: [{
@@ -4112,11 +4464,13 @@ function nextChatSeq(context, runId) {
4112
4464
  }
4113
4465
  function broadcastChatFinal(params) {
4114
4466
  const seq = nextChatSeq({ agentRunSeq: params.context.agentRunSeq }, params.runId);
4467
+ const heartbeatCtx = resolveHeartbeatContext(params.runId);
4115
4468
  const payload = {
4116
4469
  runId: params.runId,
4117
4470
  sessionKey: params.sessionKey,
4118
4471
  seq,
4119
4472
  state: "final",
4473
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
4120
4474
  message: params.message
4121
4475
  };
4122
4476
  params.context.broadcast("chat", payload);
@@ -4125,11 +4479,13 @@ function broadcastChatFinal(params) {
4125
4479
  }
4126
4480
  function broadcastChatError(params) {
4127
4481
  const seq = nextChatSeq({ agentRunSeq: params.context.agentRunSeq }, params.runId);
4482
+ const heartbeatCtx = resolveHeartbeatContext(params.runId);
4128
4483
  const payload = {
4129
4484
  runId: params.runId,
4130
4485
  sessionKey: params.sessionKey,
4131
4486
  seq,
4132
4487
  state: "error",
4488
+ ...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
4133
4489
  errorMessage: params.errorMessage
4134
4490
  };
4135
4491
  params.context.broadcast("chat", payload);
@@ -7493,7 +7849,7 @@ const nodeHandlers = {
7493
7849
  const p = params;
7494
7850
  const payloadJSON = typeof p.payloadJSON === "string" ? p.payloadJSON : p.payload !== void 0 ? JSON.stringify(p.payload) : null;
7495
7851
  await respondUnavailableOnThrow(respond, async () => {
7496
- const { handleNodeEvent } = await import("./server-node-events-D11AUIyh.js");
7852
+ const { handleNodeEvent } = await import("./server-node-events-IDt8hC2u.js");
7497
7853
  const nodeId = client?.connect?.device?.id ?? client?.connect?.client?.id ?? "node";
7498
7854
  await handleNodeEvent({
7499
7855
  deps: context.deps,
@@ -9603,4 +9959,4 @@ async function handleGatewayRequest(opts) {
9603
9959
  }
9604
9960
 
9605
9961
  //#endregion
9606
- export { startGatewayConfigReloader as C, resolveCronRunLogPath as S, MAX_PAYLOAD_BYTES as _, loadFavoritesSet as a, abortChatRunById as b, resolveAssistantIdentity as c, formatError as d, loadVoiceWakeConfig as f, MAX_BUFFERED_BYTES as g, HEALTH_REFRESH_INTERVAL_MS as h, safeParseJson as i, listSystemPresence as l, DEDUPE_TTL_MS as m, handleGatewayRequest as n, reconcileFavorites as o, DEDUPE_MAX as p, broadcastPresenceSnapshot as r, DEFAULT_ASSISTANT_IDENTITY as s, coreGatewayHandlers as t, upsertPresence as u, TICK_INTERVAL_MS as v, appendCronRunLog as x, getHandshakeTimeoutMs as y };
9962
+ export { createAgentEventHandler as C, startGatewayConfigReloader as E, resolveCronRunLogPath as S, createToolEventRecipientRegistry as T, MAX_PAYLOAD_BYTES as _, loadFavoritesSet as a, abortChatRunById as b, resolveAssistantIdentity as c, formatError as d, loadVoiceWakeConfig as f, MAX_BUFFERED_BYTES as g, HEALTH_REFRESH_INTERVAL_MS as h, safeParseJson as i, listSystemPresence as l, DEDUPE_TTL_MS as m, handleGatewayRequest as n, reconcileFavorites as o, DEDUPE_MAX as p, broadcastPresenceSnapshot as r, DEFAULT_ASSISTANT_IDENTITY as s, coreGatewayHandlers as t, upsertPresence as u, TICK_INTERVAL_MS as v, createChatRunState as w, appendCronRunLog as x, getHandshakeTimeoutMs as y };
@@ -10,28 +10,28 @@ import "./pi-model-discovery-Do3xMEtM.js";
10
10
  import "./frontmatter-B8duUx_6.js";
11
11
  import "./skills-D-FoKZ1g.js";
12
12
  import "./manifest-registry-CzCh_VTX.js";
13
- import { i as loadConfig } from "./config-D-YxNuAZ.js";
13
+ import { i as loadConfig } from "./config-Cxfzso_Z.js";
14
14
  import "./client-BrmuCW-S.js";
15
- import "./call-C14bzfoZ.js";
15
+ import "./call-BWteI0cy.js";
16
16
  import "./message-channel-CNPAq1Tl.js";
17
17
  import "./pairing-token-DZAnUH5B.js";
18
- import { Qt as requestHeartbeatNow, Y as resolveOutboundTarget, wn as enqueueSystemEvent } from "./subagent-registry-DNcSxvl3.js";
19
- import { d as updateSessionStore } from "./sessions-CrQE7gq3.js";
18
+ import { Qt as requestHeartbeatNow, Y as resolveOutboundTarget, wn as enqueueSystemEvent } from "./subagent-registry-Clebo068.js";
19
+ import { d as updateSessionStore } from "./sessions-BXbrIigY.js";
20
20
  import "./tokens-DN4W-XdV.js";
21
21
  import { r as normalizeChannelId } from "./plugins-CYQsm6Gy.js";
22
- import "./send-BOhR5xu0.js";
23
- import "./with-timeout-DNvX8V3I.js";
24
- import { t as deliverOutboundPayloads } from "./deliver-SxI9drJl.js";
22
+ import "./send-CpGIU58f.js";
23
+ import "./with-timeout-DFeXJy0t.js";
24
+ import { t as deliverOutboundPayloads } from "./deliver-CqJ3B363.js";
25
25
  import "./diagnostic-ntB3cjZB.js";
26
26
  import "./diagnostic-session-state-C9jKr8qI.js";
27
27
  import "./image-ops-CRyREKrv.js";
28
- import "./pi-embedded-helpers-B4IwWdI4.js";
29
- import "./sandbox-iRNEuFgO.js";
30
- import "./chrome-BLHu6Hyz.js";
28
+ import "./pi-embedded-helpers-D0D-YFKs.js";
29
+ import "./sandbox-D0BDTW6J.js";
30
+ import "./chrome-CsuV4F-9.js";
31
31
  import "./tailscale-C0AFaqpI.js";
32
32
  import "./auth-BzpDumk0.js";
33
- import "./server-context-BmxBVIv7.js";
34
- import "./routes--kmISnRJ.js";
33
+ import "./server-context-CIMejxOx.js";
34
+ import "./routes-DxrqrN_9.js";
35
35
  import "./redact-CXuWL0xc.js";
36
36
  import "./errors-NY6dTbQ_.js";
37
37
  import "./fs-safe-CMfl1SGC.js";
@@ -42,10 +42,10 @@ import "./trash-BEXyYJdG.js";
42
42
  import "./dock-CNe0XqQg.js";
43
43
  import "./paths-BDcioH8W.js";
44
44
  import "./thinking-C72VJ9y9.js";
45
- import "./models-config-B0mXwbnd.js";
45
+ import "./models-config-DjrYhBZX.js";
46
46
  import "./reply-prefix-B9wo4eUI.js";
47
- import "./memory-cli-B7Ls3Iv1.js";
48
- import "./manager-DSlfEjVk.js";
47
+ import "./memory-cli-Bj9XSnKb.js";
48
+ import "./manager-B2DFgFTm.js";
49
49
  import "./sqlite-QEo-svM3.js";
50
50
  import "./chunk-DSZSgT0v.js";
51
51
  import "./markdown-tables-Cguh6m77.js";
@@ -56,13 +56,13 @@ import "./commands-registry-C0J2HHKw.js";
56
56
  import "./tool-display-3WHfVCrO.js";
57
57
  import "./skill-commands-BFRS0Miy.js";
58
58
  import "./workspace-dirs-CTCDVlcA.js";
59
- import "./model-catalog-K_qqpcC9.js";
60
- import { c as resolveGatewaySessionStoreTarget, o as loadSessionEntry, s as pruneLegacyStoreKeys } from "./session-utils-CrnY8rsC.js";
59
+ import "./model-catalog-BRC9B0qI.js";
60
+ import { c as resolveGatewaySessionStoreTarget, o as loadSessionEntry, s as pruneLegacyStoreKeys } from "./session-utils-Cz8JJaAg.js";
61
61
  import "./pairing-store-BfLucFsB.js";
62
62
  import "./exec-approvals-BV3NU43w.js";
63
63
  import "./nodes-screen-BSWmfeV3.js";
64
64
  import "./session-cost-usage-hoPpLUY3.js";
65
- import "./control-service-Cuc3K1O-.js";
65
+ import "./control-service-CROUSYRb.js";
66
66
  import "./stagger-C7dzX2Sp.js";
67
67
  import "./channel-selection-oG92zx1-.js";
68
68
  import "./delivery-queue-s99SdQUw.js";
@@ -72,11 +72,11 @@ import "./cli-utils-BjpJ412z.js";
72
72
  import "./help-format-BAyrfJn3.js";
73
73
  import "./progress-ulE2nG6h.js";
74
74
  import "./logging-DhWghNIK.js";
75
- import "./replies-RnWQ3nKx.js";
76
- import "./pi-tools.policy-DNgBKXTL.js";
77
- import { t as createOutboundSendDeps } from "./outbound-send-deps-KBVliaIJ.js";
78
- import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-CZG-Sec1.js";
79
- import { t as agentCommand } from "./agent-DMDBKAcJ.js";
75
+ import "./replies-CBXhYQKz.js";
76
+ import "./pi-tools.policy-C_GiT5Ck.js";
77
+ import { t as createOutboundSendDeps } from "./outbound-send-deps-CWt3ExwB.js";
78
+ import { c as parseMessageWithAttachments, l as formatForLog, r as registerApnsToken, s as normalizeRpcAttachmentsToChatAttachments } from "./push-apns-pjFzQgQX.js";
79
+ import { t as agentCommand } from "./agent-CEXPWtuC.js";
80
80
  import { randomUUID } from "node:crypto";
81
81
 
82
82
  //#region src/gateway/server-node-events.ts