@symerian/symi 2.0.9 → 2.0.10

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 (247) hide show
  1. package/dist/{agents-DhimA7PX.js → agents-CNsMe4Dr.js} +4 -4
  2. package/dist/{agents.config-fv5KaNkC.js → agents.config-CdDf19dm.js} +1 -1
  3. package/dist/{agents.config-Dx90DAnM.js → agents.config-yx78oSLx.js} +1 -1
  4. package/dist/{audio-preflight-B6L8N6Ly.js → audio-preflight-B8ffbICW.js} +11 -12
  5. package/dist/{audio-preflight-DQDfh7hZ.js → audio-preflight-CO2seHjy.js} +11 -12
  6. package/dist/{audio-preflight-Bk54IW__.js → audio-preflight-DRQD_nt1.js} +16 -17
  7. package/dist/{audio-preflight-C2U7KMim.js → audio-preflight-DSeaWZZW.js} +5 -6
  8. package/dist/{audit-C1KuICJa.js → audit-CiugrQda.js} +2 -2
  9. package/dist/{audit--HKrSvGg.js → audit-DKUpFt8z.js} +2 -2
  10. package/dist/{auth-choice-BqU5qMZy.js → auth-choice-CXMFi9LR.js} +1 -1
  11. package/dist/{auth-choice-B4zjI12P.js → auth-choice-mw9ndZQO.js} +4 -4
  12. package/dist/{banner-XTz_k5N3.js → banner-B-joBGLz.js} +1 -1
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +34 -34
  15. package/dist/bundled/session-memory/handler.js +34 -34
  16. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  17. package/dist/{channel-options-mU0wiiP2.js → channel-options-D74Jofp4.js} +1 -1
  18. package/dist/{channel-options-Bbd-uPQW.js → channel-options-XPRRVrmU.js} +1 -1
  19. package/dist/{channel-web-CT8JWl10.js → channel-web-vRvvtf0S.js} +8 -8
  20. package/dist/{channels-cli-16POci9_.js → channels-cli-D3lj5dXo.js} +32 -32
  21. package/dist/{channels-cli-DMCnP5KN.js → channels-cli-DgxPfJF7.js} +12 -12
  22. package/dist/{chrome-2-wXJfuH.js → chrome-LmEyZdbC.js} +1 -1
  23. package/dist/{chunk-BPSLqkZN.js → chunk-BW5f05BR.js} +1 -1
  24. package/dist/{chunk-rw3-yl6B.js → chunk-DTMTDXwE.js} +1 -1
  25. package/dist/{cli-Bzq5mSbu.js → cli-Bg_5WQFe.js} +9 -9
  26. package/dist/{cli-nuP_OZI0.js → cli-DQQAfUbo.js} +29 -29
  27. package/dist/{command-registry-DbtbOY_4.js → command-registry-Cde2LqTh.js} +9 -9
  28. package/dist/{commands-registry-CZ5P8CpC.js → commands-registry-C3C4Rv3O.js} +2 -2
  29. package/dist/{commands-registry-UwWpNkQg.js → commands-registry-Copoizgv.js} +1 -1
  30. package/dist/{completion-cli-mwQhHtOm.js → completion-cli-Cx9htCOm.js} +1 -1
  31. package/dist/{completion-cli-BwRqjgrI.js → completion-cli-KJUTWJP3.js} +2 -2
  32. package/dist/{config-D3XlX-h-.js → config-DM0K7qC1.js} +1 -1
  33. package/dist/{config-cli-Bu_y5erZ.js → config-cli-C5-P9Nzz.js} +1 -1
  34. package/dist/{config-cli-CoceKyQv.js → config-cli-ozfA6MGF.js} +1 -1
  35. package/dist/{config-guard-DujvCAc6.js → config-guard-BpQn1MKk.js} +1 -1
  36. package/dist/{config-guard-CFGZ0BjX.js → config-guard-Cnu2qssk.js} +2 -3
  37. package/dist/{configure-C27dLO_C.js → configure-DiuQ_aTS.js} +6 -6
  38. package/dist/{configure-DekriuOk.js → configure-ktsZw1bT.js} +3 -3
  39. package/dist/{deliver-B572qYqb.js → deliver-2Y_F_0yh.js} +5 -5
  40. package/dist/{deliver-DGaRNkFI.js → deliver-B3UoBZdC.js} +5 -5
  41. package/dist/{deliver-jK_qcWx-.js → deliver-CkjSfucB.js} +5 -5
  42. package/dist/{deliver-l9I03N1d.js → deliver-DONp5mgd.js} +2 -2
  43. package/dist/{diagnostic-BIVLRT_X.js → diagnostic-CI0kRQkt.js} +1 -1
  44. package/dist/{diagnostic-C-7DW8ZL.js → diagnostic-D0xmLpej.js} +1 -1
  45. package/dist/{doctor-completion-D2AFiL0G.js → doctor-completion-CrN6Ly8x.js} +1 -1
  46. package/dist/{doctor-completion-RScd9m4s.js → doctor-completion-Vwi_je1c.js} +1 -1
  47. package/dist/{doctor-config-flow-ZeM3rJqG.js → doctor-config-flow-B150h841.js} +1 -1
  48. package/dist/{doctor-config-flow-Cpwv-_yJ.js → doctor-config-flow-C_56SUPO.js} +1 -1
  49. package/dist/entry.js +1 -1
  50. package/dist/extensionAPI.js +28 -28
  51. package/dist/{fetch-BrtlUMgb.js → fetch-DTNGXEzX.js} +1 -1
  52. package/dist/{fetch-guard-DPA1vbaF.js → fetch-guard-DOPkVbh3.js} +1 -1
  53. package/dist/{gateway-cli-N4jJ2_RN.js → gateway-cli-CwO3878F.js} +20 -20
  54. package/dist/{gateway-cli-D98Kj3_n.js → gateway-cli-DyqK4XZ1.js} +43 -43
  55. package/dist/{gemini-auth-Ca6F0cNq.js → gemini-auth-7AWT6JXV.js} +1 -1
  56. package/dist/{glass-ui-ws-Dd-MN6YA.js → glass-ui-ws-BmqwQaCf.js} +16 -16
  57. package/dist/{glass-ui-ws-B2fxjJTt.js → glass-ui-ws-zVNodseh.js} +39 -39
  58. package/dist/{health-C1_ivVPh.js → health-Q1RP1M2f.js} +5 -5
  59. package/dist/{health-Da2Nvp6A.js → health-UjXEBnzA.js} +4 -4
  60. package/dist/{heartbeat-visibility-DS9JNq6T.js → heartbeat-visibility-B8TDjqpW.js} +2 -2
  61. package/dist/{heartbeat-visibility-D4Xy8Sv0.js → heartbeat-visibility-U4BL57eQ.js} +2 -2
  62. package/dist/{hooks-cli-Bv6VXisB.js → hooks-cli-D4qJl6do.js} +10 -10
  63. package/dist/{hooks-cli-GzTpm8sN.js → hooks-cli-DOT9uGZw.js} +30 -30
  64. package/dist/{image-BW-m96jq.js → image-B4LY9KFw.js} +1 -1
  65. package/dist/{image-qnqUW4nb.js → image-CSeAnozE.js} +2 -2
  66. package/dist/{image-B_WF7Uie.js → image-DrZEJQwQ.js} +2 -2
  67. package/dist/{image-BJiE96Ml.js → image-RFofsrof.js} +4 -4
  68. package/dist/index.js +36 -36
  69. package/dist/{ir-DEVHhjq7.js → ir-DZam9q5M.js} +1 -1
  70. package/dist/{ir-B4l25ISI.js → ir-DccrnjsE.js} +3 -3
  71. package/dist/{ir-DPLo2LIn.js → ir-F0moAwIl.js} +3 -3
  72. package/dist/llm-slug-generator.js +34 -34
  73. package/dist/{local-roots-BDORNz_Q.js → local-roots-CC8jiKDk.js} +1 -1
  74. package/dist/{local-roots-Dg0r0pJL.js → local-roots-DMwIh5cS.js} +1 -1
  75. package/dist/{local-roots-C31eq7PP.js → local-roots-aAFLQGkY.js} +1 -1
  76. package/dist/{login-DNi-TGJT.js → login-BG_7eJLu.js} +2 -2
  77. package/dist/{login-qr-DWlyS1Bc.js → login-qr-9OQSnm5L.js} +4 -4
  78. package/dist/{manager-BX65xO2I.js → manager-B5EXdBQV.js} +2 -2
  79. package/dist/{manager-DjVWQ1JF.js → manager-C_DoJrcP.js} +3 -3
  80. package/dist/{memory-cli-BsBiPX0L.js → memory-cli-D4J9SO7Z.js} +4 -4
  81. package/dist/{model-auth-Daguh6Kb.js → model-auth-CeL58m55.js} +1 -1
  82. package/dist/{model-picker-CiSWZdy1.js → model-picker-DXwUsLAy.js} +1 -1
  83. package/dist/{models-B7W1r9j8.js → models-DKsiIvSx.js} +2 -2
  84. package/dist/{models-cli-BBFKprvF.js → models-cli-BS6UJ98e.js} +11 -11
  85. package/dist/{models-cli-B3XOSnTQ.js → models-cli-ULbdeSgc.js} +30 -30
  86. package/dist/{onboard-D54rYSt2.js → onboard-B387frTY.js} +5 -5
  87. package/dist/{onboard-DEBJWlyh.js → onboard-Bt-BwfkR.js} +2 -2
  88. package/dist/{onboard-channels-CwXnFQgu.js → onboard-channels-COcxT5Q0.js} +1 -1
  89. package/dist/{onboard-channels-D4U3bHOF.js → onboard-channels-ybPEmcP8.js} +1 -1
  90. package/dist/{onboard-custom-B3RZopk5.js → onboard-custom-DoIhWPnb.js} +2 -2
  91. package/dist/{onboard-skills-DfKmsYuM.js → onboard-skills-BD8JNVwL.js} +1 -1
  92. package/dist/{onboarding-Do5IBVbx.js → onboarding-BibGEGIS.js} +4 -4
  93. package/dist/{onboarding-Ch56YN4Q.js → onboarding-CdN_NU2d.js} +7 -7
  94. package/dist/{onboarding.finalize-C8I4yJ1J.js → onboarding.finalize-CY1NjrGb.js} +15 -15
  95. package/dist/{onboarding.finalize-ijmEZx2f.js → onboarding.finalize-CvahVrDM.js} +34 -34
  96. package/dist/{onboarding.gateway-config-BxgvBGxU.js → onboarding.gateway-config-Cj_s_IG8.js} +1 -2
  97. package/dist/{onboarding.gateway-config-EtWmSCuC.js → onboarding.gateway-config-DipSuaKH.js} +1 -2
  98. package/dist/{openai-model-default-BkscYpXX.js → openai-model-default-DF334-MD.js} +1 -1
  99. package/dist/{outbound-ByC0HdWz.js → outbound-BNMysnJ1.js} +2 -2
  100. package/dist/{outbound-DpGc1neG.js → outbound-Cedd_yui.js} +3 -3
  101. package/dist/{outbound-56UQxS1I.js → outbound-DfOF58G2.js} +2 -2
  102. package/dist/{outbound-attachment-C-GD7uJh.js → outbound-attachment-D_QuKi8U.js} +1 -1
  103. package/dist/{outbound-attachment-CJZwroQb.js → outbound-attachment-DjNDa3zn.js} +2 -2
  104. package/dist/{outbound-attachment-Cir36qaG.js → outbound-attachment-entfcjDW.js} +2 -2
  105. package/dist/{pi-auth-json-CHgA276j.js → pi-auth-json-BNhcohVK.js} +2 -2
  106. package/dist/{pi-embedded-FBOXa0Py.js → pi-embedded-9wEA_0mu.js} +144 -49
  107. package/dist/{pi-embedded-C5XncARS.js → pi-embedded-BjzaB3CT.js} +157 -62
  108. package/dist/{pi-embedded-helpers-BqnI9Mzn.js → pi-embedded-helpers-BmYZe8o8.js} +7 -103
  109. package/dist/{pi-embedded-helpers-dLW7QMQa.js → pi-embedded-helpers-CgxKWHj9.js} +1 -1
  110. package/dist/{pi-embedded-helpers-B8JQjQlx.js → pi-embedded-helpers-kB5lBgXk.js} +13 -109
  111. package/dist/{pi-embedded-helpers-V5QifZSd.js → pi-embedded-helpers-ueCT6VlS.js} +2 -2
  112. package/dist/{pi-tools.policy-C747j2xs.js → pi-tools.policy-DPmdlOwE.js} +1 -1
  113. package/dist/{pi-tools.policy-B9nQ2esl.js → pi-tools.policy-T6Z5F-_n.js} +1 -1
  114. package/dist/{plugin-registry-BQ_14aNH.js → plugin-registry-BAbkdLQ7.js} +1 -1
  115. package/dist/{plugin-registry-Dso3ttvf.js → plugin-registry-CEoSVvL1.js} +1 -1
  116. package/dist/plugin-sdk/{audio-preflight-CAWn5TBW.js → audio-preflight-CpYjfwrA.js} +3 -4
  117. package/dist/plugin-sdk/{channel-web-CdAlKpn7.js → channel-web-xXTpy0N_.js} +3 -3
  118. package/dist/plugin-sdk/{deliver-PnVwVXLm.js → deliver-BwnrMlHO.js} +1 -1
  119. package/dist/plugin-sdk/gateway/chat-sanitize.d.ts +0 -11
  120. package/dist/plugin-sdk/{image-BGfQ0dkr.js → image-k_W1USVr.js} +1 -1
  121. package/dist/plugin-sdk/index.js +6 -6
  122. package/dist/plugin-sdk/{pi-embedded-helpers-BMudP5Tn.js → pi-embedded-helpers-Cs2-_EpL.js} +2 -98
  123. package/dist/plugin-sdk/{reply-QYyMp-Tw.js → reply-EEvLfWgt.js} +107 -12
  124. package/dist/plugin-sdk/{runner-qajBqJHY.js → runner-Br1179I4.js} +1 -1
  125. package/dist/plugin-sdk/{web-CVs35ve3.js → web-COWtpMAH.js} +6 -6
  126. package/dist/{plugins-cli-CgbeQGSF.js → plugins-cli-BpuQ7Y9l.js} +10 -10
  127. package/dist/{plugins-cli-BVyrgA8I.js → plugins-cli-C_S07pgO.js} +30 -30
  128. package/dist/{program-kfkuCFKS.js → program-cO9YX6wL.js} +16 -16
  129. package/dist/{program-context-hfUEmZz7.js → program-context-QBBvnWFX.js} +21 -21
  130. package/dist/{prompt-select-styled-J9mSr0OH.js → prompt-select-styled-CepuQSKg.js} +10 -10
  131. package/dist/{prompt-select-styled-116ZbBko.js → prompt-select-styled-D3dYbx2P.js} +7 -7
  132. package/dist/{provider-auth-helpers-C6JINKCe.js → provider-auth-helpers-BMACaaEd.js} +1 -1
  133. package/dist/{provider-auth-helpers-B6VXmCAd.js → provider-auth-helpers-DXqvuBCi.js} +1 -1
  134. package/dist/{push-apns-jxwr84iE.js → push-apns-8YIzbTM7.js} +1 -1
  135. package/dist/{push-apns-DPN9gxCf.js → push-apns-DhZgao_r.js} +1 -1
  136. package/dist/{pw-ai-D8UzqLyI.js → pw-ai-CAkn033M.js} +4 -4
  137. package/dist/{qmd-manager-DeZm1nJL.js → qmd-manager-D85GJrir.js} +1 -1
  138. package/dist/{register.agent-zXM0Ehps.js → register.agent-CSUoUVKd.js} +14 -14
  139. package/dist/{register.agent-DuJFFLJT.js → register.agent-CiTS9lyx.js} +35 -35
  140. package/dist/{register.configure-CNCoYc7M.js → register.configure-BbE9MAer.js} +39 -39
  141. package/dist/{register.configure-DS0YVUwx.js → register.configure-CuCVLOW0.js} +14 -14
  142. package/dist/{register.maintenance-BXnLhacM.js → register.maintenance-CJG75LTu.js} +17 -17
  143. package/dist/{register.maintenance-D3oTcEuA.js → register.maintenance-D8bthvou.js} +37 -37
  144. package/dist/{register.message-BjdjpA_Z.js → register.message-CyqE4E2O.js} +10 -10
  145. package/dist/{register.message-DyIz3Dyp.js → register.message-nUpHGrEE.js} +30 -30
  146. package/dist/{register.onboard-CStFDwlr.js → register.onboard-BDlne5KX.js} +12 -12
  147. package/dist/{register.onboard-DN3MQsVM.js → register.onboard-Dlw-TCPH.js} +35 -35
  148. package/dist/{register.setup-BMsroiDO.js → register.setup-B8kiMuah.js} +35 -35
  149. package/dist/{register.setup-6f2WvCYV.js → register.setup-ByMyofSq.js} +12 -12
  150. package/dist/{register.status-health-sessions-CQB3d6mV.js → register.status-health-sessions-0odRpA-p.js} +13 -13
  151. package/dist/{register.status-health-sessions-Bioq718n.js → register.status-health-sessions-Diirshgb.js} +34 -34
  152. package/dist/{register.subclis-DjRoIlDB.js → register.subclis-CqEj9vfW.js} +12 -12
  153. package/dist/{replies-B4-OBhpP.js → replies-D9V19U2-.js} +2 -2
  154. package/dist/{replies-ConxSQu4.js → replies-DqdOBkTB.js} +2 -2
  155. package/dist/{replies-DPvPoRgq.js → replies-QloQerhz.js} +2 -2
  156. package/dist/{reply-b43dsTx2.js → reply-B9o45s3E.js} +166 -45
  157. package/dist/{run-main-DYbAd0T1.js → run-main-C__lZ7VF.js} +25 -25
  158. package/dist/{runner-CQnf083C.js → runner-BXN4KYDK.js} +1 -1
  159. package/dist/{runner-DhtP_e8E.js → runner-C0tJTZmp.js} +6 -6
  160. package/dist/{runner-t-wbbvf-.js → runner-CJJY2r19.js} +4 -4
  161. package/dist/{runner-Ct0-sE8b.js → runner-DOvsNiYz.js} +8 -8
  162. package/dist/{sandbox-DofcD9ax.js → sandbox-CbuJolk2.js} +1 -1
  163. package/dist/{sandbox-cli-Dx6F5FaT.js → sandbox-cli-C90jqh9l.js} +2 -3
  164. package/dist/{sandbox-cli-l_OcbOYC.js → sandbox-cli-Duc05KL9.js} +2 -3
  165. package/dist/{sandbox-yaTFb84E.js → sandbox-rMmahr2s.js} +1 -1
  166. package/dist/{security-cli-CSpwKdww.js → security-cli-Bt0VkUtO.js} +4 -5
  167. package/dist/{security-cli-BJ3IXZfm.js → security-cli-YGXUUBvD.js} +4 -5
  168. package/dist/{send-DXoJ5lC_.js → send-3YM-aarb.js} +1 -1
  169. package/dist/{send-OEyo5LFE.js → send-B18gkuvz.js} +2 -2
  170. package/dist/{send-LZO3UNRb.js → send-BVZGeP2r.js} +3 -3
  171. package/dist/{send-D3qb_2Q-.js → send-BeASPkFg.js} +4 -4
  172. package/dist/{send-Dz76LuDQ.js → send-BsocounR.js} +2 -2
  173. package/dist/{send-DzmRVAHq.js → send-CHOArYFe.js} +3 -3
  174. package/dist/{send-B9JhmJSo.js → send-CzE5UKr-.js} +5 -5
  175. package/dist/{send-TQWniAsM.js → send-D0dzPf6g.js} +2 -2
  176. package/dist/{send-bTMPppyJ.js → send-D16XtYvC.js} +4 -4
  177. package/dist/{send-yBb6c4og.js → send-D3M6pMr5.js} +5 -5
  178. package/dist/{send-CiVBt5gu.js → send-DEWzWqfZ.js} +4 -4
  179. package/dist/{send-COvqFO3S.js → send-D_yJMeJa.js} +4 -4
  180. package/dist/{send-DDt3Bdxx.js → send-De_WCeGZ.js} +4 -4
  181. package/dist/{send-DmlK72uJ.js → send-Do-0Kcmv.js} +3 -3
  182. package/dist/{send-DBTO2dLX.js → send-mi3NHnwI.js} +2 -2
  183. package/dist/{server-methods-DIMQMEoV.js → server-methods-B_NSJmhc.js} +14 -14
  184. package/dist/{server-methods-B_y_To6u.js → server-methods-Df9KsV_-.js} +13 -13
  185. package/dist/{server-node-events-xk6gk1TZ.js → server-node-events-C2mugatX.js} +10 -10
  186. package/dist/{server-node-events-Cl8uQahY.js → server-node-events-ZG0SBDkU.js} +30 -30
  187. package/dist/{session-_ViRAnAz.js → session-T0JXlYWe.js} +1 -1
  188. package/dist/{session-utils-kkbiQhvc.js → session-utils-Cdv2Qaq2.js} +1 -1
  189. package/dist/{sessions-8_kZyON5.js → sessions-BEyCtqBB.js} +3 -271
  190. package/dist/{sessions-C-C7dQBK.js → sessions-CX93jXmG.js} +2 -2
  191. package/dist/{sessions-BYcI2Zrm.js → sessions-DJAxaVI7.js} +2 -270
  192. package/dist/{skill-commands-D_bBwwvA.js → skill-commands-B64uavY9.js} +1 -1
  193. package/dist/{skill-commands-Bc-ztbDr.js → skill-commands-DWcJOIzP.js} +1 -1
  194. package/dist/{skills-install-CKFZBTH2.js → skills-install-D67isO1L.js} +1 -1
  195. package/dist/{status-B2lMU2Pm.js → status-BTF6_aBO.js} +1 -1
  196. package/dist/{status-Bz1iwxQ8.js → status-BytVj4kU.js} +1 -1
  197. package/dist/{status-D0xPNlv4.js → status-PADx9rG7.js} +5 -5
  198. package/dist/{status-Dy0ocYJ8.js → status-hgm5EhwS.js} +7 -7
  199. package/dist/{status.update-D40obmG1.js → status.update-DlaskfTr.js} +1 -1
  200. package/dist/{store-Bb4oiLME.js → store-C0wvOkae.js} +1 -1
  201. package/dist/{store-C4ZvS7QX.js → store-bnzGvI16.js} +1 -1
  202. package/dist/{subagent-registry-7kBxT_d_.js → subagent-registry-BR2Qhqjf.js} +138 -17
  203. package/dist/{tables-CjPLB3aX.js → tables-BEzT0Da4.js} +1 -1
  204. package/dist/{tables-dfFTl4Oa.js → tables-COnZ169v.js} +1 -1
  205. package/dist/{tables-XnT3BCYh.js → tables-DuZspiBu.js} +1 -1
  206. package/dist/{target-errors-B_xs1J06.js → target-errors-7AvoVa10.js} +1 -1
  207. package/dist/{target-errors-CL9BfceM.js → target-errors-BbOqxMY0.js} +2 -2
  208. package/dist/{target-errors-LR7w6--g.js → target-errors-Be1SwYlW.js} +2 -2
  209. package/dist/{thinking-EjJEKdLq.js → thinking-CdlENGRW.js} +1 -1
  210. package/dist/{thinking-XA7vussX.js → thinking-W85Rb32m.js} +1 -1
  211. package/dist/{tool-images-BHM4TeU5.js → tool-images-ChC2CXaN.js} +1 -1
  212. package/dist/{tool-images-BwAkbbBM.js → tool-images-DXB7tqWi.js} +1 -1
  213. package/dist/{tui-Bmq33rYO.js → tui-0rURH3b3.js} +2 -2
  214. package/dist/{tui-DSGlMzTS.js → tui-CcirlGg5.js} +3 -3
  215. package/dist/{tui-cli-yL_gg_7w.js → tui-cli-D3VMk5c8.js} +6 -7
  216. package/dist/{tui-cli-8Ln6C319.js → tui-cli-hcbzeOtp.js} +4 -5
  217. package/dist/{update-check-DK1kMuwI.js → update-check-CtckACbb.js} +1 -1
  218. package/dist/{update-cli-D0Jlnkzy.js → update-cli-CHr8rjf-.js} +17 -17
  219. package/dist/{update-cli-B4FtAyNd.js → update-cli-qacplfF4.js} +38 -38
  220. package/dist/{update-runner-Ci3cNYff.js → update-runner-DM8zQvQB.js} +2 -2
  221. package/dist/{update-runner-CDnlfyP5.js → update-runner-DNA7FJa2.js} +1 -1
  222. package/dist/{web-ENDSDPaD.js → web-BKQnrqo-.js} +37 -37
  223. package/dist/{web-cJUlI_Wb.js → web-CAnxcgBD.js} +29 -29
  224. package/dist/{web-10GxXUo7.js → web-DkQc82PT.js} +9 -9
  225. package/dist/{web-gNZ16539.js → web-UroM-w6c.js} +31 -31
  226. package/dist/{whatsapp-actions-CUczC854.js → whatsapp-actions-BIjGyW3T.js} +9 -9
  227. package/dist/{whatsapp-actions-ia2odzch.js → whatsapp-actions-BL7tCNC_.js} +12 -12
  228. package/dist/{whatsapp-actions-BcsFR5tf.js → whatsapp-actions-Jfx4zcwv.js} +7 -7
  229. package/package.json +1 -1
  230. /package/dist/{accounts-9VRq1rY7.js → accounts-8zZqL37v.js} +0 -0
  231. /package/dist/{accounts-BCS-nbgN.js → accounts-CWktKM8a.js} +0 -0
  232. /package/dist/{api-key-rotation-erqZ9Tuc.js → api-key-rotation-BukD0zzl.js} +0 -0
  233. /package/dist/{diagnostic-session-state-Bu3E4Enn.js → diagnostic-session-state-Bxo4UHOL.js} +0 -0
  234. /package/dist/{diagnostic-session-state-DmrztgHU.js → diagnostic-session-state-C1vRJs5w.js} +0 -0
  235. /package/dist/{fetch-timeout-DoySHqfO.js → fetch-timeout-Db3da8yR.js} +0 -0
  236. /package/dist/{github-copilot-token-BqpAEW8G.js → github-copilot-token-C_qUP7p5.js} +0 -0
  237. /package/dist/{image-ops-UtlmP67m.js → image-ops-ByaQt43P.js} +0 -0
  238. /package/dist/{image-ops-DD37OhdR.js → image-ops-CvJzsyvE.js} +0 -0
  239. /package/dist/{message-channel-B3YUM8IG.js → message-channel-BQINJQIT.js} +0 -0
  240. /package/dist/{message-channel-Bj7aZphL.js → message-channel-Dz5lr5b0.js} +0 -0
  241. /package/dist/{model-catalog-DhaH7him.js → model-catalog-DjJ9GtKX.js} +0 -0
  242. /package/dist/{pi-model-discovery-C-yOXpma.js → pi-model-discovery-j5tVLINv.js} +0 -0
  243. /package/dist/{sqlite-DhNyBVPk.js → sqlite-Dx3J_aSE.js} +0 -0
  244. /package/dist/{tokens-DBCvs-Ns.js → tokens-BuceUQDl.js} +0 -0
  245. /package/dist/{tool-display-pHB3J5PK.js → tool-display-D8N3rsYt.js} +0 -0
  246. /package/dist/{tool-images-CLRUTPlM.js → tool-images-DvUBlqjX.js} +0 -0
  247. /package/dist/{transcript-events-CJRvASY_.js → transcript-events-DdnTeoR1.js} +0 -0
@@ -5,63 +5,63 @@ import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as dang
5
5
  import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-BxoUQqgM.js";
6
6
  import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-Bs9YvKLa.js";
7
7
  import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, 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-wAaHI8-5.js";
8
- import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-H1H1LiSQ.js";
9
- import { $ as normalizeDeliveryContext, $t as stripHeartbeatToken, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, Qt as resolveHeartbeatPrompt, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-B8JQjQlx.js";
8
+ import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-H1H1LiSQ.js";
10
9
  import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTelegramAccountIds, d as resolveSlackAccount, g as listEnabledDiscordAccounts, h as createDiscordActionGate, i as isWhatsAppGroupJid, l as resolveTelegramAccount, m as resolveSlackBotToken, n as listChannelPlugins, o as createTelegramActionGate, p as resolveSlackAppToken, r as normalizeChannelId$1, s as listEnabledTelegramAccounts, t as getChannelPlugin, u as resolveTelegramToken, v as normalizeDiscordToken } from "./plugins-DQYI3Fr-.js";
11
10
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-tNElYrCH.js";
12
11
  import { t as normalizeChatType } from "./chat-type-C_KiWNAH.js";
13
12
  import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
14
13
  import { n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-BaxDnULz.js";
15
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-DzmRVAHq.js";
16
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-yBb6c4og.js";
17
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-DGaRNkFI.js";
18
- import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-BIVLRT_X.js";
19
- import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DmrztgHU.js";
20
- import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BCS-nbgN.js";
21
- import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-COvqFO3S.js";
22
- import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-DD37OhdR.js";
23
- import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider, E as findNormalizedProviderValue, F as resolveSubagentSpawnModelSelection, G as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, I as resolveThinkingDefault, J as normalizeSecretInput, K as DEFAULT_PROVIDER, M as resolveConfiguredModelRef, N as resolveDefaultModelForAgent, O as modelKey, P as resolveModelRefFromString, T as buildModelAliasIndex, U as createOllamaStreamFn, W as DEFAULT_CONTEXT_TOKENS, Y as getShellPathFromLoginShell, Z as resolveShellEnvFallbackTimeoutMs, _ as ensureAuthProfileStore, a as resolveEnvApiKey, b as withFileLock, c as resolveAuthProfileOrder, d as markAuthProfileFailure, f as markAuthProfileUsed, g as markAuthProfileGood, h as listProfilesForProvider, i as resolveApiKeyForProvider, k as normalizeModelRef$2, l as getSoonestCooldownExpiry, m as dedupeProfileIds, n as getCustomProviderApiKey, o as resolveModelAuthMode, p as resolveApiKeyForProfile, q as resolveAuthProfileDisplayLabel, r as requireApiKey, t as getApiKeyForModel, u as isProfileInCooldown, v as resolveAuthStorePathForDisplay, w as buildConfiguredAllowlistKeys, y as resolveSymiAgentDir } from "./model-auth-Daguh6Kb.js";
24
- import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BqpAEW8G.js";
25
- import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-C-yOXpma.js";
26
- import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-Bj7aZphL.js";
27
- import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-D3XlX-h-.js";
14
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-CHOArYFe.js";
15
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-D3M6pMr5.js";
16
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-B3UoBZdC.js";
17
+ import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-CI0kRQkt.js";
18
+ import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Bxo4UHOL.js";
19
+ import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-CWktKM8a.js";
20
+ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-D_yJMeJa.js";
21
+ import { d as detectMime, f as extensionForMime, g as isGifMedia, h as isAudioFileName, i as getImageMetadata, m as imageMimeFromFormat, s as resizeToJpeg, x as mediaKindFromMime, y as MAX_IMAGE_BYTES } from "./image-ops-CvJzsyvE.js";
22
+ import { A as normalizeProviderId, C as buildAllowedModelSet, D as isCliProvider, E as findNormalizedProviderValue, F as resolveSubagentSpawnModelSelection, G as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, I as resolveThinkingDefault, J as normalizeSecretInput, K as DEFAULT_PROVIDER, M as resolveConfiguredModelRef, N as resolveDefaultModelForAgent, O as modelKey, P as resolveModelRefFromString, T as buildModelAliasIndex, U as createOllamaStreamFn, W as DEFAULT_CONTEXT_TOKENS, Y as getShellPathFromLoginShell, Z as resolveShellEnvFallbackTimeoutMs, _ as ensureAuthProfileStore, a as resolveEnvApiKey, b as withFileLock, c as resolveAuthProfileOrder, d as markAuthProfileFailure, f as markAuthProfileUsed, g as markAuthProfileGood, h as listProfilesForProvider, i as resolveApiKeyForProvider, k as normalizeModelRef$2, l as getSoonestCooldownExpiry, m as dedupeProfileIds, n as getCustomProviderApiKey, o as resolveModelAuthMode, p as resolveApiKeyForProfile, q as resolveAuthProfileDisplayLabel, r as requireApiKey, t as getApiKeyForModel, u as isProfileInCooldown, v as resolveAuthStorePathForDisplay, w as buildConfiguredAllowlistKeys, y as resolveSymiAgentDir } from "./model-auth-CeL58m55.js";
23
+ import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-C_qUP7p5.js";
24
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-DaNAekda.js";
25
+ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel, d as GATEWAY_CLIENT_MODES, f as GATEWAY_CLIENT_NAMES, i as isInternalMessageChannel, l as resolveMessageChannel, n as isDeliverableMessageChannel, o as listDeliverableMessageChannels, r as isGatewayMessageChannel, s as normalizeMessageChannel, t as INTERNAL_MESSAGE_CHANNEL, u as GATEWAY_CLIENT_IDS } from "./message-channel-Dz5lr5b0.js";
26
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-kB5lBgXk.js";
27
+ import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-DM0K7qC1.js";
28
28
  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-D0IQ3WuX.js";
29
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-2-wXJfuH.js";
29
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-LmEyZdbC.js";
30
30
  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-BFekKL7i.js";
31
31
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BoQgnc8X.js";
32
32
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BTMDZjHT.js";
33
- import { n as getMediaDir, r as saveMediaBuffer } from "./store-Bb4oiLME.js";
34
- import { _ as normalizeAtHashSlug, a as normalizeReasoningLevel, b as normalizeStringEntriesLower, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as resolveChannelGroupToolsPolicy, h as resolveChannelGroupRequireMention, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupPolicy, n as formatXHighModelHint, o as normalizeThinkLevel, p as normalizeSignalMessagingTarget, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeHyphenSlug, y as normalizeStringEntries } from "./thinking-EjJEKdLq.js";
33
+ import { n as getMediaDir, r as saveMediaBuffer } from "./store-C0wvOkae.js";
34
+ import { _ as normalizeAtHashSlug, a as normalizeReasoningLevel, b as normalizeStringEntriesLower, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, g as resolveChannelGroupToolsPolicy, h as resolveChannelGroupRequireMention, i as normalizeElevatedLevel, l as resolveResponseUsageMode, m as resolveChannelGroupPolicy, n as formatXHighModelHint, o as normalizeThinkLevel, p as normalizeSignalMessagingTarget, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking, v as normalizeHyphenSlug, y as normalizeStringEntries } from "./thinking-CdlENGRW.js";
35
35
  import { n as resolveConversationLabel } from "./conversation-label-DXUkoKcB.js";
36
36
  import { t as resolveIMessageAccount } from "./accounts-qtxJ-6em.js";
37
37
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DLyHUt31.js";
38
38
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DDYvbmRV.js";
39
- import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-BwAkbbBM.js";
40
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-BJiE96Ml.js";
39
+ import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-DXB7tqWi.js";
40
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-RFofsrof.js";
41
41
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-XlyuyChD.js";
42
- import { n as resolveMemorySearchConfig } from "./manager-BX65xO2I.js";
42
+ import { n as resolveMemorySearchConfig } from "./manager-B5EXdBQV.js";
43
43
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, g as runTasksWithConcurrency } from "./sqlite-DRbx2dhW.js";
44
44
  import { n as retryAsync } from "./retry-Cly39XZB.js";
45
- import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-CL9BfceM.js";
46
- import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BPSLqkZN.js";
45
+ import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-Be1SwYlW.js";
46
+ import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BW5f05BR.js";
47
47
  import { n as resolveMarkdownTableMode } from "./markdown-tables-iMQQZu4Q.js";
48
48
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-DL3f_O53.js";
49
- import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-Dg0r0pJL.js";
50
- import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-B4l25ISI.js";
51
- import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-CZ5P8CpC.js";
52
- import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, 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-D_bBwwvA.js";
49
+ import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-DMwIh5cS.js";
50
+ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DccrnjsE.js";
51
+ import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-C3C4Rv3O.js";
52
+ import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, 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-B64uavY9.js";
53
53
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-BlHX0H3E.js";
54
- import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-Ct0-sE8b.js";
54
+ import { _ as resolveMediaUnderstandingScope, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as normalizeMediaUnderstandingChatType, h as resolveTimeoutMs$1, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveConcurrency, n as createMediaAttachmentCache, o as runCapability, p as registerUnhandledRejectionHandler, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as CLI_OUTPUT_MAX_BUFFER, y as applyTemplate } from "./runner-DOvsNiYz.js";
55
55
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-Bso4i15F.js";
56
56
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-Bup9wS1y.js";
57
57
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CsM_hJ_s.js";
58
58
  import { n as normalizePollInput } from "./polls-CCuCaqgv.js";
59
- import { t as convertMarkdownTables } from "./tables-XnT3BCYh.js";
60
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-B9JhmJSo.js";
61
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-D3qb_2Q-.js";
59
+ import { t as convertMarkdownTables } from "./tables-DuZspiBu.js";
60
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-CzE5UKr-.js";
61
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-BeASPkFg.js";
62
62
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CZ-1eqw0.js";
63
63
  import { t as makeProxyFetch } from "./proxy-CBJ1upuz.js";
64
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-B4-OBhpP.js";
64
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-D9V19U2-.js";
65
65
  import { t as getActiveWebListener } from "./active-listener-C9r8ZB9m.js";
66
66
  import { createRequire } from "node:module";
67
67
  import * as fs$2 from "node:fs/promises";
@@ -102,6 +102,101 @@ import { run, sequentialize } from "@grammyjs/runner";
102
102
  import { apiThrottler } from "@grammyjs/transformer-throttler";
103
103
  import { EventEmitter } from "node:events";
104
104
 
105
+ //#region src/auto-reply/heartbeat.ts
106
+ const HEARTBEAT_PROMPT = "Read SYMIPULSE.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply SYMIPULSE_OK.";
107
+ const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
108
+ function resolveHeartbeatPrompt(raw) {
109
+ return (typeof raw === "string" ? raw.trim() : "") || HEARTBEAT_PROMPT;
110
+ }
111
+ function stripTokenAtEdges(raw) {
112
+ let text = raw.trim();
113
+ if (!text) return {
114
+ text: "",
115
+ didStrip: false
116
+ };
117
+ const token = SYMIPULSE_TOKEN;
118
+ const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
119
+ if (!text.includes(token)) return {
120
+ text,
121
+ didStrip: false
122
+ };
123
+ let didStrip = false;
124
+ let changed = true;
125
+ while (changed) {
126
+ changed = false;
127
+ const next = text.trim();
128
+ if (next.startsWith(token)) {
129
+ text = next.slice(token.length).trimStart();
130
+ didStrip = true;
131
+ changed = true;
132
+ continue;
133
+ }
134
+ if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
135
+ const idx = next.lastIndexOf(token);
136
+ const before = next.slice(0, idx).trimEnd();
137
+ if (!before) text = "";
138
+ else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
139
+ didStrip = true;
140
+ changed = true;
141
+ }
142
+ }
143
+ return {
144
+ text: text.replace(/\s+/g, " ").trim(),
145
+ didStrip
146
+ };
147
+ }
148
+ function stripHeartbeatToken(raw, opts = {}) {
149
+ if (!raw) return {
150
+ shouldSkip: true,
151
+ text: "",
152
+ didStrip: false
153
+ };
154
+ const trimmed = raw.trim();
155
+ if (!trimmed) return {
156
+ shouldSkip: true,
157
+ text: "",
158
+ didStrip: false
159
+ };
160
+ const mode = opts.mode ?? "message";
161
+ const maxAckCharsRaw = opts.maxAckChars;
162
+ const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
163
+ const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
164
+ const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
165
+ const trimmedNormalized = stripMarkup(trimmed);
166
+ if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
167
+ shouldSkip: false,
168
+ text: trimmed,
169
+ didStrip: false
170
+ };
171
+ const strippedOriginal = stripTokenAtEdges(trimmed);
172
+ const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
173
+ const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
174
+ if (!picked.didStrip) return {
175
+ shouldSkip: false,
176
+ text: trimmed,
177
+ didStrip: false
178
+ };
179
+ if (!picked.text) return {
180
+ shouldSkip: true,
181
+ text: "",
182
+ didStrip: true
183
+ };
184
+ const rest = picked.text.trim();
185
+ if (mode === "heartbeat") {
186
+ if (rest.length <= maxAckChars) return {
187
+ shouldSkip: true,
188
+ text: "",
189
+ didStrip: true
190
+ };
191
+ }
192
+ return {
193
+ shouldSkip: false,
194
+ text: rest,
195
+ didStrip: true
196
+ };
197
+ }
198
+
199
+ //#endregion
105
200
  //#region src/channels/allowlist-match.ts
106
201
  function formatAllowlistMatchMeta(match) {
107
202
  return `matchKey=${match?.matchKey ?? "none"} matchSource=${match?.matchSource ?? "none"}`;
@@ -3379,7 +3474,7 @@ async function getMemorySearchManager(params) {
3379
3474
  const wrapper = new FallbackMemoryManager({
3380
3475
  primary,
3381
3476
  fallbackFactory: async () => {
3382
- const { MemoryIndexManager } = await import("./manager-BX65xO2I.js").then((n) => n.t);
3477
+ const { MemoryIndexManager } = await import("./manager-B5EXdBQV.js").then((n) => n.t);
3383
3478
  return await MemoryIndexManager.get(params);
3384
3479
  }
3385
3480
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3392,7 +3487,7 @@ async function getMemorySearchManager(params) {
3392
3487
  }
3393
3488
  }
3394
3489
  try {
3395
- const { MemoryIndexManager } = await import("./manager-BX65xO2I.js").then((n) => n.t);
3490
+ const { MemoryIndexManager } = await import("./manager-B5EXdBQV.js").then((n) => n.t);
3396
3491
  return { manager: await MemoryIndexManager.get(params) };
3397
3492
  } catch (err) {
3398
3493
  return {
@@ -7105,7 +7200,7 @@ async function routeReply(params) {
7105
7200
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7106
7201
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7107
7202
  try {
7108
- const { deliverOutboundPayloads } = await import("./deliver-DGaRNkFI.js").then((n) => n.n);
7203
+ const { deliverOutboundPayloads } = await import("./deliver-B3UoBZdC.js").then((n) => n.n);
7109
7204
  return {
7110
7205
  ok: true,
7111
7206
  messageId: (await deliverOutboundPayloads({
@@ -12340,7 +12435,7 @@ const MODEL_CACHE = /* @__PURE__ */ new Map();
12340
12435
  await ensureSymiModelsJson(cfg);
12341
12436
  } catch {}
12342
12437
  try {
12343
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-C-yOXpma.js").then((n) => n.r);
12438
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-DaNAekda.js").then((n) => n.r);
12344
12439
  const agentDir = resolveSymiAgentDir();
12345
12440
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
12346
12441
  applyDiscoveredContextWindows({
@@ -12558,7 +12653,7 @@ async function createModelSelectionState(params) {
12558
12653
  }
12559
12654
  }
12560
12655
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
12561
- const { ensureAuthProfileStore } = await import("./model-auth-Daguh6Kb.js").then((n) => n.s);
12656
+ const { ensureAuthProfileStore } = await import("./model-auth-CeL58m55.js").then((n) => n.s);
12562
12657
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
12563
12658
  const providerKey = normalizeProviderId(provider);
12564
12659
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -41478,7 +41573,7 @@ async function deliverSessionMaintenanceWarning(params) {
41478
41573
  return;
41479
41574
  }
41480
41575
  try {
41481
- const { deliverOutboundPayloads } = await import("./deliver-DGaRNkFI.js").then((n) => n.n);
41576
+ const { deliverOutboundPayloads } = await import("./deliver-B3UoBZdC.js").then((n) => n.n);
41482
41577
  await deliverOutboundPayloads({
41483
41578
  cfg: params.cfg,
41484
41579
  channel,
@@ -44921,7 +45016,7 @@ async function describeStickerImage(params) {
44921
45016
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
44922
45017
  try {
44923
45018
  const buffer = await fs.readFile(imagePath);
44924
- const { describeImageWithModel } = await import("./image-BJiE96Ml.js").then((n) => n.n);
45019
+ const { describeImageWithModel } = await import("./image-RFofsrof.js").then((n) => n.n);
44925
45020
  return (await describeImageWithModel({
44926
45021
  buffer,
44927
45022
  fileName: "sticker.webp",
@@ -45344,7 +45439,7 @@ function createWhatsAppLoginTool() {
45344
45439
  force: Type.Optional(Type.Boolean())
45345
45440
  }),
45346
45441
  execute: async (_toolCallId, args) => {
45347
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DWlyS1Bc.js");
45442
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-9OQSnm5L.js");
45348
45443
  if ((args?.action ?? "start") === "wait") {
45349
45444
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
45350
45445
  return {
@@ -47382,7 +47477,7 @@ async function preflightDiscordMessage(params) {
47382
47477
  let preflightTranscript;
47383
47478
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
47384
47479
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
47385
- const { transcribeFirstAudio } = await import("./audio-preflight-Bk54IW__.js");
47480
+ const { transcribeFirstAudio } = await import("./audio-preflight-DRQD_nt1.js");
47386
47481
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
47387
47482
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
47388
47483
  ctx: {
@@ -51388,27 +51483,27 @@ function isVoiceChannelType(type) {
51388
51483
  function createDefaultDeps() {
51389
51484
  return {
51390
51485
  sendMessageWhatsApp: async (...args) => {
51391
- const { sendMessageWhatsApp } = await import("./web-ENDSDPaD.js");
51486
+ const { sendMessageWhatsApp } = await import("./web-BKQnrqo-.js");
51392
51487
  return await sendMessageWhatsApp(...args);
51393
51488
  },
51394
51489
  sendMessageTelegram: async (...args) => {
51395
- const { sendMessageTelegram } = await import("./send-COvqFO3S.js").then((n) => n.l);
51490
+ const { sendMessageTelegram } = await import("./send-D_yJMeJa.js").then((n) => n.l);
51396
51491
  return await sendMessageTelegram(...args);
51397
51492
  },
51398
51493
  sendMessageDiscord: async (...args) => {
51399
- const { sendMessageDiscord } = await import("./send-yBb6c4og.js").then((n) => n.t);
51494
+ const { sendMessageDiscord } = await import("./send-D3M6pMr5.js").then((n) => n.t);
51400
51495
  return await sendMessageDiscord(...args);
51401
51496
  },
51402
51497
  sendMessageSlack: async (...args) => {
51403
- const { sendMessageSlack } = await import("./send-DzmRVAHq.js").then((n) => n.n);
51498
+ const { sendMessageSlack } = await import("./send-CHOArYFe.js").then((n) => n.n);
51404
51499
  return await sendMessageSlack(...args);
51405
51500
  },
51406
51501
  sendMessageSignal: async (...args) => {
51407
- const { sendMessageSignal } = await import("./send-B9JhmJSo.js").then((n) => n.i);
51502
+ const { sendMessageSignal } = await import("./send-CzE5UKr-.js").then((n) => n.i);
51408
51503
  return await sendMessageSignal(...args);
51409
51504
  },
51410
51505
  sendMessageIMessage: async (...args) => {
51411
- const { sendMessageIMessage } = await import("./send-D3qb_2Q-.js").then((n) => n.n);
51506
+ const { sendMessageIMessage } = await import("./send-BeASPkFg.js").then((n) => n.n);
51412
51507
  return await sendMessageIMessage(...args);
51413
51508
  }
51414
51509
  };
@@ -61834,7 +61929,7 @@ function readSlackExternalArgMenuToken(raw) {
61834
61929
  }
61835
61930
  let commandsRegistry;
61836
61931
  async function getCommandsRegistry() {
61837
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-CZ5P8CpC.js").then((n) => n.n);
61932
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-C3C4Rv3O.js").then((n) => n.n);
61838
61933
  return commandsRegistry;
61839
61934
  }
61840
61935
  function encodeSlackCommandArgValue(parts) {
@@ -62237,8 +62332,8 @@ async function registerSlackMonitorSlashCommands(params) {
62237
62332
  });
62238
62333
  const deliverSlashPayloads = async (replies) => {
62239
62334
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
62240
- import("./replies-B4-OBhpP.js").then((n) => n.r),
62241
- import("./chunk-BPSLqkZN.js").then((n) => n.s),
62335
+ import("./replies-D9V19U2-.js").then((n) => n.r),
62336
+ import("./chunk-BW5f05BR.js").then((n) => n.s),
62242
62337
  import("./markdown-tables-iMQQZu4Q.js").then((n) => n.t)
62243
62338
  ]);
62244
62339
  await deliverSlackSlashReplies({
@@ -62292,7 +62387,7 @@ async function registerSlackMonitorSlashCommands(params) {
62292
62387
  let nativeCommands = [];
62293
62388
  if (nativeEnabled) {
62294
62389
  reg = await getCommandsRegistry();
62295
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-D_bBwwvA.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
62390
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-B64uavY9.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
62296
62391
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
62297
62392
  skillCommands,
62298
62393
  provider: "slack"
@@ -64510,7 +64605,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
64510
64605
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
64511
64606
  let preflightTranscript;
64512
64607
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
64513
- const { transcribeFirstAudio } = await import("./audio-preflight-Bk54IW__.js");
64608
+ const { transcribeFirstAudio } = await import("./audio-preflight-DRQD_nt1.js");
64514
64609
  preflightTranscript = await transcribeFirstAudio({
64515
64610
  ctx: {
64516
64611
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -66655,23 +66750,23 @@ let webLoginQrPromise = null;
66655
66750
  let webChannelPromise = null;
66656
66751
  let whatsappActionsPromise = null;
66657
66752
  function loadWebOutbound() {
66658
- webOutboundPromise ??= import("./outbound-DpGc1neG.js").then((n) => n.t);
66753
+ webOutboundPromise ??= import("./outbound-Cedd_yui.js").then((n) => n.t);
66659
66754
  return webOutboundPromise;
66660
66755
  }
66661
66756
  function loadWebLogin() {
66662
- webLoginPromise ??= import("./login-DNi-TGJT.js").then((n) => n.n);
66757
+ webLoginPromise ??= import("./login-BG_7eJLu.js").then((n) => n.n);
66663
66758
  return webLoginPromise;
66664
66759
  }
66665
66760
  function loadWebLoginQr() {
66666
- webLoginQrPromise ??= import("./login-qr-DWlyS1Bc.js");
66761
+ webLoginQrPromise ??= import("./login-qr-9OQSnm5L.js");
66667
66762
  return webLoginQrPromise;
66668
66763
  }
66669
66764
  function loadWebChannel() {
66670
- webChannelPromise ??= import("./web-ENDSDPaD.js");
66765
+ webChannelPromise ??= import("./web-BKQnrqo-.js");
66671
66766
  return webChannelPromise;
66672
66767
  }
66673
66768
  function loadWhatsAppActions() {
66674
- whatsappActionsPromise ??= import("./whatsapp-actions-ia2odzch.js");
66769
+ whatsappActionsPromise ??= import("./whatsapp-actions-BL7tCNC_.js");
66675
66770
  return whatsappActionsPromise;
66676
66771
  }
66677
66772
  function createPluginRuntime() {
@@ -67949,7 +68044,7 @@ function shouldEmitLoopWarning(state, warningKey, count) {
67949
68044
  async function recordLoopOutcome(args) {
67950
68045
  if (!args.ctx?.sessionKey) return;
67951
68046
  try {
67952
- const { getDiagnosticSessionState } = await import("./diagnostic-session-state-DmrztgHU.js").then((n) => n.n);
68047
+ const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Bxo4UHOL.js").then((n) => n.n);
67953
68048
  const { recordToolCallOutcome } = await import("./tool-loop-detection-Cs8_HCsx.js");
67954
68049
  recordToolCallOutcome(getDiagnosticSessionState({
67955
68050
  sessionKey: args.ctx.sessionKey,
@@ -67970,8 +68065,8 @@ async function runBeforeToolCallHook(args) {
67970
68065
  const toolName = normalizeToolName(args.toolName || "tool");
67971
68066
  const params = args.params;
67972
68067
  if (args.ctx?.sessionKey) {
67973
- const { getDiagnosticSessionState } = await import("./diagnostic-session-state-DmrztgHU.js").then((n) => n.n);
67974
- const { logToolLoopAction } = await import("./diagnostic-BIVLRT_X.js").then((n) => n.n);
68068
+ const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Bxo4UHOL.js").then((n) => n.n);
68069
+ const { logToolLoopAction } = await import("./diagnostic-CI0kRQkt.js").then((n) => n.n);
67975
68070
  const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-Cs8_HCsx.js");
67976
68071
  const sessionState = getDiagnosticSessionState({
67977
68072
  sessionKey: args.ctx.sessionKey,
@@ -71833,7 +71928,7 @@ async function compactEmbeddedPiSessionDirect(params) {
71833
71928
  if (!apiKeyInfo.apiKey) {
71834
71929
  if (apiKeyInfo.mode !== "aws-sdk") throw new Error(`No API key resolved for provider "${model.provider}" (auth mode: ${apiKeyInfo.mode}).`);
71835
71930
  } else if (model.provider === "github-copilot") {
71836
- const { resolveCopilotApiToken } = await import("./github-copilot-token-BqpAEW8G.js").then((n) => n.n);
71931
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-C_qUP7p5.js").then((n) => n.n);
71837
71932
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
71838
71933
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
71839
71934
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -76456,7 +76551,7 @@ async function runEmbeddedPiAgent(params) {
76456
76551
  return;
76457
76552
  }
76458
76553
  if (model.provider === "github-copilot") {
76459
- const { resolveCopilotApiToken } = await import("./github-copilot-token-BqpAEW8G.js").then((n) => n.n);
76554
+ const { resolveCopilotApiToken } = await import("./github-copilot-token-C_qUP7p5.js").then((n) => n.n);
76460
76555
  const copilotToken = await resolveCopilotApiToken({ githubToken: apiKeyInfo.apiKey });
76461
76556
  authStorage.setRuntimeApiKey(model.provider, copilotToken.token);
76462
76557
  } else authStorage.setRuntimeApiKey(model.provider, apiKeyInfo.apiKey);
@@ -1,26 +1,25 @@
1
1
  import { i as resolveGatewayPort, t as STATE_DIR, u as resolveRequiredHomeDir } from "./paths-CE7eVGHg.js";
2
2
  import { c as normalizeMainKey, l as resolveAgentIdFromSessionKey, m as normalizeOptionalAccountId, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID } from "./session-key-BCzIW1Y2.js";
3
- import { A as normalizeE164, P as resolveUserPath, T as escapeRegExp, V as truncateUtf16Safe, lt as resolvePreferredSymiTmpDir, t as CHANNEL_IDS } from "./registry-BhoUuugi.js";
3
+ import { A as normalizeE164, P as resolveUserPath, V as truncateUtf16Safe, lt as resolvePreferredSymiTmpDir, t as CHANNEL_IDS } from "./registry-BhoUuugi.js";
4
4
  import { E as runExec, _ as DEFAULT_SYMIPULSE_FILENAME, b as ensureAgentWorkspace, f as DEFAULT_AGENTS_FILENAME, g as DEFAULT_SYMICORE_FILENAME, h as DEFAULT_IDENTITY_FILENAME, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, p as DEFAULT_AGENT_WORKSPACE_DIR, u as resolveSessionAgentId, v as DEFAULT_TOOLS_FILENAME, y as DEFAULT_USER_FILENAME } from "./agent-scope-Cbl5pNe1.js";
5
5
  import { r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-CZixfwU8.js";
6
6
  import { J as isPidAlive, q as resolveProcessScopedMap } from "./model-selection--4t4F87n.js";
7
7
  import { n as parseBooleanValue, r as formatCliCommand } from "./env-CQ_DQOwT.js";
8
- import { r as SYMIPULSE_TOKEN } from "./tokens-Cn6drXx2.js";
9
8
  import { r as normalizeChannelId } from "./plugins-71oIavrF.js";
10
9
  import { t as normalizeChatType } from "./chat-type-DFDuk3FY.js";
11
- import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-UtlmP67m.js";
12
- import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-B3YUM8IG.js";
10
+ import { c as SafeOpenError, i as getImageMetadata, l as openFileWithinRoot, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-ByaQt43P.js";
11
+ import { o as listDeliverableMessageChannels, s as normalizeMessageChannel } from "./message-channel-BQINJQIT.js";
13
12
  import { _ as parseDurationMs, a as writeConfigFile, n as loadConfig, s as parseByteSize, t as createConfigIO } from "./config-BjGo9GnL.js";
14
13
  import { A as DEFAULT_BROWSER_EVALUATE_ENABLED, D as DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS, E as DEFAULT_AI_SNAPSHOT_EFFICIENT_DEPTH, M as DEFAULT_SYMI_BROWSER_ENABLED, N as DEFAULT_SYMI_BROWSER_PROFILE_NAME, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, S as stopChromeExtensionRelayServer, _ as fetchJson, a as resolveSymiUserDataDir, c as captureScreenshot, d as normalizeCdpWsUrl, f as snapshotAria, g as appendCdpPath, h as withBrowserNavigationPolicy, i as launchSymiChrome, j as DEFAULT_SYMI_BROWSER_COLOR, k as DEFAULT_BROWSER_DEFAULT_PROFILE_NAME, l as createTargetViaCdp, m as assertBrowserNavigationAllowed, n as isChromeCdpReady, o as stopSymiChrome, p as InvalidBrowserNavigationUrlError, r as isChromeReachable, s as resolveBrowserExecutableForPlatform, v as fetchOk, w as isLoopbackHost, x as ensureChromeExtensionRelayServer } from "./chrome-B_zrSLce.js";
15
14
  import { a as syncSkillsToWorkspace, l as resolveSandboxInputPath, m as sanitizeEnvVars, u as resolveSandboxPath } from "./skills-BNpGMnp-.js";
16
15
  import { n as formatErrorMessage, t as extractErrorCode } from "./errors-CPfngF0S.js";
17
16
  import { t as SsrFBlockedError } from "./ssrf-CxfFyMRZ.js";
18
- import { r as saveMediaBuffer, t as ensureMediaDir } from "./store-C4ZvS7QX.js";
19
- import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug } from "./thinking-XA7vussX.js";
17
+ import { r as saveMediaBuffer, t as ensureMediaDir } from "./store-bnzGvI16.js";
18
+ import { d as getChannelDock, o as normalizeThinkLevel, v as normalizeHyphenSlug } from "./thinking-W85Rb32m.js";
20
19
  import { n as resolveConversationLabel } from "./conversation-label-BShfMyKA.js";
21
20
  import { a as resolveSessionTranscriptPathInDir, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-DkMamAQ-.js";
22
21
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-C8Tqw4td.js";
23
- import { t as sanitizeContentBlocksImages } from "./tool-images-BHM4TeU5.js";
22
+ import { t as sanitizeContentBlocksImages } from "./tool-images-ChC2CXaN.js";
24
23
  import path, { posix } from "node:path";
25
24
  import fs, { existsSync, realpathSync } from "node:fs";
26
25
  import os from "node:os";
@@ -30,101 +29,6 @@ import crypto, { createHash, timingSafeEqual } from "node:crypto";
30
29
  import { CURRENT_SESSION_VERSION, SessionManager } from "@mariozechner/pi-coding-agent";
31
30
  import express from "express";
32
31
 
33
- //#region src/auto-reply/heartbeat.ts
34
- const HEARTBEAT_PROMPT = "Read SYMIPULSE.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply SYMIPULSE_OK.";
35
- const DEFAULT_HEARTBEAT_ACK_MAX_CHARS = 300;
36
- function resolveHeartbeatPrompt(raw) {
37
- return (typeof raw === "string" ? raw.trim() : "") || HEARTBEAT_PROMPT;
38
- }
39
- function stripTokenAtEdges(raw) {
40
- let text = raw.trim();
41
- if (!text) return {
42
- text: "",
43
- didStrip: false
44
- };
45
- const token = SYMIPULSE_TOKEN;
46
- const tokenAtEndWithOptionalTrailingPunctuation = new RegExp(`${escapeRegExp(token)}[^\\w]{0,4}$`);
47
- if (!text.includes(token)) return {
48
- text,
49
- didStrip: false
50
- };
51
- let didStrip = false;
52
- let changed = true;
53
- while (changed) {
54
- changed = false;
55
- const next = text.trim();
56
- if (next.startsWith(token)) {
57
- text = next.slice(token.length).trimStart();
58
- didStrip = true;
59
- changed = true;
60
- continue;
61
- }
62
- if (tokenAtEndWithOptionalTrailingPunctuation.test(next)) {
63
- const idx = next.lastIndexOf(token);
64
- const before = next.slice(0, idx).trimEnd();
65
- if (!before) text = "";
66
- else text = `${before}${next.slice(idx + token.length).trimStart()}`.trimEnd();
67
- didStrip = true;
68
- changed = true;
69
- }
70
- }
71
- return {
72
- text: text.replace(/\s+/g, " ").trim(),
73
- didStrip
74
- };
75
- }
76
- function stripHeartbeatToken(raw, opts = {}) {
77
- if (!raw) return {
78
- shouldSkip: true,
79
- text: "",
80
- didStrip: false
81
- };
82
- const trimmed = raw.trim();
83
- if (!trimmed) return {
84
- shouldSkip: true,
85
- text: "",
86
- didStrip: false
87
- };
88
- const mode = opts.mode ?? "message";
89
- const maxAckCharsRaw = opts.maxAckChars;
90
- const parsedAckChars = typeof maxAckCharsRaw === "string" ? Number(maxAckCharsRaw) : maxAckCharsRaw;
91
- const maxAckChars = Math.max(0, typeof parsedAckChars === "number" && Number.isFinite(parsedAckChars) ? parsedAckChars : DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
92
- const stripMarkup = (text) => text.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/^[*`~_]+/, "").replace(/[*`~_]+$/, "");
93
- const trimmedNormalized = stripMarkup(trimmed);
94
- if (!(trimmed.includes(SYMIPULSE_TOKEN) || trimmedNormalized.includes(SYMIPULSE_TOKEN))) return {
95
- shouldSkip: false,
96
- text: trimmed,
97
- didStrip: false
98
- };
99
- const strippedOriginal = stripTokenAtEdges(trimmed);
100
- const strippedNormalized = stripTokenAtEdges(trimmedNormalized);
101
- const picked = strippedOriginal.didStrip && strippedOriginal.text ? strippedOriginal : strippedNormalized;
102
- if (!picked.didStrip) return {
103
- shouldSkip: false,
104
- text: trimmed,
105
- didStrip: false
106
- };
107
- if (!picked.text) return {
108
- shouldSkip: true,
109
- text: "",
110
- didStrip: true
111
- };
112
- const rest = picked.text.trim();
113
- if (mode === "heartbeat") {
114
- if (rest.length <= maxAckChars) return {
115
- shouldSkip: true,
116
- text: "",
117
- didStrip: true
118
- };
119
- }
120
- return {
121
- shouldSkip: false,
122
- text: rest,
123
- didStrip: true
124
- };
125
- }
126
-
127
- //#endregion
128
32
  //#region src/agents/pi-embedded-helpers/bootstrap.ts
129
33
  function isBase64Signature(value) {
130
34
  const trimmed = value.trim();
@@ -7881,4 +7785,4 @@ function validateAnthropicTurns(messages) {
7881
7785
  }
7882
7786
 
7883
7787
  //#endregion
7884
- export { mergeDeliveryContext as $, stripHeartbeatToken as $t, isTransientHttpError as A, DEFAULT_UPLOAD_DIR as At, resolveMirroredTranscriptText as B, expandToolGroups as Bt, isContextOverflowError as C, resolveGroupSessionKey as Ct, isRateLimitAssistantError as D, registerBrowserRoutes as Dt, isLikelyContextOverflowError as E, createBrowserRouteContext as Et, resolveSandboxContext as F, resolveSandboxConfigForAgent as Ft, saveSessionStore as G, compileGlobPatterns as Gt, loadSessionStore as H, normalizeToolName as Ht, resolveSandboxRuntimeStatus as I, applyOwnerOnlyToolPolicy as It, updateSessionStoreEntry as J, ensureSessionHeader$1 as Jt, updateLastRoute as K, matchesAnyGlobPattern as Kt, extractDeliveryInfo as L, buildPluginToolGroups as Lt, parseImageSizeError as M, getBridgeAuthForPort as Mt, sanitizeUserFacingText as N, ensureBrowserControlAuth as Nt, isRawApiErrorPayload as O, resolveBrowserConfig as Ot, ensureSandboxWorkspaceForSession as P, resolveBrowserControlAuth as Pt, deliveryContextKey as Q, resolveHeartbeatPrompt as Qt, parseSessionThreadInfo as R, collectExplicitAllowlist as Rt, isCompactionFailureError as S, deriveSessionMetaPatch as St, isFailoverErrorMessage as T, resolveSessionLockMaxHoldFromTimeout as Tt, readSessionUpdatedAt as U, resolveToolProfilePolicy as Ut, resolveAndPersistSessionFile as V, mergeAlsoAllowPolicy as Vt, recordSessionMetaFromInbound as W, stripPluginOnlyAllowlist as Wt, resolveCacheTtlMs as X, resolveBootstrapTotalMaxChars as Xt, isCacheEnabled as Y, resolveBootstrapMaxChars as Yt, deliveryContextFromSession as Z, sanitizeGoogleTurnOrdering as Zt, formatRawAssistantErrorForUi as _, DEFAULT_RESET_TRIGGERS as _t, isMessagingToolDuplicateNormalized as a, countToolResults as at, isBillingAssistantError as b, resolveExplicitAgentSessionKey as bt, extractToolCallsFromAssistant as c, applyInputProvenanceToUserMessage as ct, isAntigravityClaude as d, resolveSessionKey as dt, normalizeDeliveryContext as et, isGoogleModelApi as f, evaluateSessionFreshness as ft, formatBillingErrorMessage as g, resolveThreadFlag as gt, formatAssistantErrorText as h, resolveSessionResetType as ht, isMessagingToolDuplicate as i, capArrayByJsonBytes as it, parseImageDimensionError as j, resolveExistingPathsWithinRoot as jt, isTimeoutErrorMessage as k, resolveProfile as kt, extractToolResultId as l, hasInterSessionUserProvenance as lt, classifyFailoverReason as m, resolveSessionResetPolicy as mt, validateGeminiTurns as n, normalizeAccountId as nt, normalizeTextForComparison as o, extractToolCallNames as ot, BILLING_ERROR_USER_MESSAGE as p, resolveChannelResetConfig as pt, updateSessionStore as q, buildBootstrapContextFiles as qt, pickFallbackThinkingLevel as r, archiveSessionTranscripts as rt, sanitizeSessionMessagesImages as s, INPUT_PROVENANCE_KIND_VALUES as st, validateAnthropicTurns as t, normalizeSessionDeliveryFields as tt, downgradeOpenAIReasoningBlocks as u, normalizeInputProvenance as ut, getApiErrorPayloadFingerprint as v, resolveFreshSessionTotalTokens as vt, isFailoverAssistantError as w, acquireSessionWriteLock as wt, isCloudCodeAssistFormatError as x, resolveMainSessionKey as xt, isAuthAssistantError as y, canonicalizeMainSessionAlias as yt, appendAssistantMessageToSessionTranscript as z, expandPolicyWithPluginGroups as zt };
7788
+ export { mergeDeliveryContext as $, isTransientHttpError as A, DEFAULT_UPLOAD_DIR as At, resolveMirroredTranscriptText as B, expandToolGroups as Bt, isContextOverflowError as C, resolveGroupSessionKey as Ct, isRateLimitAssistantError as D, registerBrowserRoutes as Dt, isLikelyContextOverflowError as E, createBrowserRouteContext as Et, resolveSandboxContext as F, resolveSandboxConfigForAgent as Ft, saveSessionStore as G, compileGlobPatterns as Gt, loadSessionStore as H, normalizeToolName as Ht, resolveSandboxRuntimeStatus as I, applyOwnerOnlyToolPolicy as It, updateSessionStoreEntry as J, ensureSessionHeader$1 as Jt, updateLastRoute as K, matchesAnyGlobPattern as Kt, extractDeliveryInfo as L, buildPluginToolGroups as Lt, parseImageSizeError as M, getBridgeAuthForPort as Mt, sanitizeUserFacingText as N, ensureBrowserControlAuth as Nt, isRawApiErrorPayload as O, resolveBrowserConfig as Ot, ensureSandboxWorkspaceForSession as P, resolveBrowserControlAuth as Pt, deliveryContextKey as Q, parseSessionThreadInfo as R, collectExplicitAllowlist as Rt, isCompactionFailureError as S, deriveSessionMetaPatch as St, isFailoverErrorMessage as T, resolveSessionLockMaxHoldFromTimeout as Tt, readSessionUpdatedAt as U, resolveToolProfilePolicy as Ut, resolveAndPersistSessionFile as V, mergeAlsoAllowPolicy as Vt, recordSessionMetaFromInbound as W, stripPluginOnlyAllowlist as Wt, resolveCacheTtlMs as X, resolveBootstrapTotalMaxChars as Xt, isCacheEnabled as Y, resolveBootstrapMaxChars as Yt, deliveryContextFromSession as Z, sanitizeGoogleTurnOrdering as Zt, formatRawAssistantErrorForUi as _, DEFAULT_RESET_TRIGGERS as _t, isMessagingToolDuplicateNormalized as a, countToolResults as at, isBillingAssistantError as b, resolveExplicitAgentSessionKey as bt, extractToolCallsFromAssistant as c, applyInputProvenanceToUserMessage as ct, isAntigravityClaude as d, resolveSessionKey as dt, normalizeDeliveryContext as et, isGoogleModelApi as f, evaluateSessionFreshness as ft, formatBillingErrorMessage as g, resolveThreadFlag as gt, formatAssistantErrorText as h, resolveSessionResetType as ht, isMessagingToolDuplicate as i, capArrayByJsonBytes as it, parseImageDimensionError as j, resolveExistingPathsWithinRoot as jt, isTimeoutErrorMessage as k, resolveProfile as kt, extractToolResultId as l, hasInterSessionUserProvenance as lt, classifyFailoverReason as m, resolveSessionResetPolicy as mt, validateGeminiTurns as n, normalizeAccountId as nt, normalizeTextForComparison as o, extractToolCallNames as ot, BILLING_ERROR_USER_MESSAGE as p, resolveChannelResetConfig as pt, updateSessionStore as q, buildBootstrapContextFiles as qt, pickFallbackThinkingLevel as r, archiveSessionTranscripts as rt, sanitizeSessionMessagesImages as s, INPUT_PROVENANCE_KIND_VALUES as st, validateAnthropicTurns as t, normalizeSessionDeliveryFields as tt, downgradeOpenAIReasoningBlocks as u, normalizeInputProvenance as ut, getApiErrorPayloadFingerprint as v, resolveFreshSessionTotalTokens as vt, isFailoverAssistantError as w, acquireSessionWriteLock as wt, isCloudCodeAssistFormatError as x, resolveMainSessionKey as xt, isAuthAssistantError as y, canonicalizeMainSessionAlias as yt, appendAssistantMessageToSessionTranscript as z, expandPolicyWithPluginGroups as zt };