@symerian/symi 3.2.0 → 3.3.0

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 (269) hide show
  1. package/dist/{agent-BAizavBj.js → agent-B2IkIBj2.js} +13 -13
  2. package/dist/{agent-CcMZZWTA.js → agent-BrIHHGnC.js} +4 -4
  3. package/dist/{agents-eZOTKidZ.js → agents-B57SUSPt.js} +5 -5
  4. package/dist/{audit-CqpgecVD.js → audit-B58SlbPa.js} +5 -5
  5. package/dist/{audit-CgO25stB.js → audit-DEXQlMwn.js} +11 -11
  6. package/dist/{auth-B2ihI_FW.js → auth-DIdzV4_r.js} +1 -1
  7. package/dist/{auth-choice-DAgO_iWS.js → auth-choice-B6iYCDVN.js} +2 -2
  8. package/dist/{auth-choice-Blb0tLr-.js → auth-choice-Z1qCZxwg.js} +5 -5
  9. package/dist/{banner-BkUQ7Jvs.js → banner-QsnCDxXH.js} +1 -1
  10. package/dist/{browser-cli-CEGXNjxz.js → browser-cli-CcKmOVu4.js} +5 -5
  11. package/dist/{browser-cli-U3MBFIug.js → browser-cli-_9G3GBJS.js} +3 -3
  12. package/dist/build-info.json +3 -3
  13. package/dist/bundled/boot-md/handler.js +6 -6
  14. package/dist/bundled/session-memory/handler.js +4 -4
  15. package/dist/{call-Ck5wfJH6.js → call-DLBaLOHo.js} +1 -1
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-options-C8HEh0Jh.js → channel-options-Cj-xJAMD.js} +2 -2
  18. package/dist/{channel-options-HrNuXx3g.js → channel-options-DckWOMWG.js} +1 -1
  19. package/dist/{channel-selection-BYRDrp1h.js → channel-selection-p35DYzAL.js} +1 -1
  20. package/dist/{channels-cli-DRXVUZVd.js → channels-cli-CIq4PFA0.js} +59 -59
  21. package/dist/{channels-cli-DTRTIR0y.js → channels-cli-Y8CGJ_qQ.js} +17 -17
  22. package/dist/{channels-status-issues-CCl5veUF.js → channels-status-issues-GSsGZvfn.js} +1 -1
  23. package/dist/{chrome-R_zreHQs.js → chrome-BgQbis3t.js} +7 -7
  24. package/dist/{chrome-DeANsMHC.js → chrome-DYKZHZ9k.js} +2 -2
  25. package/dist/{chrome-BSrczqdD.js → chrome-b556dOQ6.js} +9 -9
  26. package/dist/{chrome-Dpt5h40c.js → chrome-sQI2Ex5S.js} +7 -7
  27. package/dist/{cli-NVoyNwL_.js → cli--omJsLkl.js} +52 -52
  28. package/dist/{cli-t18ocz3t.js → cli-iz9sMJ9d.js} +14 -14
  29. package/dist/{client-3Wn4QAzR.js → client-D8iTVY4F.js} +3 -3
  30. package/dist/{command-registry-Dq-URnUH.js → command-registry-bozDt85D.js} +11 -11
  31. package/dist/{commands-DEQrzkzc.js → commands-CHkx0oTl.js} +1 -1
  32. package/dist/{commands-registry-DN1LiqOB.js → commands-registry-BO62ZyK2.js} +2 -2
  33. package/dist/{commands-registry-CfoaeBjv.js → commands-registry-CY-QAK3n.js} +3 -3
  34. package/dist/{completion-cli-DTUgu6s6.js → completion-cli-9qQYFUPk.js} +2 -2
  35. package/dist/{completion-cli-Ognzzh5u.js → completion-cli-FXkVKM19.js} +1 -1
  36. package/dist/{config-cli-BhUF3oku.js → config-cli-BexhS7Qb.js} +1 -1
  37. package/dist/{config-cli-CWhQ62DB.js → config-cli-C3D7beGW.js} +1 -1
  38. package/dist/{config-guard-C_uscuUh.js → config-guard-I1mvbCOr.js} +1 -1
  39. package/dist/{configure-DzNIkSm_.js → configure-0e3ty1G9.js} +6 -6
  40. package/dist/{configure-C4pZmiRa.js → configure-BWXNd2TO.js} +10 -10
  41. package/dist/{consolidate-Dl8KwVc8.js → consolidate-D1GUJ5qq.js} +1 -1
  42. package/dist/{control-service-D_yArX3I.js → control-service-BDMq-0pg.js} +3 -3
  43. package/dist/{control-service-B_cTcCiN.js → control-service-D3BYG-FJ.js} +3 -3
  44. package/dist/{conversation-label-D9In_j9D.js → conversation-label-CPUfoQmh.js} +1 -1
  45. package/dist/{conversation-label-ErntvxLV.js → conversation-label-CfwDE1_Q.js} +1 -1
  46. package/dist/{cron-cli-Baox5Ek2.js → cron-cli-A0c5t2V9.js} +1 -1
  47. package/dist/{cron-cli-DojoU32-.js → cron-cli-DvDr2Uxo.js} +3 -3
  48. package/dist/{daemon-cli-DbP7O7HT.js → daemon-cli-CbqjLPV8.js} +3 -3
  49. package/dist/{daemon-cli-BA_y7Ul0.js → daemon-cli-DiLogoCM.js} +2 -2
  50. package/dist/{deliver-DmDZ-ctY.js → deliver-B_Gz2_tA.js} +13 -13
  51. package/dist/{deliver-hSoD8wz7.js → deliver-B_jXI55b.js} +4 -4
  52. package/dist/{deliver-CspEtj74.js → deliver-CRqS1O8w.js} +5 -5
  53. package/dist/{devices-cli-DYdWxU06.js → devices-cli-BFPrh5bu.js} +2 -2
  54. package/dist/{devices-cli-DWZAzDCp.js → devices-cli-BRqbjkNA.js} +1 -1
  55. package/dist/{diagnostic-ntB3cjZB.js → diagnostic-BevbDWGa.js} +1 -1
  56. package/dist/{diagnostic-DqlT8R50.js → diagnostic-BvZmqxYI.js} +1 -1
  57. package/dist/{directory-cli-C0reFcyU.js → directory-cli-rhATy7j5.js} +2 -2
  58. package/dist/{dm-policy-shared-D65DpO9M.js → dm-policy-shared-CC_pbZzd.js} +2 -2
  59. package/dist/{dock-CNe0XqQg.js → dock-Cq5LxV1L.js} +1 -1
  60. package/dist/{docs-cli-wk6KuHiF.js → docs-cli-D2hhvfad.js} +2 -2
  61. package/dist/{doctor-completion-BRWDuSW_.js → doctor-completion-CcHk8myN.js} +1 -1
  62. package/dist/{doctor-completion-BMnWLOlk.js → doctor-completion-K1dL1s3P.js} +1 -1
  63. package/dist/{doctor-config-flow-CIk-HHyn.js → doctor-config-flow-DlX_L8Y-.js} +1 -1
  64. package/dist/entry.js +1 -1
  65. package/dist/{errors-BEU7IHU6.js → errors-C6sHIFo_.js} +1 -1
  66. package/dist/{errors-D1uOCNHg.js → errors-TVUWuVoP.js} +1 -1
  67. package/dist/{exec-approvals-DhYCjuCW.js → exec-approvals-B8n8es8o.js} +1 -1
  68. package/dist/{exec-approvals-cli-CnUE6k76.js → exec-approvals-cli-DxvIsIQi.js} +2 -2
  69. package/dist/{exec-approvals-cli-Ygr7-96O.js → exec-approvals-cli-SDF4LICf.js} +4 -4
  70. package/dist/extensionAPI.js +21 -21
  71. package/dist/{fetch-guard-CwHhFING.js → fetch-guard--i1VgM2O.js} +2 -2
  72. package/dist/format-relative-Cyq001S7.js +55 -0
  73. package/dist/{gateway-cli-Td7zBs4m.js → gateway-cli-CAFWFnSX.js} +32 -135
  74. package/dist/{gateway-cli-wUaprQur.js → gateway-cli-CzD6faIt.js} +78 -181
  75. package/dist/{gateway-rpc-NAHyafFD.js → gateway-rpc-o8CJkHuM.js} +1 -1
  76. package/dist/{glass-ui-ws-CxvVsiJq.js → glass-ui-ws-Bbs2mIij.js} +67 -67
  77. package/dist/{glass-ui-ws-BjkYXSwe.js → glass-ui-ws-Dsez9bGF.js} +24 -24
  78. package/dist/{health-CIzrf_uX.js → health-CvdEEMPS.js} +14 -33
  79. package/dist/{health-CNPl11m6.js → health-iJ9JzccO.js} +11 -30
  80. package/dist/{hooks-cli-Bk8dDCle.js → hooks-cli-BEYoHsqh.js} +15 -15
  81. package/dist/{hooks-cli-D8MQxNS9.js → hooks-cli-DNlmk6eB.js} +53 -53
  82. package/dist/{inbound-context-hLZdoPqa.js → inbound-context-BtKMS2C8.js} +2 -2
  83. package/dist/{inbound-context-oMKUczD-.js → inbound-context-OpYa4EXl.js} +2 -2
  84. package/dist/index.js +18 -18
  85. package/dist/{installs-DgzIQM1_.js → installs-D0_bsQwa.js} +1 -1
  86. package/dist/llm-slug-generator.js +4 -4
  87. package/dist/{logs-cli-CHRBJi-e.js → logs-cli--Wek899G.js} +3 -3
  88. package/dist/{manager-DjOT_gPA.js → manager-9Rt8-xIT.js} +6 -6
  89. package/dist/{manager-D6TMbS9L.js → manager-Bmh-pcUv.js} +1 -1
  90. package/dist/{manager-CuY92F3I.js → manager-CS1vxold.js} +1 -1
  91. package/dist/{manager-BYyUh3ad.js → manager-Do0-i7vp.js} +3 -3
  92. package/dist/{markdown-tables-D5SmTwnx.js → markdown-tables-BtWlyyt1.js} +1 -1
  93. package/dist/{markdown-tables-Cguh6m77.js → markdown-tables-CCOfinlW.js} +1 -1
  94. package/dist/{memory-BSbaqEiH.js → memory-BduQaKuC.js} +4 -4
  95. package/dist/{memory-cli-BR0HDrhc.js → memory-cli-BCz9iNCM.js} +5 -5
  96. package/dist/{memory-cli-CMfGKcfs.js → memory-cli-LXH0BNmI.js} +2 -2
  97. package/dist/{memory-D70bi98u.js → memory-ofHIUCzf.js} +2 -2
  98. package/dist/{model-catalog-DkDIZfHs.js → model-catalog-zuX3pwF5.js} +1 -1
  99. package/dist/{model-picker-DhjQC0WT.js → model-picker-DCkIP0W7.js} +1 -1
  100. package/dist/{models-BH8EXme8.js → models-DTHdIg0A.js} +7 -7
  101. package/dist/{models-cli-LCDfv_g7.js → models-cli-CdL5Tf5E.js} +55 -55
  102. package/dist/{models-cli-BfqpHV6D.js → models-cli-DrJsggrX.js} +16 -16
  103. package/dist/{node-cli-BSUx_E8m.js → node-cli-CjA21eC1.js} +17 -17
  104. package/dist/{node-cli-B8qXf9pn.js → node-cli-Dl-lvH1N.js} +6 -6
  105. package/dist/{nodes-cli-CVCNx2XE.js → nodes-cli-C9pjIduh.js} +3 -3
  106. package/dist/{nodes-cli-1Ox4zC7f.js → nodes-cli-DHcCJ6Jo.js} +4 -4
  107. package/dist/{onboard-DMa4CEAw.js → onboard-3VcPRZV5.js} +6 -6
  108. package/dist/{onboard-CejQrDu1.js → onboard-Cr1Rd93U.js} +3 -3
  109. package/dist/{onboard-channels-AEIKTueF.js → onboard-channels-CXqIlUcV.js} +1 -1
  110. package/dist/{onboard-channels-DMzIMYs2.js → onboard-channels-DmvTuYe_.js} +3 -3
  111. package/dist/{onboard-custom-BJL976dk.js → onboard-custom-C0GtEEDP.js} +2 -2
  112. package/dist/{onboard-helpers-BhDEF1N9.js → onboard-helpers-C5J9vSm2.js} +1 -1
  113. package/dist/{onboard-helpers-B7dgGjmj.js → onboard-helpers-LbRPhqLj.js} +1 -1
  114. package/dist/{onboard-remote-Nz0oZ9Y1.js → onboard-remote-D3CWFQ0_.js} +1 -1
  115. package/dist/{onboard-remote-DjtEL91M.js → onboard-remote-DRnsw2VC.js} +1 -1
  116. package/dist/{onboard-skills-VKqXJgZC.js → onboard-skills-C6FIDEFz.js} +2 -2
  117. package/dist/{onboard-skills-4w2Z-aN7.js → onboard-skills-CTv0hBJv.js} +1 -1
  118. package/dist/{onboarding-i6cOoB8w.js → onboarding-Bop5peq2.js} +7 -7
  119. package/dist/{onboarding-DY2WmtMY.js → onboarding-D_wPq7hv.js} +10 -10
  120. package/dist/{onboarding.finalize-_5bvtIQq.js → onboarding.finalize-DGwAMlRi.js} +30 -30
  121. package/dist/{onboarding.finalize-Bg5mQNb8.js → onboarding.finalize-Pa0bEFjp.js} +13 -13
  122. package/dist/{onboarding.gateway-config-H4bMrlmu.js → onboarding.gateway-config-BT8nU-bQ.js} +6 -6
  123. package/dist/{onboarding.gateway-config-ByjssyeH.js → onboarding.gateway-config-aIrdqmcQ.js} +3 -3
  124. package/dist/{openai-model-default-DPRLcgQH.js → openai-model-default-BiSllV8d.js} +1 -1
  125. package/dist/{outbound-send-deps-BRozM9Qu.js → outbound-send-deps-WKDU2JsO.js} +1 -1
  126. package/dist/{pairing-cli-CE196_ar.js → pairing-cli-C7HoBU3D.js} +2 -2
  127. package/dist/{pairing-store-D2taxx-V.js → pairing-store-CtYJcUUv.js} +1 -1
  128. package/dist/{path-env-BnawVaJZ.js → path-env-DmaMvYrK.js} +1 -1
  129. package/dist/{paths-FR_Zltu5.js → paths-CsQkeUQ3.js} +1 -1
  130. package/dist/{pi-embedded-helpers-qwidIQ0-.js → pi-embedded-helpers-DnAXWUyj.js} +3 -3
  131. package/dist/{pi-embedded-helpers-CBbg0u1B.js → pi-embedded-helpers-VZo1D4Ck.js} +1 -1
  132. package/dist/{pi-embedded-2uW-V2_B.js → pi-embedded-hri4e4ie.js} +134 -146
  133. package/dist/{pi-tools.policy-D9pOmEQ-.js → pi-tools.policy-D-WJTlz8.js} +2 -2
  134. package/dist/{pi-tools.policy-iVo2Y8pC.js → pi-tools.policy-DrRZdkk0.js} +1 -1
  135. package/dist/{plugin-registry-DesFs-lT.js → plugin-registry-CYEwOWqU.js} +1 -1
  136. package/dist/{plugin-registry-BTnpe85A.js → plugin-registry-q_UuFncy.js} +1 -1
  137. package/dist/plugin-sdk/commands/health.d.ts +9 -2
  138. package/dist/plugin-sdk/cron/service/state.d.ts +0 -19
  139. package/dist/plugin-sdk/gateway/server-chat.d.ts +4 -2
  140. package/dist/plugin-sdk/index.js +6 -6
  141. package/dist/{plugins-CYQsm6Gy.js → plugins-Bq-Msc8Z.js} +1 -1
  142. package/dist/{plugins-B7WCtuxh.js → plugins-Cp39v6b_.js} +1 -1
  143. package/dist/{plugins-cli-CDzxsvz1.js → plugins-cli-CR1PAkGv.js} +15 -15
  144. package/dist/{plugins-cli--tOOkoDQ.js → plugins-cli-DE_0PdqM.js} +56 -56
  145. package/dist/{ports-l6UxKpOs.js → ports-BAzQoIw0.js} +1 -1
  146. package/dist/{ports-zGrc4d1W.js → ports-Cv4kt1bT.js} +1 -1
  147. package/dist/{program-context-BY8NYfiK.js → program-context-CvgJOZ3Q.js} +30 -30
  148. package/dist/{program-BZhol11z.js → program-x8XxEZXE.js} +60 -60
  149. package/dist/{prompt-select-styled-B2aJWja2.js → prompt-select-styled-BFV2QYJC.js} +17 -17
  150. package/dist/{prompt-select-styled-C3nimTHU.js → prompt-select-styled-CFeLUnsr.js} +9 -9
  151. package/dist/{provider-auth-helpers-Bj1nZPu8.js → provider-auth-helpers-C-Cv3SZA.js} +1 -1
  152. package/dist/{provider-auth-helpers-CH6VuvFG.js → provider-auth-helpers-D2GLBV7U.js} +1 -1
  153. package/dist/{push-apns-CeHCKJbK.js → push-apns-9XQgEWxs.js} +2 -2
  154. package/dist/{push-apns-CtKaAgsq.js → push-apns-DTqLWoEj.js} +1 -1
  155. package/dist/{pw-ai-ClV-zlpc.js → pw-ai-BFZrohva.js} +5 -5
  156. package/dist/{pw-ai-CJKI3qHq.js → pw-ai-Bb4P23-n.js} +1 -1
  157. package/dist/{pw-ai-rXNKcFeh.js → pw-ai-Cnc8PGzN.js} +5 -5
  158. package/dist/{pw-ai-DPc3vKQE.js → pw-ai-D5WlMgqy.js} +1 -1
  159. package/dist/{qmd-manager-DI6Vda-c.js → qmd-manager-94nTSYk_.js} +2 -2
  160. package/dist/{qmd-manager-M1vvSTXY.js → qmd-manager-DKAr0zp6.js} +4 -4
  161. package/dist/{redact-identifier-CfInlG0d.js → redact-identifier-gZfj5mH2.js} +3 -3
  162. package/dist/{register.agent-nDeqoEBI.js → register.agent-C-p6kDhf.js} +19 -19
  163. package/dist/{register.agent-CHXxDzgP.js → register.agent-D9FfFyh0.js} +63 -63
  164. package/dist/{register.configure-CLzf9xIS.js → register.configure-CtbO9t7v.js} +66 -66
  165. package/dist/{register.configure-Cz88IOI3.js → register.configure-D69HXLo4.js} +22 -22
  166. package/dist/{register.maintenance-BmefpzAo.js → register.maintenance-Dy8l8hKt.js} +22 -22
  167. package/dist/{register.maintenance-BlwrUHuN.js → register.maintenance-h-CVvMpP.js} +64 -64
  168. package/dist/{register.message-381Gzih6.js → register.message-CaOagrcp.js} +15 -15
  169. package/dist/{register.message-CNVSGcGw.js → register.message-DFytf1Dr.js} +54 -54
  170. package/dist/{register.onboard-BrP6ecWc.js → register.onboard-BAQSWmTB.js} +15 -15
  171. package/dist/{register.onboard-BRGrlQ6x.js → register.onboard-SunldfQB.js} +6 -6
  172. package/dist/{register.setup-T-EUrPCt.js → register.setup-BnuPTj2h.js} +15 -15
  173. package/dist/{register.setup-CGrdvPa6.js → register.setup-D3uuohUQ.js} +6 -6
  174. package/dist/{register.status-health-sessions-CoGgKqEf.js → register.status-health-sessions-CPcQpUNU.js} +15 -15
  175. package/dist/{register.status-health-sessions-Bx_iO3kS.js → register.status-health-sessions-azKiEST-.js} +37 -37
  176. package/dist/{register.subclis-qyJoKa4o.js → register.subclis-Di2DRNVF.js} +21 -21
  177. package/dist/{replies-OFj_EOj5.js → replies-CgVOirGF.js} +3 -3
  178. package/dist/{replies-DSI8-9wG.js → replies-pnMj7AtP.js} +5 -5
  179. package/dist/{resolve-route-B9mYSvxa.js → resolve-route-BoF_Jubb.js} +1 -1
  180. package/dist/{resolve-route-CIfYQ5xq.js → resolve-route-D0TboSMz.js} +1 -1
  181. package/dist/{routes-NdLw86IB.js → routes-BFfAPz_0.js} +2 -2
  182. package/dist/{routes-CAawDNn6.js → routes-MX2zYTZX.js} +5 -5
  183. package/dist/{rpc-CDODOtj5.js → rpc-CQUsmQ6_.js} +1 -1
  184. package/dist/{run-main-BHMJnAMQ.js → run-main-BhJ6M7oy.js} +70 -70
  185. package/dist/{sandbox-CNDuaUiX.js → sandbox-DzRvFxeE.js} +4 -4
  186. package/dist/{sandbox-cli-BlHtlDaZ.js → sandbox-cli-Dyh_eqHp.js} +4 -4
  187. package/dist/{sandbox-cli-Cz20gLjw.js → sandbox-cli-WYHWWki_.js} +18 -18
  188. package/dist/{sandbox-CTHB6H4C.js → sandbox-sayuve7z.js} +3 -3
  189. package/dist/{security-cli-DylPM6Ig.js → security-cli-B5XGCe-n.js} +8 -8
  190. package/dist/{security-cli-MDg9FjM6.js → security-cli-qZaxHyoZ.js} +24 -24
  191. package/dist/{send-mIYdlk2s.js → send-CLJ2KPVT.js} +7 -7
  192. package/dist/{server-context-rB9SYwsp.js → server-context-CCPE_W8C.js} +8 -8
  193. package/dist/{server-context-k4u5vRZi.js → server-context-hxl_K7eY.js} +4 -4
  194. package/dist/{server-methods-ghMYekWt.js → server-methods-3uA_KwN4.js} +42 -110
  195. package/dist/{server-methods-CdvcMCRG.js → server-methods-MUFuMWc_.js} +29 -97
  196. package/dist/{server-node-events-BNSYLnuV.js → server-node-events-DkbyHj1T.js} +55 -56
  197. package/dist/{server-node-events-BVkXlMva.js → server-node-events-FUPulMjB.js} +16 -17
  198. package/dist/{session-cost-usage-CfsM7H0Q.js → session-cost-usage-Cj3vd7lZ.js} +2 -2
  199. package/dist/{session-utils-C0bflN4H.js → session-utils-i74hYiQl.js} +3 -3
  200. package/dist/{sessions-BPopgS75.js → sessions-7jk0D1BI.js} +7 -7
  201. package/dist/{sessions-CYQHaOxG.js → sessions-CC1W02Uv.js} +4 -4
  202. package/dist/{skill-commands-z0KmSE3J.js → skill-commands-CEY0MdSm.js} +2 -2
  203. package/dist/{skill-commands-DeC3iib8.js → skill-commands-DzodvMO3.js} +1 -1
  204. package/dist/{skill-scanner-B8r_rZEC.js → skill-scanner-DkITukAS.js} +1 -1
  205. package/dist/{skills-install-ClrjL0Ky.js → skills-install-BMhIk6vI.js} +3 -3
  206. package/dist/{skills-DfN7C42D.js → skills-xmXjOnAV.js} +1 -1
  207. package/dist/{sqlite-Byzf46k1.js → sqlite-jFnvSfLz.js} +1 -1
  208. package/dist/{sqlite-BbZDaxh_.js → sqlite-l3CZYU6t.js} +3 -3
  209. package/dist/{ssrf-_EUCeS6M.js → ssrf-BJZIZ4yo.js} +1 -1
  210. package/dist/{status-CA91ksCO.js → status-B-XD80Yl.js} +15 -32
  211. package/dist/{status-DiACHWF5.js → status-BNH-f3PA.js} +1 -1
  212. package/dist/{status-Di-HVgWZ.js → status-C7F7r-qN.js} +23 -40
  213. package/dist/{status-Cb3Z8-6G.js → status-CCgqMBwp.js} +1 -1
  214. package/dist/{status.update-CWfIVmkl.js → status.update-B9WCVHPy.js} +1 -1
  215. package/dist/{status.update-CvLaHuo8.js → status.update-CN2XgChL.js} +1 -1
  216. package/dist/{subagent-registry-DBEoimsW.js → subagent-registry-z08a8MUS.js} +158 -170
  217. package/dist/{synthesis-CUkTal9I.js → synthesis-ByjLMHMS.js} +21 -21
  218. package/dist/{synthesis-BN721xB_.js → synthesis-CjFmYp54.js} +14 -14
  219. package/dist/{synthesis-Bns-7weZ.js → synthesis-D4iCZvKx.js} +52 -52
  220. package/dist/{synthesis-DUSKxRis.js → synthesis-Dlweuq0p.js} +4 -4
  221. package/dist/{system-cli-BmxEcLwZ.js → system-cli-Ccu9utFt.js} +3 -3
  222. package/dist/{thinking-BOmbt-UE.js → thinking-BKsvyjWX.js} +1 -1
  223. package/dist/{local-roots-_IZuPEVo.js → tokens-CGqnWNmv.js} +14 -14
  224. package/dist/{tool-display-DEnDm47O.js → tool-display-wSdT0Ynz.js} +1 -1
  225. package/dist/{tui-CTTzBqcG.js → tui-DqMRn1zF.js} +3 -3
  226. package/dist/{tui-DsWy0Fh9.js → tui-JznxMYj0.js} +6 -6
  227. package/dist/{tui-cli-DFXREWDD.js → tui-cli-Cc_TS4LH.js} +24 -24
  228. package/dist/{tui-cli-CDwT7lxE.js → tui-cli-sRKxOjmC.js} +8 -8
  229. package/dist/{unified-runner-DjK_xANW.js → unified-runner-CBVGL54b.js} +13 -25
  230. package/dist/{unified-runner-CDyedWS-.js → unified-runner-Uyw1gZOm.js} +16 -28
  231. package/dist/{update-DwUiNQcY.js → update-JtKX2Yl3.js} +1 -1
  232. package/dist/{update-check-D-VbogcH.js → update-check-C1JNxsic.js} +1 -1
  233. package/dist/{update-cli-DHiMZjnT.js → update-cli-BbtFbkK5.js} +24 -24
  234. package/dist/{update-cli-4gg0S9NF.js → update-cli-CH7SLjSd.js} +69 -69
  235. package/dist/{update-runner-Bhpg9A9O.js → update-runner-B0L2a2rW.js} +1 -1
  236. package/dist/{update-runner-B4AuR2P1.js → update-runner-BGhhL2R8.js} +2 -2
  237. package/dist/{with-timeout-BxFWn7qW.js → with-timeout-BsavN1IH.js} +1 -1
  238. package/dist/{with-timeout-4X39bfAZ.js → with-timeout-Bxn0qVBQ.js} +1 -1
  239. package/package.json +1 -1
  240. package/dist/plugin-sdk/infra/heartbeat-runner.d.ts +0 -38
  241. package/dist/plugin-sdk/infra/heartbeat-visibility.d.ts +0 -12
  242. package/dist/plugin-sdk/infra/heartbeat-wake.d.ts +0 -25
  243. /package/dist/{brew-ChhP5U7g.js → brew-B5ek79r9.js} +0 -0
  244. /package/dist/{chat-type-Coeec2xt.js → chat-type-BYHUZIi_.js} +0 -0
  245. /package/dist/{chat-type-DedJJ5qX.js → chat-type-C_KiWNAH.js} +0 -0
  246. /package/dist/{chunk-Dsb1i5-M.js → chunk-BjnT3w_x.js} +0 -0
  247. /package/dist/{chunk-DSZSgT0v.js → chunk-BySyfaEr.js} +0 -0
  248. /package/dist/{diagnostic-session-state-CXCbqRxw.js → diagnostic-session-state-CWtaDOiK.js} +0 -0
  249. /package/dist/{diagnostic-session-state-C9jKr8qI.js → diagnostic-session-state-Zw87xFym.js} +0 -0
  250. /package/dist/{fetch-timeout-BL0dTnkh.js → fetch-timeout-PV2_ySyb.js} +0 -0
  251. /package/dist/{fs-safe-DWwr539k.js → fs-safe-DzJT_iD4.js} +0 -0
  252. /package/dist/{image-ops-BnrOBRvo.js → image-ops-CZPSKxgE.js} +0 -0
  253. /package/dist/{internal-JPGteS8Q.js → internal-BuBDa4KX.js} +0 -0
  254. /package/dist/{local-roots-B5gzKk2b.js → local-roots-CkcUju_2.js} +0 -0
  255. /package/dist/{manifest-registry-Cb-8fZPE.js → manifest-registry-BV_2TbGz.js} +0 -0
  256. /package/dist/{models-config-BtqIc3fj.js → models-config-BfmuswQ_.js} +0 -0
  257. /package/dist/{paths-DftOuF96.js → paths-CNexk5_o.js} +0 -0
  258. /package/dist/{redact-Dx6iZvON.js → redact-KvsGzUFH.js} +0 -0
  259. /package/dist/{redact-DSOAcWMe.js → redact-ojHFHOAb.js} +0 -0
  260. /package/dist/{reply-prefix-BRb0MDfZ.js → reply-prefix-CRdCnS44.js} +0 -0
  261. /package/dist/{shell-argv-osL1ekUp.js → shell-argv-N_ZB4iHX.js} +0 -0
  262. /package/dist/{ssrf-HJ6PoEEw.js → ssrf-jKt8PSDl.js} +0 -0
  263. /package/dist/{tailscale-BDyCAsla.js → tailscale-BsA0YClX.js} +0 -0
  264. /package/dist/{thinking-C72VJ9y9.js → thinking-BDh5LPh-.js} +0 -0
  265. /package/dist/{tokens-CjSCsuyC.js → tokens-DJQ4rO24.js} +0 -0
  266. /package/dist/{transcript-events-DhcCZGEX.js → transcript-events-C1GkbPky.js} +0 -0
  267. /package/dist/{transcript-tools-cLCK4A-E.js → transcript-tools-Cxxsyxgt.js} +0 -0
  268. /package/dist/{trash-GNdXK_zw.js → trash-CF1G530Y.js} +0 -0
  269. /package/dist/{update-check-DFfE95SZ.js → update-check-CC111uwU.js} +0 -0
@@ -5,29 +5,29 @@ import "./subsystem-Bzq1QhtO.js";
5
5
  import { nt as DEFAULT_MODEL, p as resolveThinkingDefault, rt as DEFAULT_PROVIDER } from "./model-selection-BE83O-pv.js";
6
6
  import { a as resolveAgentIdentity } from "./reply-prefix-BqgLflxO.js";
7
7
  import "./github-copilot-token-BbsJ0Qbo.js";
8
- import "./local-roots-_IZuPEVo.js";
9
- import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-2uW-V2_B.js";
10
- import "./plugins-B7WCtuxh.js";
11
- import "./replies-DSI8-9wG.js";
12
- import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-DmDZ-ctY.js";
13
- import "./diagnostic-DqlT8R50.js";
14
- import "./diagnostic-session-state-CXCbqRxw.js";
15
- import "./chunk-Dsb1i5-M.js";
16
- import "./ssrf-_EUCeS6M.js";
17
- import "./manifest-registry-Cb-8fZPE.js";
18
- import "./chrome-BSrczqdD.js";
19
- import "./skills-DfN7C42D.js";
20
- import "./redact-DSOAcWMe.js";
21
- import "./errors-BEU7IHU6.js";
22
- import "./thinking-BOmbt-UE.js";
8
+ import "./plugins-Cp39v6b_.js";
9
+ import "./replies-pnMj7AtP.js";
10
+ import { a as resolveAgentTimeoutMs, r as runEmbeddedPiAgent } from "./pi-embedded-hri4e4ie.js";
11
+ import { $ as loadSessionStore, nt as saveSessionStore } from "./deliver-B_Gz2_tA.js";
12
+ import "./diagnostic-BvZmqxYI.js";
13
+ import "./diagnostic-session-state-CWtaDOiK.js";
14
+ import "./chunk-BjnT3w_x.js";
15
+ import "./ssrf-BJZIZ4yo.js";
16
+ import "./manifest-registry-BV_2TbGz.js";
17
+ import "./chrome-b556dOQ6.js";
18
+ import "./skills-xmXjOnAV.js";
19
+ import "./redact-ojHFHOAb.js";
20
+ import "./errors-C6sHIFo_.js";
21
+ import "./tokens-CGqnWNmv.js";
22
+ import "./thinking-BKsvyjWX.js";
23
23
  import { n as resolveSessionFilePath, s as resolveStorePath } from "./paths-N698mtPE.js";
24
- import "./manager-BYyUh3ad.js";
25
- import "./sqlite-Byzf46k1.js";
26
- import "./markdown-tables-D5SmTwnx.js";
27
- import "./commands-registry-DN1LiqOB.js";
28
- import "./skill-commands-z0KmSE3J.js";
24
+ import "./manager-Do0-i7vp.js";
25
+ import "./sqlite-jFnvSfLz.js";
26
+ import "./markdown-tables-BtWlyyt1.js";
27
+ import "./commands-registry-BO62ZyK2.js";
28
+ import "./skill-commands-CEY0MdSm.js";
29
29
  import "./pi-model-discovery-DZDhVxut.js";
30
- import "./resolve-route-CIfYQ5xq.js";
30
+ import "./resolve-route-D0TboSMz.js";
31
31
  import "./pi-auth-json-BXOVPAoA.js";
32
32
 
33
33
  export { DEFAULT_MODEL, DEFAULT_PROVIDER, ensureAgentWorkspace, loadSessionStore, resolveAgentDir, resolveAgentIdentity, resolveAgentTimeoutMs, resolveAgentWorkspaceDir, resolveSessionFilePath, resolveStorePath, resolveThinkingDefault, runEmbeddedPiAgent, saveSessionStore };
@@ -1,6 +1,6 @@
1
1
  import { s as logWarn } from "./exec-B6oWJSJW.js";
2
- import { a as resolvePinnedHostnameWithPolicy, n as closeDispatcher, r as createPinnedDispatcher, t as SsrFBlockedError } from "./ssrf-HJ6PoEEw.js";
3
- import { t as bindAbortRelay } from "./fetch-timeout-BL0dTnkh.js";
2
+ import { a as resolvePinnedHostnameWithPolicy, n as closeDispatcher, r as createPinnedDispatcher, t as SsrFBlockedError } from "./ssrf-jKt8PSDl.js";
3
+ import { t as bindAbortRelay } from "./fetch-timeout-PV2_ySyb.js";
4
4
 
5
5
  //#region src/infra/net/fetch-guard.ts
6
6
  const DEFAULT_MAX_REDIRECTS = 3;
@@ -0,0 +1,55 @@
1
+ //#region src/infra/format-time/format-relative.ts
2
+ /**
3
+ * Format a duration (in ms) as a human-readable relative time.
4
+ *
5
+ * Input: how many milliseconds ago something happened.
6
+ *
7
+ * With suffix (default): "just now", "5m ago", "3h ago", "2d ago"
8
+ * Without suffix: "0s", "5m", "3h", "2d"
9
+ */
10
+ function formatTimeAgo(durationMs, options) {
11
+ const suffix = options?.suffix !== false;
12
+ const fallback = options?.fallback ?? "unknown";
13
+ if (durationMs == null || !Number.isFinite(durationMs) || durationMs < 0) return fallback;
14
+ const totalSeconds = Math.round(durationMs / 1e3);
15
+ const minutes = Math.round(totalSeconds / 60);
16
+ if (minutes < 1) return suffix ? "just now" : `${totalSeconds}s`;
17
+ if (minutes < 60) return suffix ? `${minutes}m ago` : `${minutes}m`;
18
+ const hours = Math.round(minutes / 60);
19
+ if (hours < 48) return suffix ? `${hours}h ago` : `${hours}h`;
20
+ const days = Math.round(hours / 24);
21
+ return suffix ? `${days}d ago` : `${days}d`;
22
+ }
23
+ /**
24
+ * Format an epoch timestamp relative to now.
25
+ *
26
+ * Handles both past ("5m ago") and future ("in 5m") timestamps.
27
+ * Optionally falls back to a short date for timestamps older than 7 days.
28
+ */
29
+ function formatRelativeTimestamp(timestampMs, options) {
30
+ const fallback = options?.fallback ?? "n/a";
31
+ if (timestampMs == null || !Number.isFinite(timestampMs)) return fallback;
32
+ const diff = Date.now() - timestampMs;
33
+ const absDiff = Math.abs(diff);
34
+ const isPast = diff >= 0;
35
+ const sec = Math.round(absDiff / 1e3);
36
+ if (sec < 60) return isPast ? "just now" : "in <1m";
37
+ const min = Math.round(sec / 60);
38
+ if (min < 60) return isPast ? `${min}m ago` : `in ${min}m`;
39
+ const hr = Math.round(min / 60);
40
+ if (hr < 48) return isPast ? `${hr}h ago` : `in ${hr}h`;
41
+ const day = Math.round(hr / 24);
42
+ if (!options?.dateFallback || day <= 7) return isPast ? `${day}d ago` : `in ${day}d`;
43
+ try {
44
+ return new Intl.DateTimeFormat("en-US", {
45
+ month: "short",
46
+ day: "numeric",
47
+ ...options.timezone ? { timeZone: options.timezone } : {}
48
+ }).format(new Date(timestampMs));
49
+ } catch {
50
+ return `${day}d ago`;
51
+ }
52
+ }
53
+
54
+ //#endregion
55
+ export { formatTimeAgo as n, formatRelativeTimestamp as t };
@@ -1,7 +1,7 @@
1
1
  import { _ as expandHomePrefix, g as resolveStateDir, i as isNixMode, l as resolveGatewayLockDir, o as resolveConfigPath, r as STATE_DIR, t as CONFIG_PATH, u as resolveGatewayPort } from "./paths-Cqn-zk3M.js";
2
2
  import { h as resolveUserPath, s as ensureDir, t as CONFIG_DIR, v as shortenHomePath, x as truncateUtf16Safe } from "./utils-AQWIWjGu.js";
3
3
  import { n as SILENT_REPLY_TOKEN } from "./tokens-DfB8vBa4.js";
4
- import { At as resolveInputFileLimits, B as normalizeOptionalText, Bt as countActiveDescendantRuns, Cn as registerAgentRunContext, Ct as DEFAULT_INPUT_IMAGE_MAX_BYTES, D as resolveOutboundSessionRoute, Dn as runWithModelFallback, Dt as extractFileContentFromSource, Et as DEFAULT_INPUT_TIMEOUT_MS, G as hasLegacyDeliveryHints, H as normalizeRequiredName, Ht as initSubagentRegistry, Jt as readLatestAssistantReply, K as stripLegacyDeliveryFields, Kt as resolveAgentTimeoutMs, L as inferLegacyName, M as resetDirectoryCache, Nn as stripHeartbeatToken, O as resolveOutboundTarget, Ot as extractImageContentFromSource, P as normalizeHttpWebhookUrl, Q as isExternalHookSession, R as normalizeOptionalAgentId, S as createSymiTools, Sn as onAgentEvent, Tn as resolveModelProfile, Tt as DEFAULT_INPUT_MAX_REDIRECTS, U as migrateLegacyCronPayload, Ut as listDescendantRunsForRequester, V as normalizePayloadToSystemText, W as buildDeliveryFromLegacyPayload, X as detectSuspiciousPatterns, Y as buildSafeExternalPrompt, Z as getHookType, _n as waitForActiveTasks, a as getPluginToolMeta, at as markGatewaySigusr1RestartHandled, bn as emitAgentEvent, c as handleSlackHttpRequest, cn as resolveUserTimezone, ct as setPreRestartDeferralCheck, d as buildHistoryContextFromEntries, en as getActiveEmbeddedRunCount, gn as setCommandLaneConcurrency, h as getTotalPendingReplies, hn as resetAllLanes, in as ToolInputError, it as isGatewaySigusr1RestartExternallyAllowed, jn as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, k as resolveSessionDeliveryTarget, kt as normalizeMimeList, l as readJsonBodyWithLimit, mn as getTotalQueueSize, n as applyToolPolicyPipeline, nt as deferGatewayRestartUntilIdle, on as formatUserTime, pn as getActiveTaskCount, pt as requestHeartbeatNow, qt as runSubagentAnnounceFlow, r as buildDefaultToolPolicyPipelineSteps, rn as registerUnhandledRejectionHandler, rt as emitGatewayRestart, s as loadSymiPlugins, sn as resolveUserTimeFormat, st as setGatewaySigusr1RestartPolicy, t as runAgentTurn, tt as consumeGatewaySigusr1RestartAuthorization, u as requestBodyErrorToText, vn as CommandLane, w as resolveAnnounceTargetFromKey, wt as DEFAULT_INPUT_IMAGE_MIMES, xn as getAgentRunContext, yn as clearAgentRunContext, z as normalizeOptionalSessionKey } from "./unified-runner-CDyedWS-.js";
4
+ import { $t as getActiveEmbeddedRunCount, An as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, B as normalizeOptionalText, Ct as DEFAULT_INPUT_IMAGE_MIMES, D as resolveOutboundSessionRoute, Dt as extractImageContentFromSource, En as runWithModelFallback, Et as extractFileContentFromSource, G as hasLegacyDeliveryHints, Gt as resolveAgentTimeoutMs, H as normalizeRequiredName, Ht as listDescendantRunsForRequester, K as stripLegacyDeliveryFields, Kt as runSubagentAnnounceFlow, L as inferLegacyName, M as resetDirectoryCache, O as resolveOutboundTarget, Ot as normalizeMimeList, P as normalizeHttpWebhookUrl, Q as isExternalHookSession, R as normalizeOptionalAgentId, S as createSymiTools, Sn as registerAgentRunContext, St as DEFAULT_INPUT_IMAGE_MAX_BYTES, Tt as DEFAULT_INPUT_TIMEOUT_MS, U as migrateLegacyCronPayload, V as normalizePayloadToSystemText, Vt as initSubagentRegistry, W as buildDeliveryFromLegacyPayload, X as detectSuspiciousPatterns, Y as buildSafeExternalPrompt, Z as getHookType, _n as CommandLane, a as getPluginToolMeta, an as formatUserTime, at as markGatewaySigusr1RestartHandled, bn as getAgentRunContext, c as handleSlackHttpRequest, ct as setPreRestartDeferralCheck, d as buildHistoryContextFromEntries, fn as getActiveTaskCount, gn as waitForActiveTasks, h as getTotalPendingReplies, hn as setCommandLaneConcurrency, it as isGatewaySigusr1RestartExternallyAllowed, jn as stripHeartbeatToken, k as resolveSessionDeliveryTarget, kt as resolveInputFileLimits, l as readJsonBodyWithLimit, mn as resetAllLanes, n as applyToolPolicyPipeline, nn as registerUnhandledRejectionHandler, nt as deferGatewayRestartUntilIdle, on as resolveUserTimeFormat, pn as getTotalQueueSize, qt as readLatestAssistantReply, r as buildDefaultToolPolicyPipelineSteps, rn as ToolInputError, rt as emitGatewayRestart, s as loadSymiPlugins, sn as resolveUserTimezone, st as setGatewaySigusr1RestartPolicy, t as runAgentTurn, tt as consumeGatewaySigusr1RestartAuthorization, u as requestBodyErrorToText, vn as clearAgentRunContext, w as resolveAnnounceTargetFromKey, wn as resolveModelProfile, wt as DEFAULT_INPUT_MAX_REDIRECTS, xn as onAgentEvent, yn as emitAgentEvent, z as normalizeOptionalSessionKey, zt as countActiveDescendantRuns } from "./unified-runner-Uyw1gZOm.js";
5
5
  import { A as isRich, E as setVerbose, H as createInternalHookEvent, M as getChildLogger, N as getLogger, P as getResolvedLoggerSettings, U as registerInternalHook, V as clearInternalHooks, W as triggerInternalHook, j as theme, k as colorize, m as createEmptyPluginRegistry, r as DEFAULT_CHAT_CHANNEL } from "./registry-CtguoMhn.js";
6
6
  import { a as setConsoleSubsystemFilter, f as defaultRuntime, n as runtimeForLogger, o as setConsoleTimestampPrefix, t as createSubsystemLogger } from "./subsystem-CgepNOk5.js";
7
7
  import { Ht as DEFAULT_MODEL, N as getModelRefStatus, O as isPidAlive, P as isCliProvider, U as resolveHooksGmailModel, Ut as DEFAULT_PROVIDER, V as resolveConfiguredModelRef, Vt as DEFAULT_CONTEXT_TOKENS, q as resolveThinkingDefault, z as resolveAllowedModelRef } from "./auth-profiles-8vSEr9B4.js";
@@ -13,21 +13,21 @@ import { C as ensureAgentWorkspace, D as resolveDefaultAgentWorkspaceDir, O as r
13
13
  import "./github-copilot-token-DTYkb2IC.js";
14
14
  import "./boolean-BgXe2hyu.js";
15
15
  import { n as logAcceptedEnvOption, t as isTruthyEnvValue } from "./env-B7UUyzd_.js";
16
- import "./pi-embedded-helpers-CBbg0u1B.js";
16
+ import "./pi-embedded-helpers-VZo1D4Ck.js";
17
17
  import { M as resolveSubagentMaxConcurrent, N as VERSION, P as resolveRuntimeServiceVersion, i as loadConfig, j as resolveAgentMaxConcurrent, l as writeConfigFile, m as parseDurationMs, n as migrateLegacyConfig, o as readConfigFileSnapshot, r as createConfigIO } from "./config-fTqqDRAc.js";
18
18
  import { l as isTestDefaultMemorySlotDisabled } from "./manifest-registry-B4I9g0CL.js";
19
19
  import { a as isPathInsideWithRealpath } from "./legacy-names-BVA_sKnb.js";
20
- import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-CTHB6H4C.js";
21
- import "./chrome-Dpt5h40c.js";
20
+ import { S as resolveToolProfilePolicy, _ as collectExplicitAllowlist, b as mergeAlsoAllowPolicy } from "./sandbox-sayuve7z.js";
21
+ import "./chrome-sQI2Ex5S.js";
22
22
  import { i as enableTailscaleServe, n as disableTailscaleServe, o as getTailnetHostname, r as enableTailscaleFunnel, t as disableTailscaleFunnel } from "./tailscale-D3KwzQUZ.js";
23
23
  import { t as safeEqualSecret } from "./secret-equal-DjTAoH50.js";
24
24
  import { n as pickPrimaryTailnetIPv4, r as pickPrimaryTailnetIPv6 } from "./tailnet-BruyvjMC.js";
25
25
  import { a as isTrustedProxyAddress, d as resolveGatewayListenHosts, f as resolveHostName, l as resolveClientIp, n as isLoopbackAddress, o as isValidIPv4, r as isLoopbackHost, s as normalizeHostHeader, t as rawDataToString, u as resolveGatewayBindHost } from "./ws-FAiTi9-v.js";
26
26
  import { a as resolveGatewayAuth, c as createAuthRateLimiter, i as isLocalDirectRequest, n as authorizeHttpGatewayConnect, o as AUTH_RATE_LIMIT_SCOPE_DEVICE_TOKEN, r as authorizeWsControlUiGatewayConnect, s as AUTH_RATE_LIMIT_SCOPE_SHARED_SECRET, t as assertGatewayAuthConfigured } from "./auth-CC9_WXMi.js";
27
- import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-k4u5vRZi.js";
27
+ import { g as mergeGatewayTailscaleConfig, h as ensureGatewayStartupAuth } from "./server-context-hxl_K7eY.js";
28
28
  import { d as hasBinary } from "./frontmatter-vaw8OX7Y.js";
29
29
  import { r as buildWorkspaceSkillSnapshot } from "./skills-BF_e-fYt.js";
30
- import "./routes-NdLw86IB.js";
30
+ import "./routes-BFfAPz_0.js";
31
31
  import "./redact-CozCe54d.js";
32
32
  import { a as isErrno, n as formatErrorMessage } from "./errors-CBVhQiQ9.js";
33
33
  import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-CR_3Yr4x.js";
@@ -50,10 +50,10 @@ import "./models-config-BCa11tVc.js";
50
50
  import "./pi-auth-json-DhbhmAvs.js";
51
51
  import { c as hasNonzeroUsage, s as deriveSessionTotalTokens } from "./session-cost-usage-DQjHUno0.js";
52
52
  import { C as enqueueSystemEvent, a as loadCombinedSessionStoreForGateway, f as formatRestartSentinelMessage, i as listSessionsFromStore, m as summarizeRestartSentinel, o as loadSessionEntry, u as consumeRestartSentinel, x as lookupContextTokens } from "./session-utils-C6O0Db39.js";
53
- import { r as getMachineDisplayName } from "./with-timeout-4X39bfAZ.js";
53
+ import { r as getMachineDisplayName } from "./with-timeout-Bxn0qVBQ.js";
54
54
  import { a as resolveAgentIdentity } from "./reply-prefix-ClUrRCRd.js";
55
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-D70bi98u.js";
56
- import { c as resolveMemorySearchConfig } from "./manager-CuY92F3I.js";
55
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-ofHIUCzf.js";
56
+ import { c as resolveMemorySearchConfig } from "./manager-CS1vxold.js";
57
57
  import "./sqlite-CfMLToLW.js";
58
58
  import "./chunk-CKgSHf7u.js";
59
59
  import "./markdown-tables-jlJYpF1X.js";
@@ -61,8 +61,8 @@ import { t as fetchWithSsrFGuard } from "./fetch-guard-BWofyagX.js";
61
61
  import "./local-roots-C0G03E-R.js";
62
62
  import { n as isRestartEnabled } from "./commands-sNCgvbpu.js";
63
63
  import "./commands-registry-DXK4Ortm.js";
64
- import { $t as roleScopesAllow, Bt as buildDeviceAuthPayload, Ft as PROTOCOL_VERSION, Ht as ensureDeviceToken, It as ErrorCodes, Lt as errorShape, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Ut as getPairedDevice, Vt as approveDevicePairing, Zt as updatePairedDeviceMetadata, at as validateRequestFrame, in as verifyDeviceSignature, n as formatValidationErrors, qt as requestDevicePairing, rn as normalizeDevicePublicKeyBase64Url, tn as deriveDeviceIdFromPublicKey, w as validateConnectParams, z as validateExecApprovalResolveParams } from "./client-3Wn4QAzR.js";
65
- import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-Ck5wfJH6.js";
64
+ import { $t as roleScopesAllow, Bt as buildDeviceAuthPayload, Ft as PROTOCOL_VERSION, Ht as ensureDeviceToken, It as ErrorCodes, Lt as errorShape, Qt as verifyDeviceToken, R as validateExecApprovalRequestParams, Ut as getPairedDevice, Vt as approveDevicePairing, Zt as updatePairedDeviceMetadata, at as validateRequestFrame, in as verifyDeviceSignature, n as formatValidationErrors, qt as requestDevicePairing, rn as normalizeDevicePublicKeyBase64Url, tn as deriveDeviceIdFromPublicKey, w as validateConnectParams, z as validateExecApprovalResolveParams } from "./client-D8iTVY4F.js";
65
+ import { f as loadGatewayTlsRuntime$1, n as callGateway } from "./call-DLBaLOHo.js";
66
66
  import "./pairing-token-BmIoXjHZ.js";
67
67
  import "./tool-display-D1Hh5TqL.js";
68
68
  import { _ as registerSkillsChangeListener, a as refreshRemoteNodeBins, g as getSkillsSnapshotVersion, i as refreshRemoteBinsForConnectedNodes, n as primeRemoteSkillsCache, o as removeRemoteNodeInfo, p as updatePairedNodeMetadata, r as recordRemoteNodeInfo, s as setSkillsRemoteRegistry, t as getRemoteSkillEligibility } from "./skills-remote-Ch1B-1aN.js";
@@ -74,7 +74,7 @@ import "./pairing-store-DmCi9E47.js";
74
74
  import { t as DEFAULT_EXEC_APPROVAL_TIMEOUT_MS } from "./exec-approvals-BWtVKlN2.js";
75
75
  import "./nodes-screen-B_D8bZhT.js";
76
76
  import { n as formatTokenCount, r as formatUsd } from "./usage-format-Ca9K30TH.js";
77
- import "./control-service-D_yArX3I.js";
77
+ import "./control-service-BDMq-0pg.js";
78
78
  import { i as parseAbsoluteTimeMs, n as resolveCronStaggerMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BhvnarfO.js";
79
79
  import { n as resolveMessageChannelSelection } from "./channel-selection-BGtIUbFL.js";
80
80
  import "./delivery-queue-CeY346SK.js";
@@ -84,10 +84,10 @@ import { t as formatDocsLink } from "./links-C6mXo5Yj.js";
84
84
  import { n as runCommandWithRuntime } from "./cli-utils-CX1oQ81G.js";
85
85
  import { t as formatHelpExamples } from "./help-format-BWTv-lf6.js";
86
86
  import { n as withProgress } from "./progress-B6mhJhX6.js";
87
- import "./memory-cli-CMfGKcfs.js";
87
+ import "./memory-cli-LXH0BNmI.js";
88
88
  import "./logging-B5YNzZB9.js";
89
89
  import "./replies-BUaT9S6J.js";
90
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-iVo2Y8pC.js";
90
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, r as resolveEffectiveToolPolicy } from "./pi-tools.policy-DrRZdkk0.js";
91
91
  import "./model-BBL3doiY.js";
92
92
  import { t as createDefaultDeps } from "./deps-Du8ZcRHN.js";
93
93
  import { t as ensureSymiCliOnPath } from "./path-env-CRW1aXZp.js";
@@ -103,35 +103,35 @@ import "./install-safe-path-odQNUvjd.js";
103
103
  import "./skill-scanner-BGtq5jZi.js";
104
104
  import "./channels-status-issues-rRBNHH7B.js";
105
105
  import "./daemon-runtime-C3dBpZhs.js";
106
- import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-BhDEF1N9.js";
106
+ import { C as normalizeControlUiBasePath, S as buildControlUiAvatarUrl, c as handleReset, w as resolveAssistantAvatarUrl, x as CONTROL_UI_AVATAR_PREFIX } from "./onboard-helpers-C5J9vSm2.js";
107
107
  import "./systemd-ChKNxGyT.js";
108
108
  import "./service-B5aOZmQH.js";
109
109
  import "./lifecycle-core-CcinwCvM.js";
110
110
  import "./systemd-hints-hoofHqb7.js";
111
111
  import { t as parsePort$1 } from "./parse-port-CykvIgQu.js";
112
- import { n as addGatewayServiceCommands } from "./daemon-cli-BA_y7Ul0.js";
112
+ import { n as addGatewayServiceCommands } from "./daemon-cli-DiLogoCM.js";
113
113
  import "./diagnostics-3x3usVgE.js";
114
114
  import "./table-Cyd0-LaL.js";
115
115
  import { n as resolveWideAreaDiscoveryDomain, r as writeWideAreaGatewayZone } from "./widearea-dns-DxpPXWPv.js";
116
116
  import { i as toOptionString, n as extractGatewayMiskeys, r as maybeExplainGatewayServiceStop, t as describeUnknownError } from "./shared-E4KDN3LG.js";
117
- import { c as resolveNodeCommandAllowlist, l as probeGateway, n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./audit-CqpgecVD.js";
117
+ import { c as resolveNodeCommandAllowlist, l as probeGateway, n as DEFAULT_GATEWAY_HTTP_TOOL_DENY } from "./audit-B58SlbPa.js";
118
118
  import { t as discoverGatewayBeacons } from "./bonjour-discovery-lp5P_YUR.js";
119
- import { r as pickGatewaySelfPresence } from "./status-CA91ksCO.js";
120
- import { c as startHeartbeatRunner, i as styleHealthChannelLine, n as getHealthSnapshot, o as runHeartbeatOnce, t as formatHealthChannelLines } from "./health-CNPl11m6.js";
119
+ import { r as pickGatewaySelfPresence } from "./status-B-XD80Yl.js";
120
+ import { i as styleHealthChannelLine, n as getHealthSnapshot, t as formatHealthChannelLines } from "./health-iJ9JzccO.js";
121
121
  import { a as resolveControlUiRootSync, i as resolveControlUiRootOverrideSync, t as ensureControlUiAssetsBuilt } from "./control-ui-assets-muBwnb6-.js";
122
- import { C as createAgentEventHandler, D as onHeartbeatEvent, E as startGatewayConfigReloader, S as resolveCronRunLogPath, T as createToolEventRecipientRegistry, _ 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, w as createChatRunState, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-CdvcMCRG.js";
123
- import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-DFfE95SZ.js";
124
- import { t as runOnboardingWizard } from "./onboarding-i6cOoB8w.js";
125
- import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-CtKaAgsq.js";
122
+ import { a as resolveNpmChannelTag, c as DEFAULT_PACKAGE_CHANNEL, m as normalizeUpdateChannel, n as compareSemverStrings, t as checkUpdateStatus } from "./update-check-CC111uwU.js";
123
+ import { t as runOnboardingWizard } from "./onboarding-Bop5peq2.js";
124
+ import { C as createAgentEventHandler, E as startGatewayConfigReloader, S as resolveCronRunLogPath, T as createToolEventRecipientRegistry, _ 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, w as createChatRunState, x as appendCronRunLog, y as getHandshakeTimeoutMs } from "./server-methods-MUFuMWc_.js";
125
+ import { d as shouldLogWs, f as summarizeAgentEventForWsLog, l as formatForLog, p as setGatewayWsLogStyle, u as logWs } from "./push-apns-DTqLWoEj.js";
126
126
  import { T as resolveGmailHookRuntimeConfig, _ as buildGogWatchServeArgs, i as ensureTailscaleEndpoint, v as buildGogWatchStartArgs } from "./gmail-setup-utils-CLvOQ6kY.js";
127
- import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-CcMZZWTA.js";
127
+ import { a as getCliSessionId, o as setCliSessionId, s as runCliAgent, t as agentCommand } from "./agent-BrIHHGnC.js";
128
128
  import { t as createOutboundSendDeps } from "./outbound-send-deps-BpziI1pC.js";
129
129
  import { s as loadAgentIdentityFromWorkspace } from "./agents.config-COMcEDAk.js";
130
130
  import "./dm-policy-shared-BcXoqtVd.js";
131
131
  import "./node-service-O5CpXu6c.js";
132
- import "./status.update-CWfIVmkl.js";
132
+ import "./status.update-B9WCVHPy.js";
133
133
  import "./skills-install-miTQGOBQ.js";
134
- import "./update-runner-Bhpg9A9O.js";
134
+ import "./update-runner-B0L2a2rW.js";
135
135
  import { t as resolveAgentSessionDirs } from "./session-dirs-Chh7bBGo.js";
136
136
  import { i as shouldIncludeHook, r as resolveHookConfig, t as loadWorkspaceHookEntries } from "./workspace-StbmAqYj.js";
137
137
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -2044,7 +2044,6 @@ function createGatewayCloseHandler(params) {
2044
2044
  if (params.pluginServices) await params.pluginServices.stop().catch(() => {});
2045
2045
  await stopGmailWatcher();
2046
2046
  params.cron.stop();
2047
- params.heartbeatRunner.stop();
2048
2047
  for (const timer of params.nodePresenceTimers.values()) clearInterval(timer);
2049
2048
  params.nodePresenceTimers.clear();
2050
2049
  params.broadcast("shutdown", {
@@ -2057,9 +2056,6 @@ function createGatewayCloseHandler(params) {
2057
2056
  if (params.agentUnsub) try {
2058
2057
  params.agentUnsub();
2059
2058
  } catch {}
2060
- if (params.heartbeatUnsub) try {
2061
- params.heartbeatUnsub();
2062
- } catch {}
2063
2059
  params.chatRunState.clear();
2064
2060
  for (const c of params.clients) try {
2065
2061
  c.socket.close(1012, "service restart");
@@ -4253,58 +4249,10 @@ async function executeJobCore(state, job) {
4253
4249
  sessionKey: job.sessionKey,
4254
4250
  contextKey: `cron:${job.id}`
4255
4251
  });
4256
- if (job.wakeMode === "now" && state.deps.runHeartbeatOnce) {
4257
- const reason = `cron:${job.id}`;
4258
- const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
4259
- const maxWaitMs = state.deps.wakeNowHeartbeatBusyMaxWaitMs ?? 2 * 6e4;
4260
- const retryDelayMs = state.deps.wakeNowHeartbeatBusyRetryDelayMs ?? 250;
4261
- const waitStartedAt = state.deps.nowMs();
4262
- let heartbeatResult;
4263
- for (;;) {
4264
- heartbeatResult = await state.deps.runHeartbeatOnce({
4265
- reason,
4266
- agentId: job.agentId,
4267
- sessionKey: job.sessionKey
4268
- });
4269
- if (heartbeatResult.status !== "skipped" || heartbeatResult.reason !== "requests-in-flight") break;
4270
- if (state.deps.nowMs() - waitStartedAt > maxWaitMs) {
4271
- state.deps.requestHeartbeatNow({
4272
- reason,
4273
- agentId: job.agentId,
4274
- sessionKey: job.sessionKey
4275
- });
4276
- return {
4277
- status: "ok",
4278
- summary: text
4279
- };
4280
- }
4281
- await delay(retryDelayMs);
4282
- }
4283
- if (heartbeatResult.status === "ran") return {
4284
- status: "ok",
4285
- summary: text
4286
- };
4287
- else if (heartbeatResult.status === "skipped") return {
4288
- status: "skipped",
4289
- error: heartbeatResult.reason,
4290
- summary: text
4291
- };
4292
- else return {
4293
- status: "error",
4294
- error: heartbeatResult.reason,
4295
- summary: text
4296
- };
4297
- } else {
4298
- state.deps.requestHeartbeatNow({
4299
- reason: `cron:${job.id}`,
4300
- agentId: job.agentId,
4301
- sessionKey: job.sessionKey
4302
- });
4303
- return {
4304
- status: "ok",
4305
- summary: text
4306
- };
4307
- }
4252
+ return {
4253
+ status: "ok",
4254
+ summary: text
4255
+ };
4308
4256
  }
4309
4257
  if (job.payload.kind !== "agentTurn") return {
4310
4258
  status: "skipped",
@@ -4324,11 +4272,6 @@ async function executeJobCore(state, job) {
4324
4272
  sessionKey: job.sessionKey,
4325
4273
  contextKey: `cron:${job.id}`
4326
4274
  });
4327
- if (job.wakeMode === "now") state.deps.requestHeartbeatNow({
4328
- reason: `cron:${job.id}`,
4329
- agentId: job.agentId,
4330
- sessionKey: job.sessionKey
4331
- });
4332
4275
  }
4333
4276
  return {
4334
4277
  status: res.status,
@@ -4401,7 +4344,6 @@ function wake(state, opts) {
4401
4344
  const text = opts.text.trim();
4402
4345
  if (!text) return { ok: false };
4403
4346
  state.deps.enqueueSystemEvent(text);
4404
- if (opts.mode === "now") state.deps.requestHeartbeatNow({ reason: "wake" });
4405
4347
  return { ok: true };
4406
4348
  }
4407
4349
  function stopTimer(state) {
@@ -4708,19 +4650,6 @@ function buildGatewayCronService(params) {
4708
4650
  }
4709
4651
  return canonical;
4710
4652
  };
4711
- const resolveCronWakeTarget = (opts) => {
4712
- const runtimeConfig = loadConfig();
4713
- const agentId = ((opts?.agentId ? resolveCronAgent(opts.agentId).agentId : void 0) ?? (opts?.sessionKey ? normalizeAgentId(resolveAgentIdFromSessionKey(opts.sessionKey)) : void 0)) || void 0;
4714
- return {
4715
- runtimeConfig,
4716
- agentId,
4717
- sessionKey: opts?.sessionKey && agentId ? resolveCronSessionKey({
4718
- runtimeConfig,
4719
- agentId,
4720
- requestedSessionKey: opts.sessionKey
4721
- }) : void 0
4722
- };
4723
- };
4724
4653
  const defaultAgentId = resolveDefaultAgentId(params.cfg);
4725
4654
  const resolveSessionStorePath = (agentId) => resolveStorePath(params.cfg.session?.store, { agentId: agentId ?? defaultAgentId });
4726
4655
  const sessionStorePath = resolveSessionStorePath(defaultAgentId);
@@ -4743,23 +4672,6 @@ function buildGatewayCronService(params) {
4743
4672
  contextKey: opts?.contextKey
4744
4673
  });
4745
4674
  },
4746
- requestHeartbeatNow: (opts) => {
4747
- const { agentId, sessionKey } = resolveCronWakeTarget(opts);
4748
- /* @__PURE__ */ requestHeartbeatNow({
4749
- reason: opts?.reason,
4750
- agentId,
4751
- sessionKey
4752
- });
4753
- },
4754
- runHeartbeatOnce: async (opts) => {
4755
- const { runtimeConfig, agentId, sessionKey } = resolveCronWakeTarget(opts);
4756
- return await runHeartbeatOnce({
4757
- cfg: runtimeConfig,
4758
- reason: opts?.reason,
4759
- agentId,
4760
- sessionKey
4761
- });
4762
- },
4763
4675
  runIsolatedAgentJob: async ({ job, message }) => {
4764
4676
  const { agentId, cfg: runtimeConfig } = resolveCronAgent(job.agentId);
4765
4677
  return await runCronIsolatedAgentTurn({
@@ -6375,7 +6287,7 @@ function normalizeAgentPayload(payload) {
6375
6287
  async function startBrowserControlServerIfEnabled() {
6376
6288
  if (isTruthyEnvValue(process.env.SYMI_SKIP_BROWSER_CONTROL_SERVER)) return null;
6377
6289
  const override = process.env.SYMI_BROWSER_CONTROL_MODULE?.trim();
6378
- const mod = override ? await import(override) : await import("./control-service-D_yArX3I.js").then((n) => n.t);
6290
+ const mod = override ? await import(override) : await import("./control-service-BDMq-0pg.js").then((n) => n.t);
6379
6291
  const start = typeof mod.startBrowserControlServiceFromConfig === "function" ? mod.startBrowserControlServiceFromConfig : mod.startBrowserControlServerFromConfig;
6380
6292
  const stop = typeof mod.stopBrowserControlService === "function" ? mod.stopBrowserControlService : mod.stopBrowserControlServer;
6381
6293
  if (!start) return null;
@@ -6395,7 +6307,6 @@ function createGatewayReloadHandlers(params) {
6395
6307
  } catch (err) {
6396
6308
  params.logHooks.warn(`hooks config reload failed: ${String(err)}`);
6397
6309
  }
6398
- if (plan.restartHeartbeat) nextState.heartbeatRunner.updateConfig(nextConfig);
6399
6310
  resetDirectoryCache();
6400
6311
  if (plan.restartCron) {
6401
6312
  state.cronState.cron.stop();
@@ -9696,7 +9607,6 @@ function createGatewayHooksRequestHandler(params) {
9696
9607
  const dispatchWakeHook = (value) => {
9697
9608
  const sessionKey = resolveMainSessionKeyFromConfig();
9698
9609
  enqueueSystemEvent(value.text, { sessionKey });
9699
- if (value.mode === "now") /* @__PURE__ */ requestHeartbeatNow({ reason: "hook:wake" });
9700
9610
  };
9701
9611
  const dispatchAgentHook = (value) => {
9702
9612
  const sessionKey = value.sessionKey.trim();
@@ -9742,11 +9652,9 @@ function createGatewayHooksRequestHandler(params) {
9742
9652
  });
9743
9653
  const summary = result.summary?.trim() || result.error?.trim() || result.status;
9744
9654
  enqueueSystemEvent(`${result.status === "ok" ? `Hook ${value.name}` : `Hook ${value.name} (${result.status})`}: ${summary}`.trim(), { sessionKey: mainSessionKey });
9745
- if (value.wakeMode === "now") /* @__PURE__ */ requestHeartbeatNow({ reason: `hook:${jobId}` });
9746
9655
  } catch (err) {
9747
9656
  logHooks.warn(`hook agent failed: ${String(err)}`);
9748
9657
  enqueueSystemEvent(`Hook ${value.name} (error): ${String(err)}`, { sessionKey: mainSessionKey });
9749
- if (value.wakeMode === "now") /* @__PURE__ */ requestHeartbeatNow({ reason: `hook:${jobId}:error` });
9750
9658
  }
9751
9659
  })();
9752
9660
  return runId;
@@ -11794,13 +11702,6 @@ async function startGatewayServer(port = 18789, opts = {}) {
11794
11702
  clearAgentRunContext,
11795
11703
  toolEventRecipients
11796
11704
  }));
11797
- const heartbeatUnsub = minimalTestGateway ? null : onHeartbeatEvent((evt) => {
11798
- broadcast("heartbeat", evt, { dropIfSlow: true });
11799
- });
11800
- let heartbeatRunner = minimalTestGateway ? {
11801
- stop: () => {},
11802
- updateConfig: () => {}
11803
- } : startHeartbeatRunner({ cfg: cfgAtStart });
11804
11705
  const healthCheckMinutes = cfgAtStart.gateway?.channelHealthCheckMinutes;
11805
11706
  const channelHealthMonitor = healthCheckMinutes === 0 ? null : startChannelHealthMonitor({
11806
11707
  channelManager,
@@ -11882,7 +11783,7 @@ async function startGatewayServer(port = 18789, opts = {}) {
11882
11783
  });
11883
11784
  let glassUiBridgeCleanup = null;
11884
11785
  if (!minimalTestGateway) {
11885
- const { createGlassUiBridge } = await import("./glass-ui-ws-BjkYXSwe.js");
11786
+ const { createGlassUiBridge } = await import("./glass-ui-ws-Dsez9bGF.js");
11886
11787
  glassUiBridgeCleanup = createGlassUiBridge({
11887
11788
  wss: glassUiWss,
11888
11789
  context: gatewayRequestContext,
@@ -11941,13 +11842,11 @@ async function startGatewayServer(port = 18789, opts = {}) {
11941
11842
  broadcast,
11942
11843
  getState: () => ({
11943
11844
  hooksConfig,
11944
- heartbeatRunner,
11945
11845
  cronState,
11946
11846
  browserControl
11947
11847
  }),
11948
11848
  setState: (nextState) => {
11949
11849
  hooksConfig = nextState.hooksConfig;
11950
- heartbeatRunner = nextState.heartbeatRunner;
11951
11850
  cronState = nextState.cronState;
11952
11851
  cron = cronState.cron;
11953
11852
  cronStorePath = cronState.storePath;
@@ -11982,14 +11881,12 @@ async function startGatewayServer(port = 18789, opts = {}) {
11982
11881
  stopChannel,
11983
11882
  pluginServices,
11984
11883
  cron,
11985
- heartbeatRunner,
11986
11884
  nodePresenceTimers,
11987
11885
  broadcast,
11988
11886
  tickInterval,
11989
11887
  healthInterval,
11990
11888
  dedupeCleanup,
11991
11889
  agentUnsub,
11992
- heartbeatUnsub,
11993
11890
  chatRunState,
11994
11891
  clients,
11995
11892
  configReloader,