@symerian/symi 3.3.1 → 3.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/{agent-BI1-UXxQ.js → agent-BED0HDsS.js} +2 -5
  2. package/dist/{agent-DeLysRUa.js → agent-pDOR_idq.js} +17 -20
  3. package/dist/{agent-scope-BjEBQhs0.js → agent-scope-B_oqIiaD.js} +18 -18
  4. package/dist/{agent-scope-DE5eEsvh.js → agent-scope-D_MtsuXX.js} +2 -2
  5. package/dist/{agents-BMRZpxNt.js → agents-mZX2a3hp.js} +2 -2
  6. package/dist/{agents.config-BFKM-a83.js → agents.config-B_LFeRQS.js} +1 -1
  7. package/dist/{audit-DQ_p2Pbq.js → audit-B_HL4UJ_.js} +20 -20
  8. package/dist/{auth-choice-BGZsmh6a.js → auth-choice-BgCnInKE.js} +8 -8
  9. package/dist/{auth-choice-T77Ymi34.js → auth-choice-nKtOJ3wF.js} +1 -1
  10. package/dist/{auth-profiles-BVtpxYtY.js → auth-profiles-CPlXilKu.js} +9 -9
  11. package/dist/{auth-profiles-B6ISm3Th.js → auth-profiles-duUuQXeC.js} +3 -3
  12. package/dist/{auth-token-CPluo60n.js → auth-token-DTj2WrbV.js} +1 -1
  13. package/dist/{banner-BJHky-bq.js → banner-C2jUZyMq.js} +1 -1
  14. package/dist/{browser-cli-O7Ic8DI3.js → browser-cli-C-Q0t9y_.js} +9 -9
  15. package/dist/build-info.json +3 -3
  16. package/dist/bundled/boot-md/handler.js +29 -32
  17. package/dist/bundled/bootstrap-extra-files/handler.js +4 -4
  18. package/dist/bundled/session-memory/handler.js +28 -28
  19. package/dist/{call-CdXXPXpo.js → call-Du4CT1Hp.js} +9 -9
  20. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  21. package/dist/{channel-options-BrDTgiiV.js → channel-options-DBKd8H2k.js} +1 -1
  22. package/dist/{channel-options-C1yi5h7A.js → channel-options-DRzIcaL1.js} +1 -1
  23. package/dist/{channels-cli-Pxe1OINS.js → channels-cli-CdfROBlW.js} +55 -55
  24. package/dist/{channels-cli-BYeGzy-G.js → channels-cli-CxUB3oX1.js} +10 -10
  25. package/dist/{chrome-FAf5DZL2.js → chrome-CejiigNy.js} +10 -10
  26. package/dist/{chrome-CQnRgvJz.js → chrome-b556dOQ6.js} +7 -7
  27. package/dist/{chrome-NUKborg3.js → chrome-owBWinlj.js} +2 -2
  28. package/dist/{chunk-DX6VtywY.js → chunk-5H33X8qU.js} +1 -1
  29. package/dist/{cli-Dt-wfm_7.js → cli-CzEP9cIM.js} +7 -7
  30. package/dist/{cli-DFNOC2Ad.js → cli-DWcoPSRG.js} +43 -43
  31. package/dist/{client-Bs2zB0rY.js → client-ZZqt0H0-.js} +1 -1
  32. package/dist/{command-registry-BwbT4ll7.js → command-registry-5O5dCHsD.js} +10 -10
  33. package/dist/{commands-registry-C5IdtVVy.js → commands-registry-DaPrWQSe.js} +4 -4
  34. package/dist/{commands-registry-DYk02tmt.js → commands-registry-W2GQIywv.js} +1 -1
  35. package/dist/{completion-cli-DiNUqrNY.js → completion-cli-D4wYjxBG.js} +12 -12
  36. package/dist/{completion-cli-CyOSA5xZ.js → completion-cli-DqrFJhG4.js} +2 -2
  37. package/dist/{config-CW8aDVM0.js → config-CphS_6eg.js} +2 -2
  38. package/dist/{config-cli-DBU_S417.js → config-cli-BE2vvf40.js} +4 -4
  39. package/dist/{config-cli-DfG0nukz.js → config-cli-CfA5xnD-.js} +1 -1
  40. package/dist/{config-guard-CNmD3-IC.js → config-guard-B5BwQ-AP.js} +6 -6
  41. package/dist/{config-validation-Bz5CV181.js → config-validation-A2rXGvVY.js} +1 -1
  42. package/dist/{configure-BkH4ueot.js → configure-CPY4n9mx.js} +14 -14
  43. package/dist/{configure-BYu2DI_6.js → configure-DYDsHAWF.js} +2 -2
  44. package/dist/{consolidate-Cx7qF5Ht.js → consolidate-7Usm-b2g.js} +6 -6
  45. package/dist/{consolidate-dh1m3X1s.js → consolidate-C-HKdAJo.js} +2 -2
  46. package/dist/{control-service-Drd2sr2o.js → control-service-CMVDL3Yl.js} +4 -4
  47. package/dist/{control-ui-assets-D22DSxhv.js → control-ui-assets-DUhvOLUL.js} +1 -1
  48. package/dist/{cron-cli-BTAdnRhX.js → cron-cli-DR4W075u.js} +7 -7
  49. package/dist/{daemon-cli-BY9BFNuw.js → daemon-cli-B__05b-d.js} +11 -11
  50. package/dist/{daemon-runtime-BH3ZBZXS.js → daemon-runtime-BD-3XS8R.js} +10 -10
  51. package/dist/{deliver-DZ7ynJYH.js → deliver-63FtOVMC.js} +3 -3
  52. package/dist/{deliver-kmnOOp9j.js → deliver-BY0HHHHB.js} +16 -16
  53. package/dist/{deliver-CRqS1O8w.js → deliver-DcP6aVt4.js} +1 -1
  54. package/dist/{deliver-Dlq2X0K5.js → deliver-i5knkyHl.js} +5 -5
  55. package/dist/{deps-i1g0Zpz4.js → deps-DD_ZCq3v.js} +1 -1
  56. package/dist/{devices-cli-Cqi6L8PH.js → devices-cli-CJom2K8b.js} +6 -6
  57. package/dist/{diagnostic-CQLyE7_n.js → diagnostic-D7z6O7v0.js} +1 -1
  58. package/dist/{diagnostics-nLP2i_BY.js → diagnostics-DxdqTfpW.js} +5 -5
  59. package/dist/{directory-cli-B0XsBWso.js → directory-cli-BwhEj1FE.js} +3 -3
  60. package/dist/{dm-policy-shared-CnKffdt_.js → dm-policy-shared-C1TQOlkZ.js} +1 -1
  61. package/dist/{dns-cli-BHWlCG31.js → dns-cli-DzQDEQM2.js} +3 -3
  62. package/dist/{docs-cli-DASNErN-.js → docs-cli--T-77Ujn.js} +1 -1
  63. package/dist/{doctor-completion-D_cwpDAq.js → doctor-completion-C6M7eRb_.js} +2 -2
  64. package/dist/{doctor-completion-DqvmZZEo.js → doctor-completion-DkwAZ_yS.js} +1 -1
  65. package/dist/{doctor-config-flow-BvHSaiFy.js → doctor-config-flow-4UT3396o.js} +9 -9
  66. package/dist/entry.js +1 -1
  67. package/dist/{exec-approvals-cli-CyHTywue.js → exec-approvals-cli-D-MLmhzh.js} +13 -13
  68. package/dist/extensionAPI.js +6 -6
  69. package/dist/{frontmatter-BW7tVmn4.js → frontmatter-BzAaXBfE.js} +2 -2
  70. package/dist/{fs-safe-DjAKGGJ8.js → fs-safe-B6nMaZqV.js} +6 -6
  71. package/dist/{gateway-cli-BBqSqFGV.js → gateway-cli-Dm5RZoKM.js} +97 -117
  72. package/dist/{gateway-cli-BYGA5ex3.js → gateway-cli-K_XVNWQc.js} +15 -35
  73. package/dist/{gateway-rpc-BJF1iDnx.js → gateway-rpc-CUIXRk2t.js} +1 -1
  74. package/dist/{glass-ui-ws-DJnV8nJK.js → glass-ui-ws-B_7JgOGU.js} +11 -11
  75. package/dist/{glass-ui-ws-NJNiRFL3.js → glass-ui-ws-BbsrTxei.js} +65 -65
  76. package/dist/{health-D59E1VfO.js → health-BdxlhiXA.js} +4 -4
  77. package/dist/{hooks-cli-Bidz8ACz.js → hooks-cli-D5S_h70_.js} +57 -57
  78. package/dist/{hooks-cli-CyjEjDSY.js → hooks-cli-DyiztpNG.js} +8 -8
  79. package/dist/{image-ops-c7_of0HT.js → image-ops-C-gIIp7Q.js} +10 -10
  80. package/dist/index.js +50 -50
  81. package/dist/{inspect-op0Ov-v4.js → inspect-BDzd6yBs.js} +4 -4
  82. package/dist/{install-safe-path-B73BkVO3.js → install-safe-path-CQXx3s9R.js} +11 -11
  83. package/dist/{installs-ZXEjR9Sp.js → installs-CLp95gcX.js} +10 -10
  84. package/dist/{internal-C3o_xyzP.js → internal-CHnZdvRy.js} +9 -9
  85. package/dist/{lifecycle-core-zhQYm_ni.js → lifecycle-core-_BlNODTH.js} +5 -5
  86. package/dist/llm-slug-generator.js +28 -28
  87. package/dist/{local-roots-CTriU02e.js → local-roots-JhQs5w0I.js} +1 -1
  88. package/dist/{local-roots-Dm8-ErgQ.js → local-roots-WWcVq0Ma.js} +3 -3
  89. package/dist/{logs-cli-B7RJ57Dc.js → logs-cli-BEWOyW5R.js} +7 -7
  90. package/dist/{manager-Dsdh0rGn.js → manager-BT2SbOdg.js} +6 -6
  91. package/dist/{manager-9dNT9kNF.js → manager-BTtaJXdu.js} +14 -14
  92. package/dist/{manager-CpBl-VGg.js → manager-TrK63P2M.js} +1 -1
  93. package/dist/{manager-t4GthPGw.js → manager-ue49bRVP.js} +1 -1
  94. package/dist/{manifest-registry-B2vClvK5.js → manifest-registry-DsTUFMvZ.js} +1 -1
  95. package/dist/{markdown-tables-BaWa2kOe.js → markdown-tables-ptfgMe6b.js} +1 -1
  96. package/dist/{memory-DcWXMzOH.js → memory-Czxk_hJw.js} +5 -5
  97. package/dist/{memory-B7TJXpqS.js → memory-DJN1Q1jq.js} +2 -2
  98. package/dist/{memory-cli-xBZPEOeL.js → memory-cli-B-nQp5HP.js} +12 -12
  99. package/dist/{memory-cli-C0WA_nRS.js → memory-cli-C9ZqpaaB.js} +2 -2
  100. package/dist/{model-BXWgh5eZ.js → model-BKtw-Bqs.js} +1 -1
  101. package/dist/{model-catalog-BGVslwAT.js → model-catalog-DKBhNiWm.js} +4 -4
  102. package/dist/{model-picker-aTfyp_mP.js → model-picker-DKzvan7c.js} +3 -3
  103. package/dist/{models-cli-DiB4JqF2.js → models-cli-CuHQFbs7.js} +9 -9
  104. package/dist/{models-cli-h8h_qu3F.js → models-cli-D8rsqzuW.js} +53 -53
  105. package/dist/{models-config-DRgHv7Ss.js → models-config-CFUwiu4W.js} +7 -7
  106. package/dist/{models-IfAFy9bK.js → models-oqT-RVMM.js} +2 -2
  107. package/dist/{node-cli-BPkbqgRt.js → node-cli-CgWAxe-K.js} +27 -27
  108. package/dist/{node-service-DuN9eBL6.js → node-service-tPO_yUk7.js} +1 -1
  109. package/dist/{nodes-cli-C09c6nCf.js → nodes-cli-CprJ5K63.js} +10 -10
  110. package/dist/{nodes-screen-CT94yu_w.js → nodes-screen-JELuBMBi.js} +4 -4
  111. package/dist/{npm-registry-spec-B8X06AqB.js → npm-registry-spec-BXw_6vF6.js} +9 -9
  112. package/dist/{onboard-sMgEOBjV.js → onboard-BICXrIV1.js} +13 -13
  113. package/dist/{onboard-iL7Z0wKJ.js → onboard-D-xPcbdk.js} +1 -1
  114. package/dist/{onboard-channels-Deq8QGnM.js → onboard-channels-CiLPgwMl.js} +4 -4
  115. package/dist/{onboard-channels-BfzW-9vo.js → onboard-channels-IZ52XV8A.js} +1 -1
  116. package/dist/{onboard-custom-DEdRdzNq.js → onboard-custom-Cla8O-Tv.js} +3 -3
  117. package/dist/{onboard-helpers-DZKHFY2J.js → onboard-helpers-D2mWJnFB.js} +8 -8
  118. package/dist/{onboard-hooks-DZZM8goM.js → onboard-hooks-DZD-nGLB.js} +1 -1
  119. package/dist/{onboard-remote-dn4L5WdE.js → onboard-remote-Bi2BNRnh.js} +1 -1
  120. package/dist/{onboard-skills-DGHye9Q3.js → onboard-skills-C0XDXvWw.js} +4 -4
  121. package/dist/{onboarding-70YKbZi6.js → onboarding-B-jxZvC2.js} +3 -3
  122. package/dist/{onboarding-BjXYbWlg.js → onboarding-BmB9v20h.js} +12 -12
  123. package/dist/{onboarding.finalize-dU_CtL43.js → onboarding.finalize-BejpUEVe.js} +31 -31
  124. package/dist/{onboarding.finalize-Ch3V08eY.js → onboarding.finalize-DufFKTf4.js} +4 -4
  125. package/dist/{onboarding.gateway-config-DfF8Rxvn.js → onboarding.gateway-config-BmaAH8uo.js} +8 -8
  126. package/dist/{openai-model-default-D1NFHFF_.js → openai-model-default-BeRT9S75.js} +2 -2
  127. package/dist/{pairing-cli-CJv8LQfb.js → pairing-cli-DdtW6Nu-.js} +4 -4
  128. package/dist/{pairing-store-CxT0UGxd.js → pairing-store-mmeniyUt.js} +1 -1
  129. package/dist/{pairing-token-DorpwP8O.js → pairing-token-CURbSHdi.js} +7 -7
  130. package/dist/{paths-DaQrPPet.js → paths-Dc6A9_vI.js} +1 -1
  131. package/dist/{pi-auth-json-DGZH6URT.js → pi-auth-json-1Z1j1PDI.js} +5 -5
  132. package/dist/{pi-auth-json-BzuhVcKu.js → pi-auth-json-D4Bl4hBw.js} +1 -1
  133. package/dist/{pi-embedded-DOCVZrmx.js → pi-embedded-DoWU3tbW.js} +17 -190
  134. package/dist/{pi-embedded-helpers-Be-EeyzH.js → pi-embedded-helpers-BRM8EM4P.js} +6 -6
  135. package/dist/{pi-tools.policy-qwS9SXOa.js → pi-tools.policy-BBHbN8Nh.js} +3 -3
  136. package/dist/{plugin-auto-enable-zDUaiaf2.js → plugin-auto-enable-BCwyDNSP.js} +1 -1
  137. package/dist/{plugin-registry-BgGVB3kW.js → plugin-registry-BybhOEu2.js} +3 -3
  138. package/dist/{plugin-registry-CP2mbhwk.js → plugin-registry-CFRFz2CF.js} +1 -1
  139. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +0 -2
  140. package/dist/plugin-sdk/agents/system-prompt.d.ts +1 -2
  141. package/dist/plugin-sdk/auto-reply/reply/middleware-transcript-update.d.ts +1 -8
  142. package/dist/plugin-sdk/auto-reply/reply/normalize-reply.d.ts +1 -3
  143. package/dist/plugin-sdk/auto-reply/reply/reply-dispatcher.d.ts +0 -1
  144. package/dist/plugin-sdk/auto-reply/tokens.d.ts +0 -3
  145. package/dist/plugin-sdk/gateway/outbound-filter.d.ts +2 -4
  146. package/dist/plugin-sdk/index.js +6 -6
  147. package/dist/{plugins-yymezpEd.js → plugins-CcVzjOo_.js} +1 -1
  148. package/dist/{plugins-cli-1wkCRsFe.js → plugins-cli-D9jv4SGt.js} +8 -8
  149. package/dist/{plugins-cli-B_Gtx3LU.js → plugins-cli-Dw_F4XTt.js} +52 -52
  150. package/dist/{ports-ChuJYhEL.js → ports-DRHSHvqY.js} +1 -1
  151. package/dist/{ports-EAVAOFyK.js → ports-DqxP-bXz.js} +2 -2
  152. package/dist/{program-UyCr49qs.js → program-BijlJds3.js} +13 -13
  153. package/dist/{program-context-C7uCS8z7.js → program-context-f_krhr6H.js} +38 -38
  154. package/dist/{prompt-select-styled-DcMra8CK.js → prompt-select-styled-D4Dl6PAx.js} +36 -36
  155. package/dist/{prompt-select-styled-BRcRFLzB.js → prompt-select-styled-wUs9hOXT.js} +4 -4
  156. package/dist/{provider-auth-helpers-BJTb9xI0.js → provider-auth-helpers-B0LgxUJm.js} +1 -1
  157. package/dist/{provider-auth-helpers-Xn1TAPPY.js → provider-auth-helpers-Dqg9CSy6.js} +5 -5
  158. package/dist/{push-apns-Bfqnchj6.js → push-apns-C8U43QIp.js} +1 -1
  159. package/dist/{push-apns-Aaqf9WKI.js → push-apns-DBG95KxK.js} +4 -4
  160. package/dist/{pw-ai-B3qisJP1.js → pw-ai-BFZrohva.js} +1 -1
  161. package/dist/{pw-ai-DJrnU1ja.js → pw-ai-BHSw4eGG.js} +8 -8
  162. package/dist/{pw-ai-C-ddUgTA.js → pw-ai-BW5obXRK.js} +7 -7
  163. package/dist/{qmd-manager-D5kqCz-Y.js → qmd-manager-C-J9Sfjk.js} +19 -19
  164. package/dist/{qmd-manager-DrM6m9z1.js → qmd-manager-CTHJcHPq.js} +5 -5
  165. package/dist/{qr-cli-B_mw4i0R.js → qr-cli-BIdgVMK1.js} +3 -3
  166. package/dist/{register.agent-BqKNzdaW.js → register.agent-B0UZREcL.js} +65 -65
  167. package/dist/{register.agent-vAJ0_4m0.js → register.agent-BQa36aBT.js} +12 -12
  168. package/dist/{register.configure-7TmTqCgU.js → register.configure-C2da871z.js} +68 -68
  169. package/dist/{register.configure-BzgavjpU.js → register.configure-DXxKMVFv.js} +11 -11
  170. package/dist/{register.maintenance-6Wz4HXlm.js → register.maintenance-CU2sJOVr.js} +65 -65
  171. package/dist/{register.maintenance-BJO0RCk9.js → register.maintenance-DUuHNER1.js} +12 -12
  172. package/dist/{register.message-XYivyrQJ.js → register.message-DIDXm7JJ.js} +45 -45
  173. package/dist/{register.message-CW9PahRi.js → register.message-zAQ9mzwS.js} +8 -8
  174. package/dist/{register.onboard-BgwkmP4D.js → register.onboard-BQrBlJMk.js} +22 -22
  175. package/dist/{register.onboard-MWRC29wD.js → register.onboard-xApCQkav.js} +2 -2
  176. package/dist/{register.setup-7OoAqQG_.js → register.setup-C3DgnQee.js} +25 -25
  177. package/dist/{register.setup-V-arsKvb.js → register.setup-CfJlyVIU.js} +2 -2
  178. package/dist/{register.status-health-sessions-Bgg1sdY_.js → register.status-health-sessions-CZKtQH3R.js} +38 -38
  179. package/dist/{register.status-health-sessions-1VnuXhGM.js → register.status-health-sessions-D7eQHV4A.js} +3 -3
  180. package/dist/{register.subclis-DpPYIqkP.js → register.subclis-DBKLQ-vk.js} +9 -9
  181. package/dist/{registry-9AaJQms1.js → registry-C-JddWwo.js} +2 -2
  182. package/dist/{replies-CgVOirGF.js → replies-BOy28KVL.js} +1 -1
  183. package/dist/{replies-pnMj7AtP.js → replies-BeK3uuQ8.js} +1 -1
  184. package/dist/{replies-BZN1LuJP.js → replies-C82xaXm3.js} +3 -3
  185. package/dist/{replies-Dqft-42v.js → replies-P7jbK6Bo.js} +2 -2
  186. package/dist/{reply-prefix-DkDTGwTs.js → reply-prefix-ChIeKp-P.js} +1 -1
  187. package/dist/{reply-prefix-CyLplifX.js → reply-prefix-xaWqfM9m.js} +1 -1
  188. package/dist/{resolve-route-CIA0TSsF.js → resolve-route-CIS2tjpz.js} +3 -3
  189. package/dist/{resolve-route-xpyI3enn.js → resolve-route-DKhx5C-P.js} +1 -1
  190. package/dist/{routes-xZZ99jJJ.js → routes-BJ2iXVJF.js} +10 -10
  191. package/dist/{rpc-BzR2wLkc.js → rpc-CSI4uFgj.js} +1 -1
  192. package/dist/{run-main-n0fjk-o5.js → run-main-C_9MD69x.js} +20 -20
  193. package/dist/{sandbox-DGG12SGo.js → sandbox-CQU7Gcb9.js} +18 -18
  194. package/dist/{sandbox-cli--d2MJPM2.js → sandbox-cli-Ci90LP_X.js} +13 -13
  195. package/dist/{security-cli-CeP9ss1g.js → security-cli-BfOZ_cJN.js} +28 -28
  196. package/dist/{send-BzUWmgQ9.js → send-BAKkoPOy.js} +7 -7
  197. package/dist/{send-BQJKg0bU.js → send-DulXmWcG.js} +7 -7
  198. package/dist/{server-context-BNbx1tUD.js → server-context-BsMQBnUG.js} +5 -5
  199. package/dist/{server-methods-BHg4GltA.js → server-methods-B4kcazJq.js} +57 -57
  200. package/dist/{server-methods-DkZ2XtEo.js → server-methods-BLH71I9g.js} +7 -7
  201. package/dist/{server-node-events-6dZ22EGj.js → server-node-events-BercSdmp.js} +46 -46
  202. package/dist/{server-node-events-BXviL2UH.js → server-node-events-DO4ug_A0.js} +9 -9
  203. package/dist/{service-9ItKCWWS.js → service-AP9pR9R5.js} +15 -15
  204. package/dist/{session-dirs-B6PWqKEf.js → session-dirs-Chh7bBGo.js} +2 -2
  205. package/dist/{session-utils-BVC8mmBv.js → session-utils-0F9pB5d6.js} +12 -12
  206. package/dist/{sessions-BaFVKzC2.js → sessions-DQMaURzb.js} +11 -11
  207. package/dist/{shared-DUmy8R4n.js → shared-4Z8Ut8Cs.js} +3 -3
  208. package/dist/{shared-ot5_jkpP.js → shared-DmYHvtn2.js} +1 -1
  209. package/dist/{skill-commands-DaNhP2Jb.js → skill-commands-Cwrebyvj.js} +5 -5
  210. package/dist/{skill-commands-X3T9Y9lT.js → skill-commands-DP1fshwh.js} +4 -4
  211. package/dist/{skill-scanner-DVq7ZopF.js → skill-scanner-qMQf6-FN.js} +5 -5
  212. package/dist/{skills-BMTJ2Tiq.js → skills-D0k4o0Ez.js} +6 -6
  213. package/dist/{skills-C_KgxpBD.js → skills-DL8DjveU.js} +4 -4
  214. package/dist/{skills-cli-DwYoPwkG.js → skills-cli-BkIH3HKr.js} +7 -7
  215. package/dist/{skills-install-U4FmCP8u.js → skills-install-C9uT4MR2.js} +3 -3
  216. package/dist/{skills-remote-C0gcKYWX.js → skills-remote-Db5Wwr4s.js} +3 -3
  217. package/dist/{skills-status-CdfQvU1h.js → skills-status-Dx3Lf5iU.js} +1 -1
  218. package/dist/{sqlite-C6MZhX4c.js → sqlite--aBEq1-J.js} +1 -1
  219. package/dist/{sqlite-BUXBg2yu.js → sqlite-DBEvS-Ne.js} +5 -5
  220. package/dist/{ssrf-BvjSIOlZ.js → ssrf-Dcgaqg3U.js} +9 -9
  221. package/dist/{status-BAnT_4qI.js → status-3CIcz22o.js} +3 -3
  222. package/dist/{status-J_gR_zbh.js → status-BdrH4P1l.js} +1 -1
  223. package/dist/{status-BK-ZK7SP.js → status-DA_sl7Yp.js} +23 -23
  224. package/dist/{status-CmoBgZ99.js → status-uVc7h7PN.js} +1 -1
  225. package/dist/{status.update-Cvj7y384.js → status.update-CQ1vKrEg.js} +3 -3
  226. package/dist/{subagent-registry-CWolsN8K.js → subagent-registry-CgZDo35C.js} +15 -192
  227. package/dist/{subsystem-DhOo2FZn.js → subsystem-DzRUKS9f.js} +1 -1
  228. package/dist/{symi-root-0MUhiNlM.js → symi-root-DueRHNOE.js} +2 -2
  229. package/dist/{synthesis-D3wZX5g3.js → synthesis-B_K7BSX3.js} +28 -28
  230. package/dist/{synthesis-DTZGPpj5.js → synthesis-DmdaBp-J.js} +6 -6
  231. package/dist/{synthesis-BSKiS446.js → synthesis-DwfzSD3_.js} +7 -7
  232. package/dist/{synthesis-CRQp5mTx.js → synthesis-w1oM0_-6.js} +43 -43
  233. package/dist/{system-cli-CUGyogmP.js → system-cli-5_JOcUt0.js} +7 -7
  234. package/dist/{systemd-8KKQdTO_.js → systemd-9LEEqibe.js} +5 -5
  235. package/dist/{systemd-hints-_ghBqtKo.js → systemd-hints-CeavseQh.js} +6 -6
  236. package/dist/{systemd-linger-CnKJZBUr.js → systemd-linger-PqG8iGCt.js} +1 -1
  237. package/dist/{thinking-BYtE7_UC.js → thinking-CMIo8E_E.js} +2 -2
  238. package/dist/{tokens-wW7opugV.js → tokens-BBh6tlmO.js} +2 -5
  239. package/dist/{tokens-DvvjOTxN.js → tokens-BKbemuIk.js} +1 -4
  240. package/dist/{tokens-CGqnWNmv.js → tokens-CJgPtOxz.js} +1 -4
  241. package/dist/{tokens-DJQ4rO24.js → tokens-K3kGchJA.js} +1 -4
  242. package/dist/{tool-loop-detection-DyZ0TWGh.js → tool-loop-detection-BR52lwOt.js} +2 -2
  243. package/dist/{tui-fKWqWqeq.js → tui-Bnusp3Vd.js} +7 -7
  244. package/dist/{tui-cli-BPOcMJ-f.js → tui-cli-BY8W9Yjm.js} +19 -19
  245. package/dist/{unified-runner-DftrstdI.js → unified-runner-BPgxfuKU.js} +52 -225
  246. package/dist/{unified-runner-Cdj1nLUh.js → unified-runner-DzycRpag.js} +106 -283
  247. package/dist/{update-XJWQZpV7.js → update-BvDXKE6K.js} +3 -3
  248. package/dist/{update-check-BdSIMYWq.js → update-check-CZxZhEXr.js} +5 -5
  249. package/dist/{update-cli-jQo-vg6S.js → update-cli-C4I2k2u9.js} +12 -12
  250. package/dist/{update-cli-D_MLjj6j.js → update-cli-DYYKfrbM.js} +75 -75
  251. package/dist/{update-runner-D_UHlPN0.js → update-runner-C8L4XRQb.js} +15 -15
  252. package/dist/{webhooks-cli-DgRLVVrD.js → webhooks-cli-CXbv4eB6.js} +4 -4
  253. package/dist/{with-timeout-DwVWQ2sN.js → with-timeout-C0UtpXBj.js} +1 -1
  254. package/dist/{workspace-OBnI5mKu.js → workspace-CsaDUuDn.js} +2 -2
  255. package/dist/{workspace-dirs-DStsDXra.js → workspace-dirs-gn_0yzFP.js} +1 -1
  256. package/dist/{wsl-DO9usEVV.js → wsl-ZWGwnnKI.js} +2 -2
  257. package/package.json +1 -1
  258. package/dist/plugin-sdk/auto-reply/heartbeat.d.ts +0 -26
  259. package/dist/plugin-sdk/auto-reply/reply/middleware-heartbeat-strip.d.ts +0 -25
@@ -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-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";
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 { $ 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-duUuQXeC.js";
9
9
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-B31ugq7R.js";
10
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";
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-BY0HHHHB.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-Dcgaqg3U.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-DsTUFMvZ.js";
14
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CejiigNy.js";
15
+ import { l as parseFrontmatterBlock } from "./frontmatter-BzAaXBfE.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-D0k4o0Ez.js";
17
17
  import { n as redactToolDetail } from "./redact-Dd8jrogi.js";
18
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";
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-WWcVq0Ma.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-CMIo8E_E.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-5H33X8qU.js";
22
22
  import { t as normalizeChatType } from "./chat-type-BPBtOjer.js";
23
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";
24
+ import { i as resolveSlackAccount, n as listChannelPlugins, o as resolveSlackAppToken, r as normalizeChannelId$1, s as resolveSlackBotToken, t as getChannelPlugin } from "./plugins-CcVzjOo_.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-DulXmWcG.js";
26
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
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";
28
+ import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-BBh6tlmO.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";
30
30
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BkfiP_y6.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";
31
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-D4Bl4hBw.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-BT2SbOdg.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-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";
35
+ import { n as resolveMarkdownTableMode } from "./markdown-tables-ptfgMe6b.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-DaPrWQSe.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-Cwrebyvj.js";
38
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-CIA0TSsF.js";
41
- import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-BZN1LuJP.js";
40
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CIS2tjpz.js";
41
+ import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-C82xaXm3.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 as WebSocket$1 } from "ws";
57
+ import { WebSocket } 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";
@@ -1020,17 +1020,11 @@ function resolveModelProfile(modelId, userProfiles) {
1020
1020
  //#endregion
1021
1021
  //#region src/gateway/outbound-filter.ts
1022
1022
  const SILENT_REPLY_BARE_RE = new RegExp(`^\\s*(?:["'\`]|\\*+|_+)?\\s*${SILENT_REPLY_TOKEN}\\s*(?:["'\`]|\\*+|_+)?\\s*$`);
1023
- const SYMIPULSE_BARE_RE = new RegExp(`^\\s*(?:["'\`]|\\*+|_+)?\\s*${SYMIPULSE_TOKEN}\\s*(?:["'\`]|\\*+|_+)?\\s*$`);
1024
1023
  /** Strict-match check for the bare NO_REPLY token. */
1025
1024
  function isBareSilentReply(text) {
1026
1025
  if (!text) return false;
1027
1026
  return SILENT_REPLY_BARE_RE.test(text);
1028
1027
  }
1029
- /** Strict-match check for the bare SYMIPULSE_OK token. */
1030
- function isBareSymipulseAck(text) {
1031
- if (!text) return false;
1032
- return SYMIPULSE_BARE_RE.test(text);
1033
- }
1034
1028
  /**
1035
1029
  * Classify an outbound assistant message at the gateway boundary.
1036
1030
  *
@@ -1044,11 +1038,6 @@ function classifyOutboundMessage(rawText, _opts) {
1044
1038
  output: "",
1045
1039
  reason: "silent-reply-bare"
1046
1040
  };
1047
- if (isBareSymipulseAck(text)) return {
1048
- action: "drop",
1049
- output: "",
1050
- reason: "symipulse-non-heartbeat-bare"
1051
- };
1052
1041
  return {
1053
1042
  action: "deliver",
1054
1043
  output: text,
@@ -2098,7 +2087,7 @@ async function getMemorySearchManager(params) {
2098
2087
  if (cached) return { manager: cached };
2099
2088
  }
2100
2089
  try {
2101
- const { QmdMemoryManager } = await import("./qmd-manager-DrM6m9z1.js");
2090
+ const { QmdMemoryManager } = await import("./qmd-manager-CTHJcHPq.js");
2102
2091
  const primary = await QmdMemoryManager.create({
2103
2092
  cfg: params.cfg,
2104
2093
  agentId: params.agentId,
@@ -2110,7 +2099,7 @@ async function getMemorySearchManager(params) {
2110
2099
  const wrapper = new FallbackMemoryManager({
2111
2100
  primary,
2112
2101
  fallbackFactory: async () => {
2113
- const { MemoryIndexManager } = await import("./manager-Dsdh0rGn.js").then((n) => n.t);
2102
+ const { MemoryIndexManager } = await import("./manager-BT2SbOdg.js").then((n) => n.t);
2114
2103
  return await MemoryIndexManager.get(params);
2115
2104
  }
2116
2105
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -2123,7 +2112,7 @@ async function getMemorySearchManager(params) {
2123
2112
  }
2124
2113
  }
2125
2114
  try {
2126
- const { MemoryIndexManager } = await import("./manager-Dsdh0rGn.js").then((n) => n.t);
2115
+ const { MemoryIndexManager } = await import("./manager-BT2SbOdg.js").then((n) => n.t);
2127
2116
  return { manager: await MemoryIndexManager.get(params) };
2128
2117
  } catch (err) {
2129
2118
  return {
@@ -5018,8 +5007,6 @@ function buildAgentSystemPrompt(params) {
5018
5007
  const reasoningLevel = params.reasoningLevel ?? "off";
5019
5008
  const userTimezone = params.userTimezone?.trim();
5020
5009
  const skillsPrompt = params.skillsPrompt?.trim();
5021
- const heartbeatPrompt = params.heartbeatPrompt?.trim();
5022
- const heartbeatPromptLine = heartbeatPrompt ? `Heartbeat prompt: ${heartbeatPrompt}` : "Heartbeat prompt: (configured)";
5023
5010
  const runtimeInfo = params.runtimeInfo;
5024
5011
  const runtimeChannel = runtimeInfo?.channel?.trim().toLowerCase();
5025
5012
  const runtimeCapabilities = (runtimeInfo?.capabilities ?? []).map((cap) => String(cap).trim()).filter(Boolean);
@@ -5232,7 +5219,6 @@ function buildAgentSystemPrompt(params) {
5232
5219
  for (const file of validContextFiles) lines.push(`## ${file.path}`, "", file.content, "");
5233
5220
  }
5234
5221
  if (!isMinimal && !isCoding) lines.push("## Silent Replies", `When you have nothing to say, respond with ONLY: ${SILENT_REPLY_TOKEN}`, "", "⚠️ Rules:", "- It must be your ENTIRE message — nothing else", `- Never append it to an actual response (never include "${SILENT_REPLY_TOKEN}" in real replies)`, "- Never wrap it in markdown or code blocks", "", `❌ Wrong: "Here's help... ${SILENT_REPLY_TOKEN}"`, `❌ Wrong: "${SILENT_REPLY_TOKEN}"`, `✅ Right: ${SILENT_REPLY_TOKEN}`, "");
5235
- if (!isMinimal && !isCoding) lines.push("## Heartbeats", heartbeatPromptLine, "If you receive a heartbeat poll (a user message matching the heartbeat prompt above), and there is nothing that needs attention, reply exactly:", "SYMIPULSE_OK", "Symi treats a leading/trailing \"SYMIPULSE_OK\" as a heartbeat ack (and may discard it).", "If something needs attention, do NOT include \"SYMIPULSE_OK\"; reply with the alert text instead.", "");
5236
5222
  lines.push("## Runtime", buildRuntimeLine(runtimeInfo, runtimeChannel, runtimeCapabilities, params.defaultThinkLevel), `Reasoning: ${reasoningLevel} (hidden unless on/stream). Toggle /reasoning; /status shows Reasoning when enabled.`);
5237
5223
  return lines.filter(Boolean).join("\n");
5238
5224
  }
@@ -5276,10 +5262,8 @@ function buildEmbeddedSystemPrompt(params) {
5276
5262
  ownerDisplay: params.ownerDisplay,
5277
5263
  ownerDisplaySecret: params.ownerDisplaySecret,
5278
5264
  reasoningTagHint: params.reasoningTagHint,
5279
- heartbeatPrompt: params.heartbeatPrompt,
5280
5265
  skillsPrompt: params.skillsPrompt,
5281
5266
  docsPath: params.docsPath,
5282
- ttsHint: params.ttsHint,
5283
5267
  workspaceNotes: params.workspaceNotes,
5284
5268
  reactionGuidance: params.reactionGuidance,
5285
5269
  promptMode: params.promptMode,
@@ -5346,7 +5330,7 @@ async function recordLoopOutcome(args) {
5346
5330
  if (!args.ctx?.sessionKey) return;
5347
5331
  try {
5348
5332
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BkfiP_y6.js").then((n) => n.t);
5349
- const { recordToolCallOutcome } = await import("./tool-loop-detection-DyZ0TWGh.js");
5333
+ const { recordToolCallOutcome } = await import("./tool-loop-detection-BR52lwOt.js");
5350
5334
  recordToolCallOutcome(getDiagnosticSessionState({
5351
5335
  sessionKey: args.ctx.sessionKey,
5352
5336
  sessionId: args.ctx?.agentId
@@ -5367,8 +5351,8 @@ async function runBeforeToolCallHook(args) {
5367
5351
  const params = args.params;
5368
5352
  if (args.ctx?.sessionKey) {
5369
5353
  const { getDiagnosticSessionState } = await import("./diagnostic-session-state-BkfiP_y6.js").then((n) => n.t);
5370
- const { logToolLoopAction } = await import("./diagnostic-CQLyE7_n.js").then((n) => n.n);
5371
- const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-DyZ0TWGh.js");
5354
+ const { logToolLoopAction } = await import("./diagnostic-D7z6O7v0.js").then((n) => n.n);
5355
+ const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-BR52lwOt.js");
5372
5356
  const sessionState = getDiagnosticSessionState({
5373
5357
  sessionKey: args.ctx.sessionKey,
5374
5358
  sessionId: args.ctx?.agentId
@@ -7274,7 +7258,7 @@ var GatewayClient = class {
7274
7258
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
7275
7259
  });
7276
7260
  }
7277
- this.ws = new WebSocket$1(url, wsOptions);
7261
+ this.ws = new WebSocket(url, wsOptions);
7278
7262
  this.ws.on("open", () => {
7279
7263
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
7280
7264
  const tlsError = this.validateTlsFingerprint();
@@ -7493,7 +7477,7 @@ var GatewayClient = class {
7493
7477
  return null;
7494
7478
  }
7495
7479
  async request(method, params, opts) {
7496
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
7480
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
7497
7481
  const id = randomUUID();
7498
7482
  const frame = {
7499
7483
  type: "req",
@@ -8367,97 +8351,6 @@ function clearSessionQueues(keys) {
8367
8351
  };
8368
8352
  }
8369
8353
 
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
-
8461
8354
  //#endregion
8462
8355
  //#region src/auto-reply/reply/normalize-reply.ts
8463
8356
  function normalizeReplyPayload(payload, opts = {}) {
@@ -8478,15 +8371,6 @@ function normalizeReplyPayload(payload, opts = {}) {
8478
8371
  text = "";
8479
8372
  }
8480
8373
  if (text && !trimmed) text = "";
8481
- if ((opts.stripHeartbeat ?? true) && text?.includes(HEARTBEAT_TOKEN)) {
8482
- const stripped = stripHeartbeatToken(text, { mode: "message" });
8483
- if (stripped.didStrip) opts.onHeartbeatStrip?.();
8484
- if (stripped.shouldSkip && !hasMedia && !hasChannelData) {
8485
- opts.onSkip?.("heartbeat");
8486
- return null;
8487
- }
8488
- text = stripped.text;
8489
- }
8490
8374
  if (text) text = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
8491
8375
  if (!text?.trim() && !hasMedia && !hasChannelData) {
8492
8376
  opts.onSkip?.("empty");
@@ -8497,7 +8381,7 @@ function normalizeReplyPayload(payload, opts = {}) {
8497
8381
  text
8498
8382
  };
8499
8383
  const effectivePrefix = opts.responsePrefixContext ? resolveResponsePrefixTemplate(opts.responsePrefix, opts.responsePrefixContext) : opts.responsePrefix;
8500
- if (effectivePrefix && text && text.trim() !== HEARTBEAT_TOKEN && !text.startsWith(effectivePrefix)) text = `${effectivePrefix} ${text}`;
8384
+ if (effectivePrefix && text && !text.startsWith(effectivePrefix)) text = `${effectivePrefix} ${text}`;
8501
8385
  return {
8502
8386
  ...enrichedPayload,
8503
8387
  text
@@ -8554,7 +8438,7 @@ async function routeReply(params) {
8554
8438
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
8555
8439
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
8556
8440
  try {
8557
- const { deliverOutboundPayloads } = await import("./deliver-kmnOOp9j.js").then((n) => n.n);
8441
+ const { deliverOutboundPayloads } = await import("./deliver-BY0HHHHB.js").then((n) => n.n);
8558
8442
  return {
8559
8443
  ok: true,
8560
8444
  messageId: (await deliverOutboundPayloads({
@@ -8840,7 +8724,7 @@ function normalizeSessionKey(value) {
8840
8724
  function readSessionStore(storePath) {
8841
8725
  try {
8842
8726
  const raw = fs.readFileSync(storePath, "utf-8");
8843
- const parsed = json5.parse(raw);
8727
+ const parsed = JSON5.parse(raw);
8844
8728
  if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) return parsed;
8845
8729
  } catch {}
8846
8730
  return {};
@@ -16158,7 +16042,7 @@ async function loadModelCatalog(params) {
16158
16042
  try {
16159
16043
  const cfg = params?.config ?? loadConfig();
16160
16044
  await ensureSymiModelsJson(cfg);
16161
- await (await import("./pi-auth-json-BzuhVcKu.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
16045
+ await (await import("./pi-auth-json-D4Bl4hBw.js").then((n) => n.n)).ensurePiAuthJsonFromAuthProfiles(resolveSymiAgentDir(), { config: cfg });
16162
16046
  const piSdk = await importPiSdk();
16163
16047
  const agentDir = resolveSymiAgentDir();
16164
16048
  const { join } = await import("node:path");
@@ -18291,7 +18175,7 @@ async function createModelSelectionState(params) {
18291
18175
  }
18292
18176
  }
18293
18177
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
18294
- const { ensureAuthProfileStore } = await import("./auth-profiles-B6ISm3Th.js").then((n) => n.t);
18178
+ const { ensureAuthProfileStore } = await import("./auth-profiles-duUuQXeC.js").then((n) => n.t);
18295
18179
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
18296
18180
  const providerKey = normalizeProviderId(provider);
18297
18181
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -26961,7 +26845,6 @@ async function resolveCommandsSystemPromptBundle(params) {
26961
26845
  userTimeFormat,
26962
26846
  contextFiles: injectedFiles,
26963
26847
  skillsPrompt,
26964
- heartbeatPrompt: void 0,
26965
26848
  runtimeInfo,
26966
26849
  sandboxInfo,
26967
26850
  memoryCitationsMode: params.cfg?.memory?.citations
@@ -41406,7 +41289,7 @@ async function deliverSessionMaintenanceWarning(params) {
41406
41289
  return;
41407
41290
  }
41408
41291
  try {
41409
- const { deliverOutboundPayloads } = await import("./deliver-kmnOOp9j.js").then((n) => n.n);
41292
+ const { deliverOutboundPayloads } = await import("./deliver-BY0HHHHB.js").then((n) => n.n);
41410
41293
  await deliverOutboundPayloads({
41411
41294
  cfg: params.cfg,
41412
41295
  channel,
@@ -42914,54 +42797,6 @@ function withFastAbort(opts) {
42914
42797
  };
42915
42798
  }
42916
42799
 
42917
- //#endregion
42918
- //#region src/auto-reply/reply/middleware-heartbeat-strip.ts
42919
- /**
42920
- * Returns a PayloadMiddleware that strips heartbeat tokens, drops silent
42921
- * replies, and sanitizes user-facing text. Reads `ctx.isHeartbeat` to
42922
- * decide whether to strip; reads `payload.isError` to give the sanitizer
42923
- * the right context flag.
42924
- *
42925
- * Equivalence claim (proven by tests): for every input shape the chain's
42926
- * `normalizeStreamingText({text})` would have produced `{ skip, text }`,
42927
- * this middleware produces the corresponding `PayloadDelivery`:
42928
- *
42929
- * skip=true → delivered=false (drop)
42930
- * skip=false, text=undefined → delivered=true with payload.text undefined
42931
- * (media-only carry-through case)
42932
- * skip=false, text=string → delivered=true with payload.text=sanitized
42933
- */
42934
- function withHeartbeatStrip(opts) {
42935
- let didLogStrip = false;
42936
- return (next) => async (payload, ctx) => {
42937
- let text = payload.text;
42938
- const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;
42939
- if (typeof text === "string" && text.includes("SYMIPULSE_OK")) {
42940
- const stripped = stripHeartbeatToken(text, { mode: "message" });
42941
- if (stripped.didStrip && !didLogStrip) {
42942
- didLogStrip = true;
42943
- opts?.onStrip?.();
42944
- }
42945
- if (stripped.shouldSkip && !hasMedia) return PayloadDelivery.drop(payload, "drop:heartbeat-token-bare");
42946
- text = stripped.text;
42947
- }
42948
- if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return PayloadDelivery.drop(payload, "drop:silent-reply");
42949
- if (!text) {
42950
- if (hasMedia) return next({
42951
- ...payload,
42952
- text: void 0
42953
- }, ctx);
42954
- return PayloadDelivery.drop(payload, "drop:empty");
42955
- }
42956
- const sanitized = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
42957
- if (!sanitized.trim()) return PayloadDelivery.drop(payload, "drop:empty-after-sanitize");
42958
- return next({
42959
- ...payload,
42960
- text: sanitized
42961
- }, ctx);
42962
- };
42963
- }
42964
-
42965
42800
  //#endregion
42966
42801
  //#region src/infra/map-size.ts
42967
42802
  function pruneMapToMaxSize(map, maxSize) {
@@ -43237,25 +43072,22 @@ function withToolResultSerialization(opts) {
43237
43072
  * session transcript after the inner runner completes.
43238
43073
  *
43239
43074
  * Skip conditions:
43240
- * - outbound.action === "drop" (NO_REPLY / heartbeat ack — no message)
43075
+ * - outbound.action === "drop" (NO_REPLY — no message)
43241
43076
  * - empty / whitespace-only text
43242
- * - outbound.action === "deliver-stripped" AND includeStripped=false
43243
43077
  *
43244
43078
  * The middleware does NOT mutate the turn result — the append is a
43245
43079
  * post-turn side effect. The result is returned unchanged regardless of
43246
43080
  * append success/failure.
43247
43081
  */
43248
43082
  function withTranscriptUpdate(opts) {
43249
- const includeStripped = opts.includeStripped !== false;
43250
43083
  return (next) => async (params) => {
43251
43084
  const result = await next(params);
43252
- if (shouldAppend(result, includeStripped)) await runAppend(opts, params, result);
43085
+ if (shouldAppend(result)) await runAppend(opts, params, result);
43253
43086
  return result;
43254
43087
  };
43255
43088
  }
43256
- function shouldAppend(result, includeStripped) {
43089
+ function shouldAppend(result) {
43257
43090
  if (result.outbound.action === "drop") return false;
43258
- if (result.outbound.action === "deliver-stripped" && !includeStripped) return false;
43259
43091
  return (typeof result.text === "string" ? result.text.trim() : "").length > 0;
43260
43092
  }
43261
43093
  async function runAppend(opts, params, result) {
@@ -43339,7 +43171,6 @@ function buildChannelProfile(opts) {
43339
43171
  ],
43340
43172
  payloadMiddlewares: [
43341
43173
  withPayloadDropOnEmpty(),
43342
- withHeartbeatStrip(),
43343
43174
  ...opts.typingSignaler ? [withTypingSignals({ signaler: opts.typingSignaler })] : [],
43344
43175
  withToolResultSerialization(),
43345
43176
  withChannelRouting({
@@ -43484,7 +43315,6 @@ function normalizeReplyPayloadInternal(payload, opts) {
43484
43315
  return normalizeReplyPayload(payload, {
43485
43316
  responsePrefix: opts.responsePrefix,
43486
43317
  responsePrefixContext: prefixContext,
43487
- onHeartbeatStrip: opts.onHeartbeatStrip,
43488
43318
  onSkip: opts.onSkip
43489
43319
  });
43490
43320
  }
@@ -43507,7 +43337,6 @@ function createReplyDispatcher(options) {
43507
43337
  responsePrefix: options.responsePrefix,
43508
43338
  responsePrefixContext: options.responsePrefixContext,
43509
43339
  responsePrefixContextProvider: options.responsePrefixContextProvider,
43510
- onHeartbeatStrip: options.onHeartbeatStrip,
43511
43340
  onSkip: (reason) => options.onSkip?.(payload, {
43512
43341
  kind,
43513
43342
  reason
@@ -48034,7 +47863,7 @@ function readSlackExternalArgMenuToken(raw) {
48034
47863
  }
48035
47864
  let commandsRegistry;
48036
47865
  async function getCommandsRegistry() {
48037
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-C5IdtVVy.js").then((n) => n.t);
47866
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-DaPrWQSe.js").then((n) => n.t);
48038
47867
  return commandsRegistry;
48039
47868
  }
48040
47869
  function encodeSlackCommandArgValue(parts) {
@@ -48376,11 +48205,11 @@ async function registerSlackMonitorSlashCommands(params) {
48376
48205
  const channelName = channelInfo?.name;
48377
48206
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
48378
48207
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
48379
- import("./resolve-route-CIA0TSsF.js").then((n) => n.r),
48208
+ import("./resolve-route-CIS2tjpz.js").then((n) => n.r),
48380
48209
  import("./inbound-context-CJj1VfzK.js").then((n) => n.n),
48381
48210
  Promise.resolve().then(() => provider_dispatcher_exports)
48382
48211
  ]);
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)]);
48212
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-tLwAlqLf.js").then((n) => n.t), import("./reply-prefix-ChIeKp-P.js").then((n) => n.n)]);
48384
48213
  const route = resolveAgentRoute({
48385
48214
  cfg,
48386
48215
  channel: "slack",
@@ -48437,9 +48266,9 @@ async function registerSlackMonitorSlashCommands(params) {
48437
48266
  });
48438
48267
  const deliverSlashPayloads = async (replies) => {
48439
48268
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
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)
48269
+ import("./replies-C82xaXm3.js").then((n) => n.r),
48270
+ import("./chunk-5H33X8qU.js").then((n) => n.s),
48271
+ import("./markdown-tables-ptfgMe6b.js").then((n) => n.t)
48443
48272
  ]);
48444
48273
  await deliverSlackSlashReplies({
48445
48274
  replies,
@@ -48492,7 +48321,7 @@ async function registerSlackMonitorSlashCommands(params) {
48492
48321
  let nativeCommands = [];
48493
48322
  if (nativeEnabled) {
48494
48323
  reg = await getCommandsRegistry();
48495
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DaNhP2Jb.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
48324
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-Cwrebyvj.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
48496
48325
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
48497
48326
  skillCommands,
48498
48327
  provider: "slack"
@@ -53150,7 +52979,6 @@ async function compactEmbeddedPiSessionDirect(params) {
53150
52979
  ownerDisplay: params.config?.commands?.ownerDisplay,
53151
52980
  ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ?? params.config?.gateway?.auth?.token ?? params.config?.gateway?.remote?.token,
53152
52981
  reasoningTagHint,
53153
- heartbeatPrompt: void 0,
53154
52982
  skillsPrompt,
53155
52983
  docsPath: docsPath ?? void 0,
53156
52984
  promptMode,
@@ -57624,7 +57452,6 @@ async function runEmbeddedAttempt(params) {
57624
57452
  ownerDisplay: params.config?.commands?.ownerDisplay,
57625
57453
  ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ?? params.config?.gateway?.auth?.token ?? params.config?.gateway?.remote?.token,
57626
57454
  reasoningTagHint,
57627
- heartbeatPrompt: void 0,
57628
57455
  skillsPrompt,
57629
57456
  docsPath: docsPath ?? void 0,
57630
57457
  workspaceNotes,