@symerian/symi 3.3.0 → 3.3.1

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 (330) hide show
  1. package/dist/{agent-B2IkIBj2.js → agent-BI1-UXxQ.js} +1 -1
  2. package/dist/{agent-BrIHHGnC.js → agent-DeLysRUa.js} +29 -29
  3. package/dist/{agent-scope-2la27US0.js → agent-scope-BjEBQhs0.js} +23 -23
  4. package/dist/{agent-scope-D_MtsuXX.js → agent-scope-DE5eEsvh.js} +2 -2
  5. package/dist/{agents-B57SUSPt.js → agents-BMRZpxNt.js} +2 -2
  6. package/dist/{agents.config-COMcEDAk.js → agents.config-BFKM-a83.js} +3 -3
  7. package/dist/{audit-B58SlbPa.js → audit-DQ_p2Pbq.js} +34 -34
  8. package/dist/{auth-CC9_WXMi.js → auth-BbwD4lRX.js} +3 -3
  9. package/dist/{auth-choice-B6iYCDVN.js → auth-choice-BGZsmh6a.js} +9 -9
  10. package/dist/{auth-choice-Z1qCZxwg.js → auth-choice-T77Ymi34.js} +1 -1
  11. package/dist/{auth-profiles-CZTGpbyT.js → auth-profiles-B6ISm3Th.js} +5 -5
  12. package/dist/{auth-profiles-8vSEr9B4.js → auth-profiles-BVtpxYtY.js} +17 -17
  13. package/dist/{auth-token-DpYUPTNG.js → auth-token-CPluo60n.js} +3 -3
  14. package/dist/{banner-QsnCDxXH.js → banner-BJHky-bq.js} +1 -1
  15. package/dist/{bindings-CiRAK4tH.js → bindings-9LSA3Jr1.js} +2 -2
  16. package/dist/{bonjour-discovery-lp5P_YUR.js → bonjour-discovery-CU1mz7AC.js} +3 -3
  17. package/dist/{browser-cli-_9G3GBJS.js → browser-cli-O7Ic8DI3.js} +28 -28
  18. package/dist/build-info.json +3 -3
  19. package/dist/bundled/boot-md/handler.js +34 -34
  20. package/dist/bundled/bootstrap-extra-files/handler.js +5 -5
  21. package/dist/bundled/session-memory/handler.js +33 -33
  22. package/dist/{call-DLBaLOHo.js → call-CdXXPXpo.js} +13 -13
  23. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  24. package/dist/{catalog-CNZxYA15.js → catalog-BEREnWaa.js} +4 -4
  25. package/dist/{channel-options-DckWOMWG.js → channel-options-BrDTgiiV.js} +5 -5
  26. package/dist/{channel-options-Cj-xJAMD.js → channel-options-C1yi5h7A.js} +1 -1
  27. package/dist/{channel-selection-BGtIUbFL.js → channel-selection-BvIcXQLj.js} +2 -2
  28. package/dist/{channels-cli-CIq4PFA0.js → channels-cli-BYeGzy-G.js} +7 -7
  29. package/dist/{channels-cli-Y8CGJ_qQ.js → channels-cli-Pxe1OINS.js} +98 -98
  30. package/dist/{channels-status-issues-rRBNHH7B.js → channels-status-issues-DC8vgOMo.js} +1 -1
  31. package/dist/{chrome-b556dOQ6.js → chrome-CQnRgvJz.js} +7 -7
  32. package/dist/{chrome-BgQbis3t.js → chrome-FAf5DZL2.js} +11 -11
  33. package/dist/{chrome-sQI2Ex5S.js → chrome-NUKborg3.js} +7 -7
  34. package/dist/{chunk-CKgSHf7u.js → chunk-DQGU0F8t.js} +2 -2
  35. package/dist/{chunk-Ds8SZRkS.js → chunk-DX6VtywY.js} +1 -1
  36. package/dist/{clack-prompter-CR9tYooX.js → clack-prompter-CWQQn_CK.js} +5 -5
  37. package/dist/cli-DFNOC2Ad.js +128 -0
  38. package/dist/{cli--omJsLkl.js → cli-Dt-wfm_7.js} +4 -4
  39. package/dist/{client-D8iTVY4F.js → client-Bs2zB0rY.js} +7 -7
  40. package/dist/{clipboard-C9NQe8TV.js → clipboard-McRwF3r0.js} +1 -1
  41. package/dist/{command-registry-bozDt85D.js → command-registry-BwbT4ll7.js} +10 -10
  42. package/dist/{commands-sNCgvbpu.js → commands-B3UrgxIz.js} +2 -2
  43. package/dist/{commands-registry-CRkL6mTz.js → commands-registry-C5IdtVVy.js} +4 -4
  44. package/dist/{commands-registry-DXK4Ortm.js → commands-registry-DYk02tmt.js} +6 -6
  45. package/dist/{completion-cli-9qQYFUPk.js → completion-cli-CyOSA5xZ.js} +2 -2
  46. package/dist/{completion-cli-FXkVKM19.js → completion-cli-DiNUqrNY.js} +16 -16
  47. package/dist/{config-fTqqDRAc.js → config-CW8aDVM0.js} +9 -9
  48. package/dist/{config-cli-BexhS7Qb.js → config-cli-DBU_S417.js} +15 -15
  49. package/dist/{config-cli-C3D7beGW.js → config-cli-DfG0nukz.js} +1 -1
  50. package/dist/{config-guard-IteQa1rq.js → config-guard-CNmD3-IC.js} +23 -23
  51. package/dist/{config-validation-B05t9fma.js → config-validation-Bz5CV181.js} +2 -2
  52. package/dist/{configure-BWXNd2TO.js → configure-BYu2DI_6.js} +2 -2
  53. package/dist/{configure-0e3ty1G9.js → configure-BkH4ueot.js} +26 -26
  54. package/dist/{consolidate-BaeR2tIX.js → consolidate-Cx7qF5Ht.js} +10 -10
  55. package/dist/{consolidate-C-HKdAJo.js → consolidate-dh1m3X1s.js} +2 -2
  56. package/dist/{control-service-BDMq-0pg.js → control-service-Drd2sr2o.js} +5 -5
  57. package/dist/{control-ui-assets-muBwnb6-.js → control-ui-assets-D22DSxhv.js} +4 -4
  58. package/dist/{conversation-label-B4d5pKXr.js → conversation-label-CS5Zjc4w.js} +1 -1
  59. package/dist/{conversation-label-WjwKgn7n.js → conversation-label-tLwAlqLf.js} +1 -1
  60. package/dist/{cron-cli-DvDr2Uxo.js → cron-cli-BTAdnRhX.js} +21 -21
  61. package/dist/{daemon-cli-DiLogoCM.js → daemon-cli-BY9BFNuw.js} +22 -22
  62. package/dist/{daemon-runtime-C3dBpZhs.js → daemon-runtime-BH3ZBZXS.js} +13 -13
  63. package/dist/{deliver-B_Fv-dS9.js → deliver-DZ7ynJYH.js} +8 -8
  64. package/dist/{deliver-B_Gz2_tA.js → deliver-Dlq2X0K5.js} +4 -4
  65. package/dist/{deliver-B_jXI55b.js → deliver-kmnOOp9j.js} +22 -22
  66. package/dist/{delivery-queue-CeY346SK.js → delivery-queue-DDs84baU.js} +2 -2
  67. package/dist/{deps-Du8ZcRHN.js → deps-i1g0Zpz4.js} +1 -1
  68. package/dist/{devices-cli-BFPrh5bu.js → devices-cli-Cqi6L8PH.js} +19 -19
  69. package/dist/{diagnostic-D7z6O7v0.js → diagnostic-CQLyE7_n.js} +1 -1
  70. package/dist/{diagnostic-oeL366QK.js → diagnostic-CwF3MnBL.js} +1 -1
  71. package/dist/{diagnostics-3x3usVgE.js → diagnostics-nLP2i_BY.js} +5 -5
  72. package/dist/{directory-cli-BUBucKQI.js → directory-cli-B0XsBWso.js} +19 -19
  73. package/dist/{dm-policy-shared-BcXoqtVd.js → dm-policy-shared-CnKffdt_.js} +2 -2
  74. package/dist/{dns-cli-B6QTNBXV.js → dns-cli-BHWlCG31.js} +17 -17
  75. package/dist/{dock-n_MeJBcj.js → dock-CnGWTXL4.js} +3 -3
  76. package/dist/{docs-cli-C2xEH6jC.js → docs-cli-DASNErN-.js} +13 -13
  77. package/dist/{doctor-completion-K1dL1s3P.js → doctor-completion-D_cwpDAq.js} +4 -4
  78. package/dist/{doctor-completion-CcHk8myN.js → doctor-completion-DqvmZZEo.js} +1 -1
  79. package/dist/{doctor-config-flow-Dl08K6Q3.js → doctor-config-flow-BvHSaiFy.js} +15 -15
  80. package/dist/entry.js +1 -1
  81. package/dist/{env-B7UUyzd_.js → env-B97Ms861.js} +2 -2
  82. package/dist/{errors-BgCjRT2k.js → errors-BkfLlDKo.js} +1 -1
  83. package/dist/{errors-CBVhQiQ9.js → errors-Z-WkF18Q.js} +1 -1
  84. package/dist/{exec-BcvUYCcV.js → exec-DKyLtSjm.js} +2 -2
  85. package/dist/{exec-approvals-BWtVKlN2.js → exec-approvals-CZOc8M5w.js} +3 -3
  86. package/dist/{exec-approvals-cli-SDF4LICf.js → exec-approvals-cli-CyHTywue.js} +27 -27
  87. package/dist/extensionAPI.js +4 -4
  88. package/dist/{fetch-guard-BWofyagX.js → fetch-guard-DG6T0ZdL.js} +2 -2
  89. package/dist/{frontmatter-B5iYTsZP.js → frontmatter-B6IdJ7UK.js} +2 -2
  90. package/dist/{frontmatter-vaw8OX7Y.js → frontmatter-BW7tVmn4.js} +5 -5
  91. package/dist/{fs-safe-CR_3Yr4x.js → fs-safe-DjAKGGJ8.js} +7 -7
  92. package/dist/{gateway-cli-CAFWFnSX.js → gateway-cli-BBqSqFGV.js} +451 -151
  93. package/dist/{gateway-cli-CzD6faIt.js → gateway-cli-BYGA5ex3.js} +311 -11
  94. package/dist/{gateway-rpc-o8CJkHuM.js → gateway-rpc-BJF1iDnx.js} +3 -3
  95. package/dist/{github-copilot-token-DTYkb2IC.js → github-copilot-token-BTNK6Tcd.js} +2 -2
  96. package/dist/{glass-ui-ws-Bbs2mIij.js → glass-ui-ws-DJnV8nJK.js} +8 -8
  97. package/dist/{glass-ui-ws-Dsez9bGF.js → glass-ui-ws-NJNiRFL3.js} +105 -105
  98. package/dist/{gmail-setup-utils-CLvOQ6kY.js → gmail-setup-utils-D5G00y8h.js} +5 -5
  99. package/dist/{health-iJ9JzccO.js → health-D59E1VfO.js} +13 -13
  100. package/dist/{health-format-CxAXRqzB.js → health-format-39e76m9p.js} +1 -1
  101. package/dist/{help-format-BWTv-lf6.js → help-format-BI_G2p1e.js} +1 -1
  102. package/dist/{helpers-BtwjKsDp.js → helpers-BBypnAYf.js} +1 -1
  103. package/dist/{hooks-cli-BEYoHsqh.js → hooks-cli-Bidz8ACz.js} +98 -98
  104. package/dist/{hooks-cli-DNlmk6eB.js → hooks-cli-CyjEjDSY.js} +5 -5
  105. package/dist/{hooks-status-D9SOPTTY.js → hooks-status-DLHEahg_.js} +3 -3
  106. package/dist/{image-ops-BkR5mVOY.js → image-ops-c7_of0HT.js} +12 -12
  107. package/dist/{inbound-context-CICDRKxY.js → inbound-context-CJj1VfzK.js} +2 -2
  108. package/dist/{inbound-context-B4B7i7oM.js → inbound-context-DqAyGDbE.js} +2 -2
  109. package/dist/index.js +90 -90
  110. package/dist/{inspect-XD55qAEL.js → inspect-op0Ov-v4.js} +4 -4
  111. package/dist/{install-safe-path-odQNUvjd.js → install-safe-path-B73BkVO3.js} +12 -12
  112. package/dist/{installs-DLhIne1t.js → installs-ZXEjR9Sp.js} +12 -12
  113. package/dist/{internal-CBKiu8Jv.js → internal-C3o_xyzP.js} +10 -10
  114. package/dist/{legacy-names-BVA_sKnb.js → legacy-names-C0hZiM-7.js} +1 -1
  115. package/dist/{lifecycle-core-CcinwCvM.js → lifecycle-core-zhQYm_ni.js} +10 -10
  116. package/dist/{links-C6mXo5Yj.js → links-CSaUKNKm.js} +1 -1
  117. package/dist/llm-slug-generator.js +33 -33
  118. package/dist/{local-roots-C0G03E-R.js → local-roots-CTriU02e.js} +3 -3
  119. package/dist/{local-roots-DtvYChMM.js → local-roots-Dm8-ErgQ.js} +3 -3
  120. package/dist/{logging-CMolPIQB.js → logging-B96FQvnn.js} +2 -2
  121. package/dist/{logs-cli--Wek899G.js → logs-cli-B7RJ57Dc.js} +20 -20
  122. package/dist/{manager-CS1vxold.js → manager-9dNT9kNF.js} +22 -22
  123. package/dist/{manager-9Rt8-xIT.js → manager-CpBl-VGg.js} +1 -1
  124. package/dist/{manager-Bmh-pcUv.js → manager-Dsdh0rGn.js} +9 -9
  125. package/dist/{manager-Do0-i7vp.js → manager-t4GthPGw.js} +1 -1
  126. package/dist/{manifest-registry-Cc80pffV.js → manifest-registry-B2vClvK5.js} +2 -2
  127. package/dist/{manifest-registry-B4I9g0CL.js → manifest-registry-D7Qup2Vq.js} +3 -3
  128. package/dist/{markdown-tables-D0bwB4O7.js → markdown-tables-BaWa2kOe.js} +1 -1
  129. package/dist/{markdown-tables-jlJYpF1X.js → markdown-tables-GTLvbzuR.js} +2 -2
  130. package/dist/{memory-BduQaKuC.js → memory-B7TJXpqS.js} +2 -2
  131. package/dist/{memory-ofHIUCzf.js → memory-DcWXMzOH.js} +7 -7
  132. package/dist/{memory-cli-BCz9iNCM.js → memory-cli-C0WA_nRS.js} +2 -2
  133. package/dist/{memory-cli-LXH0BNmI.js → memory-cli-xBZPEOeL.js} +22 -22
  134. package/dist/{message-channel-j44ChSJV.js → message-channel-C_V8IAYx.js} +1 -1
  135. package/dist/{model-BBL3doiY.js → model-BXWgh5eZ.js} +1 -1
  136. package/dist/{model-catalog-D8YRs6r8.js → model-catalog-BGVslwAT.js} +4 -4
  137. package/dist/{model-picker-CdmjvvmL.js → model-picker-aTfyp_mP.js} +3 -3
  138. package/dist/{models-DTHdIg0A.js → models-IfAFy9bK.js} +2 -2
  139. package/dist/{models-cli-CdL5Tf5E.js → models-cli-DiB4JqF2.js} +6 -6
  140. package/dist/{models-cli-DrJsggrX.js → models-cli-h8h_qu3F.js} +94 -94
  141. package/dist/{models-config-BCa11tVc.js → models-config-DRgHv7Ss.js} +8 -8
  142. package/dist/{node-cli-Dl-lvH1N.js → node-cli-BPkbqgRt.js} +50 -50
  143. package/dist/{node-service-O5CpXu6c.js → node-service-DuN9eBL6.js} +1 -1
  144. package/dist/{nodes-cli-C9pjIduh.js → nodes-cli-C09c6nCf.js} +27 -27
  145. package/dist/{nodes-screen-B_D8bZhT.js → nodes-screen-CT94yu_w.js} +7 -7
  146. package/dist/{note-1QdZVD7W.js → note-CHrtEumO.js} +2 -2
  147. package/dist/{npm-registry-spec-BQ7yzKIT.js → npm-registry-spec-B8X06AqB.js} +12 -12
  148. package/dist/{onboard-channels-DmvTuYe_.js → onboard-channels-BfzW-9vo.js} +1 -1
  149. package/dist/{onboard-channels-CXqIlUcV.js → onboard-channels-Deq8QGnM.js} +13 -13
  150. package/dist/{onboard-custom-DAD9D1fS.js → onboard-custom-DEdRdzNq.js} +3 -3
  151. package/dist/{onboard-helpers-C5J9vSm2.js → onboard-helpers-DZKHFY2J.js} +16 -16
  152. package/dist/{onboard-hooks-D87tRcuX.js → onboard-hooks-DZZM8goM.js} +11 -11
  153. package/dist/{onboard-3VcPRZV5.js → onboard-iL7Z0wKJ.js} +1 -1
  154. package/dist/{onboard-remote-D3CWFQ0_.js → onboard-remote-dn4L5WdE.js} +3 -3
  155. package/dist/{onboard-Cr1Rd93U.js → onboard-sMgEOBjV.js} +20 -20
  156. package/dist/{onboard-skills-CTv0hBJv.js → onboard-skills-DGHye9Q3.js} +5 -5
  157. package/dist/{onboarding-D_wPq7hv.js → onboarding-70YKbZi6.js} +3 -3
  158. package/dist/{onboarding-Bop5peq2.js → onboarding-BjXYbWlg.js} +19 -19
  159. package/dist/{onboarding.finalize-DGwAMlRi.js → onboarding.finalize-Ch3V08eY.js} +4 -4
  160. package/dist/{onboarding.finalize-Pa0bEFjp.js → onboarding.finalize-dU_CtL43.js} +62 -62
  161. package/dist/{onboarding.gateway-config-aIrdqmcQ.js → onboarding.gateway-config-DfF8Rxvn.js} +23 -23
  162. package/dist/{openai-model-default-BDH_OYY8.js → openai-model-default-D1NFHFF_.js} +4 -4
  163. package/dist/{pairing-cli-PrIxvqnD.js → pairing-cli-CJv8LQfb.js} +17 -17
  164. package/dist/{pairing-store-DmCi9E47.js → pairing-store-CxT0UGxd.js} +5 -5
  165. package/dist/{pairing-token-BmIoXjHZ.js → pairing-token-DorpwP8O.js} +9 -9
  166. package/dist/{path-env-CRW1aXZp.js → path-env-DuQralyy.js} +3 -3
  167. package/dist/{paths-Cqn-zk3M.js → paths-BSzKwaxE.js} +1 -1
  168. package/dist/paths-BeAyfCRg.js +127 -0
  169. package/dist/{paths-CdGa1jlU.js → paths-CJcw9nbZ.js} +3 -3
  170. package/dist/{paths-DvXvD4Xu.js → paths-DaQrPPet.js} +2 -2
  171. package/dist/{pi-auth-json-ChKC--mV.js → pi-auth-json-BzuhVcKu.js} +1 -1
  172. package/dist/{pi-auth-json-DhbhmAvs.js → pi-auth-json-DGZH6URT.js} +5 -5
  173. package/dist/{pi-embedded-hri4e4ie.js → pi-embedded-DOCVZrmx.js} +20 -64
  174. package/dist/{pi-embedded-helpers-VZo1D4Ck.js → pi-embedded-helpers-Be-EeyzH.js} +9 -9
  175. package/dist/{pi-tools.policy-DrRZdkk0.js → pi-tools.policy-qwS9SXOa.js} +6 -6
  176. package/dist/{plugin-auto-enable-BV-thF8P.js → plugin-auto-enable-zDUaiaf2.js} +4 -4
  177. package/dist/{plugin-registry-CYEwOWqU.js → plugin-registry-BgGVB3kW.js} +5 -5
  178. package/dist/{plugin-registry-q_UuFncy.js → plugin-registry-CP2mbhwk.js} +1 -1
  179. package/dist/plugin-sdk/auto-reply/reply/get-reply-directives.d.ts +0 -1
  180. package/dist/plugin-sdk/auto-reply/reply/model-selection.d.ts +0 -3
  181. package/dist/plugin-sdk/auto-reply/reply/payload-middleware.d.ts +0 -2
  182. package/dist/plugin-sdk/auto-reply/reply/typing-mode.d.ts +5 -3
  183. package/dist/plugin-sdk/auto-reply/types.d.ts +0 -3
  184. package/dist/plugin-sdk/gateway/outbound-filter.d.ts +4 -7
  185. package/dist/plugin-sdk/infra/agent-events.d.ts +0 -1
  186. package/dist/{plugins-CYQOjCDt.js → plugins-DuuHorqi.js} +3 -3
  187. package/dist/{plugins-cli-DE_0PdqM.js → plugins-cli-1wkCRsFe.js} +5 -5
  188. package/dist/{plugins-cli-CR1PAkGv.js → plugins-cli-B_Gtx3LU.js} +89 -89
  189. package/dist/{plugins-BG2b7dR_.js → plugins-yymezpEd.js} +2 -2
  190. package/dist/{ports-DfsXfAsq.js → ports-ChuJYhEL.js} +2 -2
  191. package/dist/{ports-LzI_-wEZ.js → ports-EAVAOFyK.js} +7 -7
  192. package/dist/{program-x8XxEZXE.js → program-UyCr49qs.js} +10 -10
  193. package/dist/{program-context-CvgJOZ3Q.js → program-context-C7uCS8z7.js} +39 -39
  194. package/dist/{progress-B6mhJhX6.js → progress-CyPyGCDn.js} +2 -2
  195. package/dist/{prompt-select-styled-BFV2QYJC.js → prompt-select-styled-BRcRFLzB.js} +4 -4
  196. package/dist/{prompt-select-styled-CFeLUnsr.js → prompt-select-styled-DcMra8CK.js} +54 -54
  197. package/dist/{prompt-style-DtQMGj0v.js → prompt-style-Cad0BDRS.js} +1 -1
  198. package/dist/{provider-auth-helpers-D2GLBV7U.js → provider-auth-helpers-BJTb9xI0.js} +1 -1
  199. package/dist/{provider-auth-helpers-C-Cv3SZA.js → provider-auth-helpers-Xn1TAPPY.js} +8 -8
  200. package/dist/{push-apns-DTqLWoEj.js → push-apns-Aaqf9WKI.js} +10 -10
  201. package/dist/{push-apns-9XQgEWxs.js → push-apns-Bfqnchj6.js} +1 -1
  202. package/dist/{pw-ai-BFZrohva.js → pw-ai-B3qisJP1.js} +1 -1
  203. package/dist/{pw-ai-Bb4P23-n.js → pw-ai-C-ddUgTA.js} +20 -20
  204. package/dist/{pw-ai-D5WlMgqy.js → pw-ai-DJrnU1ja.js} +12 -12
  205. package/dist/{qmd-manager-92cDmzSO.js → qmd-manager-D5kqCz-Y.js} +28 -28
  206. package/dist/{qmd-manager-D6ABQ2yd.js → qmd-manager-DrM6m9z1.js} +7 -7
  207. package/dist/{qr-cli-B_kge4ua.js → qr-cli-B_mw4i0R.js} +12 -12
  208. package/dist/{register.agent-C-p6kDhf.js → register.agent-BqKNzdaW.js} +108 -108
  209. package/dist/{register.agent-D9FfFyh0.js → register.agent-vAJ0_4m0.js} +9 -9
  210. package/dist/register.configure-7TmTqCgU.js +129 -0
  211. package/dist/{register.configure-CtbO9t7v.js → register.configure-BzgavjpU.js} +8 -8
  212. package/dist/{register.maintenance-Dy8l8hKt.js → register.maintenance-6Wz4HXlm.js} +109 -109
  213. package/dist/{register.maintenance-h-CVvMpP.js → register.maintenance-BJO0RCk9.js} +9 -9
  214. package/dist/{register.message-DFytf1Dr.js → register.message-CW9PahRi.js} +5 -5
  215. package/dist/{register.message-CaOagrcp.js → register.message-XYivyrQJ.js} +81 -81
  216. package/dist/{register.onboard-SunldfQB.js → register.onboard-BgwkmP4D.js} +45 -45
  217. package/dist/{register.onboard-BAQSWmTB.js → register.onboard-MWRC29wD.js} +2 -2
  218. package/dist/{register.setup-D3uuohUQ.js → register.setup-7OoAqQG_.js} +48 -48
  219. package/dist/{register.setup-BnuPTj2h.js → register.setup-V-arsKvb.js} +2 -2
  220. package/dist/{register.status-health-sessions-azKiEST-.js → register.status-health-sessions-1VnuXhGM.js} +3 -3
  221. package/dist/{register.status-health-sessions-CPcQpUNU.js → register.status-health-sessions-Bgg1sdY_.js} +68 -68
  222. package/dist/{register.subclis-Di2DRNVF.js → register.subclis-DpPYIqkP.js} +9 -9
  223. package/dist/{registry-C-JddWwo.js → registry-9AaJQms1.js} +2 -2
  224. package/dist/{registry-CtguoMhn.js → registry-DKJLAPDB.js} +4 -4
  225. package/dist/{replies-CvuXRwhI.js → replies-BZN1LuJP.js} +3 -3
  226. package/dist/{replies-BUaT9S6J.js → replies-Dqft-42v.js} +3 -3
  227. package/dist/{reply-prefix-ClUrRCRd.js → reply-prefix-CyLplifX.js} +1 -1
  228. package/dist/{reply-prefix-ChIeKp-P.js → reply-prefix-DkDTGwTs.js} +1 -1
  229. package/dist/{resolve-route-BLDKso2x.js → resolve-route-CIA0TSsF.js} +4 -4
  230. package/dist/{resolve-route-C0EHjIMD.js → resolve-route-xpyI3enn.js} +6 -6
  231. package/dist/{routes-BFfAPz_0.js → routes-xZZ99jJJ.js} +14 -14
  232. package/dist/{rpc-CQUsmQ6_.js → rpc-BzR2wLkc.js} +3 -3
  233. package/dist/{run-main-BhJ6M7oy.js → run-main-n0fjk-o5.js} +17 -17
  234. package/dist/{runtime-guard-Btd35-OG.js → runtime-guard-BZ3_1QqS.js} +1 -1
  235. package/dist/{sandbox-sayuve7z.js → sandbox-DGG12SGo.js} +27 -27
  236. package/dist/{sandbox-cli-Dyh_eqHp.js → sandbox-cli--d2MJPM2.js} +37 -37
  237. package/dist/{security-cli-B5XGCe-n.js → security-cli-CeP9ss1g.js} +53 -53
  238. package/dist/{send-dfhV1QIV.js → send-BQJKg0bU.js} +7 -7
  239. package/dist/{send-B-tsyoRw.js → send-BzUWmgQ9.js} +13 -13
  240. package/dist/{server-context-hxl_K7eY.js → server-context-BNbx1tUD.js} +11 -11
  241. package/dist/{server-methods-MUFuMWc_.js → server-methods-BHg4GltA.js} +76 -408
  242. package/dist/{server-methods-3uA_KwN4.js → server-methods-DkZ2XtEo.js} +8 -340
  243. package/dist/{server-node-events-FUPulMjB.js → server-node-events-6dZ22EGj.js} +82 -82
  244. package/dist/{server-node-events-DkbyHj1T.js → server-node-events-BXviL2UH.js} +6 -6
  245. package/dist/{service-B5aOZmQH.js → service-9ItKCWWS.js} +15 -15
  246. package/dist/{session-cost-usage-DQjHUno0.js → session-cost-usage-DYcv40ss.js} +3 -3
  247. package/dist/{session-dirs-Chh7bBGo.js → session-dirs-B6PWqKEf.js} +2 -2
  248. package/dist/{session-utils-C6O0Db39.js → session-utils-BVC8mmBv.js} +22 -22
  249. package/dist/{sessions-oPVoK2gW.js → sessions-BaFVKzC2.js} +25 -25
  250. package/dist/{shared-BJxR-kzm.js → shared-DUmy8R4n.js} +5 -5
  251. package/dist/{shared-E4KDN3LG.js → shared-ot5_jkpP.js} +3 -3
  252. package/dist/{skill-commands-CfGPouRa.js → skill-commands-DaNhP2Jb.js} +5 -5
  253. package/dist/{skill-commands-4afIEM1a.js → skill-commands-X3T9Y9lT.js} +4 -4
  254. package/dist/{skill-scanner-BGtq5jZi.js → skill-scanner-DVq7ZopF.js} +7 -7
  255. package/dist/{skills-Kt1PL_Um.js → skills-BMTJ2Tiq.js} +6 -6
  256. package/dist/{skills-BF_e-fYt.js → skills-C_KgxpBD.js} +9 -9
  257. package/dist/{skills-cli-BlFM1U3r.js → skills-cli-DwYoPwkG.js} +19 -19
  258. package/dist/{skills-install-miTQGOBQ.js → skills-install-U4FmCP8u.js} +9 -9
  259. package/dist/{skills-remote-Ch1B-1aN.js → skills-remote-C0gcKYWX.js} +6 -6
  260. package/dist/{skills-status-CFVFYR-o.js → skills-status-CdfQvU1h.js} +4 -4
  261. package/dist/{sqlite-CfMLToLW.js → sqlite-BUXBg2yu.js} +8 -8
  262. package/dist/{sqlite-BKMdYqso.js → sqlite-C6MZhX4c.js} +3 -3
  263. package/dist/{ssrf-LaudpmHD.js → ssrf-BvjSIOlZ.js} +9 -9
  264. package/dist/{status-BNH-f3PA.js → status-BAnT_4qI.js} +4 -4
  265. package/dist/{status-B-XD80Yl.js → status-BK-ZK7SP.js} +36 -36
  266. package/dist/{status-CCgqMBwp.js → status-CmoBgZ99.js} +1 -1
  267. package/dist/{status-C7F7r-qN.js → status-J_gR_zbh.js} +1 -1
  268. package/dist/{status.update-B9WCVHPy.js → status.update-Cvj7y384.js} +4 -4
  269. package/dist/{subagent-registry-z08a8MUS.js → subagent-registry-CWolsN8K.js} +13 -55
  270. package/dist/{subsystem-CgepNOk5.js → subsystem-CtH6J8AV.js} +1 -1
  271. package/dist/{subsystem-DzRUKS9f.js → subsystem-DhOo2FZn.js} +1 -1
  272. package/dist/{symi-root-7ei1lwo0.js → symi-root-0MUhiNlM.js} +3 -3
  273. package/dist/{synthesis-D4iCZvKx.js → synthesis-BSKiS446.js} +4 -4
  274. package/dist/{synthesis-CjFmYp54.js → synthesis-CRQp5mTx.js} +78 -78
  275. package/dist/{synthesis-Dlweuq0p.js → synthesis-D3wZX5g3.js} +33 -33
  276. package/dist/{synthesis-ByjLMHMS.js → synthesis-DTZGPpj5.js} +4 -4
  277. package/dist/{system-cli-Ccu9utFt.js → system-cli-CUGyogmP.js} +19 -19
  278. package/dist/{systemd-ChKNxGyT.js → systemd-8KKQdTO_.js} +8 -8
  279. package/dist/{systemd-hints-hoofHqb7.js → systemd-hints-_ghBqtKo.js} +7 -7
  280. package/dist/{systemd-linger-DLgi3jd0.js → systemd-linger-CnKJZBUr.js} +2 -2
  281. package/dist/{table-Cyd0-LaL.js → table-DkAQzCOR.js} +2 -2
  282. package/dist/{tailscale-D3KwzQUZ.js → tailscale-D7dC-5EX.js} +3 -3
  283. package/dist/{thinking-nf5YVDrR.js → thinking-BYtE7_UC.js} +2 -2
  284. package/dist/{tokens-DfB8vBa4.js → tokens-DvvjOTxN.js} +1 -1
  285. package/dist/{tokens-B24nv23l.js → tokens-wW7opugV.js} +1 -1
  286. package/dist/{tool-display-D1Hh5TqL.js → tool-display-Dr6VaTg5.js} +2 -2
  287. package/dist/{tool-loop-detection-BxrJfVQU.js → tool-loop-detection-CSSq5kkt.js} +4 -4
  288. package/dist/{tool-loop-detection-BR52lwOt.js → tool-loop-detection-DyZ0TWGh.js} +2 -2
  289. package/dist/transcript-events-JGGQViao.js +17 -0
  290. package/dist/{trash-oWw0M_xA.js → trash-BjVrPcAx.js} +2 -2
  291. package/dist/{tui-cli-sRKxOjmC.js → tui-cli-BPOcMJ-f.js} +43 -43
  292. package/dist/{tui-DqMRn1zF.js → tui-fKWqWqeq.js} +12 -12
  293. package/dist/{unified-runner-Uyw1gZOm.js → unified-runner-Cdj1nLUh.js} +286 -328
  294. package/dist/{unified-runner-CBVGL54b.js → unified-runner-DftrstdI.js} +200 -245
  295. package/dist/{update-rop24lF7.js → update-XJWQZpV7.js} +5 -5
  296. package/dist/{update-check-CC111uwU.js → update-check-BdSIMYWq.js} +7 -7
  297. package/dist/{update-cli-BbtFbkK5.js → update-cli-D_MLjj6j.js} +120 -120
  298. package/dist/{update-cli-CH7SLjSd.js → update-cli-jQo-vg6S.js} +9 -9
  299. package/dist/{update-runner-B0L2a2rW.js → update-runner-D_UHlPN0.js} +18 -18
  300. package/dist/{utils-AQWIWjGu.js → utils-BU8jVQFM.js} +2 -2
  301. package/dist/{webhooks-cli-CFMpDwWL.js → webhooks-cli-DgRLVVrD.js} +17 -17
  302. package/dist/{widearea-dns-DxpPXWPv.js → widearea-dns-C5NqCQ3L.js} +2 -2
  303. package/dist/{with-timeout-Bxn0qVBQ.js → with-timeout-DwVWQ2sN.js} +2 -2
  304. package/dist/{workspace-StbmAqYj.js → workspace-B_xyjOdv.js} +4 -4
  305. package/dist/{workspace-CsaDUuDn.js → workspace-OBnI5mKu.js} +2 -2
  306. package/dist/{workspace-dirs-B5axjz_-.js → workspace-dirs-DStsDXra.js} +1 -1
  307. package/dist/{ws-FAiTi9-v.js → ws-CahTJvD6.js} +1 -1
  308. package/dist/{wsl-ZWGwnnKI.js → wsl-DO9usEVV.js} +2 -2
  309. package/package.json +1 -1
  310. package/dist/cli-iz9sMJ9d.js +0 -128
  311. package/dist/plugin-sdk/gateway/server-chat.d.ts +0 -49
  312. package/dist/register.configure-D69HXLo4.js +0 -129
  313. package/dist/{boolean-B8-BqKGQ.js → boolean-Wzu0-e0P.js} +0 -0
  314. package/dist/{boolean-BgXe2hyu.js → boolean-mcn6kL0s.js} +0 -0
  315. package/dist/{brew-ip7v32wW.js → brew-BoKmB5x9.js} +1 -1
  316. /package/dist/{chat-type-B2TfTsnW.js → chat-type-B7XD_ESN.js} +0 -0
  317. /package/dist/{chat-type-BoBpxitL.js → chat-type-BPBtOjer.js} +0 -0
  318. /package/dist/{command-format-CyXZlazG.js → command-format-BvAkTjTI.js} +0 -0
  319. /package/dist/{github-copilot-token-BUd9oA8x.js → github-copilot-token-B31ugq7R.js} +0 -0
  320. /package/dist/{input-provenance-iBlnbS1d.js → input-provenance-DsLesw6T.js} +0 -0
  321. /package/dist/{legacy-names-BlIw4lsD.js → legacy-names-sghWmXe3.js} +0 -0
  322. /package/dist/{redact-CozCe54d.js → redact-CSc_2Nka.js} +0 -0
  323. /package/dist/{redact-DPnDWsnT.js → redact-Dd8jrogi.js} +0 -0
  324. /package/dist/{secret-equal-DjTAoH50.js → secret-equal-D1BCVB1D.js} +0 -0
  325. /package/dist/{session-key-DUSb7CCb.js → session-key-B_ZVH1kE.js} +0 -0
  326. /package/dist/{ssrf-Cirmgays.js → ssrf-CC9kEPCT.js} +0 -0
  327. /package/dist/{tailnet-BruyvjMC.js → tailnet-LYvn9g3I.js} +0 -0
  328. /package/dist/{thinking-BTh3b5vY.js → thinking-177f26eg.js} +0 -0
  329. /package/dist/{transcript-events-BOK6eOU8.js → transcript-events-Ch7wLX-j.js} +0 -0
  330. /package/dist/{transcript-tools--a2pL_yH.js → transcript-tools-CrMLYORt.js} +0 -0
@@ -1,44 +1,44 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { a as resolveOAuthDir, c as expandHomePrefix, i as resolveGatewayPort, n as resolveConfigPath, s as resolveStateDir, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
3
3
  import { _ as isSubagentSessionKey, a as classifySessionKeyShape, c as resolveAgentIdFromSessionKey, d as DEFAULT_ACCOUNT_ID, f as normalizeAccountId, g as isCronSessionKey, h as isAcpSessionKey, l as resolveThreadSessionKeys, m as getSubagentDepth, o as normalizeAgentId, r as buildAgentMainSessionKey, s as normalizeMainKey, t as DEFAULT_AGENT_ID, u as sanitizeAgentId, v as parseAgentSessionKey, y as resolveThreadParentSessionKey } from "./session-key-BmQ2R1ev.js";
4
- import { $ as sleep, A as theme, B as clampInt, C as logVerbose, D as warn, E as shouldLogVerbose, G as isRecord, H as ensureDir$3, I as normalizeLogLevel, O as colorize, Q as shortenHomePath, R as resolvePreferredSymiTmpDir, T as setVerbose, U as escapeRegExp, W as formatTerminalLink, X as safeParseJson, Y as resolveUserPath, Z as shortenHomeInString, a as normalizeAnyChannelId, b as danger, d as createPluginRegistry, et as sliceUtf16Safe, f as clearPluginCommands, g as createInternalHookEvent, h as matchPluginCommand, j as getChildLogger, k as isRich, m as listPluginCommands, n as CHAT_CHANNEL_ORDER, nt as isPlainObject, o as normalizeChannelId, p as executePluginCommand, tt as truncateUtf16Safe, u as setActivePluginRegistry, y as triggerInternalHook, z as CONFIG_DIR } from "./registry-C-JddWwo.js";
5
- import { a as resolveAgentSkillsFilter, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentWorkspaceDir, r as resolveAgentDir, s as resolveDefaultAgentId, u as resolveSessionAgentIds } from "./agent-scope-D_MtsuXX.js";
6
- import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DzRUKS9f.js";
7
- import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-CsaDUuDn.js";
8
- import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-B24nv23l.js";
9
- import { $ as DEFAULT_MODEL, A as resolveThinkingDefault, B as requireApiKey, C as normalizeModelRef$1, D as resolveDefaultModelForAgent, E as resolveConfiguredModelRef, F as resolveImplicitProviders, G as normalizeSecretInput, H as resolveEnvApiKey, I as OLLAMA_NATIVE_BASE_URL, J as resolveShellEnvFallbackTimeoutMs, K as getShellPathFromLoginShell, L as createOllamaStreamFn, M as normalizeProviders, N as resolveImplicitBedrockProvider, O as resolveModelRefFromString, P as resolveImplicitCopilotProvider, Q as DEFAULT_CONTEXT_TOKENS, R as getApiKeyForModel, S as modelKey, U as resolveModelAuthMode, V as resolveApiKeyForProvider, Z as isTruthyEnvValue, _ as buildAllowedModelSet, a as markAuthProfileFailure, b as findNormalizedProviderValue, c as dedupeProfileIds, d as ensureAuthProfileStore, et as DEFAULT_PROVIDER, f as resolveAuthStorePathForDisplay, i as isProfileInCooldown, j as normalizeGoogleModelId, k as resolveSubagentSpawnModelSelection, l as listProfilesForProvider, m as withFileLock$1, n as resolveAuthProfileOrder, nt as resolveCliName, o as markAuthProfileUsed, p as resolveSymiAgentDir, r as getSoonestCooldownExpiry, rt as resolveAuthProfileDisplayLabel, s as resolveApiKeyForProfile, tt as formatCliCommand, u as markAuthProfileGood, v as buildConfiguredAllowlistKeys, w as normalizeProviderId, y as buildModelAliasIndex, z as getCustomProviderApiKey } from "./auth-profiles-CZTGpbyT.js";
10
- import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BUd9oA8x.js";
11
- import { t as parseBooleanValue } from "./boolean-B8-BqKGQ.js";
12
- import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-B_jXI55b.js";
13
- import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, T as VERSION, _ as resetConfigOverrides, b as getConfigValueAtPath, c as loadConfig, d as writeConfigFile, f as validateConfigObjectWithPlugins, g as getConfigOverrides, h as validateJsonSchemaValue, i as isBlockedHostnameOrIp, l as readConfigFileSnapshot, m as parseDurationMs, o as normalizeHostname, t as SsrFBlockedError, u as resolveConfigSnapshotHash, v as setConfigOverride, w as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, x as parseConfigPath, y as unsetConfigOverride } from "./ssrf-LaudpmHD.js";
14
- import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-Cc80pffV.js";
15
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BgQbis3t.js";
16
- import { l as parseFrontmatterBlock } from "./frontmatter-B5iYTsZP.js";
17
- import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-Kt1PL_Um.js";
18
- import { n as redactToolDetail } from "./redact-DPnDWsnT.js";
19
- import { n as formatErrorMessage } from "./errors-BgCjRT2k.js";
20
- import { _ as MAX_IMAGE_BYTES, d as extensionForMime, f as getFileExtension, g as normalizeMimeType$1, h as kindFromMime, l as resizeToJpeg, m as isAudioFileName, n as getDefaultMediaLocalRoots, o as getImageMetadata, p as imageMimeFromFormat, u as detectMime, y as mediaKindFromMime } from "./local-roots-DtvYChMM.js";
21
- import { _ as normalizeHyphenSlug, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as normalizeAtHashSlug, h as resolveChannelGroupToolsPolicy, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupRequireMention, n as formatXHighModelHint, o as normalizeThinkLevel, p as resolveChannelGroupPolicy, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeStringEntries, y as normalizeStringEntriesLower } from "./thinking-nf5YVDrR.js";
22
- import { C as GATEWAY_CLIENT_MODES, S as GATEWAY_CLIENT_IDS, _ as isMarkdownCapableMessageChannel, a as chunkText, b as resolveGatewayMessageChannel, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, g as isInternalMessageChannel, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt, v as listDeliverableMessageChannels, w as GATEWAY_CLIENT_NAMES, y as normalizeMessageChannel } from "./chunk-Ds8SZRkS.js";
23
- import { t as normalizeChatType } from "./chat-type-B2TfTsnW.js";
24
- import { n as resolveConversationLabel } from "./conversation-label-B4d5pKXr.js";
25
- import { i as resolveSlackAccount, n as listChannelPlugins, o as resolveSlackAppToken, r as normalizeChannelId$1, s as resolveSlackBotToken, t as getChannelPlugin } from "./plugins-BG2b7dR_.js";
26
- import { _ as validateSlackBlocksArray, a as markdownToIRWithMeta, b as resolveSlackChannelId, c as MediaFetchError, d as fetchWithSsrFGuard, f as bindAbortRelay, g as parseSlackBlocksInput, h as resolveSlackWebClientOptions, i as renderMarkdownWithMarkers, l as fetchRemoteMedia, m as createSlackWebClient, o as getDefaultLocalRoots, p as fetchWithTimeout, s as loadWebMedia, t as sendMessageSlack, u as readResponseWithLimit, v as buildSlackBlocksFallbackText, y as parseSlackTarget } from "./send-dfhV1QIV.js";
27
- import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-N698mtPE.js";
28
- import { t as emitSessionTranscriptUpdate } from "./transcript-events-fUhPZcB5.js";
29
- import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-D7z6O7v0.js";
4
+ import { $ as sleep, A as theme, B as clampInt, C as logVerbose, D as warn, E as shouldLogVerbose, G as isRecord, H as ensureDir$3, I as normalizeLogLevel, O as colorize, Q as shortenHomePath, R as resolvePreferredSymiTmpDir, T as setVerbose, U as escapeRegExp, W as formatTerminalLink, X as safeParseJson, Y as resolveUserPath, Z as shortenHomeInString, a as normalizeAnyChannelId, b as danger, d as createPluginRegistry, et as sliceUtf16Safe, f as clearPluginCommands, g as createInternalHookEvent, h as matchPluginCommand, j as getChildLogger, k as isRich, m as listPluginCommands, n as CHAT_CHANNEL_ORDER, nt as isPlainObject, o as normalizeChannelId, p as executePluginCommand, tt as truncateUtf16Safe, u as setActivePluginRegistry, y as triggerInternalHook, z as CONFIG_DIR } from "./registry-9AaJQms1.js";
5
+ import { a as resolveAgentSkillsFilter, l as resolveSessionAgentId, n as resolveAgentConfig, o as resolveAgentWorkspaceDir, r as resolveAgentDir, s as resolveDefaultAgentId, u as resolveSessionAgentIds } from "./agent-scope-DE5eEsvh.js";
6
+ import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-DhOo2FZn.js";
7
+ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-OBnI5mKu.js";
8
+ import { $ as DEFAULT_MODEL, A as resolveThinkingDefault, B as requireApiKey, C as normalizeModelRef$1, D as resolveDefaultModelForAgent, E as resolveConfiguredModelRef, F as resolveImplicitProviders, G as normalizeSecretInput, H as resolveEnvApiKey, I as OLLAMA_NATIVE_BASE_URL, J as resolveShellEnvFallbackTimeoutMs, K as getShellPathFromLoginShell, L as createOllamaStreamFn, M as normalizeProviders, N as resolveImplicitBedrockProvider, O as resolveModelRefFromString, P as resolveImplicitCopilotProvider, Q as DEFAULT_CONTEXT_TOKENS, R as getApiKeyForModel, S as modelKey, U as resolveModelAuthMode, V as resolveApiKeyForProvider, Z as isTruthyEnvValue, _ as buildAllowedModelSet, a as markAuthProfileFailure, b as findNormalizedProviderValue, c as dedupeProfileIds, d as ensureAuthProfileStore, et as DEFAULT_PROVIDER, f as resolveAuthStorePathForDisplay, i as isProfileInCooldown, j as normalizeGoogleModelId, k as resolveSubagentSpawnModelSelection, l as listProfilesForProvider, m as withFileLock$1, n as resolveAuthProfileOrder, nt as resolveCliName, o as markAuthProfileUsed, p as resolveSymiAgentDir, r as getSoonestCooldownExpiry, rt as resolveAuthProfileDisplayLabel, s as resolveApiKeyForProfile, tt as formatCliCommand, u as markAuthProfileGood, v as buildConfiguredAllowlistKeys, w as normalizeProviderId, y as buildModelAliasIndex, z as getCustomProviderApiKey } from "./auth-profiles-B6ISm3Th.js";
9
+ import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-B31ugq7R.js";
10
+ import { t as parseBooleanValue } from "./boolean-mcn6kL0s.js";
11
+ import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-kmnOOp9j.js";
12
+ import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, T as VERSION, _ as resetConfigOverrides, b as getConfigValueAtPath, c as loadConfig, d as writeConfigFile, f as validateConfigObjectWithPlugins, g as getConfigOverrides, h as validateJsonSchemaValue, i as isBlockedHostnameOrIp, l as readConfigFileSnapshot, m as parseDurationMs, o as normalizeHostname, t as SsrFBlockedError, u as resolveConfigSnapshotHash, v as setConfigOverride, w as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, x as parseConfigPath, y as unsetConfigOverride } from "./ssrf-BvjSIOlZ.js";
13
+ import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-B2vClvK5.js";
14
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-FAf5DZL2.js";
15
+ import { l as parseFrontmatterBlock } from "./frontmatter-BW7tVmn4.js";
16
+ import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-BMTJ2Tiq.js";
17
+ import { n as redactToolDetail } from "./redact-Dd8jrogi.js";
18
+ import { n as formatErrorMessage } from "./errors-BkfLlDKo.js";
19
+ import { _ as MAX_IMAGE_BYTES, d as extensionForMime, f as getFileExtension, g as normalizeMimeType$1, h as kindFromMime, l as resizeToJpeg, m as isAudioFileName, n as getDefaultMediaLocalRoots, o as getImageMetadata, p as imageMimeFromFormat, u as detectMime, y as mediaKindFromMime } from "./local-roots-Dm8-ErgQ.js";
20
+ import { _ as normalizeHyphenSlug, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as normalizeAtHashSlug, h as resolveChannelGroupToolsPolicy, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupRequireMention, n as formatXHighModelHint, o as normalizeThinkLevel, p as resolveChannelGroupPolicy, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeStringEntries, y as normalizeStringEntriesLower } from "./thinking-BYtE7_UC.js";
21
+ import { C as GATEWAY_CLIENT_MODES, S as GATEWAY_CLIENT_IDS, _ as isMarkdownCapableMessageChannel, a as chunkText, b as resolveGatewayMessageChannel, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, g as isInternalMessageChannel, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt, v as listDeliverableMessageChannels, w as GATEWAY_CLIENT_NAMES, y as normalizeMessageChannel } from "./chunk-DX6VtywY.js";
22
+ import { t as normalizeChatType } from "./chat-type-BPBtOjer.js";
23
+ import { n as resolveConversationLabel } from "./conversation-label-tLwAlqLf.js";
24
+ import { i as resolveSlackAccount, n as listChannelPlugins, o as resolveSlackAppToken, r as normalizeChannelId$1, s as resolveSlackBotToken, t as getChannelPlugin } from "./plugins-yymezpEd.js";
25
+ import { _ as validateSlackBlocksArray, a as markdownToIRWithMeta, b as resolveSlackChannelId, c as MediaFetchError, d as fetchWithSsrFGuard, f as bindAbortRelay, g as parseSlackBlocksInput, h as resolveSlackWebClientOptions, i as renderMarkdownWithMarkers, l as fetchRemoteMedia, m as createSlackWebClient, o as getDefaultLocalRoots, p as fetchWithTimeout, s as loadWebMedia, t as sendMessageSlack, u as readResponseWithLimit, v as buildSlackBlocksFallbackText, y as parseSlackTarget } from "./send-BQJKg0bU.js";
26
+ import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BeAyfCRg.js";
27
+ import { t as emitSessionTranscriptUpdate } from "./transcript-events-JGGQViao.js";
28
+ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-wW7opugV.js";
29
+ import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-CQLyE7_n.js";
30
30
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BkfiP_y6.js";
31
- import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-ChKC--mV.js";
32
- import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-ChIeKp-P.js";
33
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-Bmh-pcUv.js";
31
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-BzuhVcKu.js";
32
+ import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-DkDTGwTs.js";
33
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-Dsdh0rGn.js";
34
34
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-Crkye5gI.js";
35
- import { n as resolveMarkdownTableMode } from "./markdown-tables-D0bwB4O7.js";
36
- import { a as shouldHandleTextCommands, c as resolveNativeCommandsEnabled, i as normalizeCommandBody, l as resolveNativeSkillsEnabled, n as listChatCommands, o as isCommandFlagEnabled, r as listChatCommandsForConfig, s as isRestartEnabled } from "./commands-registry-CRkL6mTz.js";
37
- import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile$1, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-CfGPouRa.js";
38
- import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-B4B7i7oM.js";
35
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-BaWa2kOe.js";
36
+ import { a as shouldHandleTextCommands, c as resolveNativeCommandsEnabled, i as normalizeCommandBody, l as resolveNativeSkillsEnabled, n as listChatCommands, o as isCommandFlagEnabled, r as listChatCommandsForConfig, s as isRestartEnabled } from "./commands-registry-C5IdtVVy.js";
37
+ import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile$1, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DaNhP2Jb.js";
38
+ import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CJj1VfzK.js";
39
39
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-B_aXYZv5.js";
40
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BLDKso2x.js";
41
- import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-CvuXRwhI.js";
40
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CIA0TSsF.js";
41
+ import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-BZN1LuJP.js";
42
42
  import { createRequire } from "node:module";
43
43
  import * as path$1 from "node:path";
44
44
  import path from "node:path";
@@ -48,13 +48,13 @@ import * as fs$2 from "node:fs/promises";
48
48
  import fs$1 from "node:fs/promises";
49
49
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
50
50
  import { promisify } from "node:util";
51
- import JSON5 from "json5";
51
+ import json5 from "json5";
52
52
  import { fileURLToPath } from "node:url";
53
53
  import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
54
54
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
55
55
  import AjvPkg from "ajv";
56
56
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
57
- import { WebSocket } from "ws";
57
+ import { WebSocket as WebSocket$1 } from "ws";
58
58
  import { Buffer as Buffer$1 } from "node:buffer";
59
59
  import { createJiti } from "jiti";
60
60
  import { Type } from "@sinclair/typebox";
@@ -64,97 +64,6 @@ import { spinner } from "@clack/prompts";
64
64
  import { createOscProgressController, supportsOscProgress } from "osc-progress";
65
65
  import SlackBolt from "@slack/bolt";
66
66
 
67
- //#region src/auto-reply/heartbeat.ts
68
- const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
69
- function stripTokenAtEdges(raw) {
70
- let text = raw.trim();
71
- if (!text) return {
72
- text: "",
73
- didStrip: false
74
- };
75
- const token = SYMIPULSE_TOKEN;
76
- const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
77
- if (!text.includes(token)) return {
78
- text,
79
- didStrip: false
80
- };
81
- let didStrip = false;
82
- let changed = true;
83
- while (changed) {
84
- changed = false;
85
- const next = text.trim();
86
- if (next.startsWith(token)) {
87
- text = next.slice(token.length).trimStart();
88
- didStrip = true;
89
- changed = true;
90
- continue;
91
- }
92
- if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
93
- const idx = next.lastIndexOf(token);
94
- const before = next.slice(0, idx).trimEnd();
95
- if (!before) text = "";
96
- else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
97
- didStrip = true;
98
- changed = true;
99
- }
100
- }
101
- return {
102
- text: text.replace(/\s+/g, " ").trim(),
103
- didStrip
104
- };
105
- }
106
- function stripHeartbeatToken(raw, opts = {}) {
107
- if (!raw) return {
108
- shouldSkip: true,
109
- text: "",
110
- didStrip: false
111
- };
112
- const trimmed = raw.trim();
113
- if (!trimmed) return {
114
- shouldSkip: true,
115
- text: "",
116
- didStrip: false
117
- };
118
- const mode = opts.mode ?? "message";
119
- const maxAckCharsRaw = opts.maxAckChars;
120
- const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
121
- const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
122
- const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
123
- const trimmedNormalized = stripMarkup(trimmed);
124
- if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
125
- shouldSkip: false,
126
- text: trimmed,
127
- didStrip: false
128
- };
129
- const strippedOriginal = stripTokenAtEdges(trimmed);
130
- const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
131
- const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
132
- if (!picked.didStrip) return {
133
- shouldSkip: false,
134
- text: trimmed,
135
- didStrip: false
136
- };
137
- if (!picked.text) return {
138
- shouldSkip: true,
139
- text: "",
140
- didStrip: true
141
- };
142
- const rest = picked.text.trim();
143
- if (mode === "heartbeat") {
144
- if (rest.length <= maxAckChars) return {
145
- shouldSkip: true,
146
- text: "",
147
- didStrip: true
148
- };
149
- }
150
- return {
151
- shouldSkip: false,
152
- text: rest,
153
- didStrip: true
154
- };
155
- }
156
-
157
- //#endregion
158
67
  //#region src/auto-reply/reply/middleware-circuit-breaker.ts
159
68
  /**
160
69
  * Default recovery prompt — tells the model the previous turn aborted on
@@ -1128,34 +1037,13 @@ function isBareSymipulseAck(text) {
1128
1037
  * Returns a structured verdict the caller uses to decide whether to
1129
1038
  * broadcast / persist a payload. Pure function — no side effects.
1130
1039
  */
1131
- function classifyOutboundMessage(rawText, opts) {
1040
+ function classifyOutboundMessage(rawText, _opts) {
1132
1041
  const text = typeof rawText === "string" ? rawText : "";
1133
1042
  if (isBareSilentReply(text)) return {
1134
1043
  action: "drop",
1135
1044
  output: "",
1136
1045
  reason: "silent-reply-bare"
1137
1046
  };
1138
- if (opts.isHeartbeat) {
1139
- const stripped = stripHeartbeatToken(text, {
1140
- mode: "heartbeat",
1141
- maxAckChars: opts.heartbeatAckMaxChars
1142
- });
1143
- if (stripped.shouldSkip) return {
1144
- action: "drop",
1145
- output: "",
1146
- reason: stripped.didStrip ? "symipulse-heartbeat-ack" : "silent-reply-bare"
1147
- };
1148
- if (stripped.didStrip) return {
1149
- action: "deliver-stripped",
1150
- output: stripped.text,
1151
- reason: "symipulse-heartbeat-stripped"
1152
- };
1153
- return {
1154
- action: "deliver",
1155
- output: text,
1156
- reason: "deliver"
1157
- };
1158
- }
1159
1047
  if (isBareSymipulseAck(text)) return {
1160
1048
  action: "drop",
1161
1049
  output: "",
@@ -1168,48 +1056,6 @@ function classifyOutboundMessage(rawText, opts) {
1168
1056
  };
1169
1057
  }
1170
1058
 
1171
- //#endregion
1172
- //#region src/infra/agent-events.ts
1173
- const seqByRun = /* @__PURE__ */ new Map();
1174
- const listeners = /* @__PURE__ */ new Set();
1175
- const runContextById = /* @__PURE__ */ new Map();
1176
- function registerAgentRunContext(runId, context) {
1177
- if (!runId) return;
1178
- const existing = runContextById.get(runId);
1179
- if (!existing) {
1180
- runContextById.set(runId, { ...context });
1181
- return;
1182
- }
1183
- if (context.sessionKey && existing.sessionKey !== context.sessionKey) existing.sessionKey = context.sessionKey;
1184
- if (context.verboseLevel && existing.verboseLevel !== context.verboseLevel) existing.verboseLevel = context.verboseLevel;
1185
- if (context.isHeartbeat !== void 0 && existing.isHeartbeat !== context.isHeartbeat) existing.isHeartbeat = context.isHeartbeat;
1186
- }
1187
- function getAgentRunContext(runId) {
1188
- return runContextById.get(runId);
1189
- }
1190
- function clearAgentRunContext(runId) {
1191
- runContextById.delete(runId);
1192
- }
1193
- function emitAgentEvent(event) {
1194
- const nextSeq = (seqByRun.get(event.runId) ?? 0) + 1;
1195
- seqByRun.set(event.runId, nextSeq);
1196
- const context = runContextById.get(event.runId);
1197
- const sessionKey = typeof event.sessionKey === "string" && event.sessionKey.trim() ? event.sessionKey : context?.sessionKey;
1198
- const enriched = {
1199
- ...event,
1200
- sessionKey,
1201
- seq: nextSeq,
1202
- ts: Date.now()
1203
- };
1204
- for (const listener of listeners) try {
1205
- listener(enriched);
1206
- } catch {}
1207
- }
1208
- function onAgentEvent(listener) {
1209
- listeners.add(listener);
1210
- return () => listeners.delete(listener);
1211
- }
1212
-
1213
1059
  //#endregion
1214
1060
  //#region src/process/lanes.ts
1215
1061
  let CommandLane = /* @__PURE__ */ function(CommandLane) {
@@ -2252,7 +2098,7 @@ async function getMemorySearchManager(params) {
2252
2098
  if (cached) return { manager: cached };
2253
2099
  }
2254
2100
  try {
2255
- const { QmdMemoryManager } = await import("./qmd-manager-D6ABQ2yd.js");
2101
+ const { QmdMemoryManager } = await import("./qmd-manager-DrM6m9z1.js");
2256
2102
  const primary = await QmdMemoryManager.create({
2257
2103
  cfg: params.cfg,
2258
2104
  agentId: params.agentId,
@@ -2264,7 +2110,7 @@ async function getMemorySearchManager(params) {
2264
2110
  const wrapper = new FallbackMemoryManager({
2265
2111
  primary,
2266
2112
  fallbackFactory: async () => {
2267
- const { MemoryIndexManager } = await import("./manager-Bmh-pcUv.js").then((n) => n.t);
2113
+ const { MemoryIndexManager } = await import("./manager-Dsdh0rGn.js").then((n) => n.t);
2268
2114
  return await MemoryIndexManager.get(params);
2269
2115
  }
2270
2116
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -2277,7 +2123,7 @@ async function getMemorySearchManager(params) {
2277
2123
  }
2278
2124
  }
2279
2125
  try {
2280
- const { MemoryIndexManager } = await import("./manager-Bmh-pcUv.js").then((n) => n.t);
2126
+ const { MemoryIndexManager } = await import("./manager-Dsdh0rGn.js").then((n) => n.t);
2281
2127
  return { manager: await MemoryIndexManager.get(params) };
2282
2128
  } catch (err) {
2283
2129
  return {
@@ -5500,7 +5346,7 @@ async function recordLoopOutcome(args) {
5500
5346
  if (!args.ctx?.sessionKey) return;
5501
5347
  try {
5502
5348
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BkfiP_y6.js").then((n) => n.t);
5503
- const { recordToolCallOutcome } = await import("./tool-loop-detection-BR52lwOt.js");
5349
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-DyZ0TWGh.js");
5504
5350
  recordToolCallOutcome(getDiagnosticSessionState({
5505
5351
  sessionKey: args.ctx.sessionKey,
5506
5352
  sessionId: args.ctx?.agentId
@@ -5521,8 +5367,8 @@ async function runBeforeToolCallHook(args) {
5521
5367
  const params = args.params;
5522
5368
  if (args.ctx?.sessionKey) {
5523
5369
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BkfiP_y6.js").then((n) => n.t);
5524
- const { logToolLoopAction } = await import("./diagnostic-D7z6O7v0.js").then((n) => n.n);
5525
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-BR52lwOt.js");
5370
+ const { logToolLoopAction } = await import("./diagnostic-CQLyE7_n.js").then((n) => n.n);
5371
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-DyZ0TWGh.js");
5526
5372
  const sessionState = getDiagnosticSessionState({
5527
5373
  sessionKey: args.ctx.sessionKey,
5528
5374
  sessionId: args.ctx?.agentId
@@ -7428,7 +7274,7 @@ var GatewayClient = class {
7428
7274
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
7429
7275
  });
7430
7276
  }
7431
- this.ws = new WebSocket(url, wsOptions);
7277
+ this.ws = new WebSocket$1(url, wsOptions);
7432
7278
  this.ws.on("open", () => {
7433
7279
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
7434
7280
  const tlsError = this.validateTlsFingerprint();
@@ -7647,7 +7493,7 @@ var GatewayClient = class {
7647
7493
  return null;
7648
7494
  }
7649
7495
  async request(method, params, opts) {
7650
- if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
7496
+ if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
7651
7497
  const id = randomUUID();
7652
7498
  const frame = {
7653
7499
  type: "req",
@@ -8028,6 +7874,44 @@ function randomIdempotencyKey() {
8028
7874
  return randomUUID();
8029
7875
  }
8030
7876
 
7877
+ //#endregion
7878
+ //#region src/infra/agent-events.ts
7879
+ const seqByRun = /* @__PURE__ */ new Map();
7880
+ const listeners = /* @__PURE__ */ new Set();
7881
+ const runContextById = /* @__PURE__ */ new Map();
7882
+ function registerAgentRunContext(runId, context) {
7883
+ if (!runId) return;
7884
+ const existing = runContextById.get(runId);
7885
+ if (!existing) {
7886
+ runContextById.set(runId, { ...context });
7887
+ return;
7888
+ }
7889
+ if (context.sessionKey && existing.sessionKey !== context.sessionKey) existing.sessionKey = context.sessionKey;
7890
+ if (context.verboseLevel && existing.verboseLevel !== context.verboseLevel) existing.verboseLevel = context.verboseLevel;
7891
+ }
7892
+ function clearAgentRunContext(runId) {
7893
+ runContextById.delete(runId);
7894
+ }
7895
+ function emitAgentEvent(event) {
7896
+ const nextSeq = (seqByRun.get(event.runId) ?? 0) + 1;
7897
+ seqByRun.set(event.runId, nextSeq);
7898
+ const context = runContextById.get(event.runId);
7899
+ const sessionKey = typeof event.sessionKey === "string" && event.sessionKey.trim() ? event.sessionKey : context?.sessionKey;
7900
+ const enriched = {
7901
+ ...event,
7902
+ sessionKey,
7903
+ seq: nextSeq,
7904
+ ts: Date.now()
7905
+ };
7906
+ for (const listener of listeners) try {
7907
+ listener(enriched);
7908
+ } catch {}
7909
+ }
7910
+ function onAgentEvent(listener) {
7911
+ listeners.add(listener);
7912
+ return () => listeners.delete(listener);
7913
+ }
7914
+
8031
7915
  //#endregion
8032
7916
  //#region src/utils/queue-helpers.ts
8033
7917
  function clearQueueSummaryState(state) {
@@ -8483,6 +8367,97 @@ function clearSessionQueues(keys) {
8483
8367
  };
8484
8368
  }
8485
8369
 
8370
+ //#endregion
8371
+ //#region src/auto-reply/heartbeat.ts
8372
+ const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
8373
+ function stripTokenAtEdges(raw) {
8374
+ let text = raw.trim();
8375
+ if (!text) return {
8376
+ text: "",
8377
+ didStrip: false
8378
+ };
8379
+ const token = SYMIPULSE_TOKEN;
8380
+ const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
8381
+ if (!text.includes(token)) return {
8382
+ text,
8383
+ didStrip: false
8384
+ };
8385
+ let didStrip = false;
8386
+ let changed = true;
8387
+ while (changed) {
8388
+ changed = false;
8389
+ const next = text.trim();
8390
+ if (next.startsWith(token)) {
8391
+ text = next.slice(token.length).trimStart();
8392
+ didStrip = true;
8393
+ changed = true;
8394
+ continue;
8395
+ }
8396
+ if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
8397
+ const idx = next.lastIndexOf(token);
8398
+ const before = next.slice(0, idx).trimEnd();
8399
+ if (!before) text = "";
8400
+ else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
8401
+ didStrip = true;
8402
+ changed = true;
8403
+ }
8404
+ }
8405
+ return {
8406
+ text: text.replace(/\s+/g, " ").trim(),
8407
+ didStrip
8408
+ };
8409
+ }
8410
+ function stripHeartbeatToken(raw, opts = {}) {
8411
+ if (!raw) return {
8412
+ shouldSkip: true,
8413
+ text: "",
8414
+ didStrip: false
8415
+ };
8416
+ const trimmed = raw.trim();
8417
+ if (!trimmed) return {
8418
+ shouldSkip: true,
8419
+ text: "",
8420
+ didStrip: false
8421
+ };
8422
+ const mode = opts.mode ?? "message";
8423
+ const maxAckCharsRaw = opts.maxAckChars;
8424
+ const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
8425
+ const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
8426
+ const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
8427
+ const trimmedNormalized = stripMarkup(trimmed);
8428
+ if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
8429
+ shouldSkip: false,
8430
+ text: trimmed,
8431
+ didStrip: false
8432
+ };
8433
+ const strippedOriginal = stripTokenAtEdges(trimmed);
8434
+ const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
8435
+ const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
8436
+ if (!picked.didStrip) return {
8437
+ shouldSkip: false,
8438
+ text: trimmed,
8439
+ didStrip: false
8440
+ };
8441
+ if (!picked.text) return {
8442
+ shouldSkip: true,
8443
+ text: "",
8444
+ didStrip: true
8445
+ };
8446
+ const rest = picked.text.trim();
8447
+ if (mode === "heartbeat") {
8448
+ if (rest.length <= maxAckChars) return {
8449
+ shouldSkip: true,
8450
+ text: "",
8451
+ didStrip: true
8452
+ };
8453
+ }
8454
+ return {
8455
+ shouldSkip: false,
8456
+ text: rest,
8457
+ didStrip: true
8458
+ };
8459
+ }
8460
+
8486
8461
  //#endregion
8487
8462
  //#region src/auto-reply/reply/normalize-reply.ts
8488
8463
  function normalizeReplyPayload(payload, opts = {}) {
@@ -8579,7 +8554,7 @@ async function routeReply(params) {
8579
8554
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
8580
8555
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
8581
8556
  try {
8582
- const { deliverOutboundPayloads } = await import("./deliver-B_jXI55b.js").then((n) => n.n);
8557
+ const { deliverOutboundPayloads } = await import("./deliver-kmnOOp9j.js").then((n) => n.n);
8583
8558
  return {
8584
8559
  ok: true,
8585
8560
  messageId: (await deliverOutboundPayloads({
@@ -8865,7 +8840,7 @@ function normalizeSessionKey(value) {
8865
8840
  function readSessionStore(storePath) {
8866
8841
  try {
8867
8842
  const raw = fs.readFileSync(storePath, "utf-8");
8868
- const parsed = JSON5.parse(raw);
8843
+ const parsed = json5.parse(raw);
8869
8844
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
8870
8845
  } catch {}
8871
8846
  return {};
@@ -14255,8 +14230,7 @@ async function incrementCompactionCount(params) {
14255
14230
  //#endregion
14256
14231
  //#region src/auto-reply/reply/typing-mode.ts
14257
14232
  const DEFAULT_GROUP_TYPING_MODE = "message";
14258
- function resolveTypingMode({ configured, isGroupChat, wasMentioned, isHeartbeat }) {
14259
- if (isHeartbeat) return "never";
14233
+ function resolveTypingMode({ configured, isGroupChat, wasMentioned }) {
14260
14234
  if (configured) return configured;
14261
14235
  if (!isGroupChat || wasMentioned) return "instant";
14262
14236
  return DEFAULT_GROUP_TYPING_MODE;
@@ -14290,12 +14264,11 @@ async function prepareAgentRun(params) {
14290
14264
  const isFirstTurnInSession = isNewSession || !currentSystemSent;
14291
14265
  const isGroupChat = sessionCtx.ChatType === "group";
14292
14266
  const wasMentioned = ctx.WasMentioned === true;
14293
- const isHeartbeat = opts?.isHeartbeat === true;
14294
14267
  const typingMode = resolveTypingMode({
14295
14268
  configured: sessionCfg?.typingMode ?? agentCfg?.typingMode,
14296
14269
  isGroupChat,
14297
14270
  wasMentioned,
14298
- isHeartbeat
14271
+ isHeartbeat: false
14299
14272
  });
14300
14273
  const shouldInjectGroupIntro = Boolean(isGroupChat && (isFirstTurnInSession || sessionEntry?.groupActivationNeedsSystemIntro));
14301
14274
  const groupChatContext = isGroupChat ? buildGroupChatContext({ sessionCtx }) : "";
@@ -16185,7 +16158,7 @@ async function loadModelCatalog(params) {
16185
16158
  try {
16186
16159
  const cfg = params?.config ?? loadConfig();
16187
16160
  await ensureSymiModelsJson(cfg);
16188
- await (await import("./pi-auth-json-ChKC--mV.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
16161
+ await (await import("./pi-auth-json-BzuhVcKu.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
16189
16162
  const piSdk = await importPiSdk();
16190
16163
  const agentDir = resolveSymiAgentDir();
16191
16164
  const { join } = await import("node:path");
@@ -18309,8 +18282,7 @@ async function createModelSelectionState(params) {
18309
18282
  sessionKey,
18310
18283
  parentSessionKey
18311
18284
  });
18312
- const skipStoredOverride = params.hasResolvedHeartbeatModelOverride === true;
18313
- if (storedOverride?.model && !skipStoredOverride) {
18285
+ if (storedOverride?.model) {
18314
18286
  const candidateProvider = storedOverride.provider || defaultProvider;
18315
18287
  const key = modelKey(candidateProvider, storedOverride.model);
18316
18288
  if (allowedModelKeys.size === 0 || allowedModelKeys.has(key)) {
@@ -18319,7 +18291,7 @@ async function createModelSelectionState(params) {
18319
18291
  }
18320
18292
  }
18321
18293
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
18322
- const { ensureAuthProfileStore } = await import("./auth-profiles-CZTGpbyT.js").then((n) => n.t);
18294
+ const { ensureAuthProfileStore } = await import("./auth-profiles-B6ISm3Th.js").then((n) => n.t);
18323
18295
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
18324
18296
  const providerKey = normalizeProviderId(provider);
18325
18297
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -31193,7 +31165,7 @@ function resolveExecOverrides(params) {
31193
31165
  };
31194
31166
  }
31195
31167
  async function resolveReplyDirectives(params) {
31196
- const { ctx, cfg, agentId, agentCfg, agentDir, workspaceDir, sessionCtx, sessionEntry, sessionStore, sessionKey, storePath, sessionScope, groupResolution, isGroup, triggerBodyNormalized, commandAuthorized, defaultProvider, defaultModel, provider: initialProvider, model: initialModel, hasResolvedHeartbeatModelOverride, typing, opts, skillFilter } = params;
31168
+ const { ctx, cfg, agentId, agentCfg, agentDir, workspaceDir, sessionCtx, sessionEntry, sessionStore, sessionKey, storePath, sessionScope, groupResolution, isGroup, triggerBodyNormalized, commandAuthorized, defaultProvider, defaultModel, provider: initialProvider, model: initialModel, typing, opts, skillFilter } = params;
31197
31169
  let provider = initialProvider;
31198
31170
  let model = initialModel;
31199
31171
  const commandSource = sessionCtx.BodyForCommands ?? sessionCtx.CommandBody ?? sessionCtx.RawBody ?? sessionCtx.Transcript ?? sessionCtx.BodyStripped ?? sessionCtx.Body ?? ctx.BodyForCommands ?? ctx.CommandBody ?? ctx.RawBody ?? "";
@@ -31334,8 +31306,7 @@ async function resolveReplyDirectives(params) {
31334
31306
  defaultModel,
31335
31307
  provider,
31336
31308
  model,
31337
- hasModelDirective: directives.hasModelDirective,
31338
- hasResolvedHeartbeatModelOverride
31309
+ hasModelDirective: directives.hasModelDirective
31339
31310
  });
31340
31311
  provider = modelState.provider;
31341
31312
  model = modelState.model;
@@ -41435,7 +41406,7 @@ async function deliverSessionMaintenanceWarning(params) {
41435
41406
  return;
41436
41407
  }
41437
41408
  try {
41438
- const { deliverOutboundPayloads } = await import("./deliver-B_jXI55b.js").then((n) => n.n);
41409
+ const { deliverOutboundPayloads } = await import("./deliver-kmnOOp9j.js").then((n) => n.n);
41439
41410
  await deliverOutboundPayloads({
41440
41411
  cfg: params.cfg,
41441
41412
  channel,
@@ -42109,20 +42080,6 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
42109
42080
  });
42110
42081
  let provider = defaultProvider;
42111
42082
  let model = defaultModel;
42112
- let hasResolvedHeartbeatModelOverride = false;
42113
- if (opts?.isHeartbeat) {
42114
- const heartbeatRaw = opts.heartbeatModelOverride?.trim() ?? agentCfg?.heartbeat?.model?.trim() ?? "";
42115
- const heartbeatRef = heartbeatRaw ? resolveModelRefFromString({
42116
- raw: heartbeatRaw,
42117
- defaultProvider,
42118
- aliasIndex
42119
- }) : null;
42120
- if (heartbeatRef) {
42121
- provider = heartbeatRef.ref.provider;
42122
- model = heartbeatRef.ref.model;
42123
- hasResolvedHeartbeatModelOverride = true;
42124
- }
42125
- }
42126
42083
  const workspaceDir = (await ensureAgentWorkspace({
42127
42084
  dir: resolveAgentWorkspaceDir(cfg, agentId) ?? DEFAULT_AGENT_WORKSPACE_DIR,
42128
42085
  ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
@@ -42201,8 +42158,7 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
42201
42158
  groupSubject: sessionEntry.subject ?? sessionCtx.GroupSubject ?? finalized.GroupSubject,
42202
42159
  parentSessionKey: sessionCtx.ParentSessionKey
42203
42160
  });
42204
- const hasSessionModelOverride = Boolean(sessionEntry.modelOverride?.trim() || sessionEntry.providerOverride?.trim());
42205
- if (!hasResolvedHeartbeatModelOverride && !hasSessionModelOverride && channelModelOverride) {
42161
+ if (!Boolean(sessionEntry.modelOverride?.trim() || sessionEntry.providerOverride?.trim()) && channelModelOverride) {
42206
42162
  const resolved = resolveModelRefFromString({
42207
42163
  raw: channelModelOverride.model,
42208
42164
  defaultProvider,
@@ -42235,7 +42191,6 @@ async function prepareReplyTurn(ctx, opts, configOverride) {
42235
42191
  aliasIndex,
42236
42192
  provider,
42237
42193
  model,
42238
- hasResolvedHeartbeatModelOverride,
42239
42194
  typing,
42240
42195
  opts: resolvedOpts,
42241
42196
  skillFilter: mergedSkillFilter
@@ -42981,7 +42936,7 @@ function withHeartbeatStrip(opts) {
42981
42936
  return (next) => async (payload, ctx) => {
42982
42937
  let text = payload.text;
42983
42938
  const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;
42984
- if (!ctx.isHeartbeat && typeof text === "string" && text.includes("SYMIPULSE_OK")) {
42939
+ if (typeof text === "string" && text.includes("SYMIPULSE_OK")) {
42985
42940
  const stripped = stripHeartbeatToken(text, { mode: "message" });
42986
42941
  if (stripped.didStrip && !didLogStrip) {
42987
42942
  didLogStrip = true;
@@ -48079,7 +48034,7 @@ function readSlackExternalArgMenuToken(raw) {
48079
48034
  }
48080
48035
  let commandsRegistry;
48081
48036
  async function getCommandsRegistry() {
48082
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-CRkL6mTz.js").then((n) => n.t);
48037
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-C5IdtVVy.js").then((n) => n.t);
48083
48038
  return commandsRegistry;
48084
48039
  }
48085
48040
  function encodeSlackCommandArgValue(parts) {
@@ -48421,11 +48376,11 @@ async function registerSlackMonitorSlashCommands(params) {
48421
48376
  const channelName = channelInfo?.name;
48422
48377
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
48423
48378
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
48424
- import("./resolve-route-BLDKso2x.js").then((n) => n.r),
48425
- import("./inbound-context-B4B7i7oM.js").then((n) => n.n),
48379
+ import("./resolve-route-CIA0TSsF.js").then((n) => n.r),
48380
+ import("./inbound-context-CJj1VfzK.js").then((n) => n.n),
48426
48381
  Promise.resolve().then(() => provider_dispatcher_exports)
48427
48382
  ]);
48428
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-B4d5pKXr.js").then((n) => n.t), import("./reply-prefix-ChIeKp-P.js").then((n) => n.n)]);
48383
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-tLwAlqLf.js").then((n) => n.t), import("./reply-prefix-DkDTGwTs.js").then((n) => n.n)]);
48429
48384
  const route = resolveAgentRoute({
48430
48385
  cfg,
48431
48386
  channel: "slack",
@@ -48482,9 +48437,9 @@ async function registerSlackMonitorSlashCommands(params) {
48482
48437
  });
48483
48438
  const deliverSlashPayloads = async (replies) => {
48484
48439
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
48485
- import("./replies-CvuXRwhI.js").then((n) => n.r),
48486
- import("./chunk-Ds8SZRkS.js").then((n) => n.s),
48487
- import("./markdown-tables-D0bwB4O7.js").then((n) => n.t)
48440
+ import("./replies-BZN1LuJP.js").then((n) => n.r),
48441
+ import("./chunk-DX6VtywY.js").then((n) => n.s),
48442
+ import("./markdown-tables-BaWa2kOe.js").then((n) => n.t)
48488
48443
  ]);
48489
48444
  await deliverSlackSlashReplies({
48490
48445
  replies,
@@ -48537,7 +48492,7 @@ async function registerSlackMonitorSlashCommands(params) {
48537
48492
  let nativeCommands = [];
48538
48493
  if (nativeEnabled) {
48539
48494
  reg = await getCommandsRegistry();
48540
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-CfGPouRa.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
48495
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DaNhP2Jb.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
48541
48496
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
48542
48497
  skillCommands,
48543
48498
  provider: "slack"
@@ -53064,7 +53019,7 @@ async function compactEmbeddedPiSessionDirect(params) {
53064
53019
  if (!apiKeyInfo.apiKey) {
53065
53020
  if (apiKeyInfo.mode !== "aws-sdk") throw new Error(`No API key resolved for provider "${model.provider}" (auth mode: ${apiKeyInfo.mode}).`);
53066
53021
  } else if (model.provider === "github-copilot") {
53067
- const { resolveCopilotApiToken } = await import("./github-copilot-token-BUd9oA8x.js").then((n) => n.n);
53022
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-B31ugq7R.js").then((n) => n.n);
53068
53023
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
53069
53024
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
53070
53025
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -58748,7 +58703,7 @@ async function runEmbeddedPiAgent(params) {
58748
58703
  return;
58749
58704
  }
58750
58705
  if (model.provider === "github-copilot") {
58751
- const { resolveCopilotApiToken } = await import("./github-copilot-token-BUd9oA8x.js").then((n) => n.n);
58706
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-B31ugq7R.js").then((n) => n.n);
58752
58707
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
58753
58708
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
58754
58709
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -59497,8 +59452,8 @@ async function runAgentTurnImpl(params) {
59497
59452
  const result = await runEmbeddedPiAgent(buildInternalParams());
59498
59453
  const rawText = (result.payloads ?? []).filter((p) => p.text && !p.isError).map((p) => p.text).join("\n").trim();
59499
59454
  const outboundResult = classifyOutboundMessage(rawText, {
59500
- isHeartbeat: getAgentRunContext(runId)?.isHeartbeat === true,
59501
- heartbeatAckMaxChars: Math.max(0, params.config.agents?.defaults?.heartbeat?.ackMaxChars ?? DEFAULT_HEARTBEAT_ACK_MAX_CHARS)
59455
+ isHeartbeat: false,
59456
+ heartbeatAckMaxChars: 0
59502
59457
  });
59503
59458
  const filteredText = outboundResult.output.trim();
59504
59459
  const resolvedProvider = result.meta.agentMeta?.provider ?? params.provider ?? "";
@@ -59555,4 +59510,4 @@ async function runAgentTurn(params) {
59555
59510
  }
59556
59511
 
59557
59512
  //#endregion
59558
- export { runWithModelFallback as A, redactRunIdentifier as C, clearAgentRunContext as D, hasNonzeroUsage as E, resolveFailoverStatus as M, emitAgentEvent as O, resolveBootstrapContextForRun as S, deriveSessionTotalTokens as T, AGENT_LANE_NESTED as _, resolveSessionDeliveryTarget as a, resolveSymiDocsPath as b, detectRuntimeShell as c, applyModelOverrideToSessionEntry as d, applyVerboseOverride as f, resolveAgentTimeoutMs as g, subagent_registry_exports as h, resolveOutboundTarget as i, FailoverError as j, registerAgentRunContext as k, resolveSendPolicy as l, clearSessionAuthProfileOverride as m, buildModelAliasLines as n, buildSystemPromptParams as o, loadModelCatalog as p, provider_dispatcher_exports as r, getProcessSupervisor as s, runAgentTurn as t, lookupContextTokens as u, AGENT_LANE_SUBAGENT as v, resolveRunWorkspaceDir as w, makeBootstrapWarn as x, buildAgentSystemPrompt as y };
59513
+ export { runWithModelFallback as A, resolveSymiDocsPath as C, resolveRunWorkspaceDir as D, redactRunIdentifier as E, resolveFailoverStatus as M, deriveSessionTotalTokens as O, buildAgentSystemPrompt as S, resolveBootstrapContextForRun as T, AGENT_LANE_NESTED as _, resolveSessionDeliveryTarget as a, emitAgentEvent as b, detectRuntimeShell as c, applyModelOverrideToSessionEntry as d, applyVerboseOverride as f, resolveAgentTimeoutMs as g, subagent_registry_exports as h, resolveOutboundTarget as i, FailoverError as j, hasNonzeroUsage as k, resolveSendPolicy as l, clearSessionAuthProfileOverride as m, buildModelAliasLines as n, buildSystemPromptParams as o, loadModelCatalog as p, provider_dispatcher_exports as r, getProcessSupervisor as s, runAgentTurn as t, lookupContextTokens as u, AGENT_LANE_SUBAGENT as v, makeBootstrapWarn as w, registerAgentRunContext as x, clearAgentRunContext as y };