@symerian/symi 2.8.17 → 2.9.1

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 (356) hide show
  1. package/dist/{acp-cli-Bav1bRj2.js → acp-cli-BNM6b6XY.js} +2 -2
  2. package/dist/{acp-cli-BTu3_kZ1.js → acp-cli-DXsJS3-G.js} +2 -2
  3. package/dist/{agents-9cAyC5ED.js → agents-FNeM-byc.js} +7 -7
  4. package/dist/{agents.config-DuwhYjpi.js → agents.config-CjML1ogJ.js} +1 -1
  5. package/dist/{agents.config-Cu9zTq04.js → agents.config-DUYDFbfP.js} +1 -1
  6. package/dist/{audio-preflight-C6vpFnOG.js → audio-preflight-CMutcMs5.js} +5 -5
  7. package/dist/{audio-preflight-C2EgDXSo.js → audio-preflight-CwbuWmdG.js} +11 -11
  8. package/dist/{audio-preflight-rjCWpcfE.js → audio-preflight-DlO0Hw-w.js} +5 -5
  9. package/dist/{audio-preflight-1dv3T5Zx.js → audio-preflight-SaT5IcVn.js} +11 -11
  10. package/dist/{audit-C9nq99IR.js → audit-Ojap-R-Y.js} +5 -5
  11. package/dist/{audit-CuKP86d_.js → audit-qWCLpveM.js} +5 -5
  12. package/dist/{auth-choice-DeNzlUAR.js → auth-choice-BjTiWmH-.js} +4 -4
  13. package/dist/{auth-choice-CPqyqc93.js → auth-choice-RQ5keocP.js} +4 -4
  14. package/dist/{banner-S1NGA6-s.js → banner-dYiFXA70.js} +1 -1
  15. package/dist/{browser-cli-ClgQ-C8E.js → browser-cli-BQ9jHIXP.js} +3 -3
  16. package/dist/{browser-cli-DuPPIcuV.js → browser-cli-BW0C5Y8-.js} +3 -3
  17. package/dist/build-info.json +3 -3
  18. package/dist/bundled/boot-md/handler.js +14 -14
  19. package/dist/bundled/session-memory/handler.js +14 -14
  20. package/dist/{call-DYfKEdwh.js → call-BZbBLMOq.js} +1 -1
  21. package/dist/{call-M4YyUnwu.js → call-X_vwo309.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-C0v4BJgp.js → channel-options-CjZlTumK.js} +1 -1
  24. package/dist/{channel-options-C6y7Khvq.js → channel-options-DqXYA7rM.js} +1 -1
  25. package/dist/{channel-web-DirOFV_n.js → channel-web-BITaNjFT.js} +7 -7
  26. package/dist/{channels-cli-BhNHckMo.js → channels-cli-7cDtM5kW.js} +30 -30
  27. package/dist/{channels-cli-By_SbriI.js → channels-cli-C8CesA1x.js} +31 -31
  28. package/dist/{chrome-C08Z0XAa.js → chrome-B1zznUiv.js} +1 -1
  29. package/dist/{chrome-BJvuH-NZ.js → chrome-BFDOGeu3.js} +1 -1
  30. package/dist/{chrome-D2ohnA09.js → chrome-faqXQ9f1.js} +1 -1
  31. package/dist/{chrome-B14NNyfm.js → chrome-t-stBgN6.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-B1QQv1cb.js → cli-BJ9_X9eE.js} +27 -27
  34. package/dist/{cli-Bx4RQCuK.js → cli-ZC_92Xyn.js} +26 -26
  35. package/dist/{command-registry-uMOPbrbY.js → command-registry-B1ltIC7z.js} +11 -11
  36. package/dist/{completion-cli-DVD79pVj.js → completion-cli-KSs4eFcq.js} +1 -1
  37. package/dist/{completion-cli-B6s_3rEE.js → completion-cli-_P0e-rhC.js} +2 -2
  38. package/dist/{config-BkZ9HOKT.js → config-BXMAsmut.js} +2 -0
  39. package/dist/{config-PXAJCHa5.js → config-BYCtuYPj.js} +2 -0
  40. package/dist/{config-BAVNLbja.js → config-CbBZUq-Q.js} +2 -0
  41. package/dist/{config-DXt3pc08.js → config-DE6JXMtt.js} +2 -0
  42. package/dist/{config-cli-DzudcNAD.js → config-cli-DIrPShKH.js} +2 -2
  43. package/dist/{config-cli-DCGgd-ZL.js → config-cli-DjCKp4Pe.js} +2 -2
  44. package/dist/{config-guard-BvqCjFPk.js → config-guard-BrZXdLQw.js} +2 -2
  45. package/dist/{config-guard-CaP-V3tf.js → config-guard-DYmSI51f.js} +3 -3
  46. package/dist/{config-validation-B6Fa3VmF.js → config-validation-CNRgc5vc.js} +1 -1
  47. package/dist/{config-validation-EmHZVnuz.js → config-validation-fdYfdAc3.js} +1 -1
  48. package/dist/{configure-CItWwZwI.js → configure-CsZWO6Nr.js} +10 -10
  49. package/dist/{configure-BybpK_1N.js → configure-Ds8SzTEw.js} +10 -10
  50. package/dist/{control-service-Bujr5pk7.js → control-service-B5HVCnUI.js} +4 -4
  51. package/dist/{control-service-C0pRqIFv.js → control-service-DQX3HXS4.js} +4 -4
  52. package/dist/{cron-cli-C8-Gv5dd.js → cron-cli-CfSmL43G.js} +3 -3
  53. package/dist/{cron-cli-BEdmHCWZ.js → cron-cli-D2L3-4aw.js} +3 -3
  54. package/dist/{daemon-cli-BFoJGCHZ.js → daemon-cli-BHwfgmrQ.js} +6 -6
  55. package/dist/{daemon-cli-D6wyb9bo.js → daemon-cli-D9_xrFGD.js} +6 -6
  56. package/dist/daemon-cli.js +2 -0
  57. package/dist/{daemon-runtime-Cp7obV7Q.js → daemon-runtime-BiZG4Kqi.js} +1 -1
  58. package/dist/{daemon-runtime-D_elkkFW.js → daemon-runtime-DOqm0LLm.js} +1 -1
  59. package/dist/{deliver-D0bWiRCg.js → deliver--ff__Iq0.js} +2 -2
  60. package/dist/{deliver-Bdk_R0pQ.js → deliver-CeNdvQJ3.js} +3 -3
  61. package/dist/{deliver-D7BQXt0l.js → deliver-Cqk3zmyW.js} +3 -3
  62. package/dist/{deliver-qUx-eLKt.js → deliver-nBdNxMIr.js} +2 -2
  63. package/dist/{devices-cli-CHt4I-7e.js → devices-cli-BzyrjuAk.js} +2 -2
  64. package/dist/{devices-cli-BXc6DPkC.js → devices-cli-CEvTb9Vr.js} +2 -2
  65. package/dist/{directory-cli-DRWJsAT6.js → directory-cli-Ds7uESrp.js} +1 -1
  66. package/dist/{directory-cli-CQTzAhw1.js → directory-cli-KZHlp_jk.js} +1 -1
  67. package/dist/{dns-cli-BCKPibb8.js → dns-cli-SNU_PJfw.js} +1 -1
  68. package/dist/{dns-cli-BBVIay6Z.js → dns-cli-e8z7wTzi.js} +1 -1
  69. package/dist/{doctor-completion-Bf6dN4D-.js → doctor-completion-CfGWMYVG.js} +1 -1
  70. package/dist/{doctor-completion-BkwgaO4G.js → doctor-completion-D4bMStWc.js} +1 -1
  71. package/dist/{doctor-config-flow-BCMxS2lf.js → doctor-config-flow-CJ4__c8U.js} +2 -2
  72. package/dist/{doctor-config-flow-B2dVxbL7.js → doctor-config-flow-DHXFFSRu.js} +2 -2
  73. package/dist/entry.js +1 -1
  74. package/dist/{exec-approvals-cli-CKRDAo17.js → exec-approvals-cli-_AbKrXIH.js} +4 -4
  75. package/dist/{exec-approvals-cli-BBKVrFTj.js → exec-approvals-cli-z9Iy8aWD.js} +4 -4
  76. package/dist/extensionAPI.js +14 -14
  77. package/dist/{gateway-cli-7CVmb3cX.js → gateway-cli-B4ElmhPF.js} +116 -72
  78. package/dist/{gateway-cli-eNV6kb1V.js → gateway-cli-CfO9aUt0.js} +117 -73
  79. package/dist/{gateway-rpc-DZrB7Sl_.js → gateway-rpc-BlWORxUe.js} +1 -1
  80. package/dist/{gateway-rpc-BEfosIsg.js → gateway-rpc-D1S1i5HM.js} +1 -1
  81. package/dist/{glass-ui-ws-B4fsBuHx.js → glass-ui-ws-Bhu3COgn.js} +34 -34
  82. package/dist/{glass-ui-ws-i91Ms6ts.js → glass-ui-ws-D1UKJUFI.js} +35 -35
  83. package/dist/{health-dA8r4WJ4.js → health-CCslN1xh.js} +5 -5
  84. package/dist/{health-C4tWTDu_.js → health-CLRDrjsk.js} +5 -5
  85. package/dist/{hooks-cli-uGLWBIcW.js → hooks-cli-BrVLhsJ6.js} +27 -27
  86. package/dist/{hooks-cli-DYn9nXX0.js → hooks-cli-DvLYXNNe.js} +28 -28
  87. package/dist/{image-6RZuWKy5.js → image-B6aY1oY3.js} +2 -2
  88. package/dist/{image-C6rCON9L.js → image-CEdTQp1F.js} +2 -2
  89. package/dist/{image-CnEFsKgw.js → image-Cp6qRPZ2.js} +2 -2
  90. package/dist/{image-MNvheU8U.js → image-D5bsPk2_.js} +2 -2
  91. package/dist/index.js +35 -35
  92. package/dist/{lifecycle-core-v3lT0Ymo.js → lifecycle-core-BUGPz1GT.js} +2 -2
  93. package/dist/{lifecycle-core-Uucs6Wz6.js → lifecycle-core-CcPnnp9c.js} +2 -2
  94. package/dist/llm-slug-generator.js +14 -14
  95. package/dist/{login-EYdkb0dH.js → login-B7OJui4y.js} +2 -2
  96. package/dist/{login-D4rZWBXe.js → login-Cu0fTI3Z.js} +2 -2
  97. package/dist/{login-C7EdfiAr.js → login-DKeZ-sOf.js} +2 -2
  98. package/dist/{login-F4pbdnF5.js → login-DwBazcKM.js} +2 -2
  99. package/dist/{login-qr-Apnag5S6.js → login-qr-BBrzemk7.js} +2 -2
  100. package/dist/{login-qr-BElXRp6T.js → login-qr-CtELJan3.js} +2 -2
  101. package/dist/{login-qr-DdAVHOEC.js → login-qr-DyU6qD2X.js} +2 -2
  102. package/dist/{login-qr-DML5LgsI.js → login-qr-Ft17VIG6.js} +2 -2
  103. package/dist/{logs-cli-N5jQvJTm.js → logs-cli-CvgvoxvI.js} +3 -3
  104. package/dist/{logs-cli-CsHpYc2M.js → logs-cli-Dg6OSEA6.js} +3 -3
  105. package/dist/{manager-CgQo1mIM.js → manager-8N1YbbDk.js} +1 -1
  106. package/dist/{manager-D6E6EGWa.js → manager-CztTHQhN.js} +1 -1
  107. package/dist/{manager-BaSutzfz.js → manager-HASZR70T.js} +1 -1
  108. package/dist/{manager-DhGfNqfc.js → manager-OSWCBsL_.js} +1 -1
  109. package/dist/{memory-cli-BMb31chU.js → memory-cli-BDWdeqta.js} +4 -4
  110. package/dist/{memory-cli-lJe72a5i.js → memory-cli-BmWvHCEJ.js} +4 -4
  111. package/dist/{model-catalog-D7k3dDQq.js → model-catalog-BhW-vn5v.js} +2 -2
  112. package/dist/{model-catalog-BuYrTTBn.js → model-catalog-FckJ4pcL.js} +2 -2
  113. package/dist/{model-picker-BNWV-jU4.js → model-picker-D3ii5sBm.js} +2 -2
  114. package/dist/{model-picker-n7beL1F5.js → model-picker-DEUeht6L.js} +2 -2
  115. package/dist/{models-BITN17gY.js → models-5C-QKF0q.js} +8 -8
  116. package/dist/{models-cli-C6JJWWoI.js → models-cli-B2IebIhR.js} +29 -29
  117. package/dist/{models-cli-CHjxevMe.js → models-cli-BqW-Y1GI.js} +30 -30
  118. package/dist/{models-config-J1x_DaPn.js → models-config-CHVfeRDR.js} +1 -1
  119. package/dist/{models-config-B91ShhoT.js → models-config-DGDMieos.js} +1 -1
  120. package/dist/{node-cli-BD4E-Y8a.js → node-cli-emEb0aRo.js} +9 -9
  121. package/dist/{node-cli-CwnTjFkG.js → node-cli-hAxte5bw.js} +9 -9
  122. package/dist/{nodes-cli-Dv0NXhCO.js → nodes-cli-DQPQqEYN.js} +3 -3
  123. package/dist/{nodes-cli-DUD8_q_Q.js → nodes-cli-yd9KABqj.js} +3 -3
  124. package/dist/{onboard-C8Si08MS.js → onboard-BL7Ei8OA.js} +7 -7
  125. package/dist/{onboard-channels-Cb-bemSg.js → onboard-channels-B-PEQmiI.js} +1 -1
  126. package/dist/{onboard-channels-PQP9wlk8.js → onboard-channels-Do0lkLVV.js} +1 -1
  127. package/dist/{onboard-custom-Dk9cL3Uu.js → onboard-custom-BVMtQfB1.js} +2 -2
  128. package/dist/{onboard-custom-CJGSIPt3.js → onboard-custom-CVA34zSg.js} +2 -2
  129. package/dist/{onboard-helpers-DWDNKmkJ.js → onboard-helpers-CNFdWQIV.js} +2 -2
  130. package/dist/{onboard-helpers-CBxazphs.js → onboard-helpers-O6bxf40E.js} +2 -2
  131. package/dist/{onboard-DdJV-Doq.js → onboard-o5O2Ipvr.js} +7 -7
  132. package/dist/{onboard-remote-cZrkePlK.js → onboard-remote-QMqQxvh7.js} +1 -1
  133. package/dist/{onboard-remote-DoIKLWXA.js → onboard-remote-uYveiXQe.js} +1 -1
  134. package/dist/{onboard-skills-BjGYTueQ.js → onboard-skills-CLb94Ag2.js} +1 -1
  135. package/dist/{onboard-skills-zauvnEui.js → onboard-skills-Du3aWSN3.js} +1 -1
  136. package/dist/{onboarding-QAtuyHtA.js → onboarding-3DwQLO4z.js} +10 -10
  137. package/dist/{onboarding-CAaoPaVQ.js → onboarding-B_F_DbjQ.js} +10 -10
  138. package/dist/{onboarding.finalize-MuO2mvHv.js → onboarding.finalize-BWejCrVi.js} +32 -32
  139. package/dist/{onboarding.finalize-BhlQmJlX.js → onboarding.finalize-D_G6Tcqi.js} +34 -34
  140. package/dist/{onboarding.gateway-config-Dg12RcXA.js → onboarding.gateway-config-D8K7HsWb.js} +4 -4
  141. package/dist/{onboarding.gateway-config-uIRsaxMy.js → onboarding.gateway-config-Dixr8mmH.js} +4 -4
  142. package/dist/{outbound-mG1crIsY.js → outbound-CLCy4Nsg.js} +1 -1
  143. package/dist/{outbound-Zmd7UyQH.js → outbound-DVVulk0E.js} +1 -1
  144. package/dist/{outbound-B5OgOn1h.js → outbound-DlWjA7jN.js} +1 -1
  145. package/dist/{outbound-CW8eNbCh.js → outbound-b9pVFyW7.js} +1 -1
  146. package/dist/{pairing-cli-7X1qlhzF.js → pairing-cli-CchjvjCR.js} +1 -1
  147. package/dist/{pairing-cli-Cl4t3cDV.js → pairing-cli-Cgj6qx8Z.js} +1 -1
  148. package/dist/{pi-embedded-helpers-TcYQOZAY.js → pi-embedded-helpers-BPP4adeW.js} +5 -5
  149. package/dist/{pi-embedded-helpers-YD1JQ5xV.js → pi-embedded-helpers-BgpogTwt.js} +1 -1
  150. package/dist/{pi-embedded-helpers-DHAJW99p.js → pi-embedded-helpers-DK2WpZI8.js} +1 -1
  151. package/dist/{pi-embedded-helpers-P13adotN.js → pi-embedded-helpers-DrAT2ieP.js} +5 -5
  152. package/dist/{pi-embedded-BUYKq7Wv.js → pi-embedded-q_tNOp_h.js} +355 -120
  153. package/dist/{pi-tools.policy-Bx5zp45n.js → pi-tools.policy-BE7fB_Cf.js} +2 -2
  154. package/dist/{pi-tools.policy-o0ytjRqu.js → pi-tools.policy-GxaAKOgf.js} +2 -2
  155. package/dist/{plugin-registry-DEhkDNDx.js → plugin-registry-B_KRAoou.js} +2 -2
  156. package/dist/{plugin-registry-tXiHw0vr.js → plugin-registry-CRIH5Sdf.js} +2 -2
  157. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +7 -0
  158. package/dist/plugin-sdk/agents/pi-tools.read-edit-guard.d.ts +5 -0
  159. package/dist/plugin-sdk/agents/pi-tools.read-edit-tracker.d.ts +26 -0
  160. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +11 -0
  161. package/dist/plugin-sdk/agents/system-prompt-skills-autoload.d.ts +21 -0
  162. package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CwMsvdv8.js} +5 -5
  163. package/dist/plugin-sdk/{channel-web-C7aP_KKZ.js → channel-web-CiewzSOW.js} +7 -7
  164. package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-Cou8jVJ2.js} +1 -1
  165. package/dist/plugin-sdk/config/model-profiles-builtin.d.ts +16 -0
  166. package/dist/plugin-sdk/config/resolve-model-profile.d.ts +9 -1
  167. package/dist/plugin-sdk/config/types.skills.d.ts +8 -0
  168. package/dist/plugin-sdk/config/zod-schema.d.ts +4 -0
  169. package/dist/plugin-sdk/{config-BzupW6LN.js → config-DQntj58u.js} +2 -0
  170. package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-OVx3XKTy.js} +2 -2
  171. package/dist/plugin-sdk/{image-DFyINnvE.js → image-ChrcMCo_.js} +2 -2
  172. package/dist/plugin-sdk/index.js +18 -18
  173. package/dist/plugin-sdk/{login-K1YB_7-t.js → login-WuhOM4Dg.js} +2 -2
  174. package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-C87Q7LuN.js} +2 -2
  175. package/dist/plugin-sdk/{manager-CvrDwB1Q.js → manager-Yvm-LGVR.js} +1 -1
  176. package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-T0XdUo-H.js} +1 -1
  177. package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-DihvU43r.js} +5 -5
  178. package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-DUQ9kG2D.js} +2 -2
  179. package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-DD0EJRXx.js} +1 -1
  180. package/dist/plugin-sdk/{reply-BI7Rf3_S.js → reply-I6ZFg_UE.js} +355 -120
  181. package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-IyZnVyIT.js} +2 -2
  182. package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-Cxr9NnOd.js} +1 -1
  183. package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-Dd71o3sZ.js} +1 -1
  184. package/dist/plugin-sdk/{send-DLO_yV5_.js → send-Do_qdBr_.js} +1 -1
  185. package/dist/plugin-sdk/{send-CGhw9mO3.js → send-DxXXcQ_o.js} +1 -1
  186. package/dist/plugin-sdk/{send-jsofmTfJ.js → send-SRQweHTE.js} +1 -1
  187. package/dist/plugin-sdk/{session-BfyK_04G.js → session-LEZ8u8RX.js} +1 -1
  188. package/dist/plugin-sdk/{synthesis-B3z0Jqt1.js → synthesis-bQ4DMwsj.js} +14 -14
  189. package/dist/plugin-sdk/{web-D2WrY-DI.js → web-C3YuHiih.js} +18 -18
  190. package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-ClWxTG5S.js} +2 -2
  191. package/dist/{plugins-cli-D1vPxTOQ.js → plugins-cli-Co9cRpLe.js} +27 -27
  192. package/dist/{plugins-cli-ByG6o7D2.js → plugins-cli-MDYiXsRL.js} +28 -28
  193. package/dist/{program-Q44fKoq6.js → program-BWqVPm5t.js} +34 -34
  194. package/dist/{program-context-C3QEc34t.js → program-context-m9C36Cuq.js} +38 -38
  195. package/dist/{prompt-select-styled-DBVeLysq.js → prompt-select-styled-BKJVEVPk.js} +15 -15
  196. package/dist/{prompt-select-styled-BSZrZcW2.js → prompt-select-styled-DzjQVaDM.js} +15 -15
  197. package/dist/{provider-auth-helpers-Bm4cf-Ms.js → provider-auth-helpers-DYJ-0sNe.js} +2 -2
  198. package/dist/{provider-auth-helpers-rH91VXG-.js → provider-auth-helpers-DaTqy1aA.js} +2 -2
  199. package/dist/{push-apns-CRD9IH1s.js → push-apns-DdQlLTpV.js} +1 -1
  200. package/dist/{push-apns-Cj10sUbK.js → push-apns-_aeFBwsP.js} +1 -1
  201. package/dist/{pw-ai-CeWN4iD9.js → pw-ai-Bpp0J0PM.js} +2 -2
  202. package/dist/{pw-ai-DYZonrPL.js → pw-ai-D9ZuX3U6.js} +2 -2
  203. package/dist/{pw-ai-D9fCYPe7.js → pw-ai-DSmC8YuO.js} +2 -2
  204. package/dist/{pw-ai-40Jf9QIb.js → pw-ai-XSTIQILG.js} +2 -2
  205. package/dist/{qr-cli-CCWM_3Nb.js → qr-cli-Dq9G8FPl.js} +1 -1
  206. package/dist/{qr-cli-6eVyM6ek.js → qr-cli-DtHLOD1G.js} +1 -1
  207. package/dist/{register.agent-Dfu85lRL.js → register.agent-Hi0PN67T.js} +35 -35
  208. package/dist/{register.agent-DGDnsvVd.js → register.agent-RNTVF_Nk.js} +33 -33
  209. package/dist/{register.configure-BcdyiQui.js → register.configure-DE2Fg1dO.js} +38 -38
  210. package/dist/{register.configure-FCTbPCwe.js → register.configure-Dp-F_KKy.js} +37 -37
  211. package/dist/{register.maintenance-Y8P9AnLe.js → register.maintenance-Bbd-g7nL.js} +37 -37
  212. package/dist/{register.maintenance-DvDwpW6B.js → register.maintenance-QHRRhtsg.js} +35 -35
  213. package/dist/{register.message-mTqwOntI.js → register.message-B5uWOXev.js} +27 -27
  214. package/dist/{register.message-C57ubt4f.js → register.message-BvutRi1a.js} +28 -28
  215. package/dist/{register.onboard-MIChlygg.js → register.onboard-CNOh527M.js} +34 -34
  216. package/dist/{register.onboard-YCmMzAW-.js → register.onboard-DRHuoRTm.js} +33 -33
  217. package/dist/{register.setup-DzUZ2x6y.js → register.setup-Cj0oOZqL.js} +33 -33
  218. package/dist/{register.setup-sQeN5xag.js → register.setup-D1ePW7dl.js} +34 -34
  219. package/dist/{register.status-health-sessions-DsptpS7K.js → register.status-health-sessions-DfyO7JaH.js} +30 -30
  220. package/dist/{register.status-health-sessions-DaPK2tow.js → register.status-health-sessions-sf1XzcPo.js} +32 -32
  221. package/dist/{register.subclis-17z5d7uO.js → register.subclis-Do_HdpUT.js} +28 -28
  222. package/dist/{replies-D0NFBbd-.js → replies-BV7oFP7Z.js} +1 -1
  223. package/dist/{replies-Sxbew659.js → replies-BxvfG7Oj.js} +1 -1
  224. package/dist/{replies-CZH45dMt.js → replies-CPhYC11m.js} +1 -1
  225. package/dist/{replies-CUWXgyx2.js → replies-IkylJ7lX.js} +1 -1
  226. package/dist/{reply-2awhibgG.js → reply-DEub7xci.js} +364 -129
  227. package/dist/{routes-wmFRpLa9.js → routes-Evl8vnTV.js} +3 -3
  228. package/dist/{routes-c86p9MPH.js → routes-n7RUgOOW.js} +3 -3
  229. package/dist/{rpc-BKlQ97aZ.js → rpc-3T_LjHn1.js} +1 -1
  230. package/dist/{rpc-DC4ol5Xa.js → rpc-DeJsMHDF.js} +1 -1
  231. package/dist/{run-main-CfVO6DFS.js → run-main-B_ZLo4JR.js} +45 -45
  232. package/dist/{runner-BBYms6g4.js → runner-BX-ap4VU.js} +3 -3
  233. package/dist/{runner-DFuAePEr.js → runner-B_6xBcPB.js} +2 -2
  234. package/dist/{runner-D633VT13.js → runner-CMvsDzah.js} +2 -2
  235. package/dist/{runner-Cbz8g76d.js → runner-CiThXXY3.js} +3 -3
  236. package/dist/{sandbox-CCHQuSja.js → sandbox-BQ5LAIBQ.js} +5 -5
  237. package/dist/{sandbox-WWVXeHlA.js → sandbox-T9SO3y3b.js} +5 -5
  238. package/dist/{sandbox-cli-BtGgnGrs.js → sandbox-cli-Bi8lblc6.js} +6 -6
  239. package/dist/{sandbox-cli-momxce7H.js → sandbox-cli-MZJX1Ht6.js} +6 -6
  240. package/dist/{security-cli-BfiJ3e0Y.js → security-cli-AZBZs6ww.js} +9 -9
  241. package/dist/{security-cli-CIB7kqEk.js → security-cli-txjMZzBx.js} +9 -9
  242. package/dist/{send-DvbOiJ-I.js → send-BPBFuPrC.js} +1 -1
  243. package/dist/{send-SF7x1UHb.js → send-BUBES34Y.js} +1 -1
  244. package/dist/{send-DpMnSIi5.js → send-BaSqjfd_.js} +1 -1
  245. package/dist/{send-Dz656vcm.js → send-Bi8XhwOZ.js} +1 -1
  246. package/dist/{send-Bb4it0te.js → send-BtbWvw2k.js} +1 -1
  247. package/dist/{send-DFtnbzqy.js → send-C4IU_tV3.js} +1 -1
  248. package/dist/{send-Iocbaltq.js → send-C6-rN_Li.js} +1 -1
  249. package/dist/{send-5GrSqB6v.js → send-CSkNKYIc.js} +1 -1
  250. package/dist/{send-BaFD3lZ7.js → send-CcD9S5so.js} +1 -1
  251. package/dist/{send-DLVrnezL.js → send-CfejAK2u.js} +1 -1
  252. package/dist/{send-CJJuN-Fg.js → send-CoSPwGiI.js} +1 -1
  253. package/dist/{send-9sVK0zP4.js → send-CupfdYEg.js} +1 -1
  254. package/dist/{send-BKo1T3HF.js → send-CyPj_MLV.js} +1 -1
  255. package/dist/{send-COVVt64P.js → send-DNqcjLyg.js} +1 -1
  256. package/dist/{send-C0QjmPaf.js → send-DlYO3ExM.js} +1 -1
  257. package/dist/{send-Cpk3Ti6-.js → send-Dn1Pirhx.js} +1 -1
  258. package/dist/{send-B5kAnKqP.js → send-_CmB6CKB.js} +1 -1
  259. package/dist/{send-DGbBPbV0.js → send-dohExhb8.js} +1 -1
  260. package/dist/{send-BqOhAhRS.js → send-llekTUks.js} +1 -1
  261. package/dist/{send-BaBv1rAU.js → send-vmIzYMwN.js} +1 -1
  262. package/dist/{server-context-C66bI8ZM.js → server-context-BkYSrDni.js} +5 -5
  263. package/dist/{server-context-DefCxQsB.js → server-context-CGMSzPWd.js} +5 -5
  264. package/dist/{server-methods-D_g3GJhv.js → server-methods-C-itThFa.js} +17 -17
  265. package/dist/{server-methods-Bdgs89ve.js → server-methods-P-ayY-6k.js} +16 -16
  266. package/dist/{server-node-events-Cvgmf8fS.js → server-node-events-D5ee96aZ.js} +27 -27
  267. package/dist/{server-node-events-BZN3RZ8H.js → server-node-events-tvNFkev2.js} +28 -28
  268. package/dist/{session-mFiujXaP.js → session-CMploMg7.js} +1 -1
  269. package/dist/{session-BTeY6Gn2.js → session-CifmyF9K.js} +1 -1
  270. package/dist/{session-BtL_LuWh.js → session-DQimwuIx.js} +1 -1
  271. package/dist/{session-BpaF8fzk.js → session-bvybh7vL.js} +1 -1
  272. package/dist/{session-utils-DaBIs243.js → session-utils-DQ-t0PxQ.js} +3 -3
  273. package/dist/{sessions-B2KSRtKQ.js → sessions-BIsirZy0.js} +3 -3
  274. package/dist/{sessions-BeYHj0gr.js → sessions-BKn2DFYs.js} +1 -1
  275. package/dist/{sessions-BPD85pWA.js → sessions-DCr5nAOw.js} +1 -1
  276. package/dist/{shared-PtB96PLH.js → shared-F4GNd-mC.js} +1 -1
  277. package/dist/{shared-C9vLT1Vj.js → shared-iaXjUnvo.js} +1 -1
  278. package/dist/{skills-cli-dTks7st0.js → skills-cli-BX1J5GLJ.js} +1 -1
  279. package/dist/{skills-cli-DiND94Um.js → skills-cli-CZgrqMPo.js} +1 -1
  280. package/dist/{status-CwqBkxi2.js → status-BlTLrS6h.js} +2 -2
  281. package/dist/{status-Dkr4Celv.js → status-BqjF9Q9S.js} +9 -9
  282. package/dist/{status-Ca_VZkZV.js → status-CfIkReeE.js} +10 -10
  283. package/dist/{status-DcxWlds6.js → status-DjvBeoYl.js} +2 -2
  284. package/dist/{status.update-B5zI1_Id.js → status.update-BZnfRS2e.js} +1 -1
  285. package/dist/{status.update-8HXdAdwz.js → status.update-C5evp93A.js} +1 -1
  286. package/dist/{subagent-registry-CncIZPCd.js → subagent-registry-DVYhalAo.js} +365 -130
  287. package/dist/{synthesis-DOmJ2Gay.js → synthesis-DDQ5zAtf.js} +14 -14
  288. package/dist/{synthesis-CxvpkXBW.js → synthesis-DRXsTePq.js} +26 -26
  289. package/dist/{synthesis-lD0Vb_9q.js → synthesis-DgiYnjmZ.js} +14 -14
  290. package/dist/{synthesis-CTC73eY9.js → synthesis-y-Ozm8YK.js} +27 -27
  291. package/dist/{system-cli-BERSpUjO.js → system-cli-IeefTiI1.js} +3 -3
  292. package/dist/{system-cli-C61hzNPk.js → system-cli-hjvWuxnn.js} +3 -3
  293. package/dist/{systemd-hints-Ct8ebNeC.js → systemd-hints-CW7G2Z_2.js} +1 -1
  294. package/dist/{systemd-hints-vhJS1sOh.js → systemd-hints-CcsN2P1C.js} +1 -1
  295. package/dist/{tui-CI_zqapL.js → tui-ByDc_eA-.js} +4 -4
  296. package/dist/{tui-Dg_cvgVP.js → tui-DulNash-.js} +4 -4
  297. package/dist/{tui-cli-DtBW_VCL.js → tui-cli-D--Wucil.js} +9 -9
  298. package/dist/{tui-cli-BD1cbShC.js → tui-cli-cbFjX5ua.js} +9 -9
  299. package/dist/{unified-runner-JQaSdhSg.js → unified-runner-BRmPenSK.js} +355 -120
  300. package/dist/{update-cli-CplnPSZ5.js → update-cli-5uhTWLns.js} +38 -38
  301. package/dist/{update-cli-BO1uw-SU.js → update-cli-BfvcUFky.js} +40 -40
  302. package/dist/{update-runner-DFp9PDMN.js → update-runner-22u8HOoq.js} +1 -1
  303. package/dist/{update-runner-Df4mjndq.js → update-runner-DyENgdTM.js} +1 -1
  304. package/dist/{web-CZoQ03ZE.js → web-B8GaP73t.js} +17 -17
  305. package/dist/{web-Dn33Cd3-.js → web-CqeSgivQ.js} +30 -30
  306. package/dist/{web-BEDc6iEz.js → web-Dbe1DwOE.js} +17 -17
  307. package/dist/{web-CCEVjDcU.js → web-s9NWpUYH.js} +30 -30
  308. package/dist/{webhooks-cli-BEk3Xj9r.js → webhooks-cli-9lyrT9S-.js} +1 -1
  309. package/dist/{webhooks-cli-B7WTF3ao.js → webhooks-cli-C56QoA-d.js} +1 -1
  310. package/dist/{whatsapp-actions-uEcDLORc.js → whatsapp-actions-BV4mjN5j.js} +2 -2
  311. package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-BngdI8G3.js} +2 -2
  312. package/dist/{whatsapp-actions-DEn0NRir.js → whatsapp-actions-D5RBK0Cm.js} +2 -2
  313. package/dist/{whatsapp-actions-BUZuNBin.js → whatsapp-actions-Dx8FkbIf.js} +2 -2
  314. package/dist/{with-timeout-DwriPEWn.js → with-timeout-7gwjaz5c.js} +1 -1
  315. package/dist/{with-timeout-BuIx7QnX.js → with-timeout-C1vsg3IF.js} +1 -1
  316. package/extensions/bluebubbles/package.json +1 -1
  317. package/extensions/copilot-proxy/package.json +1 -1
  318. package/extensions/diagnostics-otel/package.json +1 -1
  319. package/extensions/discord/package.json +1 -1
  320. package/extensions/feishu/package.json +1 -1
  321. package/extensions/google-antigravity-auth/package.json +1 -1
  322. package/extensions/google-gemini-cli-auth/package.json +1 -1
  323. package/extensions/googlechat/package.json +1 -1
  324. package/extensions/imessage/package.json +1 -1
  325. package/extensions/irc/package.json +1 -1
  326. package/extensions/learning-loop/package.json +1 -1
  327. package/extensions/line/package.json +1 -1
  328. package/extensions/llm-task/package.json +1 -1
  329. package/extensions/matrix/CHANGELOG.md +12 -0
  330. package/extensions/matrix/package.json +1 -1
  331. package/extensions/mattermost/package.json +1 -1
  332. package/extensions/memory-core/package.json +1 -1
  333. package/extensions/memory-lancedb/package.json +1 -1
  334. package/extensions/minimax-portal-auth/package.json +1 -1
  335. package/extensions/msteams/CHANGELOG.md +12 -0
  336. package/extensions/msteams/package.json +1 -1
  337. package/extensions/nextcloud-talk/package.json +1 -1
  338. package/extensions/nostr/CHANGELOG.md +12 -0
  339. package/extensions/nostr/package.json +1 -1
  340. package/extensions/open-prose/package.json +1 -1
  341. package/extensions/outlook/package.json +1 -1
  342. package/extensions/pipeline/package.json +1 -1
  343. package/extensions/signal/package.json +1 -1
  344. package/extensions/slack/package.json +1 -1
  345. package/extensions/telegram/package.json +1 -1
  346. package/extensions/tlon/package.json +1 -1
  347. package/extensions/twitch/CHANGELOG.md +12 -0
  348. package/extensions/twitch/package.json +1 -1
  349. package/extensions/voice-call/CHANGELOG.md +12 -0
  350. package/extensions/voice-call/package.json +1 -1
  351. package/extensions/whatsapp/package.json +1 -1
  352. package/extensions/zalo/CHANGELOG.md +12 -0
  353. package/extensions/zalo/package.json +1 -1
  354. package/extensions/zalouser/CHANGELOG.md +12 -0
  355. package/extensions/zalouser/package.json +1 -1
  356. package/package.json +1 -1
@@ -8,12 +8,12 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-ChYu
8
8
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-CUNoPTKm.js";
9
9
  import { $ as isRich, A as normalizeE164, D as isRecord$1, E as formatTerminalLink, H as isPlainObject, I as shortenHomeInString, J as setVerbose, K as logVerbose, L as shortenHomePath, P as resolveUserPath, Q as colorize, R as sleep$1, S as clampInt, T as escapeRegExp, U as danger, V as truncateUtf16Safe, Y as shouldLogVerbose, Z as warn, _ as matchPluginCommand, a as normalizeAnyChannelId, b as CONFIG_DIR, ct as normalizeLogLevel, d as createPluginRegistry, et as theme, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, l as requireActivePluginRegistry, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, o as normalizeChannelId$1, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, tt as getChildLogger, u as setActivePluginRegistry, ut as resolvePreferredSymiTmpDir, v as createInternalHookEvent, w as ensureDir$3, y as triggerInternalHook, z as sliceUtf16Safe } from "./registry--_pGht6S.js";
10
10
  import { n as retryAsync } from "./retry-ilSJqnz9.js";
11
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-ZhAe1nXO.js";
12
- import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-BzupW6LN.js";
11
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, At as fetchDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, E as listThreadsDiscord, Et as normalizeChannelSlug, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as buildChannelKeyCandidates, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as applyChannelMatchMeta, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-Cxr9NnOd.js";
12
+ import { B as getConfigOverrides, C as resolveIMessageRemoteAttachmentRoots, G as parseConfigPath, H as setConfigOverride, J as isSafeExecutableValue, K as setConfigValueAtPath, R as parseDurationMs, S as resolveIMessageAttachmentRoots, U as unsetConfigOverride, V as resetConfigOverrides, W as getConfigValueAtPath, X as resolveAgentMaxConcurrent, Y as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, Z as VERSION, _ as normalizeTelegramCommandName, a as writeConfigFile, b as isInboundPathAllowed, g as TELEGRAM_COMMAND_NAME_PATTERN, i as resolveConfigSnapshotHash, n as loadConfig, o as validateConfigObjectWithPlugins, q as unsetConfigValueAtPath, r as readConfigFileSnapshot, v as resolveTelegramCustomCommands, w as normalizeScpRemoteHost, z as validateJsonSchemaValue } from "./config-DQntj58u.js";
13
13
  import { a as clearActiveProgressLine, i as defaultRuntime, o as registerActiveProgressLine, r as createNonExitingRuntime, s as unregisterActiveProgressLine, t as createSubsystemLogger } from "./subsystem-Coz2AgU8.js";
14
14
  import { i as parseBooleanValue$1, n as resolveCliName, r as isTruthyEnvValue, t as formatCliCommand } from "./command-format-DSdvQ_M5.js";
15
15
  import { $ as resolveShellEnvFallbackTimeoutMs, A as getSoonestCooldownExpiry, B as resolveSymiAgentDir, C as getCustomProviderApiKey, D as resolveModelAuthMode, E as resolveEnvApiKey, F as dedupeProfileIds, H as withFileLock, I as listProfilesForProvider, J as DEFAULT_CONTEXT_TOKENS, K as normalizeSecretInput, L as markAuthProfileGood, M as markAuthProfileFailure, N as markAuthProfileUsed, P as resolveApiKeyForProfile, R as ensureAuthProfileStore, S as getApiKeyForModel, T as resolveApiKeyForProvider, X as DEFAULT_PROVIDER, Y as DEFAULT_MODEL, Z as getShellPathFromLoginShell, a as isCliProvider, b as OLLAMA_NATIVE_BASE_URL, c as normalizeProviderId, d as resolveDefaultModelForAgent, f as resolveModelRefFromString, i as findNormalizedProviderValue, j as isProfileInCooldown, k as resolveAuthProfileOrder, m as resolveThinkingDefault, n as buildConfiguredAllowlistKeys, o as modelKey, p as resolveSubagentSpawnModelSelection, q as resolveAuthProfileDisplayLabel, r as buildModelAliasIndex, s as normalizeModelRef$2, t as buildAllowedModelSet, u as resolveConfiguredModelRef, w as requireApiKey, x as createOllamaStreamFn, z as resolveAuthStorePathForDisplay } from "./model-selection-CtVwtb6y.js";
16
- import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, x as filterBootstrapFilesForSession } from "./agent-scope-C3gMMKCU.js";
16
+ import { A as logInfo, C as resolveSymiPackageRoot, D as spawnWithFallback, E as runExec, O as logDebug, S as loadWorkspaceBootstrapFiles, T as runCommandWithTimeout, a as resolveAgentModelPrimary, b as ensureAgentWorkspace, c as resolveDefaultAgentId, d as resolveSessionAgentIds, h as DEFAULT_IDENTITY_FILENAME, i as resolveAgentModelFallbacksOverride, j as logWarn, k as logError, l as resolveEffectiveModelFallbacks, m as DEFAULT_BOOTSTRAP_FILENAME, n as resolveAgentConfig, o as resolveAgentSkillsFilter, p as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId, w as resolveSymiPackageRootSync, x as filterBootstrapFilesForSession } from "./agent-scope-C3gMMKCU.js";
17
17
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-hy3Bn-r9.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-Bv8oZiTO.js";
19
19
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-Ji7f0gqq.js";
@@ -27,38 +27,38 @@ import { a as isMarkdownCapableMessageChannel, c as resolveGatewayMessageChannel
27
27
  import { t as normalizeChatType } from "./chat-type-CEMQNtWX.js";
28
28
  import { n as resolveMarkdownTableMode } from "./markdown-tables-Dfaqilz6.js";
29
29
  import { t as convertMarkdownTables } from "./tables-DR0NmBeH.js";
30
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-jsofmTfJ.js";
30
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-SRQweHTE.js";
31
31
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-D7Lno-TE.js";
32
32
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-B7YyMnIi.js";
33
- import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-BP5pSPaZ.js";
34
- import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DLO_yV5_.js";
35
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-BhifC1J_.js";
33
+ import { a as createSlackWebClient, c as validateSlackBlocksArray, i as buildSlackBlocksFallbackText, o as resolveSlackWebClientOptions, s as parseSlackBlocksInput, t as sendMessageSlack } from "./send-Dd71o3sZ.js";
34
+ import { $ as parseTelegramTarget, A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as readChannelAllowFromStore, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as upsertChannelPairingRequest, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, Q as isVoiceCompatibleAudio, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as addChannelAllowFromStoreEntry, X as listPairingChannels, Y as getPairingAdapter, Z as withTelegramApiErrorLogging, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, et as resolveTelegramTargetChatType, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, nt as toLocationContext, o as sendMessageTelegram, p as markdownToTelegramChunks, q as removeChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as formatLocationText, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-Do_qdBr_.js";
35
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as registerUnhandledRejectionHandler, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as buildRandomTempFilePath } from "./runner-IyZnVyIT.js";
36
36
  import { a as resolveAckReaction, c as resolveHumanDelayConfig, i as resolveResponsePrefixTemplate, n as createReplyPrefixOptions, o as resolveAgentIdentity, s as resolveEffectiveMessagesConfig } from "./reply-prefix-BHuV5t70.js";
37
37
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-CWMflosr.js";
38
38
  import { c as getSkillsSnapshotVersion, d as resolvePairingPaths, f as createAsyncLock, i as resolveSkillCommandInvocation, l as generatePairingToken, m as writeJsonAtomic, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as readJsonFile, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as pruneExpiredPending } from "./skill-commands-DEfqC_kJ.js";
39
39
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-C9DbB-Kp.js";
40
- import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-D9kN9org.js";
40
+ import { M as isSecureWebSocketUrl, N as rawDataToString, T as DEFAULT_AI_SNAPSHOT_MAX_CHARS, x as ensureChromeExtensionRelayServer } from "./chrome-Cou8jVJ2.js";
41
41
  import { A as normalizeHyphenSlug, F as resolveChannelGroupRequireMention, I as resolveChannelGroupToolsPolicy, M as normalizeStringEntriesLower, P as resolveChannelGroupPolicy, a as normalizeReasoningLevel, c as normalizeVerboseLevel, d as getChannelDock, f as listChannelDocks, i as normalizeElevatedLevel, j as normalizeStringEntries, k as normalizeAtHashSlug, l as resolveResponseUsageMode, m as normalizeSignalMessagingTarget, n as formatXHighModelHint, o as normalizeThinkLevel, s as normalizeUsageDisplay, t as formatThinkingLevels, u as supportsXHighThinking } from "./thinking-DCNUIAHY.js";
42
42
  import { r as resolveIMessageAccount } from "./accounts-Dtszw3Zn.js";
43
43
  import { i as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BToL3HlP.js";
44
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-CKgFosI5.js";
45
- import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-BL7ZRhGv.js";
44
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, 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 normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-OVx3XKTy.js";
45
+ import { $ as normalizeToolName, A as isTransientHttpError, At as countToolResults, B as resolveProfile, Bt as resolveChannelResetConfig, C as isContextOverflowError, Ct as deliveryContextKey, D as isRateLimitAssistantError, Dt as normalizeAccountId$3, E as isLikelyContextOverflowError, Et as normalizeSessionDeliveryFields, F as resolveSandboxContext, Ft as normalizeInputProvenance, G as resolveBrowserControlAuth, Gt as resolveFreshSessionTotalTokens, H as resolveExistingPathsWithinRoot, Ht as resolveSessionResetType, I as resolveSandboxRuntimeStatus, It as acquireSessionWriteLock, J as buildPluginToolGroups, Jt as resolveMainSessionKey, K as resolveSandboxConfigForAgent, Kt as canonicalizeMainSessionAlias, L as createBrowserRouteContext, Lt as resolveSessionLockMaxHoldFromTimeout, M as parseImageSizeError, Mt as INPUT_PROVENANCE_KIND_VALUES, N as sanitizeUserFacingText, Nt as applyInputProvenanceToUserMessage, O as isRawApiErrorPayload, Ot as archiveSessionTranscripts, P as ensureSandboxWorkspaceForSession, Pt as hasInterSessionUserProvenance, Q as mergeAlsoAllowPolicy, R as registerBrowserRoutes, Rt as resolveSessionKey, S as isCompactionFailureError, St as deliveryContextFromSession, T as isFailoverErrorMessage, Tt as normalizeDeliveryContext, U as getBridgeAuthForPort, Ut as resolveThreadFlag, V as DEFAULT_UPLOAD_DIR, Vt as resolveSessionResetPolicy, W as ensureBrowserControlAuth, Wt as DEFAULT_RESET_TRIGGERS, X as expandPolicyWithPluginGroups, Xt as resolveGroupSessionKey, Y as collectExplicitAllowlist, Yt as deriveSessionMetaPatch, Z as expandToolGroups, _ as formatRawAssistantErrorForUi, _t as updateLastRoute, a as isMessagingToolDuplicateNormalized, at as ensureSessionHeader, b as isBillingAssistantError, bt as isCacheEnabled, c as extractToolCallsFromAssistant, ct as sanitizeGoogleTurnOrdering, d as isAntigravityClaude, dt as appendAssistantMessageToSessionTranscript, et as resolveToolProfilePolicy, f as isGoogleModelApi, g as formatBillingErrorMessage, gt as recordSessionMetaFromInbound, h as formatAssistantErrorText, ht as readSessionUpdatedAt, it as buildBootstrapContextFiles, j as parseImageDimensionError, jt as extractToolCallNames, k as isTimeoutErrorMessage, kt as capArrayByJsonBytes, l as extractToolResultId, lt as extractDeliveryInfo, m as classifyFailoverReason, mt as loadSessionStore, n as validateGeminiTurns, nt as compileGlobPatterns, o as normalizeTextForComparison, ot as resolveBootstrapMaxChars, p as BILLING_ERROR_USER_MESSAGE, pt as resolveAndPersistSessionFile, q as applyOwnerOnlyToolPolicy, qt as resolveExplicitAgentSessionKey, r as pickFallbackThinkingLevel, rt as matchesAnyGlobPattern, s as sanitizeSessionMessagesImages, st as resolveBootstrapTotalMaxChars, t as validateAnthropicTurns, tt as stripPluginOnlyAllowlist, u as downgradeOpenAIReasoningBlocks, ut as parseSessionThreadInfo, v as getApiErrorPayloadFingerprint, vt as updateSessionStore, w as isFailoverAssistantError, wt as mergeDeliveryContext, x as isCloudCodeAssistFormatError, xt as resolveCacheTtlMs$1, y as isAuthAssistantError, yt as updateSessionStoreEntry, z as resolveBrowserConfig, zt as evaluateSessionFreshness } from "./pi-embedded-helpers-DihvU43r.js";
46
46
  import { n as resolveConversationLabel } from "./conversation-label-yNSj43Jt.js";
47
47
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-A0xdf3yk.js";
48
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
49
49
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-_oc91gNi.js";
50
50
  import { i as saveMediaBuffer, r as getMediaDir } from "./store-Do3t33-c.js";
51
51
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-D5EzMeL_.js";
52
- import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-DFyINnvE.js";
52
+ import { S as minimaxUnderstandImage, _ as stripThinkingTagsFromText, a as decodeDataUrl, b as extractTextFromChatContent, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as resolveToolDisplay, x as ensureSymiModelsJson, y as stripReasoningTagsFromText } from "./image-ChrcMCo_.js";
53
53
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-LbcEa65a.js";
54
54
  import { c as normalizeExtraMemoryPaths, m as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-Qi-tyvHh.js";
55
55
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Wd5tNeQG.js";
56
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-CvrDwB1Q.js";
56
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-Yvm-LGVR.js";
57
57
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-BuYpmEx-.js";
58
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-CGhw9mO3.js";
58
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-DxXXcQ_o.js";
59
59
  import { t as makeProxyFetch } from "./proxy-D27OUbrW.js";
60
60
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-CHQ7BTlU.js";
61
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-BR2TPTVW.js";
61
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-DD0EJRXx.js";
62
62
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DiyK6bgV.js";
63
63
  import { t as getActiveWebListener } from "./active-listener-CJuvR4C2.js";
64
64
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CP722fTK.js";
@@ -11638,7 +11638,7 @@ async function getMemorySearchManager(params) {
11638
11638
  const wrapper = new FallbackMemoryManager({
11639
11639
  primary,
11640
11640
  fallbackFactory: async () => {
11641
- const { MemoryIndexManager } = await import("./manager-CvrDwB1Q.js").then((n) => n.n);
11641
+ const { MemoryIndexManager } = await import("./manager-Yvm-LGVR.js").then((n) => n.n);
11642
11642
  return await MemoryIndexManager.get(params);
11643
11643
  }
11644
11644
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -11651,7 +11651,7 @@ async function getMemorySearchManager(params) {
11651
11651
  }
11652
11652
  }
11653
11653
  try {
11654
- const { MemoryIndexManager } = await import("./manager-CvrDwB1Q.js").then((n) => n.n);
11654
+ const { MemoryIndexManager } = await import("./manager-Yvm-LGVR.js").then((n) => n.n);
11655
11655
  return { manager: await MemoryIndexManager.get(params) };
11656
11656
  } catch (err) {
11657
11657
  return {
@@ -14964,16 +14964,16 @@ function shouldComputeCommandAuthorized(text, cfg, options) {
14964
14964
 
14965
14965
  //#endregion
14966
14966
  //#region src/channels/sender-label.ts
14967
- function normalize(value) {
14967
+ function normalize$1(value) {
14968
14968
  const trimmed = value?.trim();
14969
14969
  return trimmed ? trimmed : void 0;
14970
14970
  }
14971
14971
  function resolveSenderLabel(params) {
14972
- const name = normalize(params.name);
14973
- const username = normalize(params.username);
14974
- const tag = normalize(params.tag);
14975
- const e164 = normalize(params.e164);
14976
- const id = normalize(params.id);
14972
+ const name = normalize$1(params.name);
14973
+ const username = normalize$1(params.username);
14974
+ const tag = normalize$1(params.tag);
14975
+ const e164 = normalize$1(params.e164);
14976
+ const id = normalize$1(params.id);
14977
14977
  const display = name ?? username ?? tag ?? "";
14978
14978
  const idPart = e164 ?? id ?? "";
14979
14979
  if (display && idPart && display !== idPart) return `${display} (${idPart})`;
@@ -15653,7 +15653,7 @@ async function routeReply(params) {
15653
15653
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
15654
15654
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
15655
15655
  try {
15656
- const { deliverOutboundPayloads } = await import("./deliver-CKgFosI5.js").then((n) => n.n);
15656
+ const { deliverOutboundPayloads } = await import("./deliver-OVx3XKTy.js").then((n) => n.n);
15657
15657
  return {
15658
15658
  ok: true,
15659
15659
  messageId: (await deliverOutboundPayloads({
@@ -18127,7 +18127,7 @@ async function describeStickerImage(params) {
18127
18127
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
18128
18128
  try {
18129
18129
  const buffer = await fs$1.readFile(imagePath);
18130
- const { describeImageWithModel } = await import("./image-DFyINnvE.js").then((n) => n.n);
18130
+ const { describeImageWithModel } = await import("./image-ChrcMCo_.js").then((n) => n.n);
18131
18131
  return (await describeImageWithModel({
18132
18132
  buffer,
18133
18133
  fileName: "sticker.webp",
@@ -18538,7 +18538,7 @@ function createWhatsAppLoginTool() {
18538
18538
  force: Type.Optional(Type.Boolean())
18539
18539
  }),
18540
18540
  execute: async (_toolCallId, args) => {
18541
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-lMl_OqDj.js");
18541
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-C87Q7LuN.js");
18542
18542
  if ((args?.action ?? "start") === "wait") {
18543
18543
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
18544
18544
  return {
@@ -20693,7 +20693,7 @@ async function preflightDiscordMessage(params) {
20693
20693
  let preflightTranscript;
20694
20694
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
20695
20695
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
20696
- const { transcribeFirstAudio } = await import("./audio-preflight-DucGa8w7.js");
20696
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwMsvdv8.js");
20697
20697
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
20698
20698
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
20699
20699
  ctx: {
@@ -27382,6 +27382,38 @@ async function runWithImageModelFallback(params) {
27382
27382
  //#endregion
27383
27383
  //#region src/config/model-profiles-builtin.ts
27384
27384
  /**
27385
+ * Shared safety + output-style additions applied to most built-in profiles
27386
+ * and the Generic fallback. These rules came from a long history of
27387
+ * model-specific bugs (verification-monologue padding, "I have addressed"
27388
+ * preambles, post-answer assessment lists). Keeping them in one place
27389
+ * means a new profile inherits sane defaults instead of starting empty.
27390
+ *
27391
+ * Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
27392
+ * live here; profile-specific rules (control-token stripping, tool-arg
27393
+ * cleanup, reasoning hints) live in their own per-profile additions.
27394
+ *
27395
+ * Exported so resolve-model-profile.ts can apply the same additions to
27396
+ * the Generic fallback profile — no model resolves to "Generic" without
27397
+ * inheriting the safety/style rules.
27398
+ */
27399
+ const SAFETY_AND_STYLE_ADDITIONS = [
27400
+ "CRITICAL OUTPUT RULES:",
27401
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
27402
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27403
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27404
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27405
+ "- If you need to verify your work, do so before writing your response, not after.",
27406
+ "- Send brief progress updates on long tasks so the user knows you are active."
27407
+ ];
27408
+ /** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
27409
+ * planning internal. Not applied to Gemma/Ollama because those models
27410
+ * don't have structured thinking and the rule confuses them. */
27411
+ const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
27412
+ /** Hint for models that leak Gemma-style control tokens (Gemma family,
27413
+ * Ollama hosting any uncensored open model). Forces tool-arg cleanup and
27414
+ * forbids leaking turn markers in user-visible text. */
27415
+ const CONTROL_TOKEN_ADDITIONS = ["- Do not output raw control tokens, channel tags, or turn markers.", "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."];
27416
+ /**
27385
27417
  * Built-in model profiles. Ordered from most-specific to least-specific so
27386
27418
  * that `resolveModelProfile` can return the first match.
27387
27419
  *
@@ -27415,17 +27447,7 @@ const BUILTIN_PROFILES = [
27415
27447
  hasStructuredThinking: false,
27416
27448
  validateToolArgs: true
27417
27449
  },
27418
- promptAdditions: [
27419
- "CRITICAL OUTPUT RULES:",
27420
- "- Your response ends when you have delivered the answer. Do not append anything after.",
27421
- "- Do not output raw control tokens, channel tags, or turn markers.",
27422
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27423
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27424
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27425
- "- If you need to verify your work, do so before writing your response, not after.",
27426
- "- Send brief progress updates on long tasks so the user knows you are active.",
27427
- "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
27428
- ],
27450
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
27429
27451
  ui: {
27430
27452
  badge: "Local",
27431
27453
  watchdogMs: 9e5,
@@ -27452,16 +27474,7 @@ const BUILTIN_PROFILES = [
27452
27474
  hasStructuredThinking: true,
27453
27475
  validateToolArgs: false
27454
27476
  },
27455
- promptAdditions: [
27456
- "CRITICAL OUTPUT RULES:",
27457
- "- Your response ends when you have delivered the answer. Do not append anything after.",
27458
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27459
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27460
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27461
- "- If you need to verify your work, do so before writing your response, not after.",
27462
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
27463
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
27464
- ],
27477
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
27465
27478
  ui: {
27466
27479
  badge: "Local",
27467
27480
  watchdogMs: 9e5,
@@ -27487,7 +27500,7 @@ const BUILTIN_PROFILES = [
27487
27500
  hasStructuredThinking: true,
27488
27501
  validateToolArgs: false
27489
27502
  },
27490
- promptAdditions: [],
27503
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
27491
27504
  ui: {
27492
27505
  badge: "API",
27493
27506
  watchdogMs: 3e5,
@@ -27520,15 +27533,7 @@ const BUILTIN_PROFILES = [
27520
27533
  hasStructuredThinking: true,
27521
27534
  validateToolArgs: false
27522
27535
  },
27523
- promptAdditions: [
27524
- "CRITICAL OUTPUT RULES:",
27525
- "- Your response ends when you have delivered the answer. Do not append anything after.",
27526
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27527
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27528
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27529
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
27530
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
27531
- ],
27536
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
27532
27537
  ui: {
27533
27538
  badge: "Spider",
27534
27539
  watchdogMs: 9e5,
@@ -27561,16 +27566,7 @@ const BUILTIN_PROFILES = [
27561
27566
  hasStructuredThinking: false,
27562
27567
  validateToolArgs: true
27563
27568
  },
27564
- promptAdditions: [
27565
- "CRITICAL OUTPUT RULES:",
27566
- "- Your response ends when you have delivered the answer. Do not append anything after.",
27567
- "- Do not output raw control tokens, channel tags, or turn markers.",
27568
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27569
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27570
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27571
- "- Send brief progress updates on long tasks so the user knows you are active.",
27572
- "- When calling tools, provide arguments as clean values only. Never include <|, |>, or XML-like tags in tool argument values. For exec/bash commands, provide only valid shell syntax."
27573
- ],
27569
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
27574
27570
  ui: {
27575
27571
  badge: "Spider",
27576
27572
  watchdogMs: 6e5,
@@ -27602,16 +27598,7 @@ const BUILTIN_PROFILES = [
27602
27598
  hasStructuredThinking: true,
27603
27599
  validateToolArgs: false
27604
27600
  },
27605
- promptAdditions: [
27606
- "CRITICAL OUTPUT RULES:",
27607
- "- Your response ends when you have delivered the answer. Do not append anything after.",
27608
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
27609
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
27610
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
27611
- "- If you need to verify your work, do so before writing your response, not after.",
27612
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
27613
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
27614
- ],
27601
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
27615
27602
  ui: {
27616
27603
  badge: "CoreWeave",
27617
27604
  watchdogMs: 9e5,
@@ -27622,7 +27609,15 @@ const BUILTIN_PROFILES = [
27622
27609
 
27623
27610
  //#endregion
27624
27611
  //#region src/config/resolve-model-profile.ts
27625
- /** Default profile returned when no match is found. */
27612
+ /**
27613
+ * Default profile returned when no match is found.
27614
+ *
27615
+ * Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
27616
+ * the same safety+style additions as every named profile, so newly-added
27617
+ * models without a profile entry inherit sane defaults instead of
27618
+ * starting empty (which would silently regress safety rules until someone
27619
+ * notices and adds a profile).
27620
+ */
27626
27621
  const FALLBACK_PROFILE = {
27627
27622
  match: "*",
27628
27623
  label: "Generic",
@@ -27641,7 +27636,7 @@ const FALLBACK_PROFILE = {
27641
27636
  hasStructuredThinking: false,
27642
27637
  validateToolArgs: false
27643
27638
  },
27644
- promptAdditions: [],
27639
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
27645
27640
  ui: {
27646
27641
  watchdogMs: 3e5,
27647
27642
  armWatchdogOnSend: true
@@ -34191,6 +34186,86 @@ async function prepareSessionManagerForRun(params) {
34191
34186
  }
34192
34187
  }
34193
34188
 
34189
+ //#endregion
34190
+ //#region src/agents/system-prompt-skills-autoload.ts
34191
+ const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
34192
+ let cachedPackageRoot;
34193
+ function getPackageRoot() {
34194
+ if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
34195
+ return cachedPackageRoot;
34196
+ }
34197
+ function safeSkillName(name) {
34198
+ return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
34199
+ }
34200
+ function tryLoadSkill(skillName, root) {
34201
+ const skillPath = path.join(root, "skills", skillName, "SKILL.md");
34202
+ try {
34203
+ if (!fs.statSync(skillPath).isFile()) return null;
34204
+ } catch {
34205
+ return null;
34206
+ }
34207
+ try {
34208
+ return fs.readFileSync(skillPath, "utf8");
34209
+ } catch {
34210
+ return null;
34211
+ }
34212
+ }
34213
+ function stripFrontmatter(body) {
34214
+ return body.replace(FRONTMATTER_RE, "").trimStart();
34215
+ }
34216
+ /**
34217
+ * Resolves and loads each named skill. Returns the inlinable Markdown block,
34218
+ * or empty string when no skills loaded / minimal mode / no names supplied.
34219
+ */
34220
+ function buildAutoLoadedSkillsBlock(opts) {
34221
+ if (opts.minimalMode) return "";
34222
+ const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
34223
+ if (names.length === 0) return "";
34224
+ const packageRoot = getPackageRoot();
34225
+ const loaded = [];
34226
+ for (const rawName of names) {
34227
+ const name = rawName.trim();
34228
+ if (!safeSkillName(name)) {
34229
+ logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
34230
+ continue;
34231
+ }
34232
+ let body = null;
34233
+ let source = "bundled";
34234
+ if (opts.workspaceDir) {
34235
+ body = tryLoadSkill(name, opts.workspaceDir);
34236
+ source = "workspace";
34237
+ }
34238
+ if (body === null && packageRoot) {
34239
+ body = tryLoadSkill(name, packageRoot);
34240
+ source = "bundled";
34241
+ }
34242
+ if (body === null) {
34243
+ logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
34244
+ continue;
34245
+ }
34246
+ const stripped = stripFrontmatter(body).trim();
34247
+ if (!stripped) {
34248
+ logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
34249
+ continue;
34250
+ }
34251
+ loaded.push({
34252
+ name,
34253
+ body: stripped,
34254
+ source
34255
+ });
34256
+ }
34257
+ if (loaded.length === 0) return "";
34258
+ return [
34259
+ "",
34260
+ "---",
34261
+ "",
34262
+ "## Auto-loaded Skills",
34263
+ "",
34264
+ loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
34265
+ ""
34266
+ ].join("\n");
34267
+ }
34268
+
34194
34269
  //#endregion
34195
34270
  //#region src/agents/tool-summaries.ts
34196
34271
  function buildToolSummaryMap(tools) {
@@ -34206,7 +34281,7 @@ function buildToolSummaryMap(tools) {
34206
34281
  //#endregion
34207
34282
  //#region src/agents/pi-embedded-runner/system-prompt.ts
34208
34283
  function buildEmbeddedSystemPrompt(params) {
34209
- return buildAgentSystemPrompt({
34284
+ const corePrompt = buildAgentSystemPrompt({
34210
34285
  workspaceDir: params.workspaceDir,
34211
34286
  defaultThinkLevel: params.defaultThinkLevel,
34212
34287
  reasoningLevel: params.reasoningLevel,
@@ -34234,6 +34309,14 @@ function buildEmbeddedSystemPrompt(params) {
34234
34309
  contextFiles: params.contextFiles,
34235
34310
  memoryCitationsMode: params.memoryCitationsMode
34236
34311
  });
34312
+ const promptMode = params.promptMode ?? "full";
34313
+ const isMinimal = promptMode === "minimal" || promptMode === "none";
34314
+ const skillsBlock = buildAutoLoadedSkillsBlock({
34315
+ skillNames: params.autoLoadInlineSkills ?? [],
34316
+ workspaceDir: params.workspaceDir,
34317
+ minimalMode: isMinimal
34318
+ });
34319
+ return skillsBlock ? `${corePrompt}${skillsBlock}` : corePrompt;
34237
34320
  }
34238
34321
  function createSystemPromptOverride(systemPrompt) {
34239
34322
  const override = systemPrompt.trim();
@@ -35021,7 +35104,8 @@ async function runEmbeddedAttempt(params) {
35021
35104
  userTime,
35022
35105
  userTimeFormat,
35023
35106
  contextFiles,
35024
- memoryCitationsMode: params.config?.memory?.citations
35107
+ memoryCitationsMode: params.config?.memory?.citations,
35108
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
35025
35109
  });
35026
35110
  const systemPromptReport = buildSystemPromptReport({
35027
35111
  source: "run",
@@ -36901,27 +36985,27 @@ async function runAgentTurn(params) {
36901
36985
  function createDefaultDeps() {
36902
36986
  return {
36903
36987
  sendMessageWhatsApp: async (...args) => {
36904
- const { sendMessageWhatsApp } = await import("./web-D2WrY-DI.js");
36988
+ const { sendMessageWhatsApp } = await import("./web-C3YuHiih.js");
36905
36989
  return await sendMessageWhatsApp(...args);
36906
36990
  },
36907
36991
  sendMessageTelegram: async (...args) => {
36908
- const { sendMessageTelegram } = await import("./send-DLO_yV5_.js").then((n) => n.l);
36992
+ const { sendMessageTelegram } = await import("./send-Do_qdBr_.js").then((n) => n.l);
36909
36993
  return await sendMessageTelegram(...args);
36910
36994
  },
36911
36995
  sendMessageDiscord: async (...args) => {
36912
- const { sendMessageDiscord } = await import("./send-ZhAe1nXO.js").then((n) => n.t);
36996
+ const { sendMessageDiscord } = await import("./send-Cxr9NnOd.js").then((n) => n.t);
36913
36997
  return await sendMessageDiscord(...args);
36914
36998
  },
36915
36999
  sendMessageSlack: async (...args) => {
36916
- const { sendMessageSlack } = await import("./send-BP5pSPaZ.js").then((n) => n.n);
37000
+ const { sendMessageSlack } = await import("./send-Dd71o3sZ.js").then((n) => n.n);
36917
37001
  return await sendMessageSlack(...args);
36918
37002
  },
36919
37003
  sendMessageSignal: async (...args) => {
36920
- const { sendMessageSignal } = await import("./send-CGhw9mO3.js").then((n) => n.i);
37004
+ const { sendMessageSignal } = await import("./send-DxXXcQ_o.js").then((n) => n.i);
36921
37005
  return await sendMessageSignal(...args);
36922
37006
  },
36923
37007
  sendMessageIMessage: async (...args) => {
36924
- const { sendMessageIMessage } = await import("./send-jsofmTfJ.js").then((n) => n.n);
37008
+ const { sendMessageIMessage } = await import("./send-SRQweHTE.js").then((n) => n.n);
36925
37009
  return await sendMessageIMessage(...args);
36926
37010
  }
36927
37011
  };
@@ -47476,7 +47560,7 @@ async function registerSlackMonitorSlashCommands(params) {
47476
47560
  });
47477
47561
  const deliverSlashPayloads = async (replies) => {
47478
47562
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
47479
- import("./replies-BR2TPTVW.js").then((n) => n.r),
47563
+ import("./replies-DD0EJRXx.js").then((n) => n.r),
47480
47564
  import("./chunk-jvk9axTQ.js").then((n) => n.s),
47481
47565
  import("./markdown-tables-Dfaqilz6.js").then((n) => n.t)
47482
47566
  ]);
@@ -52182,7 +52266,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
52182
52266
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
52183
52267
  let preflightTranscript;
52184
52268
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
52185
- const { transcribeFirstAudio } = await import("./audio-preflight-DucGa8w7.js");
52269
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwMsvdv8.js");
52186
52270
  preflightTranscript = await transcribeFirstAudio({
52187
52271
  ctx: {
52188
52272
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -54327,23 +54411,23 @@ let webLoginQrPromise = null;
54327
54411
  let webChannelPromise = null;
54328
54412
  let whatsappActionsPromise = null;
54329
54413
  function loadWebOutbound() {
54330
- webOutboundPromise ??= import("./outbound-DW3cqlQW.js").then((n) => n.t);
54414
+ webOutboundPromise ??= import("./outbound-T0XdUo-H.js").then((n) => n.t);
54331
54415
  return webOutboundPromise;
54332
54416
  }
54333
54417
  function loadWebLogin() {
54334
- webLoginPromise ??= import("./login-K1YB_7-t.js").then((n) => n.n);
54418
+ webLoginPromise ??= import("./login-WuhOM4Dg.js").then((n) => n.n);
54335
54419
  return webLoginPromise;
54336
54420
  }
54337
54421
  function loadWebLoginQr() {
54338
- webLoginQrPromise ??= import("./login-qr-lMl_OqDj.js");
54422
+ webLoginQrPromise ??= import("./login-qr-C87Q7LuN.js");
54339
54423
  return webLoginQrPromise;
54340
54424
  }
54341
54425
  function loadWebChannel() {
54342
- webChannelPromise ??= import("./web-D2WrY-DI.js");
54426
+ webChannelPromise ??= import("./web-C3YuHiih.js");
54343
54427
  return webChannelPromise;
54344
54428
  }
54345
54429
  function loadWhatsAppActions() {
54346
- whatsappActionsPromise ??= import("./whatsapp-actions-eTefsWhW.js");
54430
+ whatsappActionsPromise ??= import("./whatsapp-actions-ClWxTG5S.js");
54347
54431
  return whatsappActionsPromise;
54348
54432
  }
54349
54433
  function createPluginRuntime() {
@@ -59821,6 +59905,91 @@ function isToolAllowedByPolicies(name, policies) {
59821
59905
  return policies.every((policy) => isToolAllowedByPolicyName(name, policy));
59822
59906
  }
59823
59907
 
59908
+ //#endregion
59909
+ //#region src/agents/pi-tools.read-edit-guard.ts
59910
+ const RETRY_GUIDANCE_SUFFIX$1 = " Read the file first, then retry the edit.";
59911
+ function readGuardError(filePath) {
59912
+ return /* @__PURE__ */ new Error(`Edit refused: '${filePath}' has not been read in this session. The edit tool requires the agent to read the file first so oldText can match real content rather than hallucinated content.${RETRY_GUIDANCE_SUFFIX$1}`);
59913
+ }
59914
+ function extractPath(args) {
59915
+ if (!args || typeof args !== "object") return;
59916
+ const record = args;
59917
+ const candidate = record.path ?? record.file_path;
59918
+ if (typeof candidate !== "string") return;
59919
+ const trimmed = candidate.trim();
59920
+ return trimmed.length > 0 ? trimmed : void 0;
59921
+ }
59922
+ function wrapReadToolWithTracker(tool, tracker) {
59923
+ return {
59924
+ ...tool,
59925
+ execute: async (toolCallId, args, signal, onUpdate) => {
59926
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
59927
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
59928
+ const filePath = extractPath(args);
59929
+ if (filePath) tracker.recordRead(filePath);
59930
+ }
59931
+ return result;
59932
+ }
59933
+ };
59934
+ }
59935
+ function wrapWriteToolWithTracker(tool, tracker) {
59936
+ return {
59937
+ ...tool,
59938
+ execute: async (toolCallId, args, signal, onUpdate) => {
59939
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
59940
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
59941
+ const filePath = extractPath(args);
59942
+ if (filePath) tracker.recordWrite(filePath);
59943
+ }
59944
+ return result;
59945
+ }
59946
+ };
59947
+ }
59948
+ function wrapEditToolWithGuard(tool, tracker) {
59949
+ return {
59950
+ ...tool,
59951
+ execute: async (toolCallId, args, signal, onUpdate) => {
59952
+ const filePath = extractPath(args);
59953
+ if (filePath && !tracker.hasObserved(filePath)) throw readGuardError(filePath);
59954
+ return tool.execute(toolCallId, args, signal, onUpdate);
59955
+ }
59956
+ };
59957
+ }
59958
+
59959
+ //#endregion
59960
+ //#region src/agents/pi-tools.read-edit-tracker.ts
59961
+ function normalize(filePath, workspaceRoot) {
59962
+ if (!workspaceRoot) return filePath;
59963
+ if (path.isAbsolute(filePath)) return path.normalize(filePath);
59964
+ return path.resolve(workspaceRoot, filePath);
59965
+ }
59966
+ function createReadEditTracker(opts = {}) {
59967
+ const observed = /* @__PURE__ */ new Map();
59968
+ const record = (filePath, kind) => {
59969
+ if (typeof filePath !== "string" || !filePath.trim()) return;
59970
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
59971
+ const prior = observed.get(key);
59972
+ if (kind === "written" || prior !== "written") observed.set(key, kind);
59973
+ };
59974
+ return {
59975
+ recordRead: (filePath) => record(filePath, "read"),
59976
+ recordWrite: (filePath) => record(filePath, "written"),
59977
+ observation: (filePath) => {
59978
+ if (typeof filePath !== "string" || !filePath.trim()) return null;
59979
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
59980
+ return observed.get(key) ?? null;
59981
+ },
59982
+ hasObserved: (filePath) => {
59983
+ if (typeof filePath !== "string" || !filePath.trim()) return false;
59984
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
59985
+ return observed.has(key);
59986
+ },
59987
+ reset: () => {
59988
+ observed.clear();
59989
+ }
59990
+ };
59991
+ }
59992
+
59824
59993
  //#endregion
59825
59994
  //#region src/media/sniff-mime-from-base64.ts
59826
59995
  async function sniffMimeFromBase64(base64) {
@@ -60146,6 +60315,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
60146
60315
  }
60147
60316
  };
60148
60317
  }
60318
+ /**
60319
+ * Override a tool's description while preserving execute, parameters, and
60320
+ * other properties. Used by Stage 2.5 of the prompt-reduction plan to move
60321
+ * usage docs from the system prompt into tool descriptions where they
60322
+ * belong contextually.
60323
+ *
60324
+ * The replacement description should include the upstream's tool-purpose
60325
+ * sentence so models that only read the description (without the prompt
60326
+ * section) still have the same baseline understanding.
60327
+ */
60328
+ function wrapToolWithDescriptionOverride(tool, description) {
60329
+ return {
60330
+ ...tool,
60331
+ description
60332
+ };
60333
+ }
60149
60334
  function wrapToolWorkspaceRootGuard(tool, root) {
60150
60335
  return {
60151
60336
  ...tool,
@@ -62832,8 +63017,39 @@ const GatewayToolSchema = Type.Object({
62832
63017
  baseHash: Type.Optional(Type.String()),
62833
63018
  sessionKey: Type.Optional(Type.String()),
62834
63019
  note: Type.Optional(Type.String()),
62835
- restartDelayMs: Type.Optional(Type.Number())
63020
+ restartDelayMs: Type.Optional(Type.Number()),
63021
+ userRequestAcknowledgment: Type.Optional(Type.String())
62836
63022
  });
63023
+ /** Actions that mutate gateway state and require explicit user authorization. */
63024
+ const DESTRUCTIVE_ACTIONS = new Set([
63025
+ "config.apply",
63026
+ "config.patch",
63027
+ "update.run"
63028
+ ]);
63029
+ /** Minimum length for a meaningful authorization message. */
63030
+ const MIN_AUTHORIZATION_LENGTH = 10;
63031
+ /**
63032
+ * Asserts the user's request was explicitly acknowledged for destructive
63033
+ * actions. Throws a descriptive error if the acknowledgment is missing,
63034
+ * empty, or trivially short.
63035
+ *
63036
+ * NOTE: This is defense-in-depth, not a hard barrier. A determined model
63037
+ * could still populate the field with fabricated text. The barrier exists
63038
+ * to:
63039
+ * 1. Force the agent to deliberately compose a justification (vs. blind
63040
+ * tool invocation).
63041
+ * 2. Provide an audit trail (the acknowledgment is logged with the tool
63042
+ * call args).
63043
+ * 3. Surface for future tightening (e.g., matching against real session
63044
+ * history).
63045
+ */
63046
+ function assertUserAuthorization(action, params) {
63047
+ if (!DESTRUCTIVE_ACTIONS.has(action)) return;
63048
+ const ack = params.userRequestAcknowledgment;
63049
+ const trimmed = typeof ack === "string" ? ack.trim() : "";
63050
+ if (!trimmed) throw new Error(`Action '${action}' requires an explicit user authorization. Pass userRequestAcknowledgment with a paraphrase of the user's request (e.g., "user said: please update Symi"). If the user did not explicitly request this action, ask them first instead of invoking it.`);
63051
+ if (trimmed.length < MIN_AUTHORIZATION_LENGTH) throw new Error(`Action '${action}' requires a substantive userRequestAcknowledgment (minimum ${MIN_AUTHORIZATION_LENGTH} characters describing the user's request). Received: ${JSON.stringify(trimmed)}.`);
63052
+ }
62837
63053
  function createGatewayTool(opts) {
62838
63054
  return {
62839
63055
  label: "Gateway",
@@ -62844,6 +63060,7 @@ function createGatewayTool(opts) {
62844
63060
  execute: async (_toolCallId, args) => {
62845
63061
  const params = args;
62846
63062
  const action = readStringParam(params, "action", { required: true });
63063
+ assertUserAuthorization(action, params);
62847
63064
  if (action === "restart") {
62848
63065
  if (!isRestartEnabled(opts?.config)) throw new Error("Gateway restart is disabled (commands.restart=false).");
62849
63066
  const sessionKey = typeof params.sessionKey === "string" && params.sessionKey.trim() ? params.sessionKey.trim() : opts?.agentSessionKey?.trim() || void 0;
@@ -70525,6 +70742,26 @@ function resolveToolLoopDetectionConfig(params) {
70525
70742
  }
70526
70743
  };
70527
70744
  }
70745
+ /**
70746
+ * Edit tool description. Replaces the upstream's terse one-liner with
70747
+ * usage notes migrated from the system prompt's "Edit Tool Best Practices"
70748
+ * section in Stage 2.5 of the prompt-reduction plan. Co-locating these
70749
+ * notes with the tool means they ship only when edit is in palette, and
70750
+ * the system prompt section can be deleted in Stage 4 without losing the
70751
+ * guidance.
70752
+ *
70753
+ * Combined with the read-before-edit guard (Stage 1.3) and the model's
70754
+ * own discipline, this should kill the hallucinated-oldText failure class
70755
+ * for any well-intentioned model.
70756
+ */
70757
+ const EDIT_TOOL_DESCRIPTION = [
70758
+ "Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
70759
+ "Best practices to avoid match failures:",
70760
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
70761
+ "- ALWAYS read the file first, then copy the exact text from the read output for oldText. The read-before-edit guard refuses edits to unread files.",
70762
+ "- If an edit fails with 'Could not find the exact text', re-read the file and retry with the exact text from the fresh read. Do NOT skip to a different issue.",
70763
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
70764
+ ].join(" ");
70528
70765
  function createSymiCodingTools(options) {
70529
70766
  const execToolName = "exec";
70530
70767
  const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
@@ -70587,33 +70824,34 @@ function createSymiCodingTools(options) {
70587
70824
  });
70588
70825
  if (sandboxRoot && !sandboxFsBridge) throw new Error("Sandbox filesystem bridge is unavailable.");
70589
70826
  const imageSanitization = resolveImageSanitizationLimits(options?.config);
70827
+ const readEditTracker = createReadEditTracker({ workspaceRoot: sandboxRoot ?? workspaceRoot });
70590
70828
  const base = codingTools.flatMap((tool) => {
70591
70829
  if (tool.name === readTool.name) {
70592
70830
  if (sandboxRoot) {
70593
- const sandboxed = createSandboxedReadTool({
70831
+ const tracked = wrapReadToolWithTracker(createSandboxedReadTool({
70594
70832
  root: sandboxRoot,
70595
70833
  bridge: sandboxFsBridge,
70596
70834
  modelContextWindowTokens: options?.modelContextWindowTokens,
70597
70835
  imageSanitization
70598
- });
70599
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxed, sandboxRoot) : sandboxed];
70836
+ }), readEditTracker);
70837
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, sandboxRoot) : tracked];
70600
70838
  }
70601
- const wrapped = createSymiReadTool(createReadTool(workspaceRoot), {
70839
+ const tracked = wrapReadToolWithTracker(createSymiReadTool(createReadTool(workspaceRoot), {
70602
70840
  modelContextWindowTokens: options?.modelContextWindowTokens,
70603
70841
  imageSanitization
70604
- });
70605
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
70842
+ }), readEditTracker);
70843
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
70606
70844
  }
70607
70845
  if (tool.name === "bash" || tool.name === execToolName) return [];
70608
70846
  if (tool.name === "write") {
70609
70847
  if (sandboxRoot) return [];
70610
- const wrapped = wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write);
70611
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
70848
+ const tracked = wrapWriteToolWithTracker(wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write), readEditTracker);
70849
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
70612
70850
  }
70613
70851
  if (tool.name === "edit") {
70614
70852
  if (sandboxRoot) return [];
70615
- const wrapped = wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit);
70616
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
70853
+ const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
70854
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
70617
70855
  }
70618
70856
  return [tool];
70619
70857
  });
@@ -70656,22 +70894,18 @@ function createSymiCodingTools(options) {
70656
70894
  } : void 0,
70657
70895
  workspaceOnly: applyPatchWorkspaceOnly
70658
70896
  });
70897
+ const sandboxedEditTool = sandboxRoot ? wrapEditToolWithGuard(createSandboxedEditTool({
70898
+ root: sandboxRoot,
70899
+ bridge: sandboxFsBridge
70900
+ }), readEditTracker) : null;
70901
+ const sandboxedWriteTool = sandboxRoot ? wrapWriteToolWithTracker(createSandboxedWriteTool({
70902
+ root: sandboxRoot,
70903
+ bridge: sandboxFsBridge
70904
+ }), readEditTracker) : null;
70659
70905
  const withHooks = applyToolPolicyPipeline({
70660
70906
  tools: applyOwnerOnlyToolPolicy([
70661
70907
  ...base,
70662
- ...sandboxRoot ? allowWorkspaceWrites ? [workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedEditTool({
70663
- root: sandboxRoot,
70664
- bridge: sandboxFsBridge
70665
- }), sandboxRoot) : createSandboxedEditTool({
70666
- root: sandboxRoot,
70667
- bridge: sandboxFsBridge
70668
- }), workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedWriteTool({
70669
- root: sandboxRoot,
70670
- bridge: sandboxFsBridge
70671
- }), sandboxRoot) : createSandboxedWriteTool({
70672
- root: sandboxRoot,
70673
- bridge: sandboxFsBridge
70674
- })] : [] : [],
70908
+ ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
70675
70909
  ...applyPatchTool ? [applyPatchTool] : [],
70676
70910
  execTool,
70677
70911
  processTool,
@@ -71059,7 +71293,8 @@ async function compactEmbeddedPiSessionDirect(params) {
71059
71293
  userTime,
71060
71294
  userTimeFormat,
71061
71295
  contextFiles,
71062
- memoryCitationsMode: params.config?.memory?.citations
71296
+ memoryCitationsMode: params.config?.memory?.citations,
71297
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
71063
71298
  }));
71064
71299
  const sessionLock = await acquireSessionWriteLock({
71065
71300
  sessionFile: params.sessionFile,
@@ -79121,7 +79356,7 @@ async function deliverSessionMaintenanceWarning(params) {
79121
79356
  return;
79122
79357
  }
79123
79358
  try {
79124
- const { deliverOutboundPayloads } = await import("./deliver-CKgFosI5.js").then((n) => n.n);
79359
+ const { deliverOutboundPayloads } = await import("./deliver-OVx3XKTy.js").then((n) => n.n);
79125
79360
  await deliverOutboundPayloads({
79126
79361
  cfg: params.cfg,
79127
79362
  channel,