@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
@@ -3,7 +3,7 @@ import { g as resolveStateDir, r as STATE_DIR, u as resolveGatewayPort, y as res
3
3
  import { B as theme, C as sleep$1, D as isPlainObject, E as truncateUtf16Safe, F as shouldLogVerbose, J as normalizeLogLevel, L as warn, M as logVerbose, O as danger, S as shortenHomePath, V as getChildLogger, X as resolvePreferredSymiTmpDir, d as isRecord$1, i as clampInt, l as escapeRegExp, m as normalizeE164, t as CONFIG_DIR, w as sliceUtf16Safe, x as shortenHomeInString, y as resolveUserPath } from "./utils-B-0b9bGM.js";
4
4
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-EAliFiVK.js";
5
5
  import { C as resolveThreadParentSessionKey, S as parseAgentSessionKey, _ as getSubagentDepth, b as isCronSessionKey, c as normalizeMainKey, d as sanitizeAgentId, h as normalizeAccountId$2, l as resolveAgentIdFromSessionKey, m as DEFAULT_ACCOUNT_ID, o as classifySessionKeyShape, r as buildAgentMainSessionKey, s as normalizeAgentId, t as DEFAULT_AGENT_ID, u as resolveThreadSessionKeys, v as isAcpSessionKey, x as isSubagentSessionKey, y as isCronRunSessionKey } from "./session-key-DCt45XZa.js";
6
- import { t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
6
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-CrGJbkzf.js";
7
7
  import { C as createInternalHookEvent, T as triggerInternalHook, _ as clearPluginCommands, b as listPluginCommands, c as normalizeAnyChannelId, f as requireActivePluginRegistry, g as normalizePluginHttpPath, h as createPluginRegistry, l as normalizeChannelId, n as CHAT_CHANNEL_ORDER, p as setActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, v as executePluginCommand, x as matchPluginCommand, y as getPluginCommandSpecs } from "./registry-Cja8eT7G.js";
8
8
  import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-D9vIQve0.js";
9
9
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-CWkblSrI.js";
@@ -14,34 +14,34 @@ import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
15
15
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
17
- import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-COVVt64P.js";
18
- import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-PXAJCHa5.js";
17
+ import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-DNqcjLyg.js";
18
+ import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-BYCtuYPj.js";
19
19
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-BDSRH8nU.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BBYms6g4.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-6RZuWKy5.js";
26
- import { t as ensureSymiModelsJson } from "./models-config-B91ShhoT.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BX-ap4VU.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-B6aY1oY3.js";
26
+ import { t as ensureSymiModelsJson } from "./models-config-DGDMieos.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DHAJW99p.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-CCHQuSja.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-BJvuH-NZ.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-DefCxQsB.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DK2WpZI8.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BQ5LAIBQ.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-BFDOGeu3.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CGMSzPWd.js";
32
32
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BG8FpqDp.js";
33
33
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
34
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
35
35
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
36
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
37
37
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-BeYHj0gr.js";
38
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-BKn2DFYs.js";
39
39
  import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
40
  import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
41
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
42
42
  import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
43
43
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
44
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-BqOhAhRS.js";
44
+ import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-llekTUks.js";
45
45
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
46
46
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
47
47
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
@@ -51,17 +51,17 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
51
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
52
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
53
  import { m as runTasksWithConcurrency } from "./internal-iXV867Nr.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-D7k3dDQq.js";
54
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-BhW-vn5v.js";
55
55
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-DwriPEWn.js";
57
- 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-D7BQXt0l.js";
56
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-7gwjaz5c.js";
57
+ 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-Cqk3zmyW.js";
58
58
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-JkjuvDGH.js";
59
59
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
- import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-DpMnSIi5.js";
60
+ import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-BaSqjfd_.js";
61
61
  import { a as buildModelAliasLines, n as resolveModel } from "./model-ECsJuJew.js";
62
62
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
63
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BMb31chU.js";
64
- import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-DhGfNqfc.js";
63
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BDWdeqta.js";
64
+ import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-OSWCBsL_.js";
65
65
  import { n as retryAsync } from "./retry-BoS4e4X_.js";
66
66
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-C9e6dMU_.js";
67
67
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DIi9uyC6.js";
@@ -70,23 +70,23 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-jTXFdH5R.js";
70
70
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-vWB85AXk.js";
71
71
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-D_uByLpw.js";
72
72
  import { Rt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-pd8kwOFJ.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-DYfKEdwh.js";
73
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BZbBLMOq.js";
74
74
  import { n as formatTimeAgo } from "./format-relative-CviDPm2s.js";
75
75
  import { n as normalizePollInput } from "./polls-DZoQqmds.js";
76
76
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CoTZV03i.js";
77
77
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BECUf3wn.js";
78
78
  import { t as convertMarkdownTables } from "./tables-C3TR-LvH.js";
79
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-DvbOiJ-I.js";
79
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-BPBFuPrC.js";
80
80
  import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-iAT1if6k.js";
81
81
  import { t as makeProxyFetch } from "./proxy-mdETjik4.js";
82
82
  import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-DeLiQNNv.js";
83
83
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-FCaqxoqg.js";
84
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CZH45dMt.js";
84
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CPhYC11m.js";
85
85
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Bz5sreu5.js";
86
86
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-C87_fedd.js";
87
87
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-RPrhIvZF.js";
88
- import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-SF7x1UHb.js";
89
- import { r as detectBinary } from "./onboard-helpers-CBxazphs.js";
88
+ import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-BUBES34Y.js";
89
+ import { r as detectBinary } from "./onboard-helpers-O6bxf40E.js";
90
90
  import { t as resolvePairingIdLabel } from "./pairing-labels-CTL1gXZb.js";
91
91
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-D4P4IiJ6.js";
92
92
  import { t as getActiveWebListener } from "./active-listener-Cif6x8mY.js";
@@ -94,8 +94,8 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
94
94
  import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-BZS89z6C.js";
95
95
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-D3rffA64.js";
96
96
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CjL9F9WT.js";
97
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-Bx5zp45n.js";
98
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-C0pRqIFv.js";
97
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BE7fB_Cf.js";
98
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DQX3HXS4.js";
99
99
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
100
100
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DF8wPn-_.js";
101
101
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-9fIQGtZy.js";
@@ -9782,16 +9782,16 @@ function shouldComputeCommandAuthorized(text, cfg, options) {
9782
9782
 
9783
9783
  //#endregion
9784
9784
  //#region src/channels/sender-label.ts
9785
- function normalize(value) {
9785
+ function normalize$1(value) {
9786
9786
  const trimmed = value?.trim();
9787
9787
  return trimmed ? trimmed : void 0;
9788
9788
  }
9789
9789
  function resolveSenderLabel(params) {
9790
- const name = normalize(params.name);
9791
- const username = normalize(params.username);
9792
- const tag = normalize(params.tag);
9793
- const e164 = normalize(params.e164);
9794
- const id = normalize(params.id);
9790
+ const name = normalize$1(params.name);
9791
+ const username = normalize$1(params.username);
9792
+ const tag = normalize$1(params.tag);
9793
+ const e164 = normalize$1(params.e164);
9794
+ const id = normalize$1(params.id);
9795
9795
  const display = name ?? username ?? tag ?? "";
9796
9796
  const idPart = e164 ?? id ?? "";
9797
9797
  if (display && idPart && display !== idPart) return `${display} (${idPart})`;
@@ -10502,7 +10502,7 @@ async function routeReply(params) {
10502
10502
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10503
10503
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10504
10504
  try {
10505
- const { deliverOutboundPayloads } = await import("./deliver-D7BQXt0l.js").then((n) => n.n);
10505
+ const { deliverOutboundPayloads } = await import("./deliver-Cqk3zmyW.js").then((n) => n.n);
10506
10506
  return {
10507
10507
  ok: true,
10508
10508
  messageId: (await deliverOutboundPayloads({
@@ -13052,7 +13052,7 @@ async function describeStickerImage(params) {
13052
13052
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
13053
13053
  try {
13054
13054
  const buffer = await fs$1.readFile(imagePath);
13055
- const { describeImageWithModel } = await import("./image-6RZuWKy5.js").then((n) => n.n);
13055
+ const { describeImageWithModel } = await import("./image-B6aY1oY3.js").then((n) => n.n);
13056
13056
  return (await describeImageWithModel({
13057
13057
  buffer,
13058
13058
  fileName: "sticker.webp",
@@ -13475,7 +13475,7 @@ function createWhatsAppLoginTool() {
13475
13475
  force: Type.Optional(Type.Boolean())
13476
13476
  }),
13477
13477
  execute: async (_toolCallId, args) => {
13478
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DML5LgsI.js");
13478
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Ft17VIG6.js");
13479
13479
  if ((args?.action ?? "start") === "wait") {
13480
13480
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
13481
13481
  return {
@@ -15691,7 +15691,7 @@ async function preflightDiscordMessage(params) {
15691
15691
  let preflightTranscript;
15692
15692
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15693
15693
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15694
- const { transcribeFirstAudio } = await import("./audio-preflight-C2EgDXSo.js");
15694
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwbuWmdG.js");
15695
15695
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15696
15696
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15697
15697
  ctx: {
@@ -22469,6 +22469,38 @@ async function runWithImageModelFallback(params) {
22469
22469
  //#endregion
22470
22470
  //#region src/config/model-profiles-builtin.ts
22471
22471
  /**
22472
+ * Shared safety + output-style additions applied to most built-in profiles
22473
+ * and the Generic fallback. These rules came from a long history of
22474
+ * model-specific bugs (verification-monologue padding, "I have addressed"
22475
+ * preambles, post-answer assessment lists). Keeping them in one place
22476
+ * means a new profile inherits sane defaults instead of starting empty.
22477
+ *
22478
+ * Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
22479
+ * live here; profile-specific rules (control-token stripping, tool-arg
22480
+ * cleanup, reasoning hints) live in their own per-profile additions.
22481
+ *
22482
+ * Exported so resolve-model-profile.ts can apply the same additions to
22483
+ * the Generic fallback profile — no model resolves to "Generic" without
22484
+ * inheriting the safety/style rules.
22485
+ */
22486
+ const SAFETY_AND_STYLE_ADDITIONS = [
22487
+ "CRITICAL OUTPUT RULES:",
22488
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
22489
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22490
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22491
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22492
+ "- If you need to verify your work, do so before writing your response, not after.",
22493
+ "- Send brief progress updates on long tasks so the user knows you are active."
22494
+ ];
22495
+ /** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
22496
+ * planning internal. Not applied to Gemma/Ollama because those models
22497
+ * don't have structured thinking and the rule confuses them. */
22498
+ const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
22499
+ /** Hint for models that leak Gemma-style control tokens (Gemma family,
22500
+ * Ollama hosting any uncensored open model). Forces tool-arg cleanup and
22501
+ * forbids leaking turn markers in user-visible text. */
22502
+ 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."];
22503
+ /**
22472
22504
  * Built-in model profiles. Ordered from most-specific to least-specific so
22473
22505
  * that `resolveModelProfile` can return the first match.
22474
22506
  *
@@ -22502,17 +22534,7 @@ const BUILTIN_PROFILES = [
22502
22534
  hasStructuredThinking: false,
22503
22535
  validateToolArgs: true
22504
22536
  },
22505
- promptAdditions: [
22506
- "CRITICAL OUTPUT RULES:",
22507
- "- Your response ends when you have delivered the answer. Do not append anything after.",
22508
- "- Do not output raw control tokens, channel tags, or turn markers.",
22509
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22510
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22511
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22512
- "- If you need to verify your work, do so before writing your response, not after.",
22513
- "- Send brief progress updates on long tasks so the user knows you are active.",
22514
- "- 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."
22515
- ],
22537
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
22516
22538
  ui: {
22517
22539
  badge: "Local",
22518
22540
  watchdogMs: 9e5,
@@ -22539,16 +22561,7 @@ const BUILTIN_PROFILES = [
22539
22561
  hasStructuredThinking: true,
22540
22562
  validateToolArgs: false
22541
22563
  },
22542
- promptAdditions: [
22543
- "CRITICAL OUTPUT RULES:",
22544
- "- Your response ends when you have delivered the answer. Do not append anything after.",
22545
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22546
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22547
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22548
- "- If you need to verify your work, do so before writing your response, not after.",
22549
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
22550
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
22551
- ],
22564
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
22552
22565
  ui: {
22553
22566
  badge: "Local",
22554
22567
  watchdogMs: 9e5,
@@ -22574,7 +22587,7 @@ const BUILTIN_PROFILES = [
22574
22587
  hasStructuredThinking: true,
22575
22588
  validateToolArgs: false
22576
22589
  },
22577
- promptAdditions: [],
22590
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
22578
22591
  ui: {
22579
22592
  badge: "API",
22580
22593
  watchdogMs: 3e5,
@@ -22607,15 +22620,7 @@ const BUILTIN_PROFILES = [
22607
22620
  hasStructuredThinking: true,
22608
22621
  validateToolArgs: false
22609
22622
  },
22610
- promptAdditions: [
22611
- "CRITICAL OUTPUT RULES:",
22612
- "- Your response ends when you have delivered the answer. Do not append anything after.",
22613
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22614
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22615
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22616
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
22617
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
22618
- ],
22623
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
22619
22624
  ui: {
22620
22625
  badge: "Spider",
22621
22626
  watchdogMs: 9e5,
@@ -22648,16 +22653,7 @@ const BUILTIN_PROFILES = [
22648
22653
  hasStructuredThinking: false,
22649
22654
  validateToolArgs: true
22650
22655
  },
22651
- promptAdditions: [
22652
- "CRITICAL OUTPUT RULES:",
22653
- "- Your response ends when you have delivered the answer. Do not append anything after.",
22654
- "- Do not output raw control tokens, channel tags, or turn markers.",
22655
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22656
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22657
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22658
- "- Send brief progress updates on long tasks so the user knows you are active.",
22659
- "- 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."
22660
- ],
22656
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
22661
22657
  ui: {
22662
22658
  badge: "Spider",
22663
22659
  watchdogMs: 6e5,
@@ -22689,16 +22685,7 @@ const BUILTIN_PROFILES = [
22689
22685
  hasStructuredThinking: true,
22690
22686
  validateToolArgs: false
22691
22687
  },
22692
- promptAdditions: [
22693
- "CRITICAL OUTPUT RULES:",
22694
- "- Your response ends when you have delivered the answer. Do not append anything after.",
22695
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
22696
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
22697
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
22698
- "- If you need to verify your work, do so before writing your response, not after.",
22699
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
22700
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
22701
- ],
22688
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
22702
22689
  ui: {
22703
22690
  badge: "CoreWeave",
22704
22691
  watchdogMs: 9e5,
@@ -22709,7 +22696,15 @@ const BUILTIN_PROFILES = [
22709
22696
 
22710
22697
  //#endregion
22711
22698
  //#region src/config/resolve-model-profile.ts
22712
- /** Default profile returned when no match is found. */
22699
+ /**
22700
+ * Default profile returned when no match is found.
22701
+ *
22702
+ * Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
22703
+ * the same safety+style additions as every named profile, so newly-added
22704
+ * models without a profile entry inherit sane defaults instead of
22705
+ * starting empty (which would silently regress safety rules until someone
22706
+ * notices and adds a profile).
22707
+ */
22713
22708
  const FALLBACK_PROFILE = {
22714
22709
  match: "*",
22715
22710
  label: "Generic",
@@ -22728,7 +22723,7 @@ const FALLBACK_PROFILE = {
22728
22723
  hasStructuredThinking: false,
22729
22724
  validateToolArgs: false
22730
22725
  },
22731
- promptAdditions: [],
22726
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
22732
22727
  ui: {
22733
22728
  watchdogMs: 3e5,
22734
22729
  armWatchdogOnSend: true
@@ -29225,6 +29220,86 @@ async function prepareSessionManagerForRun(params) {
29225
29220
  }
29226
29221
  }
29227
29222
 
29223
+ //#endregion
29224
+ //#region src/agents/system-prompt-skills-autoload.ts
29225
+ const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
29226
+ let cachedPackageRoot;
29227
+ function getPackageRoot() {
29228
+ if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
29229
+ return cachedPackageRoot;
29230
+ }
29231
+ function safeSkillName(name) {
29232
+ return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
29233
+ }
29234
+ function tryLoadSkill(skillName, root) {
29235
+ const skillPath = path.join(root, "skills", skillName, "SKILL.md");
29236
+ try {
29237
+ if (!fs.statSync(skillPath).isFile()) return null;
29238
+ } catch {
29239
+ return null;
29240
+ }
29241
+ try {
29242
+ return fs.readFileSync(skillPath, "utf8");
29243
+ } catch {
29244
+ return null;
29245
+ }
29246
+ }
29247
+ function stripFrontmatter(body) {
29248
+ return body.replace(FRONTMATTER_RE, "").trimStart();
29249
+ }
29250
+ /**
29251
+ * Resolves and loads each named skill. Returns the inlinable Markdown block,
29252
+ * or empty string when no skills loaded / minimal mode / no names supplied.
29253
+ */
29254
+ function buildAutoLoadedSkillsBlock(opts) {
29255
+ if (opts.minimalMode) return "";
29256
+ const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
29257
+ if (names.length === 0) return "";
29258
+ const packageRoot = getPackageRoot();
29259
+ const loaded = [];
29260
+ for (const rawName of names) {
29261
+ const name = rawName.trim();
29262
+ if (!safeSkillName(name)) {
29263
+ logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
29264
+ continue;
29265
+ }
29266
+ let body = null;
29267
+ let source = "bundled";
29268
+ if (opts.workspaceDir) {
29269
+ body = tryLoadSkill(name, opts.workspaceDir);
29270
+ source = "workspace";
29271
+ }
29272
+ if (body === null && packageRoot) {
29273
+ body = tryLoadSkill(name, packageRoot);
29274
+ source = "bundled";
29275
+ }
29276
+ if (body === null) {
29277
+ logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
29278
+ continue;
29279
+ }
29280
+ const stripped = stripFrontmatter(body).trim();
29281
+ if (!stripped) {
29282
+ logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
29283
+ continue;
29284
+ }
29285
+ loaded.push({
29286
+ name,
29287
+ body: stripped,
29288
+ source
29289
+ });
29290
+ }
29291
+ if (loaded.length === 0) return "";
29292
+ return [
29293
+ "",
29294
+ "---",
29295
+ "",
29296
+ "## Auto-loaded Skills",
29297
+ "",
29298
+ loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
29299
+ ""
29300
+ ].join("\n");
29301
+ }
29302
+
29228
29303
  //#endregion
29229
29304
  //#region src/agents/tool-summaries.ts
29230
29305
  function buildToolSummaryMap(tools) {
@@ -29240,7 +29315,7 @@ function buildToolSummaryMap(tools) {
29240
29315
  //#endregion
29241
29316
  //#region src/agents/pi-embedded-runner/system-prompt.ts
29242
29317
  function buildEmbeddedSystemPrompt(params) {
29243
- return buildAgentSystemPrompt({
29318
+ const corePrompt = buildAgentSystemPrompt({
29244
29319
  workspaceDir: params.workspaceDir,
29245
29320
  defaultThinkLevel: params.defaultThinkLevel,
29246
29321
  reasoningLevel: params.reasoningLevel,
@@ -29268,6 +29343,14 @@ function buildEmbeddedSystemPrompt(params) {
29268
29343
  contextFiles: params.contextFiles,
29269
29344
  memoryCitationsMode: params.memoryCitationsMode
29270
29345
  });
29346
+ const promptMode = params.promptMode ?? "full";
29347
+ const isMinimal = promptMode === "minimal" || promptMode === "none";
29348
+ const skillsBlock = buildAutoLoadedSkillsBlock({
29349
+ skillNames: params.autoLoadInlineSkills ?? [],
29350
+ workspaceDir: params.workspaceDir,
29351
+ minimalMode: isMinimal
29352
+ });
29353
+ return skillsBlock ? `${corePrompt}${skillsBlock}` : corePrompt;
29271
29354
  }
29272
29355
  function createSystemPromptOverride(systemPrompt) {
29273
29356
  const override = systemPrompt.trim();
@@ -30055,7 +30138,8 @@ async function runEmbeddedAttempt(params) {
30055
30138
  userTime,
30056
30139
  userTimeFormat,
30057
30140
  contextFiles,
30058
- memoryCitationsMode: params.config?.memory?.citations
30141
+ memoryCitationsMode: params.config?.memory?.citations,
30142
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
30059
30143
  });
30060
30144
  const systemPromptReport = buildSystemPromptReport({
30061
30145
  source: "run",
@@ -31935,27 +32019,27 @@ async function runAgentTurn(params) {
31935
32019
  function createDefaultDeps() {
31936
32020
  return {
31937
32021
  sendMessageWhatsApp: async (...args) => {
31938
- const { sendMessageWhatsApp } = await import("./web-Dn33Cd3-.js");
32022
+ const { sendMessageWhatsApp } = await import("./web-CqeSgivQ.js");
31939
32023
  return await sendMessageWhatsApp(...args);
31940
32024
  },
31941
32025
  sendMessageTelegram: async (...args) => {
31942
- const { sendMessageTelegram } = await import("./send-DpMnSIi5.js").then((n) => n.l);
32026
+ const { sendMessageTelegram } = await import("./send-BaSqjfd_.js").then((n) => n.l);
31943
32027
  return await sendMessageTelegram(...args);
31944
32028
  },
31945
32029
  sendMessageDiscord: async (...args) => {
31946
- const { sendMessageDiscord } = await import("./send-COVVt64P.js").then((n) => n.t);
32030
+ const { sendMessageDiscord } = await import("./send-DNqcjLyg.js").then((n) => n.t);
31947
32031
  return await sendMessageDiscord(...args);
31948
32032
  },
31949
32033
  sendMessageSlack: async (...args) => {
31950
- const { sendMessageSlack } = await import("./send-BqOhAhRS.js").then((n) => n.n);
32034
+ const { sendMessageSlack } = await import("./send-llekTUks.js").then((n) => n.n);
31951
32035
  return await sendMessageSlack(...args);
31952
32036
  },
31953
32037
  sendMessageSignal: async (...args) => {
31954
- const { sendMessageSignal } = await import("./send-DvbOiJ-I.js").then((n) => n.i);
32038
+ const { sendMessageSignal } = await import("./send-BPBFuPrC.js").then((n) => n.i);
31955
32039
  return await sendMessageSignal(...args);
31956
32040
  },
31957
32041
  sendMessageIMessage: async (...args) => {
31958
- const { sendMessageIMessage } = await import("./send-SF7x1UHb.js").then((n) => n.n);
32042
+ const { sendMessageIMessage } = await import("./send-BUBES34Y.js").then((n) => n.n);
31959
32043
  return await sendMessageIMessage(...args);
31960
32044
  }
31961
32045
  };
@@ -43506,7 +43590,7 @@ async function registerSlackMonitorSlashCommands(params) {
43506
43590
  });
43507
43591
  const deliverSlashPayloads = async (replies) => {
43508
43592
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
43509
- import("./replies-CZH45dMt.js").then((n) => n.r),
43593
+ import("./replies-CPhYC11m.js").then((n) => n.r),
43510
43594
  import("./chunk-DIi9uyC6.js").then((n) => n.s),
43511
43595
  import("./markdown-tables-kCfKPOgH.js").then((n) => n.t)
43512
43596
  ]);
@@ -48200,7 +48284,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
48200
48284
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
48201
48285
  let preflightTranscript;
48202
48286
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
48203
- const { transcribeFirstAudio } = await import("./audio-preflight-C2EgDXSo.js");
48287
+ const { transcribeFirstAudio } = await import("./audio-preflight-CwbuWmdG.js");
48204
48288
  preflightTranscript = await transcribeFirstAudio({
48205
48289
  ctx: {
48206
48290
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -50354,23 +50438,23 @@ let webLoginQrPromise = null;
50354
50438
  let webChannelPromise = null;
50355
50439
  let whatsappActionsPromise = null;
50356
50440
  function loadWebOutbound() {
50357
- webOutboundPromise ??= import("./outbound-B5OgOn1h.js").then((n) => n.t);
50441
+ webOutboundPromise ??= import("./outbound-DlWjA7jN.js").then((n) => n.t);
50358
50442
  return webOutboundPromise;
50359
50443
  }
50360
50444
  function loadWebLogin() {
50361
- webLoginPromise ??= import("./login-F4pbdnF5.js").then((n) => n.n);
50445
+ webLoginPromise ??= import("./login-DwBazcKM.js").then((n) => n.n);
50362
50446
  return webLoginPromise;
50363
50447
  }
50364
50448
  function loadWebLoginQr() {
50365
- webLoginQrPromise ??= import("./login-qr-DML5LgsI.js");
50449
+ webLoginQrPromise ??= import("./login-qr-Ft17VIG6.js");
50366
50450
  return webLoginQrPromise;
50367
50451
  }
50368
50452
  function loadWebChannel() {
50369
- webChannelPromise ??= import("./web-Dn33Cd3-.js");
50453
+ webChannelPromise ??= import("./web-CqeSgivQ.js");
50370
50454
  return webChannelPromise;
50371
50455
  }
50372
50456
  function loadWhatsAppActions() {
50373
- whatsappActionsPromise ??= import("./whatsapp-actions-DEn0NRir.js");
50457
+ whatsappActionsPromise ??= import("./whatsapp-actions-D5RBK0Cm.js");
50374
50458
  return whatsappActionsPromise;
50375
50459
  }
50376
50460
  function createPluginRuntime() {
@@ -54060,6 +54144,91 @@ function wrapToolWithAbortSignal(tool, abortSignal) {
54060
54144
  };
54061
54145
  }
54062
54146
 
54147
+ //#endregion
54148
+ //#region src/agents/pi-tools.read-edit-guard.ts
54149
+ const RETRY_GUIDANCE_SUFFIX$1 = " Read the file first, then retry the edit.";
54150
+ function readGuardError(filePath) {
54151
+ 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}`);
54152
+ }
54153
+ function extractPath(args) {
54154
+ if (!args || typeof args !== "object") return;
54155
+ const record = args;
54156
+ const candidate = record.path ?? record.file_path;
54157
+ if (typeof candidate !== "string") return;
54158
+ const trimmed = candidate.trim();
54159
+ return trimmed.length > 0 ? trimmed : void 0;
54160
+ }
54161
+ function wrapReadToolWithTracker(tool, tracker) {
54162
+ return {
54163
+ ...tool,
54164
+ execute: async (toolCallId, args, signal, onUpdate) => {
54165
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
54166
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
54167
+ const filePath = extractPath(args);
54168
+ if (filePath) tracker.recordRead(filePath);
54169
+ }
54170
+ return result;
54171
+ }
54172
+ };
54173
+ }
54174
+ function wrapWriteToolWithTracker(tool, tracker) {
54175
+ return {
54176
+ ...tool,
54177
+ execute: async (toolCallId, args, signal, onUpdate) => {
54178
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
54179
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
54180
+ const filePath = extractPath(args);
54181
+ if (filePath) tracker.recordWrite(filePath);
54182
+ }
54183
+ return result;
54184
+ }
54185
+ };
54186
+ }
54187
+ function wrapEditToolWithGuard(tool, tracker) {
54188
+ return {
54189
+ ...tool,
54190
+ execute: async (toolCallId, args, signal, onUpdate) => {
54191
+ const filePath = extractPath(args);
54192
+ if (filePath && !tracker.hasObserved(filePath)) throw readGuardError(filePath);
54193
+ return tool.execute(toolCallId, args, signal, onUpdate);
54194
+ }
54195
+ };
54196
+ }
54197
+
54198
+ //#endregion
54199
+ //#region src/agents/pi-tools.read-edit-tracker.ts
54200
+ function normalize(filePath, workspaceRoot) {
54201
+ if (!workspaceRoot) return filePath;
54202
+ if (path.isAbsolute(filePath)) return path.normalize(filePath);
54203
+ return path.resolve(workspaceRoot, filePath);
54204
+ }
54205
+ function createReadEditTracker(opts = {}) {
54206
+ const observed = /* @__PURE__ */ new Map();
54207
+ const record = (filePath, kind) => {
54208
+ if (typeof filePath !== "string" || !filePath.trim()) return;
54209
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
54210
+ const prior = observed.get(key);
54211
+ if (kind === "written" || prior !== "written") observed.set(key, kind);
54212
+ };
54213
+ return {
54214
+ recordRead: (filePath) => record(filePath, "read"),
54215
+ recordWrite: (filePath) => record(filePath, "written"),
54216
+ observation: (filePath) => {
54217
+ if (typeof filePath !== "string" || !filePath.trim()) return null;
54218
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
54219
+ return observed.get(key) ?? null;
54220
+ },
54221
+ hasObserved: (filePath) => {
54222
+ if (typeof filePath !== "string" || !filePath.trim()) return false;
54223
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
54224
+ return observed.has(key);
54225
+ },
54226
+ reset: () => {
54227
+ observed.clear();
54228
+ }
54229
+ };
54230
+ }
54231
+
54063
54232
  //#endregion
54064
54233
  //#region src/media/sniff-mime-from-base64.ts
54065
54234
  async function sniffMimeFromBase64(base64) {
@@ -54385,6 +54554,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
54385
54554
  }
54386
54555
  };
54387
54556
  }
54557
+ /**
54558
+ * Override a tool's description while preserving execute, parameters, and
54559
+ * other properties. Used by Stage 2.5 of the prompt-reduction plan to move
54560
+ * usage docs from the system prompt into tool descriptions where they
54561
+ * belong contextually.
54562
+ *
54563
+ * The replacement description should include the upstream's tool-purpose
54564
+ * sentence so models that only read the description (without the prompt
54565
+ * section) still have the same baseline understanding.
54566
+ */
54567
+ function wrapToolWithDescriptionOverride(tool, description) {
54568
+ return {
54569
+ ...tool,
54570
+ description
54571
+ };
54572
+ }
54388
54573
  function wrapToolWorkspaceRootGuard(tool, root) {
54389
54574
  return {
54390
54575
  ...tool,
@@ -56961,8 +57146,39 @@ const GatewayToolSchema = Type.Object({
56961
57146
  baseHash: Type.Optional(Type.String()),
56962
57147
  sessionKey: Type.Optional(Type.String()),
56963
57148
  note: Type.Optional(Type.String()),
56964
- restartDelayMs: Type.Optional(Type.Number())
57149
+ restartDelayMs: Type.Optional(Type.Number()),
57150
+ userRequestAcknowledgment: Type.Optional(Type.String())
56965
57151
  });
57152
+ /** Actions that mutate gateway state and require explicit user authorization. */
57153
+ const DESTRUCTIVE_ACTIONS = new Set([
57154
+ "config.apply",
57155
+ "config.patch",
57156
+ "update.run"
57157
+ ]);
57158
+ /** Minimum length for a meaningful authorization message. */
57159
+ const MIN_AUTHORIZATION_LENGTH = 10;
57160
+ /**
57161
+ * Asserts the user's request was explicitly acknowledged for destructive
57162
+ * actions. Throws a descriptive error if the acknowledgment is missing,
57163
+ * empty, or trivially short.
57164
+ *
57165
+ * NOTE: This is defense-in-depth, not a hard barrier. A determined model
57166
+ * could still populate the field with fabricated text. The barrier exists
57167
+ * to:
57168
+ * 1. Force the agent to deliberately compose a justification (vs. blind
57169
+ * tool invocation).
57170
+ * 2. Provide an audit trail (the acknowledgment is logged with the tool
57171
+ * call args).
57172
+ * 3. Surface for future tightening (e.g., matching against real session
57173
+ * history).
57174
+ */
57175
+ function assertUserAuthorization(action, params) {
57176
+ if (!DESTRUCTIVE_ACTIONS.has(action)) return;
57177
+ const ack = params.userRequestAcknowledgment;
57178
+ const trimmed = typeof ack === "string" ? ack.trim() : "";
57179
+ 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.`);
57180
+ 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)}.`);
57181
+ }
56966
57182
  function createGatewayTool(opts) {
56967
57183
  return {
56968
57184
  label: "Gateway",
@@ -56973,6 +57189,7 @@ function createGatewayTool(opts) {
56973
57189
  execute: async (_toolCallId, args) => {
56974
57190
  const params = args;
56975
57191
  const action = readStringParam(params, "action", { required: true });
57192
+ assertUserAuthorization(action, params);
56976
57193
  if (action === "restart") {
56977
57194
  if (!isRestartEnabled(opts?.config)) throw new Error("Gateway restart is disabled (commands.restart=false).");
56978
57195
  const sessionKey = typeof params.sessionKey === "string" && params.sessionKey.trim() ? params.sessionKey.trim() : opts?.agentSessionKey?.trim() || void 0;
@@ -65203,6 +65420,26 @@ function resolveToolLoopDetectionConfig(params) {
65203
65420
  }
65204
65421
  };
65205
65422
  }
65423
+ /**
65424
+ * Edit tool description. Replaces the upstream's terse one-liner with
65425
+ * usage notes migrated from the system prompt's "Edit Tool Best Practices"
65426
+ * section in Stage 2.5 of the prompt-reduction plan. Co-locating these
65427
+ * notes with the tool means they ship only when edit is in palette, and
65428
+ * the system prompt section can be deleted in Stage 4 without losing the
65429
+ * guidance.
65430
+ *
65431
+ * Combined with the read-before-edit guard (Stage 1.3) and the model's
65432
+ * own discipline, this should kill the hallucinated-oldText failure class
65433
+ * for any well-intentioned model.
65434
+ */
65435
+ const EDIT_TOOL_DESCRIPTION = [
65436
+ "Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
65437
+ "Best practices to avoid match failures:",
65438
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
65439
+ "- 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.",
65440
+ "- 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.",
65441
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
65442
+ ].join(" ");
65206
65443
  function createSymiCodingTools(options) {
65207
65444
  const execToolName = "exec";
65208
65445
  const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
@@ -65265,33 +65502,34 @@ function createSymiCodingTools(options) {
65265
65502
  });
65266
65503
  if (sandboxRoot && !sandboxFsBridge) throw new Error("Sandbox filesystem bridge is unavailable.");
65267
65504
  const imageSanitization = resolveImageSanitizationLimits(options?.config);
65505
+ const readEditTracker = createReadEditTracker({ workspaceRoot: sandboxRoot ?? workspaceRoot });
65268
65506
  const base = codingTools.flatMap((tool) => {
65269
65507
  if (tool.name === readTool.name) {
65270
65508
  if (sandboxRoot) {
65271
- const sandboxed = createSandboxedReadTool({
65509
+ const tracked = wrapReadToolWithTracker(createSandboxedReadTool({
65272
65510
  root: sandboxRoot,
65273
65511
  bridge: sandboxFsBridge,
65274
65512
  modelContextWindowTokens: options?.modelContextWindowTokens,
65275
65513
  imageSanitization
65276
- });
65277
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxed, sandboxRoot) : sandboxed];
65514
+ }), readEditTracker);
65515
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, sandboxRoot) : tracked];
65278
65516
  }
65279
- const wrapped = createSymiReadTool(createReadTool(workspaceRoot), {
65517
+ const tracked = wrapReadToolWithTracker(createSymiReadTool(createReadTool(workspaceRoot), {
65280
65518
  modelContextWindowTokens: options?.modelContextWindowTokens,
65281
65519
  imageSanitization
65282
- });
65283
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
65520
+ }), readEditTracker);
65521
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
65284
65522
  }
65285
65523
  if (tool.name === "bash" || tool.name === execToolName) return [];
65286
65524
  if (tool.name === "write") {
65287
65525
  if (sandboxRoot) return [];
65288
- const wrapped = wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write);
65289
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
65526
+ const tracked = wrapWriteToolWithTracker(wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write), readEditTracker);
65527
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
65290
65528
  }
65291
65529
  if (tool.name === "edit") {
65292
65530
  if (sandboxRoot) return [];
65293
- const wrapped = wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit);
65294
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
65531
+ const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
65532
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
65295
65533
  }
65296
65534
  return [tool];
65297
65535
  });
@@ -65334,22 +65572,18 @@ function createSymiCodingTools(options) {
65334
65572
  } : void 0,
65335
65573
  workspaceOnly: applyPatchWorkspaceOnly
65336
65574
  });
65575
+ const sandboxedEditTool = sandboxRoot ? wrapEditToolWithGuard(createSandboxedEditTool({
65576
+ root: sandboxRoot,
65577
+ bridge: sandboxFsBridge
65578
+ }), readEditTracker) : null;
65579
+ const sandboxedWriteTool = sandboxRoot ? wrapWriteToolWithTracker(createSandboxedWriteTool({
65580
+ root: sandboxRoot,
65581
+ bridge: sandboxFsBridge
65582
+ }), readEditTracker) : null;
65337
65583
  const withHooks = applyToolPolicyPipeline({
65338
65584
  tools: applyOwnerOnlyToolPolicy([
65339
65585
  ...base,
65340
- ...sandboxRoot ? allowWorkspaceWrites ? [workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedEditTool({
65341
- root: sandboxRoot,
65342
- bridge: sandboxFsBridge
65343
- }), sandboxRoot) : createSandboxedEditTool({
65344
- root: sandboxRoot,
65345
- bridge: sandboxFsBridge
65346
- }), workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedWriteTool({
65347
- root: sandboxRoot,
65348
- bridge: sandboxFsBridge
65349
- }), sandboxRoot) : createSandboxedWriteTool({
65350
- root: sandboxRoot,
65351
- bridge: sandboxFsBridge
65352
- })] : [] : [],
65586
+ ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
65353
65587
  ...applyPatchTool ? [applyPatchTool] : [],
65354
65588
  execTool,
65355
65589
  processTool,
@@ -65715,7 +65949,8 @@ async function compactEmbeddedPiSessionDirect(params) {
65715
65949
  userTime,
65716
65950
  userTimeFormat,
65717
65951
  contextFiles,
65718
- memoryCitationsMode: params.config?.memory?.citations
65952
+ memoryCitationsMode: params.config?.memory?.citations,
65953
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
65719
65954
  }));
65720
65955
  const sessionLock = await acquireSessionWriteLock({
65721
65956
  sessionFile: params.sessionFile,
@@ -73391,7 +73626,7 @@ async function deliverSessionMaintenanceWarning(params) {
73391
73626
  return;
73392
73627
  }
73393
73628
  try {
73394
- const { deliverOutboundPayloads } = await import("./deliver-D7BQXt0l.js").then((n) => n.n);
73629
+ const { deliverOutboundPayloads } = await import("./deliver-Cqk3zmyW.js").then((n) => n.n);
73395
73630
  await deliverOutboundPayloads({
73396
73631
  cfg: params.cfg,
73397
73632
  channel,