@symerian/symi 2.0.16 → 2.0.18

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 (357) hide show
  1. package/dist/{acp-cli-CSX62tsS.js → acp-cli-Cp81ShIC.js} +3 -3
  2. package/dist/{acp-cli-CrfY9UHo.js → acp-cli-h36Zuriy.js} +3 -3
  3. package/dist/{agents-CP6mOf0j.js → agents-B2jtcp_Y.js} +8 -8
  4. package/dist/{agents.config-CFps8Krs.js → agents.config-ButbIjGA.js} +1 -1
  5. package/dist/{agents.config-Da5XukaM.js → agents.config-DTJxgmnd.js} +1 -1
  6. package/dist/{api-key-rotation-BukD0zzl.js → api-key-rotation-De1ivBc0.js} +1 -1
  7. package/dist/{audio-preflight-DRQD_nt1.js → audio-preflight-B_VLZd_F.js} +7 -7
  8. package/dist/{audio-preflight-CQ5_RYEe.js → audio-preflight-CSix46JB.js} +13 -13
  9. package/dist/{audio-preflight-DSeaWZZW.js → audio-preflight-DGpde3Ae.js} +13 -13
  10. package/dist/{audio-preflight-Cq4C-m27.js → audio-preflight-k4jOy8Bo.js} +7 -7
  11. package/dist/{audit-Do2bVss3.js → audit-BbhuQjTl.js} +7 -7
  12. package/dist/{audit-x_SzU263.js → audit-BmuBsZal.js} +7 -7
  13. package/dist/{auth-choice-CZ9ugRNS.js → auth-choice-BMHb00f1.js} +7 -7
  14. package/dist/{auth-choice-za414gQg.js → auth-choice-Du7VUK1p.js} +7 -7
  15. package/dist/{auth-profiles-BD22fK4p.js → auth-profiles-Cs3GPB03.js} +6 -2
  16. package/dist/{auth-token-CNnt7guc.js → auth-token-CbDExtp_.js} +1 -1
  17. package/dist/{auth-token-BrlnZiCq.js → auth-token-DdkoxDu3.js} +1 -1
  18. package/dist/{banner-DHgxDWv_.js → banner-BoFDxo1X.js} +1 -1
  19. package/dist/{browser-cli-BydQRa6Z.js → browser-cli-Bu0BnRct.js} +4 -4
  20. package/dist/{browser-cli-Bz2dcSy1.js → browser-cli-DEnpvEPP.js} +4 -4
  21. package/dist/build-info.json +3 -3
  22. package/dist/bundled/boot-md/handler.js +18 -18
  23. package/dist/bundled/session-memory/handler.js +18 -18
  24. package/dist/{call-BVw7l9v8.js → call-6AGLOo_A.js} +1 -1
  25. package/dist/{call-CJYWtIM9.js → call-TvMa4u8t.js} +1 -1
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{channel-options-D7RdZp1E.js → channel-options-BzQJoPFc.js} +1 -1
  28. package/dist/{channel-options-BCZol8_4.js → channel-options-D1K0w33c.js} +1 -1
  29. package/dist/{channel-web-Dki5eEiP.js → channel-web-NaWX5pUl.js} +8 -8
  30. package/dist/{channels-cli-CwliXNUk.js → channels-cli-BGX2AX0X.js} +38 -38
  31. package/dist/{channels-cli-CILkYyG3.js → channels-cli-KVy9GUcY.js} +39 -39
  32. package/dist/{chrome-BgIDB_SH.js → chrome-CaijV4gw.js} +1 -1
  33. package/dist/{chrome-D9OwvWm7.js → chrome-Cgiw9tI6.js} +1 -1
  34. package/dist/{chrome-h6BnL8Lp.js → chrome-DX-9I4dn.js} +1 -1
  35. package/dist/{chrome-LmEyZdbC.js → chrome-DrxNYzTD.js} +1 -1
  36. package/dist/cli/daemon-cli.js +1 -1
  37. package/dist/{cli-aAOs92a8.js → cli-DAaNQKv7.js} +33 -33
  38. package/dist/{cli-CLHi2LEP.js → cli-MBTHCM04.js} +34 -34
  39. package/dist/{command-registry-OHfvK1Oq.js → command-registry-DRHBO07P.js} +11 -11
  40. package/dist/{commands-registry-DyWjIe7d.js → commands-registry-B_V42ZiZ.js} +1 -1
  41. package/dist/{commands-registry-Copoizgv.js → commands-registry-DN93gKlx.js} +1 -1
  42. package/dist/{commands-registry-uo2OKqdL.js → commands-registry-nK_mZXUN.js} +1 -1
  43. package/dist/{commands-registry-C3C4Rv3O.js → commands-registry-tuRMQmX4.js} +1 -1
  44. package/dist/{completion-cli-DSHmAUFN.js → completion-cli-By9Hj91p.js} +1 -1
  45. package/dist/{completion-cli-D7iBY_Z-.js → completion-cli-E2HmAubG.js} +2 -2
  46. package/dist/{config-BjGo9GnL.js → config-BUHRlrbS.js} +5 -2
  47. package/dist/{config-amjzHiWZ.js → config-COvlkain.js} +5 -2
  48. package/dist/{config-DM0K7qC1.js → config-C_1uZzwy.js} +5 -2
  49. package/dist/{config-Dgn_cL29.js → config-DB5jMj3Z.js} +5 -2
  50. package/dist/{config-cli-CcbYdW1-.js → config-cli-DaV2gvHS.js} +3 -3
  51. package/dist/{config-cli-BlusBXAA.js → config-cli-gvLM_Jmx.js} +3 -3
  52. package/dist/{config-guard-BpQn1MKk.js → config-guard-CP12zw3r.js} +2 -2
  53. package/dist/{config-guard-Cnu2qssk.js → config-guard-DLAUq-eu.js} +5 -5
  54. package/dist/{config-validation-BHjDr-an.js → config-validation-BdUdtuuI.js} +1 -1
  55. package/dist/{config-validation-pVfqbrLy.js → config-validation-CJNWEllT.js} +1 -1
  56. package/dist/{configure-CJf-vDqN.js → configure-BPdAIpJb.js} +11 -11
  57. package/dist/{configure-rrxn5n5n.js → configure-DjRUXJNv.js} +11 -11
  58. package/dist/{control-service-DVFF3PrV.js → control-service-CwdjvhxE.js} +4 -4
  59. package/dist/{control-service-DMz_CcLi.js → control-service-D670V6cS.js} +4 -4
  60. package/dist/control-ui/js/app.js +79 -0
  61. package/dist/control-ui/js/render.js +39 -0
  62. package/dist/{cron-cli-CMb8Tfrd.js → cron-cli-BVdg2ZHh.js} +4 -4
  63. package/dist/{cron-cli-B9s3FO4y.js → cron-cli-CWybZWLu.js} +4 -4
  64. package/dist/{daemon-cli-DY782AjS.js → daemon-cli-A0V_cYcw.js} +6 -6
  65. package/dist/{daemon-cli-duUjaj82.js → daemon-cli-BSKnv95o.js} +6 -6
  66. package/dist/daemon-cli.js +4 -1
  67. package/dist/{daemon-runtime-B38pOixq.js → daemon-runtime-BgbGrT3P.js} +1 -1
  68. package/dist/{daemon-runtime-CjgoCPLb.js → daemon-runtime-DtGPdsmL.js} +1 -1
  69. package/dist/{deliver-DONp5mgd.js → deliver-CUJWonlP.js} +3 -3
  70. package/dist/{deliver-B3UoBZdC.js → deliver-DXVMhb3A.js} +2 -2
  71. package/dist/{deliver-2Y_F_0yh.js → deliver-sMuSzZX6.js} +3 -3
  72. package/dist/{deliver-CZF9f8aC.js → deliver-wRQauy5B.js} +2 -2
  73. package/dist/{devices-cli-Ch8p42OS.js → devices-cli-Bwg8gUuS.js} +3 -3
  74. package/dist/{devices-cli-Cahrr6Rd.js → devices-cli-DBDevKR4.js} +3 -3
  75. package/dist/{directory-cli-B0H80BMR.js → directory-cli-2W4B1Ct_.js} +2 -2
  76. package/dist/{directory-cli-DH9ww80p.js → directory-cli-B9wwg8xg.js} +2 -2
  77. package/dist/{dm-policy-shared-BovJdm5T.js → dm-policy-shared-CvHrO6D_.js} +1 -1
  78. package/dist/{dm-policy-shared-DckBYBwg.js → dm-policy-shared-flFO0wFg.js} +1 -1
  79. package/dist/{dns-cli-CVMQnrzw.js → dns-cli-Dc8SoCMN.js} +2 -2
  80. package/dist/{dns-cli-Lzt29-Zu.js → dns-cli-go7hrLbV.js} +2 -2
  81. package/dist/{doctor-completion-B6R-Um0m.js → doctor-completion-CJ6GgqdP.js} +1 -1
  82. package/dist/{doctor-completion-Db9Ka2VX.js → doctor-completion-cGUMfSWW.js} +1 -1
  83. package/dist/{doctor-config-flow-C_56SUPO.js → doctor-config-flow-CSyqq_3u.js} +3 -3
  84. package/dist/{doctor-config-flow-B150h841.js → doctor-config-flow-DpVhYkFY.js} +3 -3
  85. package/dist/entry.js +1 -1
  86. package/dist/{exec-approvals-cli-CSTHY6Vs.js → exec-approvals-cli-Bc7-sWEN.js} +5 -5
  87. package/dist/{exec-approvals-cli-lduNEUnu.js → exec-approvals-cli-NGv-JYZx.js} +5 -5
  88. package/dist/extensionAPI.js +18 -18
  89. package/dist/{gateway-cli-VZ3pwSh3.js → gateway-cli-BACTzHef.js} +52 -52
  90. package/dist/{gateway-cli-DVzEvDKA.js → gateway-cli-DIUZJz3l.js} +51 -51
  91. package/dist/{gateway-rpc-BTXPWO6j.js → gateway-rpc-CzQ2-09T.js} +1 -1
  92. package/dist/{gateway-rpc-Cx0HPjI7.js → gateway-rpc-DijKM-l5.js} +1 -1
  93. package/dist/{gemini-auth-7AWT6JXV.js → gemini-auth-2cinXFeY.js} +1 -1
  94. package/dist/{gemini-auth-BHSrr2_B.js → gemini-auth-DmWoaMTb.js} +1 -1
  95. package/dist/{gemini-auth-K6vg8B5c.js → gemini-auth-DtBB7-5F.js} +1 -1
  96. package/dist/{glass-ui-ws-CAm9wWND.js → glass-ui-ws-BBYLD-43.js} +43 -43
  97. package/dist/{glass-ui-ws-DmPVzO59.js → glass-ui-ws-DMW9fQLQ.js} +42 -42
  98. package/dist/{health-CnH3J7xA.js → health-BIgxejdY.js} +5 -5
  99. package/dist/{health-CYZdOaco.js → health-D9sE5ymK.js} +5 -5
  100. package/dist/{hooks-cli-CHMoGB4O.js → hooks-cli-DnvETK6m.js} +34 -34
  101. package/dist/{hooks-cli-C7tb9Ef0.js → hooks-cli-EthBM_qY.js} +35 -35
  102. package/dist/{image-RFofsrof.js → image-Bf_jHnTg.js} +3 -3
  103. package/dist/{image-B4LY9KFw.js → image-CEcLOmLW.js} +3 -3
  104. package/dist/{image-DrZEJQwQ.js → image-DCArHTqR.js} +3 -3
  105. package/dist/{image-DOnOTocl.js → image-Kl1J-62v.js} +3 -3
  106. package/dist/index.js +42 -42
  107. package/dist/{lifecycle-core-De5BcVI4.js → lifecycle-core-fFRFJvPD.js} +2 -2
  108. package/dist/{lifecycle-core-BYV6-zd8.js → lifecycle-core-pG9T1o7U.js} +2 -2
  109. package/dist/llm-slug-generator.js +18 -18
  110. package/dist/{login-BH17fJ5L.js → login-BwU6oNNU.js} +2 -2
  111. package/dist/{login-BG_7eJLu.js → login-CM1U-ARd.js} +2 -2
  112. package/dist/{login-CXSct1EH.js → login-CvotLxMc.js} +2 -2
  113. package/dist/{login-BZYFLDxo.js → login-J-hL4MZQ.js} +2 -2
  114. package/dist/{login-qr-BLmEvZVj.js → login-qr-CADWVR1b.js} +3 -3
  115. package/dist/{login-qr-zVpxocbF.js → login-qr-CW01jgLl.js} +3 -3
  116. package/dist/{login-qr-DoNfx43Q.js → login-qr-CiPw9ee6.js} +3 -3
  117. package/dist/{login-qr-9OQSnm5L.js → login-qr-_FriwsNr.js} +3 -3
  118. package/dist/{logs-cli-Cvhx1c0V.js → logs-cli-DPaTYFru.js} +4 -4
  119. package/dist/{logs-cli-DUzUCojZ.js → logs-cli-mM7GM-9Q.js} +4 -4
  120. package/dist/{manager-oiX42wby.js → manager-Cw42HtQ7.js} +136 -19
  121. package/dist/{manager-C_DoJrcP.js → manager-D0d-bOOe.js} +136 -19
  122. package/dist/{manager-B5EXdBQV.js → manager-D5ZbBYmN.js} +136 -19
  123. package/dist/{manager-CYHgFXd8.js → manager-DqkRhYYl.js} +136 -19
  124. package/dist/{memory-cli-D4J9SO7Z.js → memory-cli-C7w-I03k.js} +206 -3
  125. package/dist/{memory-cli-BhnOq4Ev.js → memory-cli-Pp2xuPKC.js} +206 -3
  126. package/dist/{model-CLebVu_U.js → model-ApXxvnzl.js} +1 -1
  127. package/dist/{model-DaukLY-k.js → model-DDV7HL-B.js} +1 -1
  128. package/dist/{model-auth-CeL58m55.js → model-auth-Db8I8QVL.js} +6 -2
  129. package/dist/{model-catalog-Dj5pIc1G.js → model-catalog-61-kKlKu.js} +4 -4
  130. package/dist/{model-catalog-CX8kAHv8.js → model-catalog-QboGjwLO.js} +4 -4
  131. package/dist/{model-picker-ay4NPk8S.js → model-picker-CSnZDydf.js} +3 -3
  132. package/dist/{model-picker-CDXdeNr-.js → model-picker-iDZTbvXk.js} +3 -3
  133. package/dist/{model-selection-Csawd2_i.js → model-selection-BBrZnKDw.js} +6 -2
  134. package/dist/{model-selection--4t4F87n.js → model-selection-DBPwoBvb.js} +6 -2
  135. package/dist/{models-wHzbWyGd.js → models-B_oSANn2.js} +14 -14
  136. package/dist/{models-cli-CTptBZ1_.js → models-cli-CzdeeUpE.js} +40 -40
  137. package/dist/{models-cli-xt0_lwNn.js → models-cli-u62LAXdh.js} +39 -39
  138. package/dist/{models-config-u4va9_AO.js → models-config-BTd2aHYU.js} +2 -2
  139. package/dist/{models-config-Cb41NmVa.js → models-config-CMJN_5Vh.js} +2 -2
  140. package/dist/{node-cli-BhCoxgBf.js → node-cli-BEvFRkYC.js} +10 -10
  141. package/dist/{node-cli-C8scjTTR.js → node-cli-BQyxhqF5.js} +10 -10
  142. package/dist/{nodes-cli-DvFB1bRc.js → nodes-cli-C2hHbQ47.js} +4 -4
  143. package/dist/{nodes-cli-BHnGJEDY.js → nodes-cli-FbzJ-7tA.js} +4 -4
  144. package/dist/{onboard-CLT8dKkn.js → onboard-CwNzqMn1.js} +10 -10
  145. package/dist/{onboard-CqrqIyTw.js → onboard-DcBV5QjY.js} +10 -10
  146. package/dist/{onboard-channels-B1qEMRuK.js → onboard-channels-C0wtv2Cp.js} +2 -2
  147. package/dist/{onboard-channels-Dq99OYWi.js → onboard-channels-C79jGR3_.js} +2 -2
  148. package/dist/{onboard-custom-BKR6vm2R.js → onboard-custom-CwTH9Yg-.js} +3 -3
  149. package/dist/{onboard-custom-BPHkLBMT.js → onboard-custom-adn6IG8i.js} +3 -3
  150. package/dist/{onboard-helpers-Dsr4zKCb.js → onboard-helpers-Bt2zwkKD.js} +2 -2
  151. package/dist/{onboard-helpers-CYxzQfe5.js → onboard-helpers-CKM-mWPH.js} +2 -2
  152. package/dist/{onboard-remote-d48SMpNw.js → onboard-remote-C-4NSq0W.js} +1 -1
  153. package/dist/{onboard-remote-3c_muVej.js → onboard-remote-P6H-x_vQ.js} +1 -1
  154. package/dist/{onboard-skills-2HJIpm3O.js → onboard-skills-C9ZAlUR6.js} +2 -2
  155. package/dist/{onboard-skills-b_chEkYH.js → onboard-skills-DlbXWPzM.js} +2 -2
  156. package/dist/{onboarding-yfMTHyHB.js → onboarding-C2vTobUO.js} +11 -11
  157. package/dist/{onboarding-Bs82247P.js → onboarding-CT_P8dE6.js} +11 -11
  158. package/dist/{onboarding.finalize-QC0g7ZLU.js → onboarding.finalize-BdeyH2Eh.js} +39 -39
  159. package/dist/{onboarding.finalize-DkZuXXiU.js → onboarding.finalize-DPQDvxEp.js} +41 -41
  160. package/dist/{onboarding.gateway-config-BkXJPv7f.js → onboarding.gateway-config-DKVcVoUF.js} +5 -5
  161. package/dist/{onboarding.gateway-config-stm3z82Y.js → onboarding.gateway-config-IqmHGk2A.js} +5 -5
  162. package/dist/{openai-model-default-DF334-MD.js → openai-model-default-BMY_YH9P.js} +2 -2
  163. package/dist/{openai-model-default-DJwRgrAC.js → openai-model-default-l66tU27B.js} +2 -2
  164. package/dist/{outbound-Cedd_yui.js → outbound-0ici4ICv.js} +1 -1
  165. package/dist/{outbound-BNMysnJ1.js → outbound-BEumB8qs.js} +1 -1
  166. package/dist/{outbound-Bv4FdtnF.js → outbound-CzuytbQ5.js} +1 -1
  167. package/dist/{outbound-DfOF58G2.js → outbound-DTZdWgeZ.js} +1 -1
  168. package/dist/{pairing-cli-7_4ayuXX.js → pairing-cli-CUu3LyX0.js} +4 -4
  169. package/dist/{pairing-cli-B7oA36Ke.js → pairing-cli-D_9vmECc.js} +4 -4
  170. package/dist/{pairing-labels-B-WwqJ-z.js → pairing-labels-Ca15tgVV.js} +1 -1
  171. package/dist/{pairing-labels-sIj1ZLt-.js → pairing-labels-D_XOc2nT.js} +1 -1
  172. package/dist/{pairing-store-CFwkjcA5.js → pairing-store-DdUVpKvp.js} +1 -1
  173. package/dist/{pairing-store-CicZMhK8.js → pairing-store-cjckhuQX.js} +1 -1
  174. package/dist/{pi-auth-json-BNhcohVK.js → pi-auth-json-BJB80_DY.js} +1 -1
  175. package/dist/{pi-auth-json-DV2ruNQM.js → pi-auth-json-BqB9Z6Gg.js} +1 -1
  176. package/dist/{pi-auth-json-B83DuyYZ.js → pi-auth-json-Bzpuls50.js} +2 -2
  177. package/dist/{pi-auth-json-CNgAAznq.js → pi-auth-json-etIDtHw9.js} +1 -1
  178. package/dist/{pi-embedded-DDe6lqPs.js → pi-embedded-DUUw7-tO.js} +448 -60
  179. package/dist/{pi-embedded-B3nbPN60.js → pi-embedded-DmUwEsG1.js} +448 -60
  180. package/dist/{pi-embedded-helpers-kB5lBgXk.js → pi-embedded-helpers-CLip13MP.js} +6 -6
  181. package/dist/{pi-embedded-helpers-CgxKWHj9.js → pi-embedded-helpers-D57pDra0.js} +1 -1
  182. package/dist/{pi-embedded-helpers--yFTAWwW.js → pi-embedded-helpers-D9Rvkx8A.js} +6 -6
  183. package/dist/{pi-embedded-helpers-ueCT6VlS.js → pi-embedded-helpers-f7cnM8BN.js} +1 -1
  184. package/dist/{pi-tools.policy-T6Z5F-_n.js → pi-tools.policy-BV1RWUnE.js} +2 -2
  185. package/dist/{pi-tools.policy-DPmdlOwE.js → pi-tools.policy-BegHNtNO.js} +2 -2
  186. package/dist/{plugin-auto-enable-D4BRdbII.js → plugin-auto-enable-B-WfJQ_3.js} +1 -1
  187. package/dist/{plugin-auto-enable-DdvlcMuw.js → plugin-auto-enable-CdctkFTt.js} +1 -1
  188. package/dist/{plugin-registry-DWJeC9bW.js → plugin-registry-C80itc6t.js} +2 -2
  189. package/dist/{plugin-registry-SCI1BVkI.js → plugin-registry-DrYURaBs.js} +2 -2
  190. package/dist/plugin-sdk/agents/memory-search.d.ts +2 -2
  191. package/dist/plugin-sdk/agents/synthetic-models.d.ts +1 -1
  192. package/dist/plugin-sdk/agents/system-prompt.d.ts +2 -1
  193. package/dist/plugin-sdk/{api-key-rotation-Qy7QGV8_.js → api-key-rotation-DNKq8sDG.js} +1 -1
  194. package/dist/plugin-sdk/{audio-preflight-CpYjfwrA.js → audio-preflight-D5K2YgFn.js} +7 -7
  195. package/dist/plugin-sdk/{channel-web-BUTyAx0r.js → channel-web-Bkv0U1ox.js} +7 -7
  196. package/dist/plugin-sdk/{chrome-BFy_lpld.js → chrome-DJ6LIeRu.js} +1 -1
  197. package/dist/plugin-sdk/{commands-registry-CvppXodz.js → commands-registry-un-LmdXo.js} +1 -1
  198. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +2 -0
  199. package/dist/plugin-sdk/config/types.tools.d.ts +2 -2
  200. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +3 -2
  201. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +4 -4
  202. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +5 -4
  203. package/dist/plugin-sdk/config/zod-schema.d.ts +5 -4
  204. package/dist/plugin-sdk/{config-Do1-fcaS.js → config-8u0WDlgj.js} +5 -2
  205. package/dist/plugin-sdk/{deliver-BwnrMlHO.js → deliver-Bip_mCNI.js} +2 -2
  206. package/dist/plugin-sdk/{image-k_W1USVr.js → image-DX2HTDUY.js} +3 -3
  207. package/dist/plugin-sdk/index.js +22 -22
  208. package/dist/plugin-sdk/{login-DPofXJE3.js → login-CKLot2mH.js} +2 -2
  209. package/dist/plugin-sdk/{login-qr-CNatqAUv.js → login-qr-DOVV9TXm.js} +3 -3
  210. package/dist/plugin-sdk/{manager-DnoXj4EG.js → manager-BItSTruD.js} +136 -19
  211. package/dist/plugin-sdk/memory/embeddings-ollama.d.ts +27 -0
  212. package/dist/plugin-sdk/memory/embeddings.d.ts +4 -1
  213. package/dist/plugin-sdk/memory/manager-sync-ops.d.ts +1 -1
  214. package/dist/plugin-sdk/memory/manager.d.ts +1 -1
  215. package/dist/plugin-sdk/{model-selection-D6J2MZsj.js → model-selection-aEd_4vFO.js} +6 -2
  216. package/dist/plugin-sdk/{outbound-w5v_6nFD.js → outbound-uamhXJrA.js} +1 -1
  217. package/dist/plugin-sdk/{pi-auth-json-BmWuNdJA.js → pi-auth-json-FyiScmI7.js} +1 -1
  218. package/dist/plugin-sdk/{pi-embedded-helpers-Cs2-_EpL.js → pi-embedded-helpers-JY-1kHdk.js} +6 -6
  219. package/dist/plugin-sdk/{pw-ai-BoitXk7j.js → pw-ai-BG29-fkq.js} +3 -3
  220. package/dist/plugin-sdk/{replies-BU-tUT8j.js → replies-B1pTxZOl.js} +1 -1
  221. package/dist/plugin-sdk/{reply-CjWIATx5.js → reply-B576Fhv8.js} +446 -58
  222. package/dist/plugin-sdk/{runner-Br1179I4.js → runner-BL2UhCUB.js} +5 -5
  223. package/dist/plugin-sdk/{send-Ts2lINh9.js → send-CARqECtw.js} +1 -1
  224. package/dist/plugin-sdk/{send-CE6VxWke.js → send-CJEdtrU7.js} +1 -1
  225. package/dist/plugin-sdk/{send-P8PiZ2Os.js → send-DnSED91h.js} +2 -2
  226. package/dist/plugin-sdk/{send-Dkyi5g1U.js → send-e3xSJ8To.js} +1 -1
  227. package/dist/plugin-sdk/{send-BaLZTKkj.js → send-oZqyXIiB.js} +1 -1
  228. package/dist/plugin-sdk/{session-Bwdr4g-M.js → session-CzQVSJF5.js} +1 -1
  229. package/dist/plugin-sdk/{skill-commands-NTPqO_az.js → skill-commands-Cwps3qpb.js} +1 -1
  230. package/dist/plugin-sdk/{web-C1q3B85D.js → web-mZ4uDhBl.js} +22 -22
  231. package/dist/plugin-sdk/{whatsapp-actions-Di-yCTCj.js → whatsapp-actions-1-Mp-KwB.js} +3 -3
  232. package/dist/{plugins-cli-D2GDnmKk.js → plugins-cli-Cv9eBXlW.js} +34 -34
  233. package/dist/{plugins-cli-QSrupxLG.js → plugins-cli-Dnq6iHh8.js} +35 -35
  234. package/dist/{program-context-CIOqtCr8.js → program-context-D_OS2K8H.js} +38 -38
  235. package/dist/{program-7hcHnpYu.js → program-iimCXTOX.js} +41 -41
  236. package/dist/{prompt-select-styled-DpVAhv1V.js → prompt-select-styled-B1V6teLm.js} +17 -17
  237. package/dist/{prompt-select-styled-DC-k-kBQ.js → prompt-select-styled-BHDOHzSI.js} +17 -17
  238. package/dist/{provider-auth-helpers-BGhm_DOe.js → provider-auth-helpers-nXDpwc0f.js} +4 -4
  239. package/dist/{provider-auth-helpers-DvwmlisW.js → provider-auth-helpers-ozVqcIrR.js} +4 -4
  240. package/dist/{push-apns-CiOx7dgB.js → push-apns-BZ7FEmsK.js} +1 -1
  241. package/dist/{push-apns-BZu5OVg5.js → push-apns-Dmo8BBk4.js} +1 -1
  242. package/dist/{pw-ai-CQzJmf8V.js → pw-ai-3nNWe272.js} +3 -3
  243. package/dist/{pw-ai-CAkn033M.js → pw-ai-BUH9Ew6q.js} +3 -3
  244. package/dist/{pw-ai-C_C5as1t.js → pw-ai-DQuj9c2U.js} +3 -3
  245. package/dist/{pw-ai-CdaTpZo1.js → pw-ai-DhirpjMU.js} +3 -3
  246. package/dist/{qr-cli-Diq_Rb3t.js → qr-cli-CGS8DyNl.js} +2 -2
  247. package/dist/{qr-cli-DlVBiDQm.js → qr-cli-CHnzhKoc.js} +2 -2
  248. package/dist/{register.agent-CDD5Z9Fj.js → register.agent-BOuUXJJS.js} +43 -43
  249. package/dist/{register.agent-Ds6PkEYl.js → register.agent-DYzV2wmB.js} +45 -45
  250. package/dist/{register.configure-COyj6XWC.js → register.configure-C4oljj3F.js} +47 -47
  251. package/dist/{register.configure-CBRYdCX2.js → register.configure-CHvDZtU1.js} +48 -48
  252. package/dist/{register.maintenance-DwHXDl_N.js → register.maintenance-DIylvylR.js} +44 -44
  253. package/dist/{register.maintenance-CyJQDrP0.js → register.maintenance-DhprP_dA.js} +46 -46
  254. package/dist/{register.message-BNe6-SJE.js → register.message-B9SgsGyt.js} +35 -35
  255. package/dist/{register.message-CvQ7LEYe.js → register.message-DF4_1evm.js} +34 -34
  256. package/dist/{register.onboard-BxxfWU46.js → register.onboard-CdwNCs_L.js} +42 -42
  257. package/dist/{register.onboard-CuRnx0wV.js → register.onboard-DOJyYmJS.js} +43 -43
  258. package/dist/{register.setup-qmcQQ6EM.js → register.setup-0Due7c9e.js} +43 -43
  259. package/dist/{register.setup-B4rO_Fld.js → register.setup-DxV_KIbP.js} +42 -42
  260. package/dist/{register.status-health-sessions-CQ0_UB_j.js → register.status-health-sessions-C584c9tm.js} +38 -38
  261. package/dist/{register.status-health-sessions-4OEVg4h6.js → register.status-health-sessions-D1tqd_k_.js} +40 -40
  262. package/dist/{register.subclis-68XcQ3ao.js → register.subclis-DuON_fJu.js} +28 -28
  263. package/dist/{replies-QloQerhz.js → replies-BXYTRk0Z.js} +1 -1
  264. package/dist/{replies-D9V19U2-.js → replies-Bhx469BX.js} +1 -1
  265. package/dist/{replies-CTKReSzx.js → replies-BnmCXHdE.js} +1 -1
  266. package/dist/{replies-DqdOBkTB.js → replies-UxER0fi1.js} +1 -1
  267. package/dist/{reply-DI3kOl7x.js → reply-BzqL_47o.js} +257 -70
  268. package/dist/{routes-qIyRWgzF.js → routes-DH3bW8wF.js} +3 -3
  269. package/dist/{routes-BYphcpth.js → routes-lbqRkIBb.js} +3 -3
  270. package/dist/{rpc-CvzWzHjS.js → rpc-BkvZNT-M.js} +1 -1
  271. package/dist/{rpc-DfC0wvv1.js → rpc-DYXJGfFr.js} +1 -1
  272. package/dist/{run-main-DiJI5-hU.js → run-main-CcFCZNx_.js} +53 -53
  273. package/dist/{runner-DOvsNiYz.js → runner-BHZy2rvh.js} +5 -5
  274. package/dist/{runner-BXN4KYDK.js → runner-CNY0hwm-.js} +5 -5
  275. package/dist/{runner-VHq3quQZ.js → runner-CplzHJ1b.js} +5 -5
  276. package/dist/{runner-uDZlTCm2.js → runner-Cu0qqBIE.js} +5 -5
  277. package/dist/{sandbox-rMmahr2s.js → sandbox-B0QOR7Cn.js} +5 -5
  278. package/dist/{sandbox-cli-C90jqh9l.js → sandbox-cli-CPkB96x-.js} +7 -7
  279. package/dist/{sandbox-cli-Duc05KL9.js → sandbox-cli-DAY7EbKl.js} +7 -7
  280. package/dist/{sandbox-CbuJolk2.js → sandbox-psIl5_gT.js} +5 -5
  281. package/dist/{security-cli-BTcKFy-k.js → security-cli-Bolpxy60.js} +12 -12
  282. package/dist/{security-cli-BPqLtK8x.js → security-cli-C2ZKf8ET.js} +12 -12
  283. package/dist/{send-BVZGeP2r.js → send-8dFVpIIg.js} +1 -1
  284. package/dist/{send-CHOArYFe.js → send-BPqK6C8h.js} +1 -1
  285. package/dist/{send-D0dzPf6g.js → send-BVRNZ9hM.js} +1 -1
  286. package/dist/{send-CzE5UKr-.js → send-BbscKwuU.js} +1 -1
  287. package/dist/{send-Do-0Kcmv.js → send-Bj2SQQVP.js} +1 -1
  288. package/dist/{send-BeASPkFg.js → send-Bj3PJmrF.js} +1 -1
  289. package/dist/{send-De_WCeGZ.js → send-Bv-112XA.js} +1 -1
  290. package/dist/{send-BH09HKsX.js → send-C8fjzstb.js} +1 -1
  291. package/dist/{send-mi3NHnwI.js → send-C8ohJBK5.js} +2 -2
  292. package/dist/{send-BsocounR.js → send-CIvsJpdo.js} +2 -2
  293. package/dist/{send-BVw7fCyL.js → send-CUhH6I6A.js} +1 -1
  294. package/dist/{send-3YM-aarb.js → send-CWrxWRjz.js} +1 -1
  295. package/dist/{send-CYfaZNZ4.js → send-Ci0uVV_k.js} +1 -1
  296. package/dist/{send-C7u4_H5t.js → send-Ci3UEBVK.js} +1 -1
  297. package/dist/{send-hNornLoH.js → send-CzxMGZc_.js} +2 -2
  298. package/dist/{send-DEWzWqfZ.js → send-DEcC_kQP.js} +1 -1
  299. package/dist/{send-D16XtYvC.js → send-DPKghOxz.js} +1 -1
  300. package/dist/{send-D3M6pMr5.js → send-DZbplWNh.js} +1 -1
  301. package/dist/{send-D_yJMeJa.js → send-DiBs_eJc.js} +2 -2
  302. package/dist/{send-B18gkuvz.js → send-FW1P3D82.js} +1 -1
  303. package/dist/{server-context-bMIwnOnH.js → server-context-AHh7m1PV.js} +5 -5
  304. package/dist/{server-context-DG2dIhAy.js → server-context-cw7ha2ct.js} +5 -5
  305. package/dist/{server-methods-DnTo3Oou.js → server-methods-BriHyeA7.js} +17 -17
  306. package/dist/{server-methods-B_JpD0c-.js → server-methods-CJ7xa1ot.js} +18 -18
  307. package/dist/{server-node-events-IlWB4f_P.js → server-node-events-CCId0gGy.js} +34 -34
  308. package/dist/{server-node-events-t5pGPXLD.js → server-node-events-_q8duhVi.js} +35 -35
  309. package/dist/{session-BeJq-MLE.js → session-B4Bibpie.js} +1 -1
  310. package/dist/{session-T0JXlYWe.js → session-D4FMCkcS.js} +1 -1
  311. package/dist/{session-BjcsCwgz.js → session-Dw3zM2St.js} +1 -1
  312. package/dist/{session-BkVBeAkg.js → session-lD2CnIWX.js} +1 -1
  313. package/dist/{session-utils-Cdv2Qaq2.js → session-utils-DySzoW4O.js} +4 -4
  314. package/dist/{sessions-CX93jXmG.js → sessions-BVbSbD60.js} +4 -4
  315. package/dist/{sessions-DJAxaVI7.js → sessions-CRTZnttk.js} +2 -2
  316. package/dist/{sessions-BEyCtqBB.js → sessions-L4e356Ra.js} +2 -2
  317. package/dist/{shared-CMw4odDH.js → shared-DZ9YCnZC.js} +2 -2
  318. package/dist/{shared-CLXhDldI.js → shared-oaw6SrnD.js} +2 -2
  319. package/dist/{skill-commands-CWySL97a.js → skill-commands-BlfEmZ8t.js} +1 -1
  320. package/dist/{skill-commands-B64uavY9.js → skill-commands-C2kxEz5h.js} +1 -1
  321. package/dist/{skill-commands-DrFCB9F9.js → skill-commands-CSBmZ_di.js} +1 -1
  322. package/dist/{skill-commands-DWcJOIzP.js → skill-commands-C_ZNSYNS.js} +1 -1
  323. package/dist/{skills-cli-DIx7YItN.js → skills-cli-D9gvgM58.js} +2 -2
  324. package/dist/{skills-cli-CQ7XQ4Kn.js → skills-cli-DBVcmBEp.js} +2 -2
  325. package/dist/{status-s1Tp-jVl.js → status-BUX2e6T-.js} +11 -11
  326. package/dist/{status-cWLYsK8x.js → status-C6UoBmkd.js} +2 -2
  327. package/dist/{status-BXQGCrxj.js → status-DJDE9f6i.js} +12 -12
  328. package/dist/{status-kOpLSgWJ.js → status-oObYVZk-.js} +2 -2
  329. package/dist/{status.update-DlaskfTr.js → status.update-CbAFtv61.js} +1 -1
  330. package/dist/{status.update-BXs3adtg.js → status.update-qDyKo2AJ.js} +1 -1
  331. package/dist/{subagent-registry-XHBZsH3Q.js → subagent-registry-BmP1Rhns.js} +258 -71
  332. package/dist/{system-cli-DPNDYRBr.js → system-cli-DpluDf4c.js} +4 -4
  333. package/dist/{system-cli-D10NhXw1.js → system-cli-gtr03ReO.js} +4 -4
  334. package/dist/{systemd-hints-Bm2H1erP.js → systemd-hints-Bmr_bzjF.js} +1 -1
  335. package/dist/{systemd-hints-BBPT8Use.js → systemd-hints-CnG98ooq.js} +1 -1
  336. package/dist/{tui-pvq_HI-q.js → tui-DnLFki4B.js} +16 -7
  337. package/dist/{tui-4d-MyU6O.js → tui-UMEqttti.js} +16 -7
  338. package/dist/{tui-cli-BsSKYVE3.js → tui-cli-ChVrbXQ7.js} +11 -11
  339. package/dist/{tui-cli-9uTZZ13F.js → tui-cli-DaL5S2ce.js} +11 -11
  340. package/dist/{update-cli-B3VC_mrH.js → update-cli-Bxb34ox7.js} +49 -49
  341. package/dist/{update-cli-_1YRH17q.js → update-cli-C-zL3WoC.js} +47 -47
  342. package/dist/{update-runner-Dsc1_XOK.js → update-runner-D9rjTCpa.js} +1 -1
  343. package/dist/{update-runner-DBbX4Iin.js → update-runner-rav9ZMjZ.js} +1 -1
  344. package/dist/{web-JIG-oxRW.js → web-4xYayj1G.js} +37 -37
  345. package/dist/{web-DjgeLZ5l.js → web-BS91XHKA.js} +21 -21
  346. package/dist/{web-DzjJ_iNt.js → web-DlKbVYgh.js} +37 -37
  347. package/dist/{web-CmZZsoMg.js → web-OmlhMCcZ.js} +21 -21
  348. package/dist/{webhooks-cli-B0Crq2Ec.js → webhooks-cli-BxXpx8Hu.js} +2 -2
  349. package/dist/{webhooks-cli-CLIdArAE.js → webhooks-cli-CvbEWtdd.js} +2 -2
  350. package/dist/{whatsapp-actions-Jfx4zcwv.js → whatsapp-actions-7xW0TEHg.js} +3 -3
  351. package/dist/{whatsapp-actions-B821AFp-.js → whatsapp-actions-B3zu-BhB.js} +3 -3
  352. package/dist/{whatsapp-actions-BL7tCNC_.js → whatsapp-actions-BWERIEcF.js} +3 -3
  353. package/dist/{whatsapp-actions-BIjGyW3T.js → whatsapp-actions-DAFOi466.js} +3 -3
  354. package/dist/{with-timeout-Cj_xUxo6.js → with-timeout-C6nbJrH1.js} +1 -1
  355. package/dist/{with-timeout-BeA4Jxcl.js → with-timeout-CNkLG3QR.js} +1 -1
  356. package/docs/reference/templates/SYMIPULSE.md +23 -1
  357. package/package.json +1 -1
@@ -8,11 +8,11 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYu
8
8
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
9
9
  import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
10
10
  import { n as retryAsync } from "./retry-ilSJqnz9.js";
11
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-Dkyi5g1U.js";
12
- import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-Do1-fcaS.js";
11
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, 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 buildChannelKeyCandidates, 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 applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-e3xSJ8To.js";
12
+ import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-8u0WDlgj.js";
13
13
  import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
14
14
  import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
15
- import { A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, G as normalizeSecretInput, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_MODEL, K as resolveAuthProfileDisplayLabel, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, Q as resolveShellEnvFallbackTimeoutMs, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as getShellPathFromLoginShell, Y as DEFAULT_PROVIDER, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-D6J2MZsj.js";
15
+ import { A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, G as normalizeSecretInput, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_MODEL, K as resolveAuthProfileDisplayLabel, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, Q as resolveShellEnvFallbackTimeoutMs, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as getShellPathFromLoginShell, Y as DEFAULT_PROVIDER, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as DEFAULT_CONTEXT_TOKENS, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-aEd_4vFO.js";
16
16
  import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-C3gMMKCU.js";
17
17
  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-B3ugY9-f.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Bv8oZiTO.js";
@@ -27,38 +27,38 @@ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel
27
27
  import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
28
28
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
29
29
  import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
30
- 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-Ts2lINh9.js";
30
+ 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-CARqECtw.js";
31
31
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
32
32
  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-B7YyMnIi.js";
33
- import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-BaLZTKkj.js";
34
- import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-P8PiZ2Os.js";
35
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-Br1179I4.js";
33
+ import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-oZqyXIiB.js";
34
+ import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DnSED91h.js";
35
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BL2UhCUB.js";
36
36
  import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
37
37
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
38
- import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-NTPqO_az.js";
38
+ import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-Cwps3qpb.js";
39
39
  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-B1GeRYlu.js";
40
- import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-BFy_lpld.js";
40
+ import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-DJ6LIeRu.js";
41
41
  import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
42
42
  import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
43
43
  import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
44
- import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-BwnrMlHO.js";
45
- import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-Cs2-_EpL.js";
44
+ import { C as getGlobalHookRunner, S as throwIfAborted, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as splitMediaFromOutput, 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 parseReplyDirectives, w as initializeGlobalHookRunner, x as parseInlineDirectives$1, y as MEDIA_TOKEN_RE } from "./deliver-Bip_mCNI.js";
45
+ import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-JY-1kHdk.js";
46
46
  import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
47
47
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
49
49
  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-mFf4i4G9.js";
50
50
  import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
52
- import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-k_W1USVr.js";
52
+ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-DX2HTDUY.js";
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
54
  import { d as listMemoryFiles, f as normalizeExtraMemoryPaths, v as runTasksWithConcurrency } from "./sqlite-Cq_7Cg4E.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
- import { n as resolveMemorySearchConfig } from "./manager-DnoXj4EG.js";
57
- 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-CvppXodz.js";
58
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-CE6VxWke.js";
56
+ import { i as resolveMemorySearchConfig, n as probeOllamaEmbeddingModels, r as resolveOllamaBaseUrl } from "./manager-BItSTruD.js";
57
+ 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-un-LmdXo.js";
58
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-CJEdtrU7.js";
59
59
  import { t as makeProxyFetch } from "./proxy-MquBDehr.js";
60
60
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-D3JH_D2N.js";
61
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BU-tUT8j.js";
61
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-B1pTxZOl.js";
62
62
  import { t as getActiveWebListener } from "./active-listener-bEk__wbB.js";
63
63
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CBq0jVRw.js";
64
64
  import { createRequire } from "node:module";
@@ -7790,7 +7790,7 @@ async function createModelSelectionState(params) {
7790
7790
  }
7791
7791
  }
7792
7792
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
7793
- const { ensureAuthProfileStore } = await import("./model-selection-D6J2MZsj.js").then((n) => n.O);
7793
+ const { ensureAuthProfileStore } = await import("./model-selection-aEd_4vFO.js").then((n) => n.O);
7794
7794
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
7795
7795
  const providerKey = normalizeProviderId(provider);
7796
7796
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -11554,7 +11554,7 @@ async function getMemorySearchManager(params) {
11554
11554
  const wrapper = new FallbackMemoryManager({
11555
11555
  primary,
11556
11556
  fallbackFactory: async () => {
11557
- const { MemoryIndexManager } = await import("./manager-DnoXj4EG.js").then((n) => n.t);
11557
+ const { MemoryIndexManager } = await import("./manager-BItSTruD.js").then((n) => n.t);
11558
11558
  return await MemoryIndexManager.get(params);
11559
11559
  }
11560
11560
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11567,7 +11567,7 @@ async function getMemorySearchManager(params) {
11567
11567
  }
11568
11568
  }
11569
11569
  try {
11570
- const { MemoryIndexManager } = await import("./manager-DnoXj4EG.js").then((n) => n.t);
11570
+ const { MemoryIndexManager } = await import("./manager-BItSTruD.js").then((n) => n.t);
11571
11571
  return { manager: await MemoryIndexManager.get(params) };
11572
11572
  } catch (err) {
11573
11573
  return {
@@ -15483,7 +15483,7 @@ async function routeReply(params) {
15483
15483
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
15484
15484
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
15485
15485
  try {
15486
- const { deliverOutboundPayloads } = await import("./deliver-BwnrMlHO.js").then((n) => n.n);
15486
+ const { deliverOutboundPayloads } = await import("./deliver-Bip_mCNI.js").then((n) => n.n);
15487
15487
  return {
15488
15488
  ok: true,
15489
15489
  messageId: (await deliverOutboundPayloads({
@@ -17957,7 +17957,7 @@ async function describeStickerImage(params) {
17957
17957
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
17958
17958
  try {
17959
17959
  const buffer = await fs$1.readFile(imagePath);
17960
- const { describeImageWithModel } = await import("./image-k_W1USVr.js").then((n) => n.n);
17960
+ const { describeImageWithModel } = await import("./image-DX2HTDUY.js").then((n) => n.n);
17961
17961
  return (await describeImageWithModel({
17962
17962
  buffer,
17963
17963
  fileName: "sticker.webp",
@@ -18368,7 +18368,7 @@ function createWhatsAppLoginTool() {
18368
18368
  force: Type.Optional(Type.Boolean())
18369
18369
  }),
18370
18370
  execute: async (_toolCallId, args) => {
18371
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-CNatqAUv.js");
18371
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DOVV9TXm.js");
18372
18372
  if ((args?.action ?? "start") === "wait") {
18373
18373
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
18374
18374
  return {
@@ -19055,6 +19055,207 @@ function registerMemoryCli(program) {
19055
19055
  }
19056
19056
  });
19057
19057
  });
19058
+ memory.command("setup").description("Auto-detect and configure the best embedding provider").option("--agent <id>", "Agent id (default: default agent)").option("--dry-run", "Show what would be configured without writing", false).option("--verbose", "Verbose logging", false).action(async (opts) => {
19059
+ setVerbose(Boolean(opts.verbose));
19060
+ await runMemorySetup(opts);
19061
+ });
19062
+ }
19063
+ async function detectEmbeddingProviders(cfg) {
19064
+ const detected = [];
19065
+ const ollamaProbe = await probeOllamaEmbeddingModels(resolveOllamaBaseUrl(cfg));
19066
+ if (ollamaProbe && ollamaProbe.models.length > 0) detected.push({
19067
+ id: "ollama",
19068
+ model: ollamaProbe.models[0],
19069
+ baseUrl: ollamaProbe.baseUrl,
19070
+ reason: `Ollama at ${ollamaProbe.baseUrl} — ${ollamaProbe.models[0]}`
19071
+ });
19072
+ for (const remote of [
19073
+ {
19074
+ id: "openai",
19075
+ envKey: "OPENAI_API_KEY",
19076
+ defaultModel: "text-embedding-3-small"
19077
+ },
19078
+ {
19079
+ id: "gemini",
19080
+ envKey: "GEMINI_API_KEY",
19081
+ defaultModel: "gemini-embedding-001"
19082
+ },
19083
+ {
19084
+ id: "voyage",
19085
+ envKey: "VOYAGE_API_KEY",
19086
+ defaultModel: "voyage-4-large"
19087
+ }
19088
+ ]) {
19089
+ const envValue = process.env[remote.envKey]?.trim();
19090
+ let hasKey = Boolean(envValue);
19091
+ if (!hasKey) try {
19092
+ const resolved = await resolveApiKeyForProvider({
19093
+ provider: remote.id,
19094
+ cfg
19095
+ });
19096
+ hasKey = Boolean(resolved?.apiKey);
19097
+ } catch {}
19098
+ if (hasKey) detected.push({
19099
+ id: remote.id,
19100
+ model: remote.defaultModel,
19101
+ reason: `${remote.id} — API key found`
19102
+ });
19103
+ }
19104
+ return detected;
19105
+ }
19106
+ function setNestedValue$1(obj, path, value) {
19107
+ let current = obj;
19108
+ for (let i = 0; i < path.length - 1; i++) {
19109
+ const key = path[i];
19110
+ if (current[key] === void 0 || typeof current[key] !== "object" || current[key] === null) current[key] = {};
19111
+ current = current[key];
19112
+ }
19113
+ current[path[path.length - 1]] = value;
19114
+ }
19115
+ async function runMemorySetup(opts) {
19116
+ const rich = isRich();
19117
+ const heading = (text) => colorize(rich, theme.heading, text);
19118
+ const success = (text) => colorize(rich, theme.success, text);
19119
+ const warn = (text) => colorize(rich, theme.warn, text);
19120
+ const info = (text) => colorize(rich, theme.info, text);
19121
+ const muted = (text) => colorize(rich, theme.muted, text);
19122
+ const cfg = loadConfig();
19123
+ const agentId = resolveAgent(cfg, opts.agent);
19124
+ defaultRuntime.log(heading("Detecting embedding providers..."));
19125
+ defaultRuntime.log("");
19126
+ const detected = await detectEmbeddingProviders(cfg);
19127
+ const ollamaBase = resolveOllamaBaseUrl(cfg);
19128
+ const ollamaFound = detected.some((d) => d.id === "ollama");
19129
+ const openaiFound = detected.some((d) => d.id === "openai");
19130
+ const geminiFound = detected.some((d) => d.id === "gemini");
19131
+ const voyageFound = detected.some((d) => d.id === "voyage");
19132
+ if (ollamaFound) defaultRuntime.log(` ${success("✓")} ${detected.find((d) => d.id === "ollama").reason}`);
19133
+ else defaultRuntime.log(` ${warn("✗")} Ollama — not reachable at ${ollamaBase} or no embedding models`);
19134
+ if (openaiFound) defaultRuntime.log(` ${success("✓")} ${detected.find((d) => d.id === "openai").reason}`);
19135
+ else defaultRuntime.log(` ${warn("✗")} OpenAI — no API key`);
19136
+ if (geminiFound) defaultRuntime.log(` ${success("✓")} ${detected.find((d) => d.id === "gemini").reason}`);
19137
+ else defaultRuntime.log(` ${warn("✗")} Gemini — no API key`);
19138
+ if (voyageFound) defaultRuntime.log(` ${success("✓")} ${detected.find((d) => d.id === "voyage").reason}`);
19139
+ else defaultRuntime.log(` ${warn("✗")} Voyage — no API key`);
19140
+ defaultRuntime.log("");
19141
+ if (detected.length === 0) {
19142
+ defaultRuntime.error("No embedding providers detected.");
19143
+ defaultRuntime.error("");
19144
+ defaultRuntime.error("To fix, do one of:");
19145
+ defaultRuntime.error(" - Install Ollama and pull an embedding model: ollama pull nomic-embed-text");
19146
+ defaultRuntime.error(" - Set OPENAI_API_KEY environment variable");
19147
+ defaultRuntime.error(" - Set GEMINI_API_KEY or VOYAGE_API_KEY environment variable");
19148
+ process.exitCode = 1;
19149
+ return;
19150
+ }
19151
+ const best = detected[0];
19152
+ defaultRuntime.log(`${heading("Configuring:")} ${info(best.id)} (${best.model})`);
19153
+ if (opts.dryRun) {
19154
+ defaultRuntime.log(muted(" (dry run — no changes written)"));
19155
+ const configProvider = best.id === "ollama" ? "openai" : best.id;
19156
+ defaultRuntime.log(` provider = ${info(configProvider)}${best.id === "ollama" ? muted(" (via Ollama)") : ""}`);
19157
+ defaultRuntime.log(` model = ${info(best.model)}`);
19158
+ if (best.baseUrl) {
19159
+ const configUrl = best.id === "ollama" ? `${best.baseUrl}/v1` : best.baseUrl;
19160
+ defaultRuntime.log(` remote.baseUrl = ${info(configUrl)}`);
19161
+ }
19162
+ return;
19163
+ }
19164
+ const snapshot = await readConfigFileSnapshot();
19165
+ const next = structuredClone(snapshot.resolved);
19166
+ const memPath = [
19167
+ "agents",
19168
+ "defaults",
19169
+ "memorySearch"
19170
+ ];
19171
+ setNestedValue$1(next, [...memPath, "enabled"], true);
19172
+ setNestedValue$1(next, [...memPath, "sources"], ["memory", "sessions"]);
19173
+ if (best.id === "ollama" && best.baseUrl) {
19174
+ setNestedValue$1(next, [...memPath, "provider"], "openai");
19175
+ setNestedValue$1(next, [...memPath, "model"], best.model);
19176
+ setNestedValue$1(next, [
19177
+ ...memPath,
19178
+ "remote",
19179
+ "baseUrl"
19180
+ ], `${best.baseUrl}/v1`);
19181
+ setNestedValue$1(next, [
19182
+ ...memPath,
19183
+ "remote",
19184
+ "apiKey"
19185
+ ], "ollama-local");
19186
+ } else {
19187
+ setNestedValue$1(next, [...memPath, "provider"], best.id);
19188
+ setNestedValue$1(next, [...memPath, "model"], best.model);
19189
+ if (best.baseUrl) setNestedValue$1(next, [
19190
+ ...memPath,
19191
+ "remote",
19192
+ "baseUrl"
19193
+ ], best.baseUrl);
19194
+ }
19195
+ await writeConfigFile(next);
19196
+ defaultRuntime.log(` ${success("✓")} Updated symi.json`);
19197
+ defaultRuntime.log("");
19198
+ defaultRuntime.log(heading("Indexing memory files..."));
19199
+ const freshCfg = loadConfig();
19200
+ let indexOk = false;
19201
+ await withMemoryManagerForAgent({
19202
+ cfg: freshCfg,
19203
+ agentId,
19204
+ run: async (manager) => {
19205
+ const syncFn = manager.sync ? manager.sync.bind(manager) : void 0;
19206
+ if (!syncFn) {
19207
+ defaultRuntime.log(warn(" Memory backend does not support indexing."));
19208
+ return;
19209
+ }
19210
+ try {
19211
+ await withProgressTotals({
19212
+ label: "Indexing memory…",
19213
+ total: 0
19214
+ }, async (update, progress) => {
19215
+ await syncFn({
19216
+ reason: "cli",
19217
+ force: true,
19218
+ progress: (syncUpdate) => {
19219
+ update({
19220
+ completed: syncUpdate.completed,
19221
+ total: syncUpdate.total,
19222
+ label: syncUpdate.label
19223
+ });
19224
+ if (syncUpdate.label) progress.setLabel(syncUpdate.label);
19225
+ }
19226
+ });
19227
+ });
19228
+ const status = manager.status();
19229
+ defaultRuntime.log(` ${success("✓")} ${status.files ?? 0} files → ${status.chunks ?? 0} chunks` + (status.vector?.dims ? ` (${status.vector.dims}-dim vectors)` : ""));
19230
+ indexOk = true;
19231
+ } catch (err) {
19232
+ defaultRuntime.error(` ${warn("✗")} Index failed: ${formatErrorMessage(err)}`);
19233
+ }
19234
+ }
19235
+ });
19236
+ if (!indexOk) {
19237
+ process.exitCode = 1;
19238
+ return;
19239
+ }
19240
+ defaultRuntime.log("");
19241
+ defaultRuntime.log(heading("Verifying search..."));
19242
+ await withMemoryManagerForAgent({
19243
+ cfg: freshCfg,
19244
+ agentId,
19245
+ run: async (manager) => {
19246
+ try {
19247
+ const results = await manager.search("test memory verification", { maxResults: 3 });
19248
+ defaultRuntime.log(` ${success("✓")} Test query returned ${results.length} results` + (results.length > 0 ? ` (score ${results[results.length - 1].score.toFixed(2)}–${results[0].score.toFixed(2)})` : ""));
19249
+ } catch (err) {
19250
+ defaultRuntime.log(` ${warn("✗")} Search verification failed: ${formatErrorMessage(err)}`);
19251
+ process.exitCode = 1;
19252
+ return;
19253
+ }
19254
+ }
19255
+ });
19256
+ defaultRuntime.log("");
19257
+ defaultRuntime.log(success("Memory system is fully operational."));
19258
+ defaultRuntime.log(muted("Restart the gateway to apply: systemctl --user restart symi-gateway"));
19058
19259
  }
19059
19260
 
19060
19261
  //#endregion
@@ -20235,7 +20436,7 @@ async function preflightDiscordMessage(params) {
20235
20436
  let preflightTranscript;
20236
20437
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
20237
20438
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
20238
- const { transcribeFirstAudio } = await import("./audio-preflight-CpYjfwrA.js");
20439
+ const { transcribeFirstAudio } = await import("./audio-preflight-D5K2YgFn.js");
20239
20440
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
20240
20441
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
20241
20442
  ctx: {
@@ -25444,8 +25645,8 @@ function buildMemorySection(params) {
25444
25645
  lines.push("");
25445
25646
  return lines;
25446
25647
  }
25447
- function buildUserIdentitySection(ownerLine, isMinimal) {
25448
- if (!ownerLine || isMinimal) return [];
25648
+ function buildUserIdentitySection(ownerLine, isMinimal, isCoding) {
25649
+ if (!ownerLine || isMinimal || isCoding) return [];
25449
25650
  return [
25450
25651
  "## Authorized Senders",
25451
25652
  ownerLine,
@@ -25469,8 +25670,8 @@ function buildTimeSection(params) {
25469
25670
  ""
25470
25671
  ];
25471
25672
  }
25472
- function buildReplyTagsSection(isMinimal) {
25473
- if (isMinimal) return [];
25673
+ function buildReplyTagsSection(isMinimal, isCoding) {
25674
+ if (isMinimal || isCoding) return [];
25474
25675
  return [
25475
25676
  "## Reply Tags",
25476
25677
  "To request a native reply/quote on supported surfaces, include one tag in your reply:",
@@ -25483,7 +25684,7 @@ function buildReplyTagsSection(isMinimal) {
25483
25684
  ];
25484
25685
  }
25485
25686
  function buildMessagingSection(params) {
25486
- if (params.isMinimal) return [];
25687
+ if (params.isMinimal || params.isCoding) return [];
25487
25688
  return [
25488
25689
  "## Messaging",
25489
25690
  "- Reply in current session → automatically routes to the source channel (Signal, Telegram, etc.)",
@@ -25506,7 +25707,7 @@ function buildMessagingSection(params) {
25506
25707
  ];
25507
25708
  }
25508
25709
  function buildVoiceSection(params) {
25509
- if (params.isMinimal) return [];
25710
+ if (params.isMinimal || params.isCoding) return [];
25510
25711
  const hint = params.ttsHint?.trim();
25511
25712
  if (!hint) return [];
25512
25713
  return [
@@ -25515,6 +25716,71 @@ function buildVoiceSection(params) {
25515
25716
  ""
25516
25717
  ];
25517
25718
  }
25719
+ function buildVerifyYourWorkSection(params) {
25720
+ if (params.isMinimal) return [];
25721
+ const exec = params.execToolName;
25722
+ const read = params.readToolName;
25723
+ return [
25724
+ "## Verify Your Work",
25725
+ [
25726
+ "Before delivering any code, script, configuration, or technical artifact, you MUST perform a structured verification pass.",
25727
+ "Skipping verification is the single most common cause of incomplete or broken outputs.",
25728
+ "Treat this section as mandatory for every coding task, not optional polish."
25729
+ ].join(" "),
25730
+ "",
25731
+ "### 1. Re-read the request",
25732
+ [
25733
+ "Before you finalize your response, re-read the user's original message (and any follow-ups) in full.",
25734
+ "Extract every discrete requirement, constraint, and preference they stated.",
25735
+ "Write them down internally as a checklist.",
25736
+ "This catches drift: it is easy to start solving a related-but-different problem mid-task."
25737
+ ].join(" "),
25738
+ "",
25739
+ "### 2. Check each requirement against your output",
25740
+ [
25741
+ "Walk through your internal checklist point by point.",
25742
+ "For each requirement, locate the exact lines in your output that satisfy it.",
25743
+ "If you cannot point to concrete lines that fulfill a requirement, the work is not done — go back and address the gap before responding.",
25744
+ "Pay special attention to edge cases, error handling, and boundary conditions the user mentioned."
25745
+ ].join(" "),
25746
+ "",
25747
+ "### 3. Run the code",
25748
+ [
25749
+ `Whenever possible, use ${exec} to actually run, compile, lint, or test your code before presenting it.`,
25750
+ "Do not guess whether code works — execute it and observe the result.",
25751
+ "If the code produces errors, fix them and re-run until it succeeds.",
25752
+ "For scripts: run them with representative inputs.",
25753
+ "For libraries/modules: write and execute a minimal smoke test.",
25754
+ "For config files: validate syntax (e.g., json, yaml, toml parsers).",
25755
+ "If execution is genuinely impossible (no runtime available, user explicitly said not to run), state that you were unable to verify execution and explain why."
25756
+ ].join(" "),
25757
+ "",
25758
+ "### 4. Include tests when requested",
25759
+ [
25760
+ "If the user asked for tests, they are a hard requirement — not a nice-to-have.",
25761
+ "Deliver the tests alongside the implementation, not as an afterthought.",
25762
+ "Run the tests and confirm they pass before responding.",
25763
+ "If the user did not explicitly ask for tests but the change is non-trivial, consider whether a test would catch a regression and offer one."
25764
+ ].join(" "),
25765
+ "",
25766
+ "### 5. Self-review",
25767
+ [
25768
+ `After everything above, use ${read} to re-read any files you created or modified.`,
25769
+ "Look at them with fresh eyes as if reviewing someone else's code.",
25770
+ "Check for: typos, missing imports, unused variables, inconsistent naming, hardcoded values that should be configurable, incomplete error handling, and security issues (exposed secrets, injection vectors, missing input validation).",
25771
+ "If you find problems during self-review, fix them, re-run verification, and only then respond."
25772
+ ].join(" "),
25773
+ "",
25774
+ "### Verification failures",
25775
+ [
25776
+ "If any step above reveals a gap, do NOT respond with a partial answer and a disclaimer.",
25777
+ "Instead, fix the issue silently and re-verify.",
25778
+ "The user should receive working, complete output — not a draft with known issues.",
25779
+ "Only flag genuinely unresolvable ambiguities (where you need the user's decision to proceed)."
25780
+ ].join(" "),
25781
+ ""
25782
+ ];
25783
+ }
25518
25784
  function buildDocsSection(params) {
25519
25785
  const docsPath = params.docsPath?.trim();
25520
25786
  if (!docsPath || params.isMinimal) return [];
@@ -25639,6 +25905,7 @@ function buildAgentSystemPrompt(params) {
25639
25905
  const messageChannelOptions = listDeliverableMessageChannels().join("|");
25640
25906
  const promptMode = params.promptMode ?? "full";
25641
25907
  const isMinimal = promptMode === "minimal" || promptMode === "none";
25908
+ const isCoding = promptMode === "coding";
25642
25909
  const sandboxContainerWorkspace = params.sandboxInfo?.containerWorkspaceDir?.trim();
25643
25910
  const sanitizedWorkspaceDir = sanitizeForPromptLiteral(params.workspaceDir);
25644
25911
  const sanitizedSandboxContainerWorkspace = sandboxContainerWorkspace ? sanitizeForPromptLiteral(sandboxContainerWorkspace) : "";
@@ -25715,19 +25982,19 @@ function buildAgentSystemPrompt(params) {
25715
25982
  "",
25716
25983
  ...skillsSection,
25717
25984
  ...memorySection,
25718
- hasGateway && !isMinimal ? "## Symi Self-Update" : "",
25719
- hasGateway && !isMinimal ? [
25985
+ hasGateway && !isMinimal && !isCoding ? "## Symi Self-Update" : "",
25986
+ hasGateway && !isMinimal && !isCoding ? [
25720
25987
  "Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
25721
25988
  "Do not run config.apply or update.run unless the user explicitly requests an update or config change; if it's not explicit, ask first.",
25722
25989
  "Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
25723
25990
  "After restart, Symi pings the last active session automatically."
25724
25991
  ].join("\n") : "",
25725
- hasGateway && !isMinimal ? "" : "",
25992
+ hasGateway && !isMinimal && !isCoding ? "" : "",
25726
25993
  "",
25727
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "## Model Aliases" : "",
25728
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "Prefer aliases when specifying model overrides; full provider/model is also accepted." : "",
25729
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? params.modelAliasLines.join("\n") : "",
25730
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "" : "",
25994
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "## Model Aliases" : "",
25995
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "Prefer aliases when specifying model overrides; full provider/model is also accepted." : "",
25996
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? params.modelAliasLines.join("\n") : "",
25997
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "" : "",
25731
25998
  userTimezone ? "If you need the current date, time, or day of week, run session_status (📊 session_status)." : "",
25732
25999
  "## Workspace",
25733
26000
  `Your working directory is: ${displayWorkspaceDir}`,
@@ -25735,6 +26002,11 @@ function buildAgentSystemPrompt(params) {
25735
26002
  ...workspaceNotes,
25736
26003
  "",
25737
26004
  ...docsSection,
26005
+ ...buildVerifyYourWorkSection({
26006
+ isMinimal,
26007
+ execToolName,
26008
+ readToolName
26009
+ }),
25738
26010
  params.sandboxInfo?.enabled ? "## Sandbox" : "",
25739
26011
  params.sandboxInfo?.enabled ? [
25740
26012
  "You are running in a sandboxed runtime (tools execute in Docker).",
@@ -25752,14 +26024,15 @@ function buildAgentSystemPrompt(params) {
25752
26024
  params.sandboxInfo.elevated?.allowed ? `Current elevated level: ${params.sandboxInfo.elevated.defaultLevel} (ask runs exec on host with approvals; full auto-approves).` : ""
25753
26025
  ].filter(Boolean).join("\n") : "",
25754
26026
  params.sandboxInfo?.enabled ? "" : "",
25755
- ...buildUserIdentitySection(ownerLine, isMinimal),
26027
+ ...buildUserIdentitySection(ownerLine, isMinimal, isCoding),
25756
26028
  ...buildTimeSection({ userTimezone }),
25757
26029
  "## Workspace Files (injected)",
25758
26030
  "These user-editable files are loaded by Symi and included below in Project Context.",
25759
26031
  "",
25760
- ...buildReplyTagsSection(isMinimal),
26032
+ ...buildReplyTagsSection(isMinimal, isCoding),
25761
26033
  ...buildMessagingSection({
25762
26034
  isMinimal,
26035
+ isCoding,
25763
26036
  availableTools,
25764
26037
  messageChannelOptions,
25765
26038
  inlineButtonsEnabled,
@@ -25768,6 +26041,7 @@ function buildAgentSystemPrompt(params) {
25768
26041
  }),
25769
26042
  ...buildVoiceSection({
25770
26043
  isMinimal,
26044
+ isCoding,
25771
26045
  ttsHint: params.ttsHint
25772
26046
  })
25773
26047
  ];
@@ -25807,8 +26081,8 @@ function buildAgentSystemPrompt(params) {
25807
26081
  lines.push("");
25808
26082
  for (const file of validContextFiles) lines.push(`## ${file.path}`, "", file.content, "");
25809
26083
  }
25810
- if (!isMinimal) 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}`, "");
25811
- if (!isMinimal) 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.", "");
26084
+ 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}`, "");
26085
+ 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.", "");
25812
26086
  lines.push("## Runtime", buildRuntimeLine(runtimeInfo, runtimeChannel, runtimeCapabilities, params.defaultThinkLevel), `Reasoning: ${reasoningLevel} (hidden unless on/stream). Toggle /reasoning; /status shows Reasoning when enabled.`);
25813
26087
  return lines.filter(Boolean).join("\n");
25814
26088
  }
@@ -26835,27 +27109,27 @@ async function runWithImageModelFallback(params) {
26835
27109
  function createDefaultDeps() {
26836
27110
  return {
26837
27111
  sendMessageWhatsApp: async (...args) => {
26838
- const { sendMessageWhatsApp } = await import("./web-C1q3B85D.js");
27112
+ const { sendMessageWhatsApp } = await import("./web-mZ4uDhBl.js");
26839
27113
  return await sendMessageWhatsApp(...args);
26840
27114
  },
26841
27115
  sendMessageTelegram: async (...args) => {
26842
- const { sendMessageTelegram } = await import("./send-P8PiZ2Os.js").then((n) => n.l);
27116
+ const { sendMessageTelegram } = await import("./send-DnSED91h.js").then((n) => n.l);
26843
27117
  return await sendMessageTelegram(...args);
26844
27118
  },
26845
27119
  sendMessageDiscord: async (...args) => {
26846
- const { sendMessageDiscord } = await import("./send-Dkyi5g1U.js").then((n) => n.t);
27120
+ const { sendMessageDiscord } = await import("./send-e3xSJ8To.js").then((n) => n.t);
26847
27121
  return await sendMessageDiscord(...args);
26848
27122
  },
26849
27123
  sendMessageSlack: async (...args) => {
26850
- const { sendMessageSlack } = await import("./send-BaLZTKkj.js").then((n) => n.n);
27124
+ const { sendMessageSlack } = await import("./send-oZqyXIiB.js").then((n) => n.n);
26851
27125
  return await sendMessageSlack(...args);
26852
27126
  },
26853
27127
  sendMessageSignal: async (...args) => {
26854
- const { sendMessageSignal } = await import("./send-CE6VxWke.js").then((n) => n.i);
27128
+ const { sendMessageSignal } = await import("./send-CJEdtrU7.js").then((n) => n.i);
26855
27129
  return await sendMessageSignal(...args);
26856
27130
  },
26857
27131
  sendMessageIMessage: async (...args) => {
26858
- const { sendMessageIMessage } = await import("./send-Ts2lINh9.js").then((n) => n.n);
27132
+ const { sendMessageIMessage } = await import("./send-CARqECtw.js").then((n) => n.n);
26859
27133
  return await sendMessageIMessage(...args);
26860
27134
  }
26861
27135
  };
@@ -37062,7 +37336,7 @@ function readSlackExternalArgMenuToken(raw) {
37062
37336
  }
37063
37337
  let commandsRegistry;
37064
37338
  async function getCommandsRegistry() {
37065
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-CvppXodz.js").then((n) => n.n);
37339
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-un-LmdXo.js").then((n) => n.n);
37066
37340
  return commandsRegistry;
37067
37341
  }
37068
37342
  function encodeSlackCommandArgValue(parts) {
@@ -37465,7 +37739,7 @@ async function registerSlackMonitorSlashCommands(params) {
37465
37739
  });
37466
37740
  const deliverSlashPayloads = async (replies) => {
37467
37741
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
37468
- import("./replies-BU-tUT8j.js").then((n) => n.r),
37742
+ import("./replies-B1pTxZOl.js").then((n) => n.r),
37469
37743
  import("./chunk-jvk9axTQ.js").then((n) => n.s),
37470
37744
  import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
37471
37745
  ]);
@@ -37520,7 +37794,7 @@ async function registerSlackMonitorSlashCommands(params) {
37520
37794
  let nativeCommands = [];
37521
37795
  if (nativeEnabled) {
37522
37796
  reg = await getCommandsRegistry();
37523
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-NTPqO_az.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
37797
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-Cwps3qpb.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
37524
37798
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
37525
37799
  skillCommands,
37526
37800
  provider: "slack"
@@ -42301,7 +42575,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
42301
42575
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
42302
42576
  let preflightTranscript;
42303
42577
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
42304
- const { transcribeFirstAudio } = await import("./audio-preflight-CpYjfwrA.js");
42578
+ const { transcribeFirstAudio } = await import("./audio-preflight-D5K2YgFn.js");
42305
42579
  preflightTranscript = await transcribeFirstAudio({
42306
42580
  ctx: {
42307
42581
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -44446,23 +44720,23 @@ let webLoginQrPromise = null;
44446
44720
  let webChannelPromise = null;
44447
44721
  let whatsappActionsPromise = null;
44448
44722
  function loadWebOutbound() {
44449
- webOutboundPromise ??= import("./outbound-w5v_6nFD.js").then((n) => n.t);
44723
+ webOutboundPromise ??= import("./outbound-uamhXJrA.js").then((n) => n.t);
44450
44724
  return webOutboundPromise;
44451
44725
  }
44452
44726
  function loadWebLogin() {
44453
- webLoginPromise ??= import("./login-DPofXJE3.js").then((n) => n.n);
44727
+ webLoginPromise ??= import("./login-CKLot2mH.js").then((n) => n.n);
44454
44728
  return webLoginPromise;
44455
44729
  }
44456
44730
  function loadWebLoginQr() {
44457
- webLoginQrPromise ??= import("./login-qr-CNatqAUv.js");
44731
+ webLoginQrPromise ??= import("./login-qr-DOVV9TXm.js");
44458
44732
  return webLoginQrPromise;
44459
44733
  }
44460
44734
  function loadWebChannel() {
44461
- webChannelPromise ??= import("./web-C1q3B85D.js");
44735
+ webChannelPromise ??= import("./web-mZ4uDhBl.js");
44462
44736
  return webChannelPromise;
44463
44737
  }
44464
44738
  function loadWhatsAppActions() {
44465
- whatsappActionsPromise ??= import("./whatsapp-actions-Di-yCTCj.js");
44739
+ whatsappActionsPromise ??= import("./whatsapp-actions-1-Mp-KwB.js");
44466
44740
  return whatsappActionsPromise;
44467
44741
  }
44468
44742
  function createPluginRuntime() {
@@ -63705,7 +63979,7 @@ async function compactEmbeddedPiSessionDirect(params) {
63705
63979
  config: params.config
63706
63980
  });
63707
63981
  const isDefaultAgent = sessionAgentId === defaultAgentId;
63708
- const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : "full";
63982
+ const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : params.config?.agents?.defaults?.promptMode === "coding" ? "coding" : "full";
63709
63983
  const docsPath = await resolveSymiDocsPath({
63710
63984
  workspaceDir: effectiveWorkspace,
63711
63985
  argv1: process.argv[1],
@@ -63945,6 +64219,9 @@ function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
63945
64219
  const streamParams = {};
63946
64220
  if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
63947
64221
  if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
64222
+ if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
64223
+ if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
64224
+ if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
63948
64225
  const cacheRetention = resolveCacheRetention(extraParams, provider);
63949
64226
  if (cacheRetention) streamParams.cacheRetention = cacheRetention;
63950
64227
  if (Object.keys(streamParams).length === 0) return;
@@ -67225,7 +67502,7 @@ async function runEmbeddedAttempt(params) {
67225
67502
  }
67226
67503
  });
67227
67504
  const isDefaultAgent = sessionAgentId === defaultAgentId;
67228
- const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : "full";
67505
+ const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : params.config?.agents?.defaults?.promptMode === "coding" ? "coding" : "full";
67229
67506
  const docsPath = await resolveSymiDocsPath({
67230
67507
  workspaceDir: effectiveWorkspace,
67231
67508
  argv1: process.argv[1],
@@ -68240,6 +68517,7 @@ async function runEmbeddedPiAgent(params) {
68240
68517
  let lastRunPromptUsage;
68241
68518
  let autoCompactionCount = 0;
68242
68519
  let runLoopIterations = 0;
68520
+ let verificationPassCompleted = false;
68243
68521
  try {
68244
68522
  while (true) {
68245
68523
  if (runLoopIterations >= MAX_RUN_LOOP_ITERATIONS) {
@@ -68609,6 +68887,116 @@ async function runEmbeddedPiAgent(params) {
68609
68887
  suppressToolErrorWarnings: params.suppressToolErrorWarnings,
68610
68888
  inlineToolResultsAllowed: false
68611
68889
  });
68890
+ if (!verificationPassCompleted && !aborted && !timedOut && !promptError && payloads.length > 0 && !isCronSessionKey(params.sessionKey) && !isSubagentSessionKey(params.sessionKey)) {
68891
+ const CODE_TOOL_NAMES = new Set([
68892
+ "exec",
68893
+ "bash",
68894
+ "write",
68895
+ "edit",
68896
+ "file_write",
68897
+ "file_edit",
68898
+ "write_file",
68899
+ "edit_file",
68900
+ "create_file",
68901
+ "patch"
68902
+ ]);
68903
+ const hasCodeToolUsage = attempt.toolMetas.some((tm) => CODE_TOOL_NAMES.has(tm.toolName.toLowerCase()));
68904
+ const hasCodeBlocks = attempt.assistantTexts.some((text) => /```[\s\S]*?```/.test(text));
68905
+ if (hasCodeToolUsage || hasCodeBlocks) {
68906
+ verificationPassCompleted = true;
68907
+ log$2.debug(`[verification] starting verification pass: runId=${params.runId} sessionId=${params.sessionId} trigger=${hasCodeToolUsage ? "tool_usage" : "code_blocks"}`);
68908
+ const verificationPrompt = "Review your response against the original user request. Check: (1) Did you address every requirement? (2) Did you include tests if requested? (3) Did you run and verify the code works? If you missed anything, fix it now. If everything looks correct, briefly confirm.";
68909
+ try {
68910
+ const verifyAttempt = await runEmbeddedAttempt({
68911
+ sessionId: params.sessionId,
68912
+ sessionKey: params.sessionKey,
68913
+ messageChannel: params.messageChannel,
68914
+ messageProvider: params.messageProvider,
68915
+ agentAccountId: params.agentAccountId,
68916
+ messageTo: params.messageTo,
68917
+ messageThreadId: params.messageThreadId,
68918
+ groupId: params.groupId,
68919
+ groupChannel: params.groupChannel,
68920
+ groupSpace: params.groupSpace,
68921
+ spawnedBy: params.spawnedBy,
68922
+ senderIsOwner: params.senderIsOwner,
68923
+ currentChannelId: params.currentChannelId,
68924
+ currentThreadTs: params.currentThreadTs,
68925
+ replyToMode: params.replyToMode,
68926
+ hasRepliedRef: params.hasRepliedRef,
68927
+ sessionFile: params.sessionFile,
68928
+ workspaceDir: resolvedWorkspace,
68929
+ agentDir,
68930
+ config: params.config,
68931
+ skillsSnapshot: params.skillsSnapshot,
68932
+ prompt: verificationPrompt,
68933
+ images: void 0,
68934
+ disableTools: params.disableTools,
68935
+ provider,
68936
+ modelId,
68937
+ model,
68938
+ authStorage,
68939
+ modelRegistry,
68940
+ agentId: workspaceResolution.agentId,
68941
+ thinkLevel,
68942
+ verboseLevel: params.verboseLevel,
68943
+ reasoningLevel: params.reasoningLevel,
68944
+ toolResultFormat: resolvedToolResultFormat,
68945
+ execOverrides: params.execOverrides,
68946
+ bashElevated: params.bashElevated,
68947
+ timeoutMs: params.timeoutMs,
68948
+ runId: params.runId,
68949
+ abortSignal: params.abortSignal,
68950
+ shouldEmitToolResult: params.shouldEmitToolResult,
68951
+ shouldEmitToolOutput: params.shouldEmitToolOutput,
68952
+ onPartialReply: params.onPartialReply,
68953
+ onAssistantMessageStart: params.onAssistantMessageStart,
68954
+ onBlockReply: params.onBlockReply,
68955
+ onBlockReplyFlush: params.onBlockReplyFlush,
68956
+ blockReplyBreak: params.blockReplyBreak,
68957
+ blockReplyChunking: params.blockReplyChunking,
68958
+ onReasoningStream: params.onReasoningStream,
68959
+ onReasoningEnd: params.onReasoningEnd,
68960
+ onToolResult: params.onToolResult,
68961
+ onAgentEvent: params.onAgentEvent,
68962
+ extraSystemPrompt: params.extraSystemPrompt,
68963
+ inputProvenance: params.inputProvenance,
68964
+ streamParams: params.streamParams,
68965
+ ownerNumbers: params.ownerNumbers,
68966
+ enforceFinalTag: params.enforceFinalTag
68967
+ });
68968
+ const verifyUsage = normalizeUsage(verifyAttempt.lastAssistant?.usage);
68969
+ mergeUsageIntoAccumulator(usageAccumulator, verifyAttempt.attemptUsage ?? verifyUsage);
68970
+ if (verifyAttempt.compactionCount) autoCompactionCount += verifyAttempt.compactionCount;
68971
+ const verifyHasToolUsage = verifyAttempt.toolMetas.length > 0;
68972
+ const verifyHasContent = verifyAttempt.assistantTexts.some((t) => t.trim().length > 0);
68973
+ if (verifyHasToolUsage || verifyHasContent) {
68974
+ const verifyPayloads = buildEmbeddedRunPayloads({
68975
+ assistantTexts: [...attempt.assistantTexts, ...verifyAttempt.assistantTexts],
68976
+ toolMetas: [...attempt.toolMetas, ...verifyAttempt.toolMetas],
68977
+ lastAssistant: verifyAttempt.lastAssistant ?? attempt.lastAssistant,
68978
+ lastToolError: verifyAttempt.lastToolError ?? attempt.lastToolError,
68979
+ config: params.config,
68980
+ sessionKey: params.sessionKey ?? params.sessionId,
68981
+ provider: activeErrorContext.provider,
68982
+ model: activeErrorContext.model,
68983
+ verboseLevel: params.verboseLevel,
68984
+ reasoningLevel: params.reasoningLevel,
68985
+ toolResultFormat: resolvedToolResultFormat,
68986
+ suppressToolErrorWarnings: params.suppressToolErrorWarnings,
68987
+ inlineToolResultsAllowed: false
68988
+ });
68989
+ if (verifyPayloads.length > 0) {
68990
+ payloads.length = 0;
68991
+ payloads.push(...verifyPayloads);
68992
+ }
68993
+ log$2.debug(`[verification] verification produced corrections: runId=${params.runId} tools=${verifyAttempt.toolMetas.length} texts=${verifyAttempt.assistantTexts.length}`);
68994
+ } else log$2.debug(`[verification] verification confirmed original response: runId=${params.runId}`);
68995
+ } catch (verifyErr) {
68996
+ log$2.warn(`[verification] verification pass failed, keeping original response: runId=${params.runId} error=${String(verifyErr)}`);
68997
+ }
68998
+ }
68999
+ }
68612
69000
  if (timedOut && !timedOutDuringCompaction && payloads.length === 0) return {
68613
69001
  payloads: [{
68614
69002
  text: "Request timed out before a response was generated. Please try again, or increase `agents.defaults.timeoutSeconds` in your config.",
@@ -76523,7 +76911,7 @@ async function deliverSessionMaintenanceWarning(params) {
76523
76911
  return;
76524
76912
  }
76525
76913
  try {
76526
- const { deliverOutboundPayloads } = await import("./deliver-BwnrMlHO.js").then((n) => n.n);
76914
+ const { deliverOutboundPayloads } = await import("./deliver-Bip_mCNI.js").then((n) => n.n);
76527
76915
  await deliverOutboundPayloads({
76528
76916
  cfg: params.cfg,
76529
76917
  channel,