@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
@@ -9,23 +9,23 @@ import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as reso
9
9
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BbsJ0Qbo.js";
10
10
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
11
11
  import { i as resolveSlackAccount, n as listChannelPlugins, o as resolveSlackAppToken, r as normalizeChannelId$1, s as resolveSlackBotToken, t as getChannelPlugin } from "./plugins-Cp39v6b_.js";
12
- import { S as resolveSlackChannelId, _ as resolveSlackWebClientOptions, a as sendMessageSlack, b as buildSlackBlocksFallbackText, c as getDefaultLocalRoots, d as fetchRemoteMedia, f as readResponseWithLimit, g as createSlackWebClient, h as fetchWithTimeout, i as resolveSlackThreadTs, l as loadWebMedia, m as bindAbortRelay, n as deliverReplies, o as renderMarkdownWithMarkers, p as fetchWithSsrFGuard, s as markdownToIRWithMeta, t as createSlackReplyDeliveryPlan, u as MediaFetchError, v as parseSlackBlocksInput, x as parseSlackTarget, y as validateSlackBlocksArray } from "./replies-pnMj7AtP.js";
13
- import { $ as loadSessionStore, $t as resolveToolProfilePolicy, A as formatRawAssistantErrorForUi, At as resolveMainSessionKey, B as isRateLimitAssistantError, Bt as saveMediaBuffer, C as downgradeOpenAIReasoningBlocks, Ct as resolveChannelResetConfig, D as classifyFailoverReason, Dt as DEFAULT_RESET_TRIGGERS, E as BILLING_ERROR_USER_MESSAGE, Et as resolveThreadFlag, F as isCompactionFailureError, Ft as createBrowserRouteContext, G as parseImageSizeError, Gt as resolveBrowserControlAuth, H as isTimeoutErrorMessage, Ht as resolveExistingPathsWithinRoot, I as isContextOverflowError, It as registerBrowserRoutes, J as resolveSandboxContext, Jt as collectExplicitAllowlist, K as sanitizeUserFacingText, Kt as applyOwnerOnlyToolPolicy, L as isFailoverAssistantError, Lt as resolveBrowserConfig, M as isAuthAssistantError, Mt as resolveGroupSessionKey, N as isBillingAssistantError, Nt as acquireSessionWriteLock, O as formatAssistantErrorText, Ot as resolveFreshSessionTotalTokens, P as isCloudCodeAssistFormatError, Pt as resolveSessionLockMaxHoldFromTimeout, Q as resolveAndPersistSessionFile, Qt as normalizeToolName$1, R as isFailoverErrorMessage, Rt as resolveProfile, S as extractToolResultId, St as evaluateSessionFreshness, T as isGoogleModelApi, Tt as resolveSessionResetType, U as isTransientHttpError, Ut as getBridgeAuthForPort, V as isRawApiErrorPayload, Vt as DEFAULT_UPLOAD_DIR, W as parseImageDimensionError, Wt as ensureBrowserControlAuth, X as extractDeliveryInfo, Xt as expandToolGroups, Y as resolveSandboxRuntimeStatus, Yt as expandPolicyWithPluginGroups, Z as appendAssistantMessageToSessionTranscript, Zt as mergeAlsoAllowPolicy, _ as sanitizeSessionMessagesImages, _t as INPUT_PROVENANCE_KIND_VALUES, a as normalizeChannelTargetInput, an as resolveBootstrapMaxChars, at as updateSessionStoreEntry, b as resolveImageSanitizationLimits, bt as normalizeInputProvenance, c as parseReplyDirectives, cn as getGlobalHookRunner, ct as deliveryContextFromSession, d as parseInlineDirectives$1, dt as normalizeDeliveryContext, en as stripPluginOnlyAllowlist, et as readSessionUpdatedAt, f as validateAnthropicTurns, ft as normalizeSessionDeliveryFields, g as normalizeTextForComparison, gt as extractToolCallNames, h as isMessagingToolDuplicateNormalized, ht as countToolResults, i as buildTargetResolverSignature, in as ensureSessionHeader, it as updateSessionStore, j as getApiErrorPayloadFingerprint, jt as deriveSessionMetaPatch, k as formatBillingErrorMessage, kt as canonicalizeMainSessionAlias, l as MEDIA_TOKEN_RE, ln as initializeGlobalHookRunner, lt as deliveryContextKey, m as pickFallbackThinkingLevel, mt as capArrayByJsonBytes, nn as matchesAnyGlobPattern, o as normalizeTargetForProvider, on as resolveBootstrapTotalMaxChars, ot as isCacheEnabled, p as validateGeminiTurns, pt as archiveSessionTranscripts, q as ensureSandboxWorkspaceForSession, qt as buildPluginToolGroups, r as normalizeReplyPayloadsForDelivery, rn as buildBootstrapContextFiles, rt as updateLastRoute, s as throwIfAborted, sn as sanitizeGoogleTurnOrdering, st as resolveCacheTtlMs$1, t as deliverOutboundPayloads, tn as compileGlobPatterns, tt as recordSessionMetaFromInbound, u as splitMediaFromOutput, ut as mergeDeliveryContext, v as sanitizeImageBlocks, vt as applyInputProvenanceToUserMessage, w as isAntigravityClaude, wt as resolveSessionResetPolicy, x as extractToolCallsFromAssistant, xt as resolveSessionKey, y as sanitizeToolResultImages, yt as hasInterSessionUserProvenance, z as isLikelyContextOverflowError, zt as getMediaDir } from "./deliver-Dlq2X0K5.js";
12
+ import { S as resolveSlackChannelId, _ as resolveSlackWebClientOptions, a as sendMessageSlack, b as buildSlackBlocksFallbackText, c as getDefaultLocalRoots, d as fetchRemoteMedia, f as readResponseWithLimit, g as createSlackWebClient, h as fetchWithTimeout, i as resolveSlackThreadTs, l as loadWebMedia, m as bindAbortRelay, n as deliverReplies, o as renderMarkdownWithMarkers, p as fetchWithSsrFGuard, s as markdownToIRWithMeta, t as createSlackReplyDeliveryPlan, u as MediaFetchError, v as parseSlackBlocksInput, x as parseSlackTarget, y as validateSlackBlocksArray } from "./replies-BeK3uuQ8.js";
13
+ import { $ as loadSessionStore, $t as resolveToolProfilePolicy, A as formatRawAssistantErrorForUi, At as resolveMainSessionKey, B as isRateLimitAssistantError, Bt as saveMediaBuffer, C as downgradeOpenAIReasoningBlocks, Ct as resolveChannelResetConfig, D as classifyFailoverReason, Dt as DEFAULT_RESET_TRIGGERS, E as BILLING_ERROR_USER_MESSAGE, Et as resolveThreadFlag, F as isCompactionFailureError, Ft as createBrowserRouteContext, G as parseImageSizeError, Gt as resolveBrowserControlAuth, H as isTimeoutErrorMessage, Ht as resolveExistingPathsWithinRoot, I as isContextOverflowError, It as registerBrowserRoutes, J as resolveSandboxContext, Jt as collectExplicitAllowlist, K as sanitizeUserFacingText, Kt as applyOwnerOnlyToolPolicy, L as isFailoverAssistantError, Lt as resolveBrowserConfig, M as isAuthAssistantError, Mt as resolveGroupSessionKey, N as isBillingAssistantError, Nt as acquireSessionWriteLock, O as formatAssistantErrorText, Ot as resolveFreshSessionTotalTokens, P as isCloudCodeAssistFormatError, Pt as resolveSessionLockMaxHoldFromTimeout, Q as resolveAndPersistSessionFile, Qt as normalizeToolName$1, R as isFailoverErrorMessage, Rt as resolveProfile, S as extractToolResultId, St as evaluateSessionFreshness, T as isGoogleModelApi, Tt as resolveSessionResetType, U as isTransientHttpError, Ut as getBridgeAuthForPort, V as isRawApiErrorPayload, Vt as DEFAULT_UPLOAD_DIR, W as parseImageDimensionError, Wt as ensureBrowserControlAuth, X as extractDeliveryInfo, Xt as expandToolGroups, Y as resolveSandboxRuntimeStatus, Yt as expandPolicyWithPluginGroups, Z as appendAssistantMessageToSessionTranscript, Zt as mergeAlsoAllowPolicy, _ as sanitizeSessionMessagesImages, _t as INPUT_PROVENANCE_KIND_VALUES, a as normalizeChannelTargetInput, an as resolveBootstrapMaxChars, at as updateSessionStoreEntry, b as resolveImageSanitizationLimits, bt as normalizeInputProvenance, c as parseReplyDirectives, cn as getGlobalHookRunner, ct as deliveryContextFromSession, d as parseInlineDirectives$1, dt as normalizeDeliveryContext, en as stripPluginOnlyAllowlist, et as readSessionUpdatedAt, f as validateAnthropicTurns, ft as normalizeSessionDeliveryFields, g as normalizeTextForComparison, gt as extractToolCallNames, h as isMessagingToolDuplicateNormalized, ht as countToolResults, i as buildTargetResolverSignature, in as ensureSessionHeader, it as updateSessionStore, j as getApiErrorPayloadFingerprint, jt as deriveSessionMetaPatch, k as formatBillingErrorMessage, kt as canonicalizeMainSessionAlias, l as MEDIA_TOKEN_RE, ln as initializeGlobalHookRunner, lt as deliveryContextKey, m as pickFallbackThinkingLevel, mt as capArrayByJsonBytes, nn as matchesAnyGlobPattern, o as normalizeTargetForProvider, on as resolveBootstrapTotalMaxChars, ot as isCacheEnabled, p as validateGeminiTurns, pt as archiveSessionTranscripts, q as ensureSandboxWorkspaceForSession, qt as buildPluginToolGroups, r as normalizeReplyPayloadsForDelivery, rn as buildBootstrapContextFiles, rt as updateLastRoute, s as throwIfAborted, sn as sanitizeGoogleTurnOrdering, st as resolveCacheTtlMs$1, t as deliverOutboundPayloads, tn as compileGlobPatterns, tt as recordSessionMetaFromInbound, u as splitMediaFromOutput, ut as mergeDeliveryContext, v as sanitizeImageBlocks, vt as applyInputProvenanceToUserMessage, w as isAntigravityClaude, wt as resolveSessionResetPolicy, x as extractToolCallsFromAssistant, xt as resolveSessionKey, y as sanitizeToolResultImages, yt as hasInterSessionUserProvenance, z as isLikelyContextOverflowError, zt as getMediaDir } from "./deliver-i5knkyHl.js";
14
14
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-BvZmqxYI.js";
15
15
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-CWtaDOiK.js";
16
16
  import { S as GATEWAY_CLIENT_NAMES, _ as listDeliverableMessageChannels, a as chunkText, b as GATEWAY_CLIENT_IDS, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, g as isMarkdownCapableMessageChannel, h 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 normalizeMessageChannel, x as GATEWAY_CLIENT_MODES, y as resolveGatewayMessageChannel } from "./chunk-BjnT3w_x.js";
17
17
  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-BJZIZ4yo.js";
18
18
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-BV_2TbGz.js";
19
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CQnRgvJz.js";
19
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-b556dOQ6.js";
20
20
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, h as parseFrontmatterBlock, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-xmXjOnAV.js";
21
21
  import { n as redactToolDetail } from "./redact-ojHFHOAb.js";
22
22
  import { n as formatErrorMessage } from "./errors-C6sHIFo_.js";
23
- import { C as mediaKindFromMime, _ as imageMimeFromFormat, b as normalizeMimeType$1, g as getFileExtension, h as extensionForMime, i as isSilentReplyText, m as detectMime, n as SILENT_REPLY_TOKEN, o as getDefaultMediaLocalRoots, p as resizeToJpeg, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN, u as getImageMetadata, v as isAudioFileName, x as MAX_IMAGE_BYTES, y as kindFromMime } from "./tokens-CGqnWNmv.js";
23
+ import { _ as kindFromMime, c as getImageMetadata, d as resizeToJpeg, f as detectMime, g as isAudioFileName, h as imageMimeFromFormat, i as getDefaultMediaLocalRoots, m as getFileExtension, n as isSilentReplyText, p as extensionForMime, t as SILENT_REPLY_TOKEN, v as normalizeMimeType$1, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./tokens-CJgPtOxz.js";
24
24
  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-BKsvyjWX.js";
25
25
  import { n as resolveConversationLabel } from "./conversation-label-CPUfoQmh.js";
26
26
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-N698mtPE.js";
27
27
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-fUhPZcB5.js";
28
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-t4GthPGw.js";
28
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-ue49bRVP.js";
29
29
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DWs9CjHs.js";
30
30
  import { n as resolveMarkdownTableMode } from "./markdown-tables-BtWlyyt1.js";
31
31
  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-BO62ZyK2.js";
@@ -49,7 +49,7 @@ import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUI
49
49
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
50
50
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
51
51
  import AjvPkg from "ajv";
52
- import { WebSocket as WebSocket$1 } from "ws";
52
+ import { WebSocket } from "ws";
53
53
  import { Buffer as Buffer$1 } from "node:buffer";
54
54
  import { createJiti } from "jiti";
55
55
  import { Type } from "@sinclair/typebox";
@@ -1028,7 +1028,7 @@ async function getMemorySearchManager(params) {
1028
1028
  const wrapper = new FallbackMemoryManager({
1029
1029
  primary,
1030
1030
  fallbackFactory: async () => {
1031
- const { MemoryIndexManager } = await import("./manager-t4GthPGw.js").then((n) => n.t);
1031
+ const { MemoryIndexManager } = await import("./manager-ue49bRVP.js").then((n) => n.t);
1032
1032
  return await MemoryIndexManager.get(params);
1033
1033
  }
1034
1034
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -1041,7 +1041,7 @@ async function getMemorySearchManager(params) {
1041
1041
  }
1042
1042
  }
1043
1043
  try {
1044
- const { MemoryIndexManager } = await import("./manager-t4GthPGw.js").then((n) => n.t);
1044
+ const { MemoryIndexManager } = await import("./manager-ue49bRVP.js").then((n) => n.t);
1045
1045
  return { manager: await MemoryIndexManager.get(params) };
1046
1046
  } catch (err) {
1047
1047
  return {
@@ -3557,7 +3557,7 @@ var GatewayClient = class {
3557
3557
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
3558
3558
  });
3559
3559
  }
3560
- this.ws = new WebSocket$1(url, wsOptions);
3560
+ this.ws = new WebSocket(url, wsOptions);
3561
3561
  this.ws.on("open", () => {
3562
3562
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
3563
3563
  const tlsError = this.validateTlsFingerprint();
@@ -3776,7 +3776,7 @@ var GatewayClient = class {
3776
3776
  return null;
3777
3777
  }
3778
3778
  async request(method, params, opts) {
3779
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
3779
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
3780
3780
  const id = randomUUID();
3781
3781
  const frame = {
3782
3782
  type: "req",
@@ -4637,97 +4637,6 @@ function clearSessionQueues(keys) {
4637
4637
  };
4638
4638
  }
4639
4639
 
4640
- //#endregion
4641
- //#region src/auto-reply/heartbeat.ts
4642
- const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
4643
- function stripTokenAtEdges(raw) {
4644
- let text = raw.trim();
4645
- if (!text) return {
4646
- text: "",
4647
- didStrip: false
4648
- };
4649
- const token = SYMIPULSE_TOKEN;
4650
- const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
4651
- if (!text.includes(token)) return {
4652
- text,
4653
- didStrip: false
4654
- };
4655
- let didStrip = false;
4656
- let changed = true;
4657
- while (changed) {
4658
- changed = false;
4659
- const next = text.trim();
4660
- if (next.startsWith(token)) {
4661
- text = next.slice(token.length).trimStart();
4662
- didStrip = true;
4663
- changed = true;
4664
- continue;
4665
- }
4666
- if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
4667
- const idx = next.lastIndexOf(token);
4668
- const before = next.slice(0, idx).trimEnd();
4669
- if (!before) text = "";
4670
- else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
4671
- didStrip = true;
4672
- changed = true;
4673
- }
4674
- }
4675
- return {
4676
- text: text.replace(/\s+/g, " ").trim(),
4677
- didStrip
4678
- };
4679
- }
4680
- function stripHeartbeatToken(raw, opts = {}) {
4681
- if (!raw) return {
4682
- shouldSkip: true,
4683
- text: "",
4684
- didStrip: false
4685
- };
4686
- const trimmed = raw.trim();
4687
- if (!trimmed) return {
4688
- shouldSkip: true,
4689
- text: "",
4690
- didStrip: false
4691
- };
4692
- const mode = opts.mode ?? "message";
4693
- const maxAckCharsRaw = opts.maxAckChars;
4694
- const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
4695
- const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
4696
- const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
4697
- const trimmedNormalized = stripMarkup(trimmed);
4698
- if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
4699
- shouldSkip: false,
4700
- text: trimmed,
4701
- didStrip: false
4702
- };
4703
- const strippedOriginal = stripTokenAtEdges(trimmed);
4704
- const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
4705
- const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
4706
- if (!picked.didStrip) return {
4707
- shouldSkip: false,
4708
- text: trimmed,
4709
- didStrip: false
4710
- };
4711
- if (!picked.text) return {
4712
- shouldSkip: true,
4713
- text: "",
4714
- didStrip: true
4715
- };
4716
- const rest = picked.text.trim();
4717
- if (mode === "heartbeat") {
4718
- if (rest.length <= maxAckChars) return {
4719
- shouldSkip: true,
4720
- text: "",
4721
- didStrip: true
4722
- };
4723
- }
4724
- return {
4725
- shouldSkip: false,
4726
- text: rest,
4727
- didStrip: true
4728
- };
4729
- }
4730
-
4731
4640
  //#endregion
4732
4641
  //#region src/auto-reply/reply/normalize-reply.ts
4733
4642
  function normalizeReplyPayload(payload, opts = {}) {
@@ -4748,15 +4657,6 @@ function normalizeReplyPayload(payload, opts = {}) {
4748
4657
  text = "";
4749
4658
  }
4750
4659
  if (text && !trimmed) text = "";
4751
- if ((opts.stripHeartbeat ?? true) && text?.includes(HEARTBEAT_TOKEN)) {
4752
- const stripped = stripHeartbeatToken(text, { mode: "message" });
4753
- if (stripped.didStrip) opts.onHeartbeatStrip?.();
4754
- if (stripped.shouldSkip && !hasMedia && !hasChannelData) {
4755
- opts.onSkip?.("heartbeat");
4756
- return null;
4757
- }
4758
- text = stripped.text;
4759
- }
4760
4660
  if (text) text = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
4761
4661
  if (!text?.trim() && !hasMedia && !hasChannelData) {
4762
4662
  opts.onSkip?.("empty");
@@ -4767,7 +4667,7 @@ function normalizeReplyPayload(payload, opts = {}) {
4767
4667
  text
4768
4668
  };
4769
4669
  const effectivePrefix = opts.responsePrefixContext ? resolveResponsePrefixTemplate(opts.responsePrefix, opts.responsePrefixContext) : opts.responsePrefix;
4770
- if (effectivePrefix && text && text.trim() !== HEARTBEAT_TOKEN && !text.startsWith(effectivePrefix)) text = `${effectivePrefix} ${text}`;
4670
+ if (effectivePrefix && text && !text.startsWith(effectivePrefix)) text = `${effectivePrefix} ${text}`;
4771
4671
  return {
4772
4672
  ...enrichedPayload,
4773
4673
  text
@@ -4824,7 +4724,7 @@ async function routeReply(params) {
4824
4724
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
4825
4725
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
4826
4726
  try {
4827
- const { deliverOutboundPayloads } = await import("./deliver-Dlq2X0K5.js").then((n) => n.n);
4727
+ const { deliverOutboundPayloads } = await import("./deliver-i5knkyHl.js").then((n) => n.n);
4828
4728
  return {
4829
4729
  ok: true,
4830
4730
  messageId: (await deliverOutboundPayloads({
@@ -23504,8 +23404,6 @@ function buildAgentSystemPrompt(params) {
23504
23404
  const reasoningLevel = params.reasoningLevel ?? "off";
23505
23405
  const userTimezone = params.userTimezone?.trim();
23506
23406
  const skillsPrompt = params.skillsPrompt?.trim();
23507
- const heartbeatPrompt = params.heartbeatPrompt?.trim();
23508
- const heartbeatPromptLine = heartbeatPrompt ? `Heartbeat prompt: ${heartbeatPrompt}` : "Heartbeat prompt: (configured)";
23509
23407
  const runtimeInfo = params.runtimeInfo;
23510
23408
  const runtimeChannel = runtimeInfo?.channel?.trim().toLowerCase();
23511
23409
  const runtimeCapabilities = (runtimeInfo?.capabilities ?? []).map((cap) => String(cap).trim()).filter(Boolean);
@@ -23718,7 +23616,6 @@ function buildAgentSystemPrompt(params) {
23718
23616
  for (const file of validContextFiles) lines.push(`## ${file.path}`, "", file.content, "");
23719
23617
  }
23720
23618
  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}`, "");
23721
- 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.", "");
23722
23619
  lines.push("## Runtime", buildRuntimeLine(runtimeInfo, runtimeChannel, runtimeCapabilities, params.defaultThinkLevel), `Reasoning: ${reasoningLevel} (hidden unless on/stream). Toggle /reasoning; /status shows Reasoning when enabled.`);
23723
23620
  return lines.filter(Boolean).join("\n");
23724
23621
  }
@@ -23848,7 +23745,6 @@ async function resolveCommandsSystemPromptBundle(params) {
23848
23745
  userTimeFormat,
23849
23746
  contextFiles: injectedFiles,
23850
23747
  skillsPrompt,
23851
- heartbeatPrompt: void 0,
23852
23748
  runtimeInfo,
23853
23749
  sandboxInfo,
23854
23750
  memoryCitationsMode: params.cfg?.memory?.citations
@@ -38900,7 +38796,7 @@ async function deliverSessionMaintenanceWarning(params) {
38900
38796
  return;
38901
38797
  }
38902
38798
  try {
38903
- const { deliverOutboundPayloads } = await import("./deliver-Dlq2X0K5.js").then((n) => n.n);
38799
+ const { deliverOutboundPayloads } = await import("./deliver-i5knkyHl.js").then((n) => n.n);
38904
38800
  await deliverOutboundPayloads({
38905
38801
  cfg: params.cfg,
38906
38802
  channel,
@@ -40362,17 +40258,11 @@ function resolveModelProfile(modelId, userProfiles) {
40362
40258
  //#endregion
40363
40259
  //#region src/gateway/outbound-filter.ts
40364
40260
  const SILENT_REPLY_BARE_RE = new RegExp(`^\\s*(?:["'\`]|\\*+|_+)?\\s*${SILENT_REPLY_TOKEN}\\s*(?:["'\`]|\\*+|_+)?\\s*$`);
40365
- const SYMIPULSE_BARE_RE = new RegExp(`^\\s*(?:["'\`]|\\*+|_+)?\\s*${SYMIPULSE_TOKEN}\\s*(?:["'\`]|\\*+|_+)?\\s*$`);
40366
40261
  /** Strict-match check for the bare NO_REPLY token. */
40367
40262
  function isBareSilentReply(text) {
40368
40263
  if (!text) return false;
40369
40264
  return SILENT_REPLY_BARE_RE.test(text);
40370
40265
  }
40371
- /** Strict-match check for the bare SYMIPULSE_OK token. */
40372
- function isBareSymipulseAck(text) {
40373
- if (!text) return false;
40374
- return SYMIPULSE_BARE_RE.test(text);
40375
- }
40376
40266
  /**
40377
40267
  * Classify an outbound assistant message at the gateway boundary.
40378
40268
  *
@@ -40386,11 +40276,6 @@ function classifyOutboundMessage(rawText, _opts) {
40386
40276
  output: "",
40387
40277
  reason: "silent-reply-bare"
40388
40278
  };
40389
- if (isBareSymipulseAck(text)) return {
40390
- action: "drop",
40391
- output: "",
40392
- reason: "symipulse-non-heartbeat-bare"
40393
- };
40394
40279
  return {
40395
40280
  action: "deliver",
40396
40281
  output: text,
@@ -47551,10 +47436,8 @@ function buildEmbeddedSystemPrompt(params) {
47551
47436
  ownerDisplay: params.ownerDisplay,
47552
47437
  ownerDisplaySecret: params.ownerDisplaySecret,
47553
47438
  reasoningTagHint: params.reasoningTagHint,
47554
- heartbeatPrompt: params.heartbeatPrompt,
47555
47439
  skillsPrompt: params.skillsPrompt,
47556
47440
  docsPath: params.docsPath,
47557
- ttsHint: params.ttsHint,
47558
47441
  workspaceNotes: params.workspaceNotes,
47559
47442
  reactionGuidance: params.reactionGuidance,
47560
47443
  promptMode: params.promptMode,
@@ -48324,7 +48207,6 @@ async function runEmbeddedAttempt(params) {
48324
48207
  ownerDisplay: params.config?.commands?.ownerDisplay,
48325
48208
  ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ?? params.config?.gateway?.auth?.token ?? params.config?.gateway?.remote?.token,
48326
48209
  reasoningTagHint,
48327
- heartbeatPrompt: void 0,
48328
48210
  skillsPrompt,
48329
48211
  docsPath: docsPath ?? void 0,
48330
48212
  workspaceNotes,
@@ -50719,54 +50601,6 @@ function withFastAbort(opts) {
50719
50601
  };
50720
50602
  }
50721
50603
 
50722
- //#endregion
50723
- //#region src/auto-reply/reply/middleware-heartbeat-strip.ts
50724
- /**
50725
- * Returns a PayloadMiddleware that strips heartbeat tokens, drops silent
50726
- * replies, and sanitizes user-facing text. Reads `ctx.isHeartbeat` to
50727
- * decide whether to strip; reads `payload.isError` to give the sanitizer
50728
- * the right context flag.
50729
- *
50730
- * Equivalence claim (proven by tests): for every input shape the chain's
50731
- * `normalizeStreamingText({text})` would have produced `{ skip, text }`,
50732
- * this middleware produces the corresponding `PayloadDelivery`:
50733
- *
50734
- * skip=true → delivered=false (drop)
50735
- * skip=false, text=undefined → delivered=true with payload.text undefined
50736
- * (media-only carry-through case)
50737
- * skip=false, text=string → delivered=true with payload.text=sanitized
50738
- */
50739
- function withHeartbeatStrip(opts) {
50740
- let didLogStrip = false;
50741
- return (next) => async (payload, ctx) => {
50742
- let text = payload.text;
50743
- const hasMedia = Boolean(payload.mediaUrl) || (payload.mediaUrls?.length ?? 0) > 0;
50744
- if (typeof text === "string" && text.includes("SYMIPULSE_OK")) {
50745
- const stripped = stripHeartbeatToken(text, { mode: "message" });
50746
- if (stripped.didStrip && !didLogStrip) {
50747
- didLogStrip = true;
50748
- opts?.onStrip?.();
50749
- }
50750
- if (stripped.shouldSkip && !hasMedia) return PayloadDelivery.drop(payload, "drop:heartbeat-token-bare");
50751
- text = stripped.text;
50752
- }
50753
- if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return PayloadDelivery.drop(payload, "drop:silent-reply");
50754
- if (!text) {
50755
- if (hasMedia) return next({
50756
- ...payload,
50757
- text: void 0
50758
- }, ctx);
50759
- return PayloadDelivery.drop(payload, "drop:empty");
50760
- }
50761
- const sanitized = sanitizeUserFacingText(text, { errorContext: Boolean(payload.isError) });
50762
- if (!sanitized.trim()) return PayloadDelivery.drop(payload, "drop:empty-after-sanitize");
50763
- return next({
50764
- ...payload,
50765
- text: sanitized
50766
- }, ctx);
50767
- };
50768
- }
50769
-
50770
50604
  //#endregion
50771
50605
  //#region src/infra/map-size.ts
50772
50606
  function pruneMapToMaxSize(map, maxSize) {
@@ -51042,25 +50876,22 @@ function withToolResultSerialization(opts) {
51042
50876
  * session transcript after the inner runner completes.
51043
50877
  *
51044
50878
  * Skip conditions:
51045
- * - outbound.action === "drop" (NO_REPLY / heartbeat ack — no message)
50879
+ * - outbound.action === "drop" (NO_REPLY — no message)
51046
50880
  * - empty / whitespace-only text
51047
- * - outbound.action === "deliver-stripped" AND includeStripped=false
51048
50881
  *
51049
50882
  * The middleware does NOT mutate the turn result — the append is a
51050
50883
  * post-turn side effect. The result is returned unchanged regardless of
51051
50884
  * append success/failure.
51052
50885
  */
51053
50886
  function withTranscriptUpdate(opts) {
51054
- const includeStripped = opts.includeStripped !== false;
51055
50887
  return (next) => async (params) => {
51056
50888
  const result = await next(params);
51057
- if (shouldAppend(result, includeStripped)) await runAppend(opts, params, result);
50889
+ if (shouldAppend(result)) await runAppend(opts, params, result);
51058
50890
  return result;
51059
50891
  };
51060
50892
  }
51061
- function shouldAppend(result, includeStripped) {
50893
+ function shouldAppend(result) {
51062
50894
  if (result.outbound.action === "drop") return false;
51063
- if (result.outbound.action === "deliver-stripped" && !includeStripped) return false;
51064
50895
  return (typeof result.text === "string" ? result.text.trim() : "").length > 0;
51065
50896
  }
51066
50897
  async function runAppend(opts, params, result) {
@@ -51144,7 +50975,6 @@ function buildChannelProfile(opts) {
51144
50975
  ],
51145
50976
  payloadMiddlewares: [
51146
50977
  withPayloadDropOnEmpty(),
51147
- withHeartbeatStrip(),
51148
50978
  ...opts.typingSignaler ? [withTypingSignals({ signaler: opts.typingSignaler })] : [],
51149
50979
  withToolResultSerialization(),
51150
50980
  withChannelRouting({
@@ -51289,7 +51119,6 @@ function normalizeReplyPayloadInternal(payload, opts) {
51289
51119
  return normalizeReplyPayload(payload, {
51290
51120
  responsePrefix: opts.responsePrefix,
51291
51121
  responsePrefixContext: prefixContext,
51292
- onHeartbeatStrip: opts.onHeartbeatStrip,
51293
51122
  onSkip: opts.onSkip
51294
51123
  });
51295
51124
  }
@@ -51312,7 +51141,6 @@ function createReplyDispatcher(options) {
51312
51141
  responsePrefix: options.responsePrefix,
51313
51142
  responsePrefixContext: options.responsePrefixContext,
51314
51143
  responsePrefixContextProvider: options.responsePrefixContextProvider,
51315
- onHeartbeatStrip: options.onHeartbeatStrip,
51316
51144
  onSkip: (reason) => options.onSkip?.(payload, {
51317
51145
  kind,
51318
51146
  reason
@@ -56242,7 +56070,7 @@ async function registerSlackMonitorSlashCommands(params) {
56242
56070
  });
56243
56071
  const deliverSlashPayloads = async (replies) => {
56244
56072
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
56245
- import("./replies-pnMj7AtP.js").then((n) => n.r),
56073
+ import("./replies-BeK3uuQ8.js").then((n) => n.r),
56246
56074
  import("./chunk-BjnT3w_x.js").then((n) => n.s),
56247
56075
  import("./markdown-tables-BtWlyyt1.js").then((n) => n.t)
56248
56076
  ]);
@@ -59296,7 +59124,6 @@ async function compactEmbeddedPiSessionDirect(params) {
59296
59124
  ownerDisplay: params.config?.commands?.ownerDisplay,
59297
59125
  ownerDisplaySecret: params.config?.commands?.ownerDisplaySecret ?? params.config?.gateway?.auth?.token ?? params.config?.gateway?.remote?.token,
59298
59126
  reasoningTagHint,
59299
- heartbeatPrompt: void 0,
59300
59127
  skillsPrompt,
59301
59128
  docsPath: docsPath ?? void 0,
59302
59129
  promptMode,
@@ -1,11 +1,11 @@
1
1
  import { x as truncateUtf16Safe } from "./utils-BU8jVQFM.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-CtH6J8AV.js";
3
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-DGG12SGo.js";
4
- import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-c7_of0HT.js";
3
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-CQU7Gcb9.js";
4
+ import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-C-gIIp7Q.js";
5
5
  import { s as normalizeThinkLevel } from "./thinking-177f26eg.js";
6
6
  import { createHash } from "node:crypto";
7
7
  import path from "node:path";
8
- import fsPromises from "node:fs/promises";
8
+ import fs from "node:fs/promises";
9
9
 
10
10
  //#region src/agents/pi-embedded-helpers/bootstrap.ts
11
11
  function isBase64Signature(value) {
@@ -102,10 +102,10 @@ function clampToBudget(content, budget) {
102
102
  async function ensureSessionHeader(params) {
103
103
  const file = params.sessionFile;
104
104
  try {
105
- await fsPromises.stat(file);
105
+ await fs.stat(file);
106
106
  return;
107
107
  } catch {}
108
- await fsPromises.mkdir(path.dirname(file), { recursive: true });
108
+ await fs.mkdir(path.dirname(file), { recursive: true });
109
109
  const entry = {
110
110
  type: "session",
111
111
  version: 2,
@@ -113,7 +113,7 @@ async function ensureSessionHeader(params) {
113
113
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
114
114
  cwd: params.cwd
115
115
  };
116
- await fsPromises.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
116
+ await fs.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
117
117
  }
118
118
  function buildBootstrapContextFiles(files, opts) {
119
119
  const maxChars = opts?.maxChars ?? DEFAULT_BOOTSTRAP_MAX_CHARS;
@@ -1,7 +1,7 @@
1
1
  import { S as resolveThreadParentSessionKey, c as resolveAgentIdFromSessionKey } from "./session-key-B_ZVH1kE.js";
2
- import { r as resolveAgentConfig } from "./agent-scope-BjEBQhs0.js";
3
- import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CW8aDVM0.js";
4
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-DGG12SGo.js";
2
+ import { r as resolveAgentConfig } from "./agent-scope-B_oqIiaD.js";
3
+ import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CphS_6eg.js";
4
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-CQU7Gcb9.js";
5
5
  import { a as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-CnGWTXL4.js";
6
6
  import { l as normalizeMessageChannel } from "./message-channel-C_V8IAYx.js";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { o as getChatChannelMeta, s as listChatChannels, u as normalizeChatChannelId } from "./registry-DKJLAPDB.js";
2
2
  import { u as isRecord } from "./utils-BU8jVQFM.js";
3
- import { L as normalizeProviderId } from "./auth-profiles-BVtpxYtY.js";
3
+ import { L as normalizeProviderId } from "./auth-profiles-CPlXilKu.js";
4
4
  import { n as getChannelPluginCatalogEntry, r as listChannelPluginCatalogEntries } from "./catalog-BEREnWaa.js";
5
5
  import { t as ensurePluginAllowlisted } from "./plugins-allowlist-D2tS9tcu.js";
6
6
 
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as loadSymiPlugins } from "./unified-runner-Cdj1nLUh.js";
2
+ import { s as loadSymiPlugins } from "./unified-runner-DzycRpag.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-DKJLAPDB.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-CtH6J8AV.js";
5
- import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-BjEBQhs0.js";
6
- import { i as loadConfig } from "./config-CW8aDVM0.js";
5
+ import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-B_oqIiaD.js";
6
+ import { i as loadConfig } from "./config-CphS_6eg.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-8LjCKvga.js";
4
4
  import { i as loadConfig } from "./config-B91360jE.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-CWolsN8K.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-CgZDo35C.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -16,10 +16,8 @@ export declare function buildEmbeddedSystemPrompt(params: {
16
16
  ownerDisplay?: "raw" | "hash";
17
17
  ownerDisplaySecret?: string;
18
18
  reasoningTagHint: boolean;
19
- heartbeatPrompt?: string;
20
19
  skillsPrompt?: string;
21
20
  docsPath?: string;
22
- ttsHint?: string;
23
21
  reactionGuidance?: {
24
22
  level: "minimal" | "extensive";
25
23
  channel: string;
@@ -28,7 +28,6 @@ export declare function buildAgentSystemPrompt(params: {
28
28
  userTimeFormat?: ResolvedTimeFormat;
29
29
  contextFiles?: EmbeddedContextFile[];
30
30
  skillsPrompt?: string;
31
- heartbeatPrompt?: string;
32
31
  docsPath?: string;
33
32
  workspaceNotes?: string[];
34
33
  ttsHint?: string;
@@ -74,7 +73,7 @@ export declare function buildAgentSystemPrompt(params: {
74
73
  * - tool descriptions (Edit Tool Best Practices → edit tool desc + safe-edit skill)
75
74
  * - JIT skills loaded on-demand (Verify Your Work → verify-output skill)
76
75
  * - auto-loaded skills (Tool Call Style → tool-narration; Reactions → reactions-{level}; Messaging → channel-routing)
77
- * - runtime guards / outbound filters (Symi Self-Update → permission gate; NO_REPLY/SYMIPULSE_OK → outbound filter)
76
+ * - runtime guards / outbound filters (Symi Self-Update → permission gate; NO_REPLY → outbound filter)
78
77
  * Default false; opt in via prompt.compactMode in symi.json.
79
78
  */
80
79
  compactMode?: boolean;
@@ -37,21 +37,14 @@ export interface WithTranscriptUpdateOptions {
37
37
  error: string;
38
38
  runId?: string;
39
39
  }) => void;
40
- /**
41
- * If true, also append when outbound.action is "deliver-stripped"
42
- * (heartbeat alert path). Defaults to true — the alert text is the
43
- * user-visible content and should be transcript-recorded.
44
- */
45
- includeStripped?: boolean;
46
40
  }
47
41
  /**
48
42
  * Returns a TurnMiddleware that appends the AgentTurnResult.text to the
49
43
  * session transcript after the inner runner completes.
50
44
  *
51
45
  * Skip conditions:
52
- * - outbound.action === "drop" (NO_REPLY / heartbeat ack — no message)
46
+ * - outbound.action === "drop" (NO_REPLY — no message)
53
47
  * - empty / whitespace-only text
54
- * - outbound.action === "deliver-stripped" AND includeStripped=false
55
48
  *
56
49
  * The middleware does NOT mutate the turn result — the append is a
57
50
  * post-turn side effect. The result is returned unchanged regardless of
@@ -1,12 +1,10 @@
1
1
  import type { ReplyPayload } from "../types.js";
2
2
  import { type ResponsePrefixContext } from "./response-prefix-template.js";
3
- export type NormalizeReplySkipReason = "empty" | "silent" | "heartbeat";
3
+ export type NormalizeReplySkipReason = "empty" | "silent";
4
4
  export type NormalizeReplyOptions = {
5
5
  responsePrefix?: string;
6
6
  /** Context for template variable interpolation in responsePrefix */
7
7
  responsePrefixContext?: ResponsePrefixContext;
8
- onHeartbeatStrip?: () => void;
9
- stripHeartbeat?: boolean;
10
8
  silentToken?: string;
11
9
  onSkip?: (reason: NormalizeReplySkipReason) => void;
12
10
  };
@@ -21,7 +21,6 @@ export type ReplyDispatcherOptions = {
21
21
  /** Dynamic context provider for response prefix template interpolation.
22
22
  * Called at normalization time, after model selection is complete. */
23
23
  responsePrefixContextProvider?: () => ResponsePrefixContext;
24
- onHeartbeatStrip?: () => void;
25
24
  onIdle?: () => void;
26
25
  onError?: ReplyDispatchErrorHandler;
27
26
  onSkip?: ReplyDispatchSkipHandler;
@@ -1,6 +1,3 @@
1
- export declare const SYMIPULSE_TOKEN = "SYMIPULSE_OK";
2
- /** @deprecated Use SYMIPULSE_TOKEN instead */
3
- export declare const HEARTBEAT_TOKEN = "SYMIPULSE_OK";
4
1
  export declare const SILENT_REPLY_TOKEN = "NO_REPLY";
5
2
  export declare function isSilentReplyText(text: string | undefined, token?: string): boolean;
6
3
  export declare function isSilentReplyPrefixText(text: string | undefined, token?: string): boolean;
@@ -1,5 +1,5 @@
1
- export type OutboundFilterAction = "deliver" | "drop" | "deliver-stripped";
2
- export type OutboundFilterReason = "silent-reply-bare" | "symipulse-heartbeat-ack" | "symipulse-heartbeat-stripped" | "symipulse-non-heartbeat-bare" | "deliver";
1
+ export type OutboundFilterAction = "deliver" | "drop";
2
+ export type OutboundFilterReason = "silent-reply-bare" | "deliver";
3
3
  export interface OutboundFilterResult {
4
4
  action: OutboundFilterAction;
5
5
  /** Final text to deliver. Empty when action is "drop". */
@@ -9,8 +9,6 @@ export interface OutboundFilterResult {
9
9
  }
10
10
  /** Strict-match check for the bare NO_REPLY token. */
11
11
  export declare function isBareSilentReply(text: string | undefined | null): boolean;
12
- /** Strict-match check for the bare SYMIPULSE_OK token. */
13
- export declare function isBareSymipulseAck(text: string | undefined | null): boolean;
14
12
  export interface ClassifyOutboundOptions {
15
13
  /** @deprecated heartbeat removed in 3.3.0; ignored. */
16
14
  isHeartbeat?: boolean;