@symerian/symi 2.0.17 → 2.0.19

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 (352) hide show
  1. package/dist/{acp-cli-SgZGC8og.js → acp-cli-bbOWOXnN.js} +3 -3
  2. package/dist/{acp-cli-DqQjT50N.js → acp-cli-sXld4yJl.js} +3 -3
  3. package/dist/{agents-C4_0TzXm.js → agents-CENGwpKH.js} +8 -8
  4. package/dist/{agents.config-Bneyaqn6.js → agents.config-CgNflQtq.js} +1 -1
  5. package/dist/{agents.config-D9Ufj9CE.js → agents.config-WhJPXBWO.js} +1 -1
  6. package/dist/{api-key-rotation-BukD0zzl.js → api-key-rotation-De1ivBc0.js} +1 -1
  7. package/dist/{audio-preflight-BiAp3Hvj.js → audio-preflight-BxuYnm6k.js} +7 -7
  8. package/dist/{audio-preflight-Cpsd8C3J.js → audio-preflight-DCHBMKWE.js} +13 -13
  9. package/dist/{audio-preflight-mSUx5I34.js → audio-preflight-Djedh6Uc.js} +7 -7
  10. package/dist/{audio-preflight-5w1q1hWh.js → audio-preflight-USnUISOE.js} +13 -13
  11. package/dist/{audit-BCHYqYge.js → audit-DpqAVLn7.js} +7 -7
  12. package/dist/{audit-FH7mu_3g.js → audit-Dxa-KhrA.js} +7 -7
  13. package/dist/{auth-choice-B8qrETy7.js → auth-choice-BdZAR0l8.js} +7 -7
  14. package/dist/{auth-choice-5u4JonD1.js → auth-choice-upc_PcJy.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-CufnkY4K.js → banner-BE8pGhkj.js} +1 -1
  19. package/dist/{browser-cli-Cmyh_mQi.js → browser-cli-8URbjVyN.js} +4 -4
  20. package/dist/{browser-cli-n1RQ8OQs.js → browser-cli-DQ0DQymk.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-BKOIc76f.js → call-B-p451Eo.js} +1 -1
  25. package/dist/{call-C30ffTSt.js → call-Cspuh_Jh.js} +1 -1
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{channel-options-BBDX9s3H.js → channel-options-BPQpyMzn.js} +1 -1
  28. package/dist/{channel-options-CxOu5Gvn.js → channel-options-DEmvgalQ.js} +1 -1
  29. package/dist/{channel-web-DxSaM7GA.js → channel-web-Djcjl6S4.js} +8 -8
  30. package/dist/{channels-cli-CvtvmTOx.js → channels-cli-Cps6htRW.js} +39 -39
  31. package/dist/{channels-cli-CB6lWL72.js → channels-cli-Dn9ahV_w.js} +38 -38
  32. package/dist/{chrome-1cQdPKbv.js → chrome-BUUMKYz7.js} +8 -8
  33. package/dist/{chrome-CPwj5x24.js → chrome-Chj8uCZN.js} +1 -1
  34. package/dist/{chrome-DPu6LSX4.js → chrome-DGb_CkF8.js} +8 -8
  35. package/dist/{chrome-CUsfMVUk.js → chrome-XQjc7KSW.js} +1 -1
  36. package/dist/cli/daemon-cli.js +1 -1
  37. package/dist/{cli-CU_pJKCD.js → cli-Df__rsHc.js} +33 -33
  38. package/dist/{cli-cDOiHmL7.js → cli-atR7r3t-.js} +34 -34
  39. package/dist/{command-registry-D1zcgjTn.js → command-registry-Yv0ZBYYd.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-C8TsFimX.js → completion-cli-BCDS6oHd.js} +2 -2
  45. package/dist/{completion-cli-DWcx6gc6.js → completion-cli-Bw-2RaGe.js} +1 -1
  46. package/dist/{config-BLe0R4JX.js → config-BMStjqdp.js} +5 -2
  47. package/dist/{config-CvuX_y8t.js → config-Bh5BJYfZ.js} +5 -2
  48. package/dist/{config-ClXqj_D1.js → config-Crs8V2FU.js} +5 -2
  49. package/dist/{config-DehS9e5w.js → config-CxnbOYs8.js} +5 -2
  50. package/dist/{config-cli-DcjOWFbW.js → config-cli-BK-o9KUV.js} +3 -3
  51. package/dist/{config-cli-CEp26CMt.js → config-cli-CQJtnjeK.js} +3 -3
  52. package/dist/{config-guard-CGgFpviD.js → config-guard-CNwpT-bm.js} +5 -5
  53. package/dist/{config-guard-Ix_EcPkt.js → config-guard-DvNDqIJp.js} +2 -2
  54. package/dist/{config-validation-Ct_myZSl.js → config-validation-D0ku5PSk.js} +1 -1
  55. package/dist/{config-validation-BQnULegl.js → config-validation-g8v4CRxO.js} +1 -1
  56. package/dist/{configure-DbqI2Bgi.js → configure-D1fWVt_Z.js} +11 -11
  57. package/dist/{configure-B3aYKtwN.js → configure-D6i9bdDN.js} +11 -11
  58. package/dist/{control-service-CZ8lXYgi.js → control-service-B7EmYYFH.js} +4 -4
  59. package/dist/{control-service-DI1Do6Nn.js → control-service-BwrQoUMh.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-NJy3v3Eb.js → cron-cli-D-nqfPZ5.js} +4 -4
  63. package/dist/{cron-cli-BH6kt3EZ.js → cron-cli-D9nGEQiu.js} +4 -4
  64. package/dist/{daemon-cli-BuOGkn7L.js → daemon-cli-DJR87xEg.js} +6 -6
  65. package/dist/{daemon-cli-CweZn-1O.js → daemon-cli-l5oXLo3n.js} +6 -6
  66. package/dist/daemon-cli.js +4 -1
  67. package/dist/{daemon-runtime-D1K-9VEC.js → daemon-runtime-BkVgNwLi.js} +1 -1
  68. package/dist/{daemon-runtime-C1t_OfMD.js → daemon-runtime-D4sIbUkl.js} +1 -1
  69. package/dist/{deliver-D8xILUUI.js → deliver-8_lPbrcf.js} +2 -2
  70. package/dist/{deliver-CIc_l0o6.js → deliver-8jOk1f3v.js} +3 -3
  71. package/dist/{deliver-DqqfC-g1.js → deliver-C0Azi_cK.js} +3 -3
  72. package/dist/{deliver-BorDF5OG.js → deliver-mS1WnuiB.js} +2 -2
  73. package/dist/{devices-cli-BE5ZzcA7.js → devices-cli-CaK3Ausk.js} +3 -3
  74. package/dist/{devices-cli-BUdOf8m2.js → devices-cli-V6vhbLKq.js} +3 -3
  75. package/dist/{directory-cli-BBdctcDF.js → directory-cli-BmNzLgXc.js} +2 -2
  76. package/dist/{directory-cli-DQHIn9um.js → directory-cli-Cd9lchia.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-mCiUyfvk.js → dns-cli-BEOWeAGR.js} +2 -2
  80. package/dist/{dns-cli-6H_E37de.js → dns-cli-mH-jPqkH.js} +2 -2
  81. package/dist/{doctor-completion-CAdewURI.js → doctor-completion-CCRu96-k.js} +1 -1
  82. package/dist/{doctor-completion-CXUM27y3.js → doctor-completion-DblWjsvi.js} +1 -1
  83. package/dist/{doctor-config-flow-CthAM9my.js → doctor-config-flow-Dd6-lC3V.js} +3 -3
  84. package/dist/{doctor-config-flow-BWD9G2UQ.js → doctor-config-flow-Dpnvu5A2.js} +3 -3
  85. package/dist/entry.js +1 -1
  86. package/dist/{exec-approvals-cli-CjU3pZzx.js → exec-approvals-cli-Dlf9s8ne.js} +5 -5
  87. package/dist/{exec-approvals-cli-CYKHeoEA.js → exec-approvals-cli-lDvry8Xq.js} +5 -5
  88. package/dist/extensionAPI.js +18 -18
  89. package/dist/{gateway-cli-n-kmAuP8.js → gateway-cli-B7kUZfUu.js} +51 -51
  90. package/dist/{gateway-cli-Bs96hk7L.js → gateway-cli-CaelVnat.js} +52 -52
  91. package/dist/{gateway-rpc-CTqBFfgd.js → gateway-rpc-CCYQR5Bz.js} +1 -1
  92. package/dist/{gateway-rpc-0C2uJScX.js → gateway-rpc-aJiLRbJG.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-mIHlWvBv.js → glass-ui-ws-CMCfE_8I.js} +42 -42
  97. package/dist/{glass-ui-ws-DFYRIWTO.js → glass-ui-ws-CzHgG5_-.js} +43 -43
  98. package/dist/{health-gsbXEgFI.js → health-C8krNwSF.js} +5 -5
  99. package/dist/{health-CpbZDInE.js → health-CiMUQ2KG.js} +5 -5
  100. package/dist/{hooks-cli-iVG6fkFc.js → hooks-cli-C8fq5oKx.js} +34 -34
  101. package/dist/{hooks-cli-SJWnM2SY.js → hooks-cli-CYHfc5jB.js} +35 -35
  102. package/dist/{image-DrkD-6sg.js → image-BTLvoV0e.js} +3 -3
  103. package/dist/{image-DIzd7Gw9.js → image-CNYGLoQl.js} +3 -3
  104. package/dist/{image-GHA29jwQ.js → image-DCnQz5jN.js} +3 -3
  105. package/dist/{image-DWOvY8sR.js → image-bJzFwVE3.js} +3 -3
  106. package/dist/index.js +42 -42
  107. package/dist/{lifecycle-core-CPLYFbS4.js → lifecycle-core-C7fyJOuN.js} +2 -2
  108. package/dist/{lifecycle-core-CE8aXuLe.js → lifecycle-core-f8oPRRaQ.js} +2 -2
  109. package/dist/llm-slug-generator.js +18 -18
  110. package/dist/{login-BcCF4noU.js → login-BZsZO9ST.js} +2 -2
  111. package/dist/{login-_Ynqrjet.js → login-C2C1yAD8.js} +2 -2
  112. package/dist/{login-DNeGXcjV.js → login-CJf4Gdbq.js} +2 -2
  113. package/dist/{login-C5eMLg1G.js → login-DTkUG4Mp.js} +2 -2
  114. package/dist/{login-qr-DjXNemMm.js → login-qr-BSm4xrHW.js} +3 -3
  115. package/dist/{login-qr-E4YwhoPt.js → login-qr-C4uL0W0C.js} +3 -3
  116. package/dist/{login-qr-CzD7_Pru.js → login-qr-CBPis3I2.js} +3 -3
  117. package/dist/{login-qr-CYEYc0Vo.js → login-qr-rvsxQT5p.js} +3 -3
  118. package/dist/{logs-cli-CIQ4qmRW.js → logs-cli-9__MsacS.js} +4 -4
  119. package/dist/{logs-cli-BLp5AOM0.js → logs-cli-DJJ4_QXv.js} +4 -4
  120. package/dist/{manager-oQJvFR6J.js → manager-Cw42HtQ7.js} +2 -2
  121. package/dist/{manager-Oiy1uHsu.js → manager-D0d-bOOe.js} +2 -2
  122. package/dist/{manager-BmHL5ETi.js → manager-D5ZbBYmN.js} +2 -2
  123. package/dist/{manager-CPQ2pEj3.js → manager-DqkRhYYl.js} +2 -2
  124. package/dist/{memory-cli-CGRSXKeF.js → memory-cli-D5iikkSG.js} +5 -5
  125. package/dist/{memory-cli-BUoM-v1-.js → memory-cli-OWL3A7_N.js} +5 -5
  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-sW2MkIv9.js → model-catalog-Dq60dweH.js} +4 -4
  130. package/dist/{model-catalog-DZbVIJnH.js → model-catalog-jhBOlBYp.js} +4 -4
  131. package/dist/{model-picker-BJBeaNrK.js → model-picker-Bsyh5aNH.js} +3 -3
  132. package/dist/{model-picker-DUl7Gvdh.js → model-picker-C1U-Jt0h.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-LtuCAbk5.js → models-Cyr_kMKD.js} +14 -14
  136. package/dist/{models-cli-DEQCqsfo.js → models-cli-Ds0-bgOC.js} +39 -39
  137. package/dist/{models-cli-CB2zHB3Q.js → models-cli-H_wXDrQs.js} +40 -40
  138. package/dist/{models-config-DT09Fas0.js → models-config-CjPV5JrE.js} +2 -2
  139. package/dist/{models-config-BH6-rmtt.js → models-config-vcoi9QfD.js} +2 -2
  140. package/dist/{node-cli-BnZT8tc-.js → node-cli-B9nJomOA.js} +10 -10
  141. package/dist/{node-cli-znp1IPL2.js → node-cli-DHVafAR8.js} +10 -10
  142. package/dist/{nodes-cli-C8L5ablK.js → nodes-cli-CyVFmnaa.js} +4 -4
  143. package/dist/{nodes-cli-D3bHqKX1.js → nodes-cli-fvPbfbB4.js} +4 -4
  144. package/dist/{onboard-Dz7lPFv1.js → onboard-B-lQ356l.js} +10 -10
  145. package/dist/{onboard-B725u5vG.js → onboard-BSMzd6sG.js} +10 -10
  146. package/dist/{onboard-channels-DjG2jZUq.js → onboard-channels-C_p8450m.js} +2 -2
  147. package/dist/{onboard-channels-DPb8R8S3.js → onboard-channels-CfoFMyCh.js} +2 -2
  148. package/dist/{onboard-custom-CFqoXgjd.js → onboard-custom-CpKrCcyH.js} +3 -3
  149. package/dist/{onboard-custom-in5WChfX.js → onboard-custom-DsPk-82B.js} +3 -3
  150. package/dist/{onboard-helpers-BmDQMRZ7.js → onboard-helpers-C9emwuya.js} +2 -2
  151. package/dist/{onboard-helpers-_sSsfEAa.js → onboard-helpers-DIAvDwi8.js} +2 -2
  152. package/dist/{onboard-remote-BeAAhzmD.js → onboard-remote-CJrAdmgq.js} +1 -1
  153. package/dist/{onboard-remote-CBEIs-Ew.js → onboard-remote-DQu1ERap.js} +1 -1
  154. package/dist/{onboard-skills-EVFmwR8Q.js → onboard-skills-BC-T_r3T.js} +2 -2
  155. package/dist/{onboard-skills-Bx_OM5v0.js → onboard-skills-CtX6zH5x.js} +2 -2
  156. package/dist/{onboarding-D-FQIiBn.js → onboarding-CCO17f35.js} +11 -11
  157. package/dist/{onboarding-qxWeXuGM.js → onboarding-CEg1sg-w.js} +11 -11
  158. package/dist/{onboarding.finalize-D_gWQwW0.js → onboarding.finalize-B0eG7XwQ.js} +39 -39
  159. package/dist/{onboarding.finalize-DJTQnGkJ.js → onboarding.finalize-CD7SmwyJ.js} +41 -41
  160. package/dist/{onboarding.gateway-config-r7VeJWM7.js → onboarding.gateway-config-Cr1fFG05.js} +5 -5
  161. package/dist/{onboarding.gateway-config-Boplq1Mn.js → onboarding.gateway-config-GDMTEWcW.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-DRslTBga.js → outbound-DXyOHKUR.js} +1 -1
  165. package/dist/{outbound-DPCAcHLQ.js → outbound-DYyGKxSZ.js} +1 -1
  166. package/dist/{outbound-yaYfpPTu.js → outbound-Qgo51Q1x.js} +1 -1
  167. package/dist/{outbound-B_cf2WkB.js → outbound-btxNyARe.js} +1 -1
  168. package/dist/{pairing-cli-DOMZSDiT.js → pairing-cli-DC6MUFHZ.js} +4 -4
  169. package/dist/{pairing-cli-DFgfVeeY.js → pairing-cli-m3BrxJoY.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-Do26xypW.js → pi-auth-json-Ba2dEWAH.js} +2 -2
  176. package/dist/{pi-auth-json-DV2ruNQM.js → pi-auth-json-BqB9Z6Gg.js} +1 -1
  177. package/dist/{pi-auth-json-CNgAAznq.js → pi-auth-json-etIDtHw9.js} +1 -1
  178. package/dist/{pi-embedded-BINp4yHJ.js → pi-embedded-BR587DfN.js} +266 -70
  179. package/dist/{pi-embedded-C6BUGEuF.js → pi-embedded-CyEM9NzS.js} +266 -70
  180. package/dist/{pi-embedded-helpers-jynCNZsb.js → pi-embedded-helpers-BflbNBBD.js} +1 -1
  181. package/dist/{pi-embedded-helpers-BDwdFGX-.js → pi-embedded-helpers-CAtkZb8c.js} +6 -6
  182. package/dist/{pi-embedded-helpers-Dfp-iKzJ.js → pi-embedded-helpers-KIM5SCp6.js} +6 -6
  183. package/dist/{pi-embedded-helpers-Cs0TgOaH.js → pi-embedded-helpers-XJw27Ryb.js} +1 -1
  184. package/dist/{pi-tools.policy-eb_uvOQV.js → pi-tools.policy-BJ7mumw5.js} +2 -2
  185. package/dist/{pi-tools.policy-vws0LV7U.js → pi-tools.policy-P1akpJL8.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-C61W5IWr.js → plugin-registry-CAuOLe4u.js} +2 -2
  189. package/dist/{plugin-registry-D1cKRWYQ.js → plugin-registry-gJKyJBN5.js} +2 -2
  190. package/dist/plugin-sdk/agents/plan-mode.d.ts +2 -1
  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/agents/timeout.d.ts +1 -0
  194. package/dist/plugin-sdk/{api-key-rotation-Qy7QGV8_.js → api-key-rotation-DNKq8sDG.js} +1 -1
  195. package/dist/plugin-sdk/{audio-preflight-CdG1OBN2.js → audio-preflight-BLIDrYdM.js} +7 -7
  196. package/dist/plugin-sdk/{channel-web-DFVIpsZB.js → channel-web-CmlTJ7hK.js} +7 -7
  197. package/dist/plugin-sdk/{chrome-XyjVFCkY.js → chrome-DZFDAzW-.js} +1 -1
  198. package/dist/plugin-sdk/{commands-registry-CvppXodz.js → commands-registry-un-LmdXo.js} +1 -1
  199. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +6 -0
  200. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +3 -0
  201. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +3 -0
  202. package/dist/plugin-sdk/config/zod-schema.d.ts +3 -0
  203. package/dist/plugin-sdk/{config-DG32gDDp.js → config-E1hS2lFY.js} +5 -2
  204. package/dist/plugin-sdk/{deliver-BdbnTrPD.js → deliver-DedoujTw.js} +2 -2
  205. package/dist/plugin-sdk/{image-B4_TBNqR.js → image-BTkmcfWM.js} +3 -3
  206. package/dist/plugin-sdk/index.js +22 -22
  207. package/dist/plugin-sdk/{login-Dey5tDpn.js → login-DsV1n99g.js} +2 -2
  208. package/dist/plugin-sdk/{login-qr-Tx8z1frn.js → login-qr-BXuSdbtI.js} +3 -3
  209. package/dist/plugin-sdk/{manager-RdPsBbBU.js → manager-BItSTruD.js} +2 -2
  210. package/dist/plugin-sdk/{model-selection-D6J2MZsj.js → model-selection-aEd_4vFO.js} +6 -2
  211. package/dist/plugin-sdk/{outbound-BpzsDbEV.js → outbound-2GErJr9p.js} +1 -1
  212. package/dist/plugin-sdk/{pi-auth-json-BmWuNdJA.js → pi-auth-json-FyiScmI7.js} +1 -1
  213. package/dist/plugin-sdk/{pi-embedded-helpers-OWtoPEg8.js → pi-embedded-helpers-ClMAnIcK.js} +6 -6
  214. package/dist/plugin-sdk/{pw-ai-OhVopvbb.js → pw-ai-DgQXeoga.js} +3 -3
  215. package/dist/plugin-sdk/{replies-DiFTMGgM.js → replies-DgHmcQJm.js} +1 -1
  216. package/dist/plugin-sdk/{reply-v8ed4JLy.js → reply-ByXRSx6U.js} +262 -66
  217. package/dist/plugin-sdk/{runner-BUXsfUip.js → runner-BZyapZ82.js} +5 -5
  218. package/dist/plugin-sdk/{send-CGSsrvd1.js → send-BRY1rgHy.js} +2 -2
  219. package/dist/plugin-sdk/{send-BXvJJUV_.js → send-BeLrD_W8.js} +1 -1
  220. package/dist/plugin-sdk/{send-BbFwAS_k.js → send-BmtFyMcr.js} +1 -1
  221. package/dist/plugin-sdk/{send-Drdgnfr_.js → send-BnQuSlC7.js} +1 -1
  222. package/dist/plugin-sdk/{send-DXcq1jzH.js → send-pZOlfgD0.js} +1 -1
  223. package/dist/plugin-sdk/{session-CX5KhlOe.js → session-Bjd4Dl7q.js} +1 -1
  224. package/dist/plugin-sdk/{skill-commands-NTPqO_az.js → skill-commands-Cwps3qpb.js} +1 -1
  225. package/dist/plugin-sdk/{web-DfIRv_Mx.js → web-C0VbV0vu.js} +22 -22
  226. package/dist/plugin-sdk/{whatsapp-actions-Dh6Y2fu9.js → whatsapp-actions-ydkRfuPg.js} +3 -3
  227. package/dist/{plugins-cli-ClY_BPg9.js → plugins-cli-BgXKqvpz.js} +34 -34
  228. package/dist/{plugins-cli-UmtKEuxj.js → plugins-cli-wo480wui.js} +35 -35
  229. package/dist/{program-CNsuYlJt.js → program-Ce64EM2F.js} +41 -41
  230. package/dist/{program-context-C2XeNCxI.js → program-context-D1Aj6Hxo.js} +38 -38
  231. package/dist/{prompt-select-styled-CiYSpQIf.js → prompt-select-styled-DLBGvEup.js} +17 -17
  232. package/dist/{prompt-select-styled-CgsYQqlJ.js → prompt-select-styled-DWgtQk76.js} +17 -17
  233. package/dist/{provider-auth-helpers-XIYHuUnj.js → provider-auth-helpers-CVi3VrsV.js} +4 -4
  234. package/dist/{provider-auth-helpers-CVAbJckC.js → provider-auth-helpers-fgQMn0eD.js} +4 -4
  235. package/dist/{push-apns-9q7Pl5I0.js → push-apns-CckLJBvV.js} +1 -1
  236. package/dist/{push-apns-6y-7OuAU.js → push-apns-kn7d-4VV.js} +1 -1
  237. package/dist/{pw-ai-C9noP7iN.js → pw-ai-5o71PJ5h.js} +3 -3
  238. package/dist/{pw-ai-BdNmRxEw.js → pw-ai-C3t2kdhc.js} +3 -3
  239. package/dist/{pw-ai-BfUWg8Eh.js → pw-ai-D-O0LOKC.js} +3 -3
  240. package/dist/{pw-ai-Dnh_iopr.js → pw-ai-I8AbpqgG.js} +3 -3
  241. package/dist/{qr-cli-BbRZOhwI.js → qr-cli-DC0qgjHf.js} +2 -2
  242. package/dist/{qr-cli-Cac34dCs.js → qr-cli-iTQlujHe.js} +2 -2
  243. package/dist/{register.agent-Ys85zXmm.js → register.agent-B94MeV3Q.js} +43 -43
  244. package/dist/{register.agent-DmLJVv4N.js → register.agent-uEXUpxgu.js} +45 -45
  245. package/dist/{register.configure-DYuK1UkU.js → register.configure-Bv85zqz8.js} +48 -48
  246. package/dist/{register.configure-BwmAY5TF.js → register.configure-tHkhp6vI.js} +47 -47
  247. package/dist/{register.maintenance-BQa25CA8.js → register.maintenance-BICJkK4r.js} +46 -46
  248. package/dist/{register.maintenance-625En1kE.js → register.maintenance-DaW01sHo.js} +44 -44
  249. package/dist/{register.message-DKeM6mQo.js → register.message-7Or0MY88.js} +34 -34
  250. package/dist/{register.message-CDpK3rbI.js → register.message-CSCfumTM.js} +35 -35
  251. package/dist/{register.onboard-CbvkWFq5.js → register.onboard-DgC3S144.js} +42 -42
  252. package/dist/{register.onboard-DtMjj81J.js → register.onboard-oEy-BwfU.js} +43 -43
  253. package/dist/{register.setup-DdX4Ahvt.js → register.setup-BnpJJOV4.js} +42 -42
  254. package/dist/{register.setup-BHhLns2f.js → register.setup-hrp8DAVZ.js} +43 -43
  255. package/dist/{register.status-health-sessions-D1KvwnF9.js → register.status-health-sessions-BfLJEzMU.js} +38 -38
  256. package/dist/{register.status-health-sessions-CqMFel_o.js → register.status-health-sessions-njnukBAU.js} +40 -40
  257. package/dist/{register.subclis-su5EMHvC.js → register.subclis-DEYBaz-Z.js} +28 -28
  258. package/dist/{replies-DqyX2Vln.js → replies-B5Jh0OCP.js} +1 -1
  259. package/dist/{replies-DtdP8R93.js → replies-BVXZDrhw.js} +1 -1
  260. package/dist/{replies-zeeuLUij.js → replies-CHirod5x.js} +1 -1
  261. package/dist/{replies-Dzc6eCFS.js → replies-Cyt5jQaT.js} +1 -1
  262. package/dist/{reply-DyFibFiG.js → reply-77x5WoQH.js} +274 -78
  263. package/dist/{routes-CEjKic_-.js → routes-BtsprtPx.js} +3 -3
  264. package/dist/{routes-B7FWIw81.js → routes-D5iYXgsO.js} +3 -3
  265. package/dist/{rpc-CV10Y2YL.js → rpc-CjvivzOg.js} +1 -1
  266. package/dist/{rpc-CR9IjVRa.js → rpc-lMWCuyRt.js} +1 -1
  267. package/dist/{run-main-CRPU46XB.js → run-main-DNA2le87.js} +53 -53
  268. package/dist/{runner-BkANJiWS.js → runner-3kD2Hk1w.js} +5 -5
  269. package/dist/{runner-v0fS4J7T.js → runner-Bzh_L69X.js} +5 -5
  270. package/dist/{runner-CTglx_CV.js → runner-_npJ-cn9.js} +5 -5
  271. package/dist/{runner-w5reqY02.js → runner-b_ibT3sW.js} +5 -5
  272. package/dist/{sandbox-DTzJlbvf.js → sandbox-BBGJMpXR.js} +5 -5
  273. package/dist/{sandbox-BpIrSDhl.js → sandbox-CPR0wRyk.js} +5 -5
  274. package/dist/{sandbox-cli-R_ZOY_KC.js → sandbox-cli-BgCrevMy.js} +7 -7
  275. package/dist/{sandbox-cli-B4VN_9mV.js → sandbox-cli-CHOc4ElC.js} +7 -7
  276. package/dist/{security-cli-BMB3kCFA.js → security-cli-B7YKQ6Nh.js} +12 -12
  277. package/dist/{security-cli-DmpyxTgQ.js → security-cli-iW-aIZ15.js} +12 -12
  278. package/dist/{send-DVLEgg9H.js → send--qdaLm4C.js} +1 -1
  279. package/dist/{send-CRWQglv9.js → send-B26isft5.js} +1 -1
  280. package/dist/{send-DDrpEKUg.js → send-BAM-zeo8.js} +2 -2
  281. package/dist/{send-Bt4UsVrd.js → send-BVKK9mIc.js} +1 -1
  282. package/dist/{send-Bx04WqH5.js → send-BfoI2xoz.js} +1 -1
  283. package/dist/{send-hJthT6M_.js → send-Btgfdf6H.js} +1 -1
  284. package/dist/{send-tDTl6xgz.js → send-BxkOVx17.js} +2 -2
  285. package/dist/{send-CC2vm0xU.js → send-C1fiVl-C.js} +1 -1
  286. package/dist/{send-BLT3lTZy.js → send-C7DzVT6I.js} +1 -1
  287. package/dist/{send-BbV4XqMl.js → send-CNZ2iT1h.js} +1 -1
  288. package/dist/{send-CQzO_Tg0.js → send-CboqahSN.js} +2 -2
  289. package/dist/{send-DyK4u4yH.js → send-DVNiZsde.js} +1 -1
  290. package/dist/{send-CZ18Xq5n.js → send-DXw0_dn5.js} +1 -1
  291. package/dist/{send-CEjpAJ8N.js → send-DffO5_WA.js} +1 -1
  292. package/dist/{send-BXiiQprI.js → send-Dfohx1Dj.js} +1 -1
  293. package/dist/{send-EQ1insgp.js → send-Dfum4W06.js} +1 -1
  294. package/dist/{send-CltKx_vS.js → send-QGcGaA1o.js} +2 -2
  295. package/dist/{send-BR3reUOE.js → send-TtpoiB7G.js} +1 -1
  296. package/dist/{send-Dm4UYQsf.js → send-sS-DxRJV.js} +1 -1
  297. package/dist/{send-1iB7Rdwp.js → send-ytd5gZYc.js} +1 -1
  298. package/dist/{server-context-DbcjnRHG.js → server-context-CZZZ5S6q.js} +5 -5
  299. package/dist/{server-context-BcjcQhiM.js → server-context-DiCxB7wV.js} +5 -5
  300. package/dist/{server-methods-U_lDP83A.js → server-methods-DgHyPneM.js} +21 -18
  301. package/dist/{server-methods-56m79WbR.js → server-methods-alycWcYE.js} +22 -19
  302. package/dist/{server-node-events-DpGswbj8.js → server-node-events-B5dFQdac.js} +34 -34
  303. package/dist/{server-node-events-Q9J_E8Ce.js → server-node-events-BkIo___r.js} +35 -35
  304. package/dist/{session-1Q4kg4xp.js → session-BFbJf357.js} +1 -1
  305. package/dist/{session-C86mCuOs.js → session-BdWP3apT.js} +1 -1
  306. package/dist/{session-BvXsNdtA.js → session-CiCHQ3Ah.js} +1 -1
  307. package/dist/{session-B4JR6zUJ.js → session-Dg44BpS1.js} +1 -1
  308. package/dist/{session-utils-CFvGKxdu.js → session-utils-Cs-nCi4-.js} +4 -4
  309. package/dist/{sessions-B3nP13Fw.js → sessions-BF3cJslT.js} +2 -2
  310. package/dist/{sessions-BdeJp6uY.js → sessions-C_c07viS.js} +2 -2
  311. package/dist/{sessions-m60NabL_.js → sessions-RYattOnc.js} +4 -4
  312. package/dist/{shared-mv9M8Mzc.js → shared-BmGIQ5oj.js} +2 -2
  313. package/dist/{shared-sOiAK5kN.js → shared-Dg2JustZ.js} +2 -2
  314. package/dist/{skill-commands-CWySL97a.js → skill-commands-BlfEmZ8t.js} +1 -1
  315. package/dist/{skill-commands-B64uavY9.js → skill-commands-C2kxEz5h.js} +1 -1
  316. package/dist/{skill-commands-DrFCB9F9.js → skill-commands-CSBmZ_di.js} +1 -1
  317. package/dist/{skill-commands-DWcJOIzP.js → skill-commands-C_ZNSYNS.js} +1 -1
  318. package/dist/{skills-cli-B7FG8Ft4.js → skills-cli-D9N3SSqr.js} +2 -2
  319. package/dist/{skills-cli-DVTw-NM0.js → skills-cli-G_0fvsIb.js} +2 -2
  320. package/dist/{status-D4KjZ3qi.js → status-D-gXM4AZ.js} +11 -11
  321. package/dist/{status-BNmYNm1S.js → status-T4y8IdyW.js} +2 -2
  322. package/dist/{status-DIYjr2wp.js → status-s0Mudh8o.js} +2 -2
  323. package/dist/{status-DbXRbJqY.js → status-yh81t6sL.js} +12 -12
  324. package/dist/{status.update-DKLvc9EH.js → status.update-9QVNoqzS.js} +1 -1
  325. package/dist/{status.update-CbXOcYqG.js → status.update-DAK4tN-2.js} +1 -1
  326. package/dist/{subagent-registry-Ct3GvWVn.js → subagent-registry-newoxfzs.js} +275 -79
  327. package/dist/{system-cli-B_KTvR0v.js → system-cli-B0oAtepa.js} +4 -4
  328. package/dist/{system-cli-9b3AzE_M.js → system-cli-kixN2BmA.js} +4 -4
  329. package/dist/{systemd-hints-BE7qhp3n.js → systemd-hints-BPRCUlOg.js} +1 -1
  330. package/dist/{systemd-hints-D_u4AuIu.js → systemd-hints-CRzDDf1-.js} +1 -1
  331. package/dist/{tui-oo_JjD-G.js → tui-CwMmsLXs.js} +16 -7
  332. package/dist/{tui-BViOdgFZ.js → tui-PZpjjXWo.js} +16 -7
  333. package/dist/{tui-cli-DKQz32oa.js → tui-cli-CU2JJJI9.js} +11 -11
  334. package/dist/{tui-cli-B97jQaQp.js → tui-cli-PTM4Eps5.js} +11 -11
  335. package/dist/{update-cli-Dhk0Yxsm.js → update-cli-B1dB4WdO.js} +47 -47
  336. package/dist/{update-cli-C9S00L1E.js → update-cli-BQdfZeXu.js} +49 -49
  337. package/dist/{update-runner-DBZOvTzN.js → update-runner-DKzlPMRC.js} +1 -1
  338. package/dist/{update-runner-BnIIcsqA.js → update-runner-HJhfkubt.js} +1 -1
  339. package/dist/{web-mXHyxR_l.js → web-BnH0qf_8.js} +21 -21
  340. package/dist/{web-f7lkf_un.js → web-CQzdHGhF.js} +21 -21
  341. package/dist/{web-8NQJ75ip.js → web-CScA06_W.js} +37 -37
  342. package/dist/{web-5uLk4OEM.js → web-DTIV3Lgo.js} +37 -37
  343. package/dist/{webhooks-cli-BLi_usfE.js → webhooks-cli-B97uWTaD.js} +2 -2
  344. package/dist/{webhooks-cli-Dz9n2L0-.js → webhooks-cli-CAHebfVz.js} +2 -2
  345. package/dist/{whatsapp-actions-ChtHuvdU.js → whatsapp-actions-BgiS8DUJ.js} +3 -3
  346. package/dist/{whatsapp-actions-6S6PNs2p.js → whatsapp-actions-BsVCZeLO.js} +3 -3
  347. package/dist/{whatsapp-actions-B4YPuD2Q.js → whatsapp-actions-DfJHCjBV.js} +3 -3
  348. package/dist/{whatsapp-actions-M8kjDd9l.js → whatsapp-actions-xhdGIJBd.js} +3 -3
  349. package/dist/{with-timeout-2zPYOOzh.js → with-timeout-C0euAxXp.js} +1 -1
  350. package/dist/{with-timeout-gaHpaiis.js → with-timeout-CiGZZ4b2.js} +1 -1
  351. package/docs/reference/templates/SYMIPULSE.md +1 -0
  352. package/package.json +1 -1
@@ -8,40 +8,40 @@ import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPlugi
8
8
  import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
9
9
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
10
10
  import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, a as resolveAgentModelFallbacksOverride, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, g as DEFAULT_IDENTITY_FILENAME, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as listAgentIds, o as resolveAgentModelPrimary, r as resolveAgentConfig, s as resolveAgentSkillsFilter, u as resolveEffectiveModelFallbacks, w as filterBootstrapFilesForSession } from "./agent-scope-CgUHAtCo.js";
11
- import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-Csawd2_i.js";
11
+ import { At as ensureAuthProfileStore, Bt as normalizeSecretInput, Et as markAuthProfileGood, Ft as resolveSymiAgentDir, G as getCustomProviderApiKey, Gt as DEFAULT_MODEL, H as OLLAMA_NATIVE_BASE_URL, It as withFileLock, K as requireApiKey, Kt as DEFAULT_PROVIDER, Pt as resolveAuthStorePathForDisplay, Q as getShellPathFromLoginShell, Tt as listProfilesForProvider, U as createOllamaStreamFn, Vt as resolveAuthProfileDisplayLabel, W as getApiKeyForModel, Wt as DEFAULT_CONTEXT_TOKENS, X as resolveModelAuthMode, Y as resolveEnvApiKey, c as normalizeModelRef$2, et as resolveShellEnvFallbackTimeoutMs, ft as resolveAuthProfileOrder, g as resolveModelRefFromString, gt as markAuthProfileUsed, ht as markAuthProfileFailure, i as findNormalizedProviderValue, l as normalizeProviderId, m as resolveDefaultModelForAgent, mt as isProfileInCooldown, n as buildConfiguredAllowlistKeys, o as isCliProvider, p as resolveConfiguredModelRef, pt as getSoonestCooldownExpiry, q as resolveApiKeyForProvider, r as buildModelAliasIndex, s as modelKey, t as buildAllowedModelSet, u as parseModelRef, v as resolveSubagentSpawnModelSelection, vt as resolveApiKeyForProfile, wt as dedupeProfileIds, y as resolveThinkingDefault } from "./model-selection-BBrZnKDw.js";
12
12
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-DAu1a6BX.js";
13
13
  import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
15
15
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
17
- import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-CC2vm0xU.js";
18
- import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-BLe0R4JX.js";
17
+ import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-C1fiVl-C.js";
18
+ import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-BMStjqdp.js";
19
19
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-C4BxOMWX.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BkANJiWS.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-DIzd7Gw9.js";
26
- import { t as ensureSymiModelsJson } from "./models-config-BH6-rmtt.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-3kD2Hk1w.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, 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 stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-CNYGLoQl.js";
26
+ import { t as ensureSymiModelsJson } from "./models-config-vcoi9QfD.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-jynCNZsb.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DTzJlbvf.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CUsfMVUk.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-BcjcQhiM.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-BflbNBBD.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BBGJMpXR.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-XQjc7KSW.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DiCxB7wV.js";
32
32
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-6jdJQ5ZL.js";
33
33
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
34
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
36
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
37
37
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-BdeJp6uY.js";
38
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-C_c07viS.js";
39
39
  import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
40
  import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
41
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
42
42
  import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
43
43
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
44
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-BR3reUOE.js";
44
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-TtpoiB7G.js";
45
45
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
46
46
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
47
47
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
@@ -51,50 +51,50 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
52
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
53
  import { v as runTasksWithConcurrency } from "./sqlite-Dx3J_aSE.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DZbVIJnH.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-jhBOlBYp.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-gaHpaiis.js";
57
- 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-DqqfC-g1.js";
56
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-CiGZZ4b2.js";
57
+ 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-C0Azi_cK.js";
58
58
  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-DjBRPfu9.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
- import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-tDTl6xgz.js";
61
- import { a as buildModelAliasLines, n as resolveModel } from "./model-CLebVu_U.js";
60
+ import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-BxkOVx17.js";
61
+ import { a as buildModelAliasLines, n as resolveModel } from "./model-ApXxvnzl.js";
62
62
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
63
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-CGRSXKeF.js";
64
- import { i as resolveMemorySearchConfig } from "./manager-Oiy1uHsu.js";
63
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-D5iikkSG.js";
64
+ import { i as resolveMemorySearchConfig } from "./manager-D0d-bOOe.js";
65
65
  import { n as retryAsync } from "./retry-BoS4e4X_.js";
66
66
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-7AvoVa10.js";
67
67
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-1dhPX1NK.js";
68
68
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CEbN0fEm.js";
69
69
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-DZam9q5M.js";
70
70
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-BNLCWX6e.js";
71
- import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-DyWjIe7d.js";
71
+ import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-B_V42ZiZ.js";
72
72
  import { Mt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-CQSyCS4M.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-C30ffTSt.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-Cspuh_Jh.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-BXoxEQVN.js";
75
75
  import { n as normalizePollInput } from "./polls-DhH5YkzN.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-BOiuJS3t.js";
77
77
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-DTNGXEzX.js";
78
78
  import { t as convertMarkdownTables } from "./tables-BEzT0Da4.js";
79
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-DyK4u4yH.js";
80
- import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-CFwkjcA5.js";
79
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-DVNiZsde.js";
80
+ import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-DdUVpKvp.js";
81
81
  import { t as makeProxyFetch } from "./proxy-DU7W9XSc.js";
82
82
  import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-D0B0Uo-I.js";
83
83
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-BMoTaVAH.js";
84
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-zeeuLUij.js";
85
- import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-DrFCB9F9.js";
84
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CHirod5x.js";
85
+ import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-CSBmZ_di.js";
86
86
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-BG4AXrGN.js";
87
- import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-EQ1insgp.js";
88
- import { r as detectBinary } from "./onboard-helpers-_sSsfEAa.js";
89
- import { t as resolvePairingIdLabel } from "./pairing-labels-B-WwqJ-z.js";
87
+ import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-Dfum4W06.js";
88
+ import { r as detectBinary } from "./onboard-helpers-DIAvDwi8.js";
89
+ import { t as resolvePairingIdLabel } from "./pairing-labels-Ca15tgVV.js";
90
90
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-BzKEDn0q.js";
91
91
  import { t as getActiveWebListener } from "./active-listener-kvXhlgwu.js";
92
92
  import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-Kn31mBcW.js";
93
93
  import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-VBGXKdLk.js";
94
94
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-CN8o4Vi3.js";
95
95
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-BiwOFDEK.js";
96
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-eb_uvOQV.js";
97
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DI1Do6Nn.js";
96
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BJ7mumw5.js";
97
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BwrQoUMh.js";
98
98
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-BUClb97_.js";
99
99
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-C8_BLnaW.js";
100
100
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DuWs0Aak.js";
@@ -451,6 +451,8 @@ function resolveAgentTimeoutMs(opts) {
451
451
  if (overrideSeconds < 0) return defaultMs;
452
452
  return clampTimeoutMs(overrideSeconds * 1e3);
453
453
  }
454
+ const modelSeconds = normalizeNumber(opts.modelTimeoutSeconds);
455
+ if (modelSeconds !== void 0 && modelSeconds > 0) return clampTimeoutMs(modelSeconds * 1e3);
454
456
  return defaultMs;
455
457
  }
456
458
 
@@ -2891,7 +2893,7 @@ async function createModelSelectionState(params) {
2891
2893
  }
2892
2894
  }
2893
2895
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
2894
- const { ensureAuthProfileStore } = await import("./model-selection-Csawd2_i.js").then((n) => n.dt);
2896
+ const { ensureAuthProfileStore } = await import("./model-selection-BBrZnKDw.js").then((n) => n.dt);
2895
2897
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
2896
2898
  const providerKey = normalizeProviderId(provider);
2897
2899
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -10413,7 +10415,7 @@ async function routeReply(params) {
10413
10415
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10414
10416
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10415
10417
  try {
10416
- const { deliverOutboundPayloads } = await import("./deliver-DqqfC-g1.js").then((n) => n.n);
10418
+ const { deliverOutboundPayloads } = await import("./deliver-C0Azi_cK.js").then((n) => n.n);
10417
10419
  return {
10418
10420
  ok: true,
10419
10421
  messageId: (await deliverOutboundPayloads({
@@ -12963,7 +12965,7 @@ async function describeStickerImage(params) {
12963
12965
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
12964
12966
  try {
12965
12967
  const buffer = await fs$1.readFile(imagePath);
12966
- const { describeImageWithModel } = await import("./image-DIzd7Gw9.js").then((n) => n.n);
12968
+ const { describeImageWithModel } = await import("./image-CNYGLoQl.js").then((n) => n.n);
12967
12969
  return (await describeImageWithModel({
12968
12970
  buffer,
12969
12971
  fileName: "sticker.webp",
@@ -13386,7 +13388,7 @@ function createWhatsAppLoginTool() {
13386
13388
  force: Type.Optional(Type.Boolean())
13387
13389
  }),
13388
13390
  execute: async (_toolCallId, args) => {
13389
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DjXNemMm.js");
13391
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-BSm4xrHW.js");
13390
13392
  if ((args?.action ?? "start") === "wait") {
13391
13393
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
13392
13394
  return {
@@ -15602,7 +15604,7 @@ async function preflightDiscordMessage(params) {
15602
15604
  let preflightTranscript;
15603
15605
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15604
15606
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15605
- const { transcribeFirstAudio } = await import("./audio-preflight-Cpsd8C3J.js");
15607
+ const { transcribeFirstAudio } = await import("./audio-preflight-DCHBMKWE.js");
15606
15608
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15607
15609
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15608
15610
  ctx: {
@@ -20900,8 +20902,8 @@ function buildMemorySection(params) {
20900
20902
  lines.push("");
20901
20903
  return lines;
20902
20904
  }
20903
- function buildUserIdentitySection(ownerLine, isMinimal) {
20904
- if (!ownerLine || isMinimal) return [];
20905
+ function buildUserIdentitySection(ownerLine, isMinimal, isCoding) {
20906
+ if (!ownerLine || isMinimal || isCoding) return [];
20905
20907
  return [
20906
20908
  "## Authorized Senders",
20907
20909
  ownerLine,
@@ -20925,8 +20927,8 @@ function buildTimeSection(params) {
20925
20927
  ""
20926
20928
  ];
20927
20929
  }
20928
- function buildReplyTagsSection(isMinimal) {
20929
- if (isMinimal) return [];
20930
+ function buildReplyTagsSection(isMinimal, isCoding) {
20931
+ if (isMinimal || isCoding) return [];
20930
20932
  return [
20931
20933
  "## Reply Tags",
20932
20934
  "To request a native reply/quote on supported surfaces, include one tag in your reply:",
@@ -20939,7 +20941,7 @@ function buildReplyTagsSection(isMinimal) {
20939
20941
  ];
20940
20942
  }
20941
20943
  function buildMessagingSection(params) {
20942
- if (params.isMinimal) return [];
20944
+ if (params.isMinimal || params.isCoding) return [];
20943
20945
  return [
20944
20946
  "## Messaging",
20945
20947
  "- Reply in current session → automatically routes to the source channel (Signal, Telegram, etc.)",
@@ -20962,7 +20964,7 @@ function buildMessagingSection(params) {
20962
20964
  ];
20963
20965
  }
20964
20966
  function buildVoiceSection(params) {
20965
- if (params.isMinimal) return [];
20967
+ if (params.isMinimal || params.isCoding) return [];
20966
20968
  const hint = params.ttsHint?.trim();
20967
20969
  if (!hint) return [];
20968
20970
  return [
@@ -20971,6 +20973,71 @@ function buildVoiceSection(params) {
20971
20973
  ""
20972
20974
  ];
20973
20975
  }
20976
+ function buildVerifyYourWorkSection(params) {
20977
+ if (params.isMinimal) return [];
20978
+ const exec = params.execToolName;
20979
+ const read = params.readToolName;
20980
+ return [
20981
+ "## Verify Your Work",
20982
+ [
20983
+ "Before delivering any code, script, configuration, or technical artifact, you MUST perform a structured verification pass.",
20984
+ "Skipping verification is the single most common cause of incomplete or broken outputs.",
20985
+ "Treat this section as mandatory for every coding task, not optional polish."
20986
+ ].join(" "),
20987
+ "",
20988
+ "### 1. Re-read the request",
20989
+ [
20990
+ "Before you finalize your response, re-read the user's original message (and any follow-ups) in full.",
20991
+ "Extract every discrete requirement, constraint, and preference they stated.",
20992
+ "Write them down internally as a checklist.",
20993
+ "This catches drift: it is easy to start solving a related-but-different problem mid-task."
20994
+ ].join(" "),
20995
+ "",
20996
+ "### 2. Check each requirement against your output",
20997
+ [
20998
+ "Walk through your internal checklist point by point.",
20999
+ "For each requirement, locate the exact lines in your output that satisfy it.",
21000
+ "If you cannot point to concrete lines that fulfill a requirement, the work is not done — go back and address the gap before responding.",
21001
+ "Pay special attention to edge cases, error handling, and boundary conditions the user mentioned."
21002
+ ].join(" "),
21003
+ "",
21004
+ "### 3. Run the code",
21005
+ [
21006
+ `Whenever possible, use ${exec} to actually run, compile, lint, or test your code before presenting it.`,
21007
+ "Do not guess whether code works — execute it and observe the result.",
21008
+ "If the code produces errors, fix them and re-run until it succeeds.",
21009
+ "For scripts: run them with representative inputs.",
21010
+ "For libraries/modules: write and execute a minimal smoke test.",
21011
+ "For config files: validate syntax (e.g., json, yaml, toml parsers).",
21012
+ "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."
21013
+ ].join(" "),
21014
+ "",
21015
+ "### 4. Include tests when requested",
21016
+ [
21017
+ "If the user asked for tests, they are a hard requirement — not a nice-to-have.",
21018
+ "Deliver the tests alongside the implementation, not as an afterthought.",
21019
+ "Run the tests and confirm they pass before responding.",
21020
+ "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."
21021
+ ].join(" "),
21022
+ "",
21023
+ "### 5. Self-review",
21024
+ [
21025
+ `After everything above, use ${read} to re-read any files you created or modified.`,
21026
+ "Look at them with fresh eyes as if reviewing someone else's code.",
21027
+ "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).",
21028
+ "If you find problems during self-review, fix them, re-run verification, and only then respond."
21029
+ ].join(" "),
21030
+ "",
21031
+ "### Verification failures",
21032
+ [
21033
+ "If any step above reveals a gap, do NOT respond with a partial answer and a disclaimer.",
21034
+ "Instead, fix the issue silently and re-verify.",
21035
+ "The user should receive working, complete output — not a draft with known issues.",
21036
+ "Only flag genuinely unresolvable ambiguities (where you need the user's decision to proceed)."
21037
+ ].join(" "),
21038
+ ""
21039
+ ];
21040
+ }
20974
21041
  function buildDocsSection(params) {
20975
21042
  const docsPath = params.docsPath?.trim();
20976
21043
  if (!docsPath || params.isMinimal) return [];
@@ -21095,6 +21162,7 @@ function buildAgentSystemPrompt(params) {
21095
21162
  const messageChannelOptions = listDeliverableMessageChannels().join("|");
21096
21163
  const promptMode = params.promptMode ?? "full";
21097
21164
  const isMinimal = promptMode === "minimal" || promptMode === "none";
21165
+ const isCoding = promptMode === "coding";
21098
21166
  const sandboxContainerWorkspace = params.sandboxInfo?.containerWorkspaceDir?.trim();
21099
21167
  const sanitizedWorkspaceDir = sanitizeForPromptLiteral(params.workspaceDir);
21100
21168
  const sanitizedSandboxContainerWorkspace = sandboxContainerWorkspace ? sanitizeForPromptLiteral(sandboxContainerWorkspace) : "";
@@ -21171,19 +21239,19 @@ function buildAgentSystemPrompt(params) {
21171
21239
  "",
21172
21240
  ...skillsSection,
21173
21241
  ...memorySection,
21174
- hasGateway && !isMinimal ? "## Symi Self-Update" : "",
21175
- hasGateway && !isMinimal ? [
21242
+ hasGateway && !isMinimal && !isCoding ? "## Symi Self-Update" : "",
21243
+ hasGateway && !isMinimal && !isCoding ? [
21176
21244
  "Get Updates (self-update) is ONLY allowed when the user explicitly asks for it.",
21177
21245
  "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.",
21178
21246
  "Actions: config.get, config.schema, config.apply (validate + write full config, then restart), update.run (update deps or git, then restart).",
21179
21247
  "After restart, Symi pings the last active session automatically."
21180
21248
  ].join("\n") : "",
21181
- hasGateway && !isMinimal ? "" : "",
21249
+ hasGateway && !isMinimal && !isCoding ? "" : "",
21182
21250
  "",
21183
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "## Model Aliases" : "",
21184
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "Prefer aliases when specifying model overrides; full provider/model is also accepted." : "",
21185
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? params.modelAliasLines.join("\n") : "",
21186
- params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal ? "" : "",
21251
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "## Model Aliases" : "",
21252
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "Prefer aliases when specifying model overrides; full provider/model is also accepted." : "",
21253
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? params.modelAliasLines.join("\n") : "",
21254
+ params.modelAliasLines && params.modelAliasLines.length > 0 && !isMinimal && !isCoding ? "" : "",
21187
21255
  userTimezone ? "If you need the current date, time, or day of week, run session_status (📊 session_status)." : "",
21188
21256
  "## Workspace",
21189
21257
  `Your working directory is: ${displayWorkspaceDir}`,
@@ -21191,6 +21259,11 @@ function buildAgentSystemPrompt(params) {
21191
21259
  ...workspaceNotes,
21192
21260
  "",
21193
21261
  ...docsSection,
21262
+ ...buildVerifyYourWorkSection({
21263
+ isMinimal,
21264
+ execToolName,
21265
+ readToolName
21266
+ }),
21194
21267
  params.sandboxInfo?.enabled ? "## Sandbox" : "",
21195
21268
  params.sandboxInfo?.enabled ? [
21196
21269
  "You are running in a sandboxed runtime (tools execute in Docker).",
@@ -21208,14 +21281,15 @@ function buildAgentSystemPrompt(params) {
21208
21281
  params.sandboxInfo.elevated?.allowed ? `Current elevated level: ${params.sandboxInfo.elevated.defaultLevel} (ask runs exec on host with approvals; full auto-approves).` : ""
21209
21282
  ].filter(Boolean).join("\n") : "",
21210
21283
  params.sandboxInfo?.enabled ? "" : "",
21211
- ...buildUserIdentitySection(ownerLine, isMinimal),
21284
+ ...buildUserIdentitySection(ownerLine, isMinimal, isCoding),
21212
21285
  ...buildTimeSection({ userTimezone }),
21213
21286
  "## Workspace Files (injected)",
21214
21287
  "These user-editable files are loaded by Symi and included below in Project Context.",
21215
21288
  "",
21216
- ...buildReplyTagsSection(isMinimal),
21289
+ ...buildReplyTagsSection(isMinimal, isCoding),
21217
21290
  ...buildMessagingSection({
21218
21291
  isMinimal,
21292
+ isCoding,
21219
21293
  availableTools,
21220
21294
  messageChannelOptions,
21221
21295
  inlineButtonsEnabled,
@@ -21224,6 +21298,7 @@ function buildAgentSystemPrompt(params) {
21224
21298
  }),
21225
21299
  ...buildVoiceSection({
21226
21300
  isMinimal,
21301
+ isCoding,
21227
21302
  ttsHint: params.ttsHint
21228
21303
  })
21229
21304
  ];
@@ -21263,8 +21338,8 @@ function buildAgentSystemPrompt(params) {
21263
21338
  lines.push("");
21264
21339
  for (const file of validContextFiles) lines.push(`## ${file.path}`, "", file.content, "");
21265
21340
  }
21266
- 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}`, "");
21267
- 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.", "");
21341
+ 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}`, "");
21342
+ 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.", "");
21268
21343
  lines.push("## Runtime", buildRuntimeLine(runtimeInfo, runtimeChannel, runtimeCapabilities, params.defaultThinkLevel), `Reasoning: ${reasoningLevel} (hidden unless on/stream). Toggle /reasoning; /status shows Reasoning when enabled.`);
21269
21344
  return lines.filter(Boolean).join("\n");
21270
21345
  }
@@ -22291,27 +22366,27 @@ async function runWithImageModelFallback(params) {
22291
22366
  function createDefaultDeps() {
22292
22367
  return {
22293
22368
  sendMessageWhatsApp: async (...args) => {
22294
- const { sendMessageWhatsApp } = await import("./web-5uLk4OEM.js");
22369
+ const { sendMessageWhatsApp } = await import("./web-DTIV3Lgo.js");
22295
22370
  return await sendMessageWhatsApp(...args);
22296
22371
  },
22297
22372
  sendMessageTelegram: async (...args) => {
22298
- const { sendMessageTelegram } = await import("./send-tDTl6xgz.js").then((n) => n.l);
22373
+ const { sendMessageTelegram } = await import("./send-BxkOVx17.js").then((n) => n.l);
22299
22374
  return await sendMessageTelegram(...args);
22300
22375
  },
22301
22376
  sendMessageDiscord: async (...args) => {
22302
- const { sendMessageDiscord } = await import("./send-CC2vm0xU.js").then((n) => n.t);
22377
+ const { sendMessageDiscord } = await import("./send-C1fiVl-C.js").then((n) => n.t);
22303
22378
  return await sendMessageDiscord(...args);
22304
22379
  },
22305
22380
  sendMessageSlack: async (...args) => {
22306
- const { sendMessageSlack } = await import("./send-BR3reUOE.js").then((n) => n.n);
22381
+ const { sendMessageSlack } = await import("./send-TtpoiB7G.js").then((n) => n.n);
22307
22382
  return await sendMessageSlack(...args);
22308
22383
  },
22309
22384
  sendMessageSignal: async (...args) => {
22310
- const { sendMessageSignal } = await import("./send-DyK4u4yH.js").then((n) => n.i);
22385
+ const { sendMessageSignal } = await import("./send-DVNiZsde.js").then((n) => n.i);
22311
22386
  return await sendMessageSignal(...args);
22312
22387
  },
22313
22388
  sendMessageIMessage: async (...args) => {
22314
- const { sendMessageIMessage } = await import("./send-EQ1insgp.js").then((n) => n.n);
22389
+ const { sendMessageIMessage } = await import("./send-Dfum4W06.js").then((n) => n.n);
22315
22390
  return await sendMessageIMessage(...args);
22316
22391
  }
22317
22392
  };
@@ -23064,9 +23139,11 @@ async function agentCommand(opts, runtime = defaultRuntime, deps = createDefault
23064
23139
  const isSubagentLane = (typeof opts.lane === "string" ? opts.lane.trim() : "") === String(AGENT_LANE_SUBAGENT);
23065
23140
  const timeoutSecondsRaw = opts.timeout !== void 0 ? Number.parseInt(String(opts.timeout), 10) : isSubagentLane ? 0 : void 0;
23066
23141
  if (timeoutSecondsRaw !== void 0 && (Number.isNaN(timeoutSecondsRaw) || timeoutSecondsRaw < 0)) throw new Error("--timeout must be a non-negative integer (seconds; 0 means no timeout)");
23142
+ const primaryModelKey = typeof cfg?.agents?.defaults?.model === "object" ? cfg.agents.defaults.model.primary : void 0;
23067
23143
  const timeoutMs = resolveAgentTimeoutMs({
23068
23144
  cfg,
23069
- overrideSeconds: timeoutSecondsRaw
23145
+ overrideSeconds: timeoutSecondsRaw,
23146
+ modelTimeoutSeconds: (primaryModelKey ? cfg?.agents?.defaults?.models?.[primaryModelKey]?.timeoutSeconds : void 0) ?? null
23070
23147
  });
23071
23148
  const { sessionId, sessionKey, sessionEntry: resolvedSessionEntry, sessionStore, storePath, isNewSession, persistedThinking, persistedVerbose } = resolveSession({
23072
23149
  cfg,
@@ -33458,7 +33535,7 @@ function readSlackExternalArgMenuToken(raw) {
33458
33535
  }
33459
33536
  let commandsRegistry;
33460
33537
  async function getCommandsRegistry() {
33461
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-DyWjIe7d.js").then((n) => n.n);
33538
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-B_V42ZiZ.js").then((n) => n.n);
33462
33539
  return commandsRegistry;
33463
33540
  }
33464
33541
  function encodeSlackCommandArgValue(parts) {
@@ -33861,7 +33938,7 @@ async function registerSlackMonitorSlashCommands(params) {
33861
33938
  });
33862
33939
  const deliverSlashPayloads = async (replies) => {
33863
33940
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
33864
- import("./replies-zeeuLUij.js").then((n) => n.r),
33941
+ import("./replies-CHirod5x.js").then((n) => n.r),
33865
33942
  import("./chunk-1dhPX1NK.js").then((n) => n.s),
33866
33943
  import("./markdown-tables-CEbN0fEm.js").then((n) => n.t)
33867
33944
  ]);
@@ -33916,7 +33993,7 @@ async function registerSlackMonitorSlashCommands(params) {
33916
33993
  let nativeCommands = [];
33917
33994
  if (nativeEnabled) {
33918
33995
  reg = await getCommandsRegistry();
33919
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-DrFCB9F9.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
33996
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-CSBmZ_di.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
33920
33997
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
33921
33998
  skillCommands,
33922
33999
  provider: "slack"
@@ -38685,7 +38762,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
38685
38762
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
38686
38763
  let preflightTranscript;
38687
38764
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
38688
- const { transcribeFirstAudio } = await import("./audio-preflight-Cpsd8C3J.js");
38765
+ const { transcribeFirstAudio } = await import("./audio-preflight-DCHBMKWE.js");
38689
38766
  preflightTranscript = await transcribeFirstAudio({
38690
38767
  ctx: {
38691
38768
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -40839,23 +40916,23 @@ let webLoginQrPromise = null;
40839
40916
  let webChannelPromise = null;
40840
40917
  let whatsappActionsPromise = null;
40841
40918
  function loadWebOutbound() {
40842
- webOutboundPromise ??= import("./outbound-DPCAcHLQ.js").then((n) => n.t);
40919
+ webOutboundPromise ??= import("./outbound-DYyGKxSZ.js").then((n) => n.t);
40843
40920
  return webOutboundPromise;
40844
40921
  }
40845
40922
  function loadWebLogin() {
40846
- webLoginPromise ??= import("./login-BcCF4noU.js").then((n) => n.n);
40923
+ webLoginPromise ??= import("./login-BZsZO9ST.js").then((n) => n.n);
40847
40924
  return webLoginPromise;
40848
40925
  }
40849
40926
  function loadWebLoginQr() {
40850
- webLoginQrPromise ??= import("./login-qr-DjXNemMm.js");
40927
+ webLoginQrPromise ??= import("./login-qr-BSm4xrHW.js");
40851
40928
  return webLoginQrPromise;
40852
40929
  }
40853
40930
  function loadWebChannel() {
40854
- webChannelPromise ??= import("./web-5uLk4OEM.js");
40931
+ webChannelPromise ??= import("./web-DTIV3Lgo.js");
40855
40932
  return webChannelPromise;
40856
40933
  }
40857
40934
  function loadWhatsAppActions() {
40858
- whatsappActionsPromise ??= import("./whatsapp-actions-M8kjDd9l.js");
40935
+ whatsappActionsPromise ??= import("./whatsapp-actions-xhdGIJBd.js");
40859
40936
  return whatsappActionsPromise;
40860
40937
  }
40861
40938
  function createPluginRuntime() {
@@ -58738,7 +58815,7 @@ async function compactEmbeddedPiSessionDirect(params) {
58738
58815
  config: params.config
58739
58816
  });
58740
58817
  const isDefaultAgent = sessionAgentId === defaultAgentId;
58741
- const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : "full";
58818
+ const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : params.config?.agents?.defaults?.promptMode === "coding" ? "coding" : "full";
58742
58819
  const docsPath = await resolveSymiDocsPath({
58743
58820
  workspaceDir: effectiveWorkspace,
58744
58821
  argv1: process.argv[1],
@@ -58978,6 +59055,9 @@ function createStreamFnWithExtraParams(baseStreamFn, extraParams, provider) {
58978
59055
  const streamParams = {};
58979
59056
  if (typeof extraParams.temperature === "number") streamParams.temperature = extraParams.temperature;
58980
59057
  if (typeof extraParams.maxTokens === "number") streamParams.maxTokens = extraParams.maxTokens;
59058
+ if (typeof extraParams.top_p === "number") streamParams.top_p = extraParams.top_p;
59059
+ if (typeof extraParams.top_k === "number") streamParams.top_k = extraParams.top_k;
59060
+ if (typeof extraParams.repeat_penalty === "number") streamParams.repeat_penalty = extraParams.repeat_penalty;
58981
59061
  const cacheRetention = resolveCacheRetention(extraParams, provider);
58982
59062
  if (cacheRetention) streamParams.cacheRetention = cacheRetention;
58983
59063
  if (Object.keys(streamParams).length === 0) return;
@@ -61306,7 +61386,7 @@ function scorePlanComplexity(prompt) {
61306
61386
  if ([...PLAN_KEYWORDS, ...ANALYSIS_KEYWORDS].some((kw) => lower.includes(kw)) || FILE_PATH_RE.test(prompt)) score += 3;
61307
61387
  }
61308
61388
  const numberedItems = prompt.match(NUMBERED_LIST_RE);
61309
- if (numberedItems && numberedItems.length >= 3) score += 2;
61389
+ if (numberedItems && numberedItems.length >= 6) score += 2;
61310
61390
  for (const kw of PLAN_KEYWORDS) if (lower.includes(kw)) {
61311
61391
  score += 2;
61312
61392
  break;
@@ -61323,7 +61403,7 @@ function scorePlanComplexity(prompt) {
61323
61403
  }
61324
61404
  return score;
61325
61405
  }
61326
- const PLAN_MODE_THRESHOLD = 5;
61406
+ const PLAN_MODE_THRESHOLD = 8;
61327
61407
  /**
61328
61408
  * Determine whether a prompt should trigger plan mode.
61329
61409
  *
@@ -61358,14 +61438,15 @@ function shouldEnterPlanMode(prompt, opts = {}) {
61358
61438
  score: 0
61359
61439
  };
61360
61440
  const score = scorePlanComplexity(trimmed);
61361
- if (score >= PLAN_MODE_THRESHOLD) return {
61441
+ const threshold = opts.threshold ?? PLAN_MODE_THRESHOLD;
61442
+ if (score >= threshold) return {
61362
61443
  enter: true,
61363
- reason: `complexity score ${score} >= ${PLAN_MODE_THRESHOLD}`,
61444
+ reason: `complexity score ${score} >= ${threshold}`,
61364
61445
  score
61365
61446
  };
61366
61447
  return {
61367
61448
  enter: false,
61368
- reason: `complexity score ${score} < ${PLAN_MODE_THRESHOLD}`,
61449
+ reason: `complexity score ${score} < ${threshold}`,
61369
61450
  score
61370
61451
  };
61371
61452
  }
@@ -62261,7 +62342,7 @@ async function runEmbeddedAttempt(params) {
62261
62342
  }
62262
62343
  });
62263
62344
  const isDefaultAgent = sessionAgentId === defaultAgentId;
62264
- const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : "full";
62345
+ const promptMode = isSubagentSessionKey(params.sessionKey) || isCronSessionKey(params.sessionKey) ? "minimal" : params.config?.agents?.defaults?.promptMode === "coding" ? "coding" : "full";
62265
62346
  const docsPath = await resolveSymiDocsPath({
62266
62347
  workspaceDir: effectiveWorkspace,
62267
62348
  argv1: process.argv[1],
@@ -62658,7 +62739,8 @@ async function runEmbeddedAttempt(params) {
62658
62739
  {
62659
62740
  const planResult = shouldEnterPlanMode(effectivePrompt, {
62660
62741
  isSubagent: isSubagentSessionKey(params.sessionKey),
62661
- isCron: isCronSessionKey(params.sessionKey)
62742
+ isCron: isCronSessionKey(params.sessionKey),
62743
+ threshold: params.config?.agents?.defaults?.planModeThreshold
62662
62744
  });
62663
62745
  if (planResult.enter) {
62664
62746
  if (planResult.stripped != null) effectivePrompt = planResult.stripped;
@@ -63276,6 +63358,7 @@ async function runEmbeddedPiAgent(params) {
63276
63358
  let lastRunPromptUsage;
63277
63359
  let autoCompactionCount = 0;
63278
63360
  let runLoopIterations = 0;
63361
+ let verificationPassCompleted = false;
63279
63362
  try {
63280
63363
  while (true) {
63281
63364
  if (runLoopIterations >= MAX_RUN_LOOP_ITERATIONS) {
@@ -63645,6 +63728,116 @@ async function runEmbeddedPiAgent(params) {
63645
63728
  suppressToolErrorWarnings: params.suppressToolErrorWarnings,
63646
63729
  inlineToolResultsAllowed: false
63647
63730
  });
63731
+ if (!verificationPassCompleted && !aborted && !timedOut && !promptError && payloads.length > 0 && !isCronSessionKey(params.sessionKey) && !isSubagentSessionKey(params.sessionKey)) {
63732
+ const CODE_TOOL_NAMES = new Set([
63733
+ "exec",
63734
+ "bash",
63735
+ "write",
63736
+ "edit",
63737
+ "file_write",
63738
+ "file_edit",
63739
+ "write_file",
63740
+ "edit_file",
63741
+ "create_file",
63742
+ "patch"
63743
+ ]);
63744
+ const hasCodeToolUsage = attempt.toolMetas.some((tm) => CODE_TOOL_NAMES.has(tm.toolName.toLowerCase()));
63745
+ const hasCodeBlocks = attempt.assistantTexts.some((text) => /```[\s\S]*?```/.test(text));
63746
+ if (hasCodeToolUsage || hasCodeBlocks) {
63747
+ verificationPassCompleted = true;
63748
+ log$2.debug(`[verification] starting verification pass: runId=${params.runId} sessionId=${params.sessionId} trigger=${hasCodeToolUsage ? "tool_usage" : "code_blocks"}`);
63749
+ 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.";
63750
+ try {
63751
+ const verifyAttempt = await runEmbeddedAttempt({
63752
+ sessionId: params.sessionId,
63753
+ sessionKey: params.sessionKey,
63754
+ messageChannel: params.messageChannel,
63755
+ messageProvider: params.messageProvider,
63756
+ agentAccountId: params.agentAccountId,
63757
+ messageTo: params.messageTo,
63758
+ messageThreadId: params.messageThreadId,
63759
+ groupId: params.groupId,
63760
+ groupChannel: params.groupChannel,
63761
+ groupSpace: params.groupSpace,
63762
+ spawnedBy: params.spawnedBy,
63763
+ senderIsOwner: params.senderIsOwner,
63764
+ currentChannelId: params.currentChannelId,
63765
+ currentThreadTs: params.currentThreadTs,
63766
+ replyToMode: params.replyToMode,
63767
+ hasRepliedRef: params.hasRepliedRef,
63768
+ sessionFile: params.sessionFile,
63769
+ workspaceDir: resolvedWorkspace,
63770
+ agentDir,
63771
+ config: params.config,
63772
+ skillsSnapshot: params.skillsSnapshot,
63773
+ prompt: verificationPrompt,
63774
+ images: void 0,
63775
+ disableTools: params.disableTools,
63776
+ provider,
63777
+ modelId,
63778
+ model,
63779
+ authStorage,
63780
+ modelRegistry,
63781
+ agentId: workspaceResolution.agentId,
63782
+ thinkLevel,
63783
+ verboseLevel: params.verboseLevel,
63784
+ reasoningLevel: params.reasoningLevel,
63785
+ toolResultFormat: resolvedToolResultFormat,
63786
+ execOverrides: params.execOverrides,
63787
+ bashElevated: params.bashElevated,
63788
+ timeoutMs: params.timeoutMs,
63789
+ runId: params.runId,
63790
+ abortSignal: params.abortSignal,
63791
+ shouldEmitToolResult: params.shouldEmitToolResult,
63792
+ shouldEmitToolOutput: params.shouldEmitToolOutput,
63793
+ onPartialReply: params.onPartialReply,
63794
+ onAssistantMessageStart: params.onAssistantMessageStart,
63795
+ onBlockReply: params.onBlockReply,
63796
+ onBlockReplyFlush: params.onBlockReplyFlush,
63797
+ blockReplyBreak: params.blockReplyBreak,
63798
+ blockReplyChunking: params.blockReplyChunking,
63799
+ onReasoningStream: params.onReasoningStream,
63800
+ onReasoningEnd: params.onReasoningEnd,
63801
+ onToolResult: params.onToolResult,
63802
+ onAgentEvent: params.onAgentEvent,
63803
+ extraSystemPrompt: params.extraSystemPrompt,
63804
+ inputProvenance: params.inputProvenance,
63805
+ streamParams: params.streamParams,
63806
+ ownerNumbers: params.ownerNumbers,
63807
+ enforceFinalTag: params.enforceFinalTag
63808
+ });
63809
+ const verifyUsage = normalizeUsage(verifyAttempt.lastAssistant?.usage);
63810
+ mergeUsageIntoAccumulator(usageAccumulator, verifyAttempt.attemptUsage ?? verifyUsage);
63811
+ if (verifyAttempt.compactionCount) autoCompactionCount += verifyAttempt.compactionCount;
63812
+ const verifyHasToolUsage = verifyAttempt.toolMetas.length > 0;
63813
+ const verifyHasContent = verifyAttempt.assistantTexts.some((t) => t.trim().length > 0);
63814
+ if (verifyHasToolUsage || verifyHasContent) {
63815
+ const verifyPayloads = buildEmbeddedRunPayloads({
63816
+ assistantTexts: [...attempt.assistantTexts, ...verifyAttempt.assistantTexts],
63817
+ toolMetas: [...attempt.toolMetas, ...verifyAttempt.toolMetas],
63818
+ lastAssistant: verifyAttempt.lastAssistant ?? attempt.lastAssistant,
63819
+ lastToolError: verifyAttempt.lastToolError ?? attempt.lastToolError,
63820
+ config: params.config,
63821
+ sessionKey: params.sessionKey ?? params.sessionId,
63822
+ provider: activeErrorContext.provider,
63823
+ model: activeErrorContext.model,
63824
+ verboseLevel: params.verboseLevel,
63825
+ reasoningLevel: params.reasoningLevel,
63826
+ toolResultFormat: resolvedToolResultFormat,
63827
+ suppressToolErrorWarnings: params.suppressToolErrorWarnings,
63828
+ inlineToolResultsAllowed: false
63829
+ });
63830
+ if (verifyPayloads.length > 0) {
63831
+ payloads.length = 0;
63832
+ payloads.push(...verifyPayloads);
63833
+ }
63834
+ log$2.debug(`[verification] verification produced corrections: runId=${params.runId} tools=${verifyAttempt.toolMetas.length} texts=${verifyAttempt.assistantTexts.length}`);
63835
+ } else log$2.debug(`[verification] verification confirmed original response: runId=${params.runId}`);
63836
+ } catch (verifyErr) {
63837
+ log$2.warn(`[verification] verification pass failed, keeping original response: runId=${params.runId} error=${String(verifyErr)}`);
63838
+ }
63839
+ }
63840
+ }
63648
63841
  if (timedOut && !timedOutDuringCompaction && payloads.length === 0) return {
63649
63842
  payloads: [{
63650
63843
  text: "Request timed out before a response was generated. Please try again, or increase `agents.defaults.timeoutSeconds` in your config.",
@@ -71173,7 +71366,7 @@ async function deliverSessionMaintenanceWarning(params) {
71173
71366
  return;
71174
71367
  }
71175
71368
  try {
71176
- const { deliverOutboundPayloads } = await import("./deliver-DqqfC-g1.js").then((n) => n.n);
71369
+ const { deliverOutboundPayloads } = await import("./deliver-C0Azi_cK.js").then((n) => n.n);
71177
71370
  await deliverOutboundPayloads({
71178
71371
  cfg: params.cfg,
71179
71372
  channel,
@@ -71825,9 +72018,12 @@ async function getReplyFromConfig(ctx, opts, configOverride) {
71825
72018
  ensureBootstrapFiles: !agentCfg?.skipBootstrap && !isFastTestEnv
71826
72019
  })).dir;
71827
72020
  const agentDir = resolveAgentDir(cfg, agentId);
72021
+ const primaryModelKey = typeof cfg?.agents?.defaults?.model === "object" ? cfg.agents.defaults.model.primary : void 0;
72022
+ const modelTimeoutSeconds = primaryModelKey ? cfg?.agents?.defaults?.models?.[primaryModelKey]?.timeoutSeconds : void 0;
71828
72023
  const timeoutMs = resolveAgentTimeoutMs({
71829
72024
  cfg,
71830
- overrideSeconds: opts?.timeoutOverrideSeconds
72025
+ overrideSeconds: opts?.timeoutOverrideSeconds,
72026
+ modelTimeoutSeconds: modelTimeoutSeconds ?? null
71831
72027
  });
71832
72028
  const configuredTypingSeconds = agentCfg?.typingIntervalSeconds ?? sessionCfg?.typingIntervalSeconds;
71833
72029
  const typingIntervalSeconds = typeof configuredTypingSeconds === "number" ? configuredTypingSeconds : 6;