@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
@@ -4,16 +4,16 @@ import { _ as isCronSessionKey, b as resolveThreadParentSessionKey, c as normali
4
4
  import { $ as warn, B as sleep$1, D as escapeRegExp, E as ensureDir$3, G as danger, I as resolveUserPath, J as logVerbose, M as normalizeE164, O as formatTerminalLink, R as shortenHomeInString, S as CONFIG_DIR, U as truncateUtf16Safe, V as sliceUtf16Safe, W as isPlainObject, X as setVerbose, Z as shouldLogVerbose, _ as matchPluginCommand, a as normalizeAnyChannelId, d as createPluginRegistry, dt as resolvePreferredSymiTmpDir, et as colorize, f as normalizePluginHttpPath, g as listPluginCommands, h as getPluginCommandSpecs, k as isRecord$1, l as requireActivePluginRegistry, lt as normalizeLogLevel, m as executePluginCommand, n as CHAT_CHANNEL_ORDER, nt as theme, o as normalizeChannelId, p as clearPluginCommands, r as DEFAULT_CHAT_CHANNEL, rt as getChildLogger, tt as isRich, u as setActivePluginRegistry, v as createInternalHookEvent, w as clampInt, x as triggerInternalHook, z as shortenHomePath } from "./registry-DYq1AYOv.js";
5
5
  import { a as resolveAgentModelPrimary, c as resolveDefaultAgentId, d as resolveSessionAgentIds, i as resolveAgentModelFallbacksOverride, l as resolveEffectiveModelFallbacks, n as resolveAgentConfig, o as resolveAgentSkillsFilter, r as resolveAgentDir, s as resolveAgentWorkspaceDir, t as listAgentIds, u as resolveSessionAgentId } from "./agent-scope-CpEJ0B88.js";
6
6
  import { a as registerActiveProgressLine, i as clearActiveProgressLine, n as createNonExitingRuntime, o as unregisterActiveProgressLine, r as defaultRuntime, t as createSubsystemLogger } from "./subsystem-BjyjJF-d.js";
7
- import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
7
+ import { S as logWarn, _ as runExec, b as logError, f as loadWorkspaceBootstrapFiles, g as runCommandWithTimeout, h as resolveSymiPackageRootSync, i as DEFAULT_IDENTITY_FILENAME, l as ensureAgentWorkspace, m as resolveSymiPackageRoot, n as DEFAULT_AGENT_WORKSPACE_DIR, r as DEFAULT_BOOTSTRAP_FILENAME, u as filterBootstrapFilesForSession, v as spawnWithFallback, x as logInfo, y as logDebug } from "./workspace-DscDraUb.js";
8
8
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-CbQV9WEg.js";
9
9
  import { $ as resolveAuthProfileDisplayLabel, B as resolveApiKeyForProvider, C as normalizeProviderId, D as resolveModelRefFromString, E as resolveDefaultModelForAgent, F as OLLAMA_NATIVE_BASE_URL, G as getShellPathFromLoginShell, H as resolveModelAuthMode, I as createOllamaStreamFn, L as getApiKeyForModel, O as resolveSubagentSpawnModelSelection, Q as DEFAULT_PROVIDER, R as getCustomProviderApiKey, S as normalizeModelRef$2, T as resolveConfiguredModelRef, V as resolveEnvApiKey, W as normalizeSecretInput, X as DEFAULT_CONTEXT_TOKENS, Z as DEFAULT_MODEL, _ as buildConfiguredAllowlistKeys, a as markAuthProfileFailure, b as isCliProvider, c as dedupeProfileIds, d as ensureAuthProfileStore, et as resolveSymiAgentDir, f as resolveAuthStorePathForDisplay, g as buildAllowedModelSet, i as isProfileInCooldown, k as resolveThinkingDefault, l as listProfilesForProvider, n as resolveAuthProfileOrder, o as markAuthProfileUsed, p as withFileLock, q as resolveShellEnvFallbackTimeoutMs, r as getSoonestCooldownExpiry, s as resolveApiKeyForProfile, u as markAuthProfileGood, v as buildModelAliasIndex, x as modelKey, y as findNormalizedProviderValue, z as requireApiKey } from "./auth-profiles-C2vj6htZ.js";
10
10
  import { n as formatCliCommand, r as resolveCliName, t as isTruthyEnvValue } from "./env-BDXYbTKj.js";
11
11
  import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-cCYzSU9h.js";
12
12
  import { t as parseBooleanValue$1 } from "./boolean-CE7i9tBR.js";
13
- import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-P13adotN.js";
14
- import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BkZ9HOKT.js";
13
+ import { $ as normalizeDeliveryContext, A as isTransientHttpError, At as DEFAULT_UPLOAD_DIR, Bt as expandToolGroups, C as isContextOverflowError, Ct as resolveGroupSessionKey, D as isRateLimitAssistantError, Dt as registerBrowserRoutes, E as isLikelyContextOverflowError, Et as createBrowserRouteContext, F as resolveSandboxContext, Ft as resolveSandboxConfigForAgent, G as updateLastRoute, Gt as compileGlobPatterns, H as loadSessionStore, Ht as normalizeToolName, I as resolveSandboxRuntimeStatus, It as applyOwnerOnlyToolPolicy, J as isCacheEnabled, Jt as ensureSessionHeader, K as updateSessionStore, Kt as matchesAnyGlobPattern, L as extractDeliveryInfo, Lt as buildPluginToolGroups, M as parseImageSizeError, Mt as getBridgeAuthForPort, N as sanitizeUserFacingText, Nt as ensureBrowserControlAuth, O as isRawApiErrorPayload, Ot as resolveBrowserConfig, P as ensureSandboxWorkspaceForSession, Pt as resolveBrowserControlAuth, Q as mergeDeliveryContext, R as parseSessionThreadInfo, Rt as collectExplicitAllowlist, S as isCompactionFailureError, St as deriveSessionMetaPatch, T as isFailoverErrorMessage, Tt as resolveSessionLockMaxHoldFromTimeout, U as readSessionUpdatedAt, Ut as resolveToolProfilePolicy, V as resolveAndPersistSessionFile, Vt as mergeAlsoAllowPolicy, W as recordSessionMetaFromInbound, Wt as stripPluginOnlyAllowlist, X as deliveryContextFromSession, Xt as resolveBootstrapTotalMaxChars, Y as resolveCacheTtlMs$1, Yt as resolveBootstrapMaxChars, Z as deliveryContextKey, Zt as sanitizeGoogleTurnOrdering, _ as formatRawAssistantErrorForUi, _t as resolveFreshSessionTotalTokens, a as isMessagingToolDuplicateNormalized, at as extractToolCallNames, b as isBillingAssistantError, bt as resolveExplicitAgentSessionKey, c as extractToolCallsFromAssistant, ct as hasInterSessionUserProvenance, d as isAntigravityClaude, dt as evaluateSessionFreshness, et as normalizeSessionDeliveryFields, f as isGoogleModelApi, ft as resolveChannelResetConfig, g as formatBillingErrorMessage, gt as DEFAULT_RESET_TRIGGERS, h as formatAssistantErrorText, ht as resolveThreadFlag, it as countToolResults, j as parseImageDimensionError, jt as resolveExistingPathsWithinRoot, k as isTimeoutErrorMessage, kt as resolveProfile, l as extractToolResultId, lt as normalizeInputProvenance, m as classifyFailoverReason, mt as resolveSessionResetType, n as validateGeminiTurns, nt as archiveSessionTranscripts, o as normalizeTextForComparison, ot as INPUT_PROVENANCE_KIND_VALUES, p as BILLING_ERROR_USER_MESSAGE, pt as resolveSessionResetPolicy, q as updateSessionStoreEntry, qt as buildBootstrapContextFiles, r as pickFallbackThinkingLevel, rt as capArrayByJsonBytes, s as sanitizeSessionMessagesImages, st as applyInputProvenanceToUserMessage, t as validateAnthropicTurns, tt as normalizeAccountId$3, u as downgradeOpenAIReasoningBlocks, ut as resolveSessionKey, v as getApiErrorPayloadFingerprint, vt as canonicalizeMainSessionAlias, w as isFailoverAssistantError, wt as acquireSessionWriteLock, x as isCloudCodeAssistFormatError, xt as resolveMainSessionKey, y as isAuthAssistantError, z as appendAssistantMessageToSessionTranscript, zt as expandPolicyWithPluginGroups } from "./pi-embedded-helpers-DrAT2ieP.js";
14
+ import { A as VERSION, C as getConfigValueAtPath, D as isSafeExecutableValue, E as unsetConfigValueAtPath, O as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, S as unsetConfigOverride, T as setConfigValueAtPath, _ as parseDurationMs, a as writeConfigFile, b as resetConfigOverrides, c as TELEGRAM_COMMAND_NAME_PATTERN, f as isInboundPathAllowed, g as normalizeScpRemoteHost, h as resolveIMessageRemoteAttachmentRoots, i as resolveConfigSnapshotHash, k as resolveAgentMaxConcurrent, l as normalizeTelegramCommandName, m as resolveIMessageAttachmentRoots, n as loadConfig, o as validateConfigObjectWithPlugins, r as readConfigFileSnapshot, u as resolveTelegramCustomCommands, v as validateJsonSchemaValue, w as parseConfigPath, x as setConfigOverride, y as getConfigOverrides } from "./config-BXMAsmut.js";
15
15
  import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-CBCGTsIb.js";
16
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-C08Z0XAa.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-B1zznUiv.js";
17
17
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-CXxrn_e2.js";
18
18
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
19
  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-C7CauEK8.js";
@@ -27,20 +27,20 @@ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTele
27
27
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-BRw8yhIW.js";
28
28
  import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
29
29
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-BuZxOb3B.js";
30
- 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-BKo1T3HF.js";
31
- import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-C0QjmPaf.js";
30
+ 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-CyPj_MLV.js";
31
+ import { $ as fetchChannelPermissionsDiscord, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as resolveTimestampMs, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as resolveDiscordSystemLocation, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordShouldRequireMention, a as removeReactionDiscord, at as resolveDiscordChannelId, b as sendWebhookMessageDiscord, bt as formatDiscordReactionEmoji, c as formatDiscordComponentEventText, ct as allowListMatches$1, d as parseDiscordModalCustomId, dt as normalizeDiscordSlug, et as hasAnyGuildPermissionDiscord, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordAllowListMatch, g as sendMessageDiscord, gt as resolveDiscordOwnerAllowFrom, h as resolveDiscordModalEntry, ht as resolveDiscordMemberAccessState, i as removeOwnReactionsDiscord, it as parseDiscordTarget, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as isDiscordGroupAllowedByPolicy, m as resolveDiscordComponentEntry, mt as resolveDiscordGuildEntry, n as fetchReactionsDiscord, nt as createDiscordClient, o as sendDiscordComponentMessage, ot as listDiscordDirectoryGroupsLive, p as readDiscordComponentSpec, pt as resolveDiscordChannelConfigWithFallback, q as deleteChannelDiscord, r as reactMessageDiscord, rt as createDiscordRestClient, s as createDiscordFormModal, st as listDiscordDirectoryPeersLive, tt as chunkDiscordTextWithMode, u as parseDiscordComponentCustomIdForCarbon, ut as normalizeDiscordAllowList, v as sendStickerDiscord, vt as resolveGroupDmAllow, w as fetchMessageDiscord, wt as fetchDiscord, x as createThreadDiscord, xt as formatDiscordUserTag, y as sendVoiceMessageDiscord, yt as shouldEmitDiscordReactionNotification, z as listGuildChannelsDiscord } from "./send-DlYO3ExM.js";
32
32
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
33
  import { i as resolveImageSanitizationLimits, n as sanitizeImageBlocks, r as sanitizeToolResultImages } from "./tool-images-SqqWIT22.js";
34
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-qUx-eLKt.js";
34
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeTargetForProvider, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as normalizeChannelTargetInput, h as buildTargetResolverSignature, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as throwIfAborted, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-nBdNxMIr.js";
35
35
  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-BUcR3Meg.js";
36
36
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-Zw87xFym.js";
37
- import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-C6rCON9L.js";
37
+ import { S as ensureSymiModelsJson, _ as stripMinimaxToolCallXml, a as decodeDataUrl, b as stripReasoningTagsFromText, c as extractAssistantText$1, d as extractThinkingFromTaggedText, f as formatReasoningMessage, g as stripDowngradedToolCallText, h as promoteThinkingTagsToBlocks, i as coerceImageModelConfig, l as extractAssistantThinking, m as isAssistantMessage, o as resolveProviderVisionModelFromConfig, p as inferToolMetaFromArgs, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as extractThinkingFromTaggedStream, v as stripThinkingTagsFromText, x as extractTextFromChatContent, y as resolveToolDisplay } from "./image-CEdTQp1F.js";
38
38
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-RXOlh8ar.js";
39
39
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-W0JzCJJM.js";
40
- import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-Bb4it0te.js";
40
+ import { $ as isVoiceCompatibleAudio, A as extractTelegramLocation, B as normalizeAllowFromWithStore$1, C as buildTelegramGroupFrom, D as buildTypingThreadParams, E as buildTelegramThreadParams, F as resolveTelegramMediaPlaceholder, G as formatLocationText, H as firstDefined$1, I as resolveTelegramReplyId, J as readChannelAllowFromStore, K as toLocationContext, L as resolveTelegramStreamMode, M as normalizeForwardedContext, N as resolveTelegramForumThreadId, O as describeReplyTarget, P as resolveTelegramGroupAllowFromContext, Q as listPairingChannels, R as resolveTelegramThreadSpec, S as buildSenderName, T as buildTelegramParentPeer, U as isSenderIdAllowed, V as resolveSenderAllowMatch, W as mergeAllowFromSources, X as upsertChannelPairingRequest, Y as removeChannelAllowFromStoreEntry, Z as getPairingAdapter, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildGroupLabel, c as sendStickerTelegram, d as wasSentByBot, et as parseTelegramTarget, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as hasBotMention, k as expandTextLinks, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as addChannelAllowFromStoreEntry, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, tt as resolveTelegramTargetChatType, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramGroupPeerId, x as buildSenderLabel, y as withTelegramApiErrorLogging, z as isSenderAllowed$1 } from "./send-BtbWvw2k.js";
41
41
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
42
42
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CvEIl6_d.js";
43
- import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-BaSutzfz.js";
43
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-HASZR70T.js";
44
44
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DjnxpF_K.js";
45
45
  import { n as retryAsync } from "./retry-B-y5suGA.js";
46
46
  import { a as createActionGate, c as jsonResult, d as readReactionParams, f as readStringArrayParam, l as parseAvailableTags, m as readStringParam, n as missingTargetError, o as imageResult, p as readStringOrNumberParam, r as unknownTargetError, s as imageResultFromFile, t as ambiguousTargetError, u as readNumberParam } from "./target-errors-DeJTztcq.js";
@@ -50,7 +50,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CVCB
50
50
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
51
51
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-7tMVY7D_.js";
52
52
  import { _ as resolveNativeCommandsEnabled, a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, g as isRestartEnabled, h as isNativeCommandsExplicitlyDisabled, i as listChatCommands, l as parseCommandArgs, m as isCommandFlagEnabled, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices, v as resolveNativeSkillsEnabled } from "./commands-registry-DxbSTLNQ.js";
53
- import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-D633VT13.js";
53
+ import { _ as CLI_OUTPUT_MAX_BUFFER, a as resolveMediaAttachmentLocalRoots, c as loadModelCatalog, d as resolveAttachmentKind, f as buildRandomTempFilePath, g as resolveMediaUnderstandingScope, h as normalizeMediaUnderstandingChatType, i as resolveAutoImageModel, l as modelSupportsVision, m as resolveTimeoutMs$1, n as createMediaAttachmentCache, o as runCapability, p as resolveConcurrency, r as normalizeMediaAttachments, s as findModelInCatalog, t as buildProviderRegistry, v as applyTemplate, y as registerUnhandledRejectionHandler } from "./runner-CMvsDzah.js";
54
54
  import { c as getSkillsSnapshotVersion, d as createAsyncLock, f as readJsonFile, i as resolveSkillCommandInvocation, l as pruneExpiredPending, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, p as writeJsonAtomic, r as listSkillCommandsForWorkspace, s as ensureSkillsWatcher, t as listReservedChatSlashCommandNames, u as resolvePairingPaths } from "./skill-commands-DG2lcozb.js";
55
55
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
56
56
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ClslA6GS.js";
@@ -58,11 +58,11 @@ import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-po
58
58
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D8QD7GoV.js";
59
59
  import { n as normalizePollInput } from "./polls-Kt7OzYCK.js";
60
60
  import { t as convertMarkdownTables } from "./tables-DoG-pFrf.js";
61
- import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-Cpk3Ti6-.js";
62
- import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-DFtnbzqy.js";
61
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-Dn1Pirhx.js";
62
+ import { a as formatIMessageChatTarget, c as parseIMessageTarget, i as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, o as isAllowedIMessageSender, r as createIMessageRpcClient, s as normalizeIMessageHandle, t as sendMessageIMessage } from "./send-C4IU_tV3.js";
63
63
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Jy5dFY67.js";
64
64
  import { t as makeProxyFetch } from "./proxy-d9fklNTC.js";
65
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CUWXgyx2.js";
65
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-IkylJ7lX.js";
66
66
  import { t as getActiveWebListener } from "./active-listener-BVZOh2T1.js";
67
67
  import { createRequire } from "node:module";
68
68
  import * as path$1 from "node:path";
@@ -105,6 +105,38 @@ import { apiThrottler } from "@grammyjs/transformer-throttler";
105
105
 
106
106
  //#region src/config/model-profiles-builtin.ts
107
107
  /**
108
+ * Shared safety + output-style additions applied to most built-in profiles
109
+ * and the Generic fallback. These rules came from a long history of
110
+ * model-specific bugs (verification-monologue padding, "I have addressed"
111
+ * preambles, post-answer assessment lists). Keeping them in one place
112
+ * means a new profile inherits sane defaults instead of starting empty.
113
+ *
114
+ * Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
115
+ * live here; profile-specific rules (control-token stripping, tool-arg
116
+ * cleanup, reasoning hints) live in their own per-profile additions.
117
+ *
118
+ * Exported so resolve-model-profile.ts can apply the same additions to
119
+ * the Generic fallback profile — no model resolves to "Generic" without
120
+ * inheriting the safety/style rules.
121
+ */
122
+ const SAFETY_AND_STYLE_ADDITIONS = [
123
+ "CRITICAL OUTPUT RULES:",
124
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
125
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
126
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
127
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
128
+ "- If you need to verify your work, do so before writing your response, not after.",
129
+ "- Send brief progress updates on long tasks so the user knows you are active."
130
+ ];
131
+ /** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
132
+ * planning internal. Not applied to Gemma/Ollama because those models
133
+ * don't have structured thinking and the rule confuses them. */
134
+ const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
135
+ /** Hint for models that leak Gemma-style control tokens (Gemma family,
136
+ * Ollama hosting any uncensored open model). Forces tool-arg cleanup and
137
+ * forbids leaking turn markers in user-visible text. */
138
+ 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."];
139
+ /**
108
140
  * Built-in model profiles. Ordered from most-specific to least-specific so
109
141
  * that `resolveModelProfile` can return the first match.
110
142
  *
@@ -138,17 +170,7 @@ const BUILTIN_PROFILES = [
138
170
  hasStructuredThinking: false,
139
171
  validateToolArgs: true
140
172
  },
141
- promptAdditions: [
142
- "CRITICAL OUTPUT RULES:",
143
- "- Your response ends when you have delivered the answer. Do not append anything after.",
144
- "- Do not output raw control tokens, channel tags, or turn markers.",
145
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
146
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
147
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
148
- "- If you need to verify your work, do so before writing your response, not after.",
149
- "- Send brief progress updates on long tasks so the user knows you are active.",
150
- "- 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."
151
- ],
173
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
152
174
  ui: {
153
175
  badge: "Local",
154
176
  watchdogMs: 9e5,
@@ -175,16 +197,7 @@ const BUILTIN_PROFILES = [
175
197
  hasStructuredThinking: true,
176
198
  validateToolArgs: false
177
199
  },
178
- promptAdditions: [
179
- "CRITICAL OUTPUT RULES:",
180
- "- Your response ends when you have delivered the answer. Do not append anything after.",
181
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
182
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
183
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
184
- "- If you need to verify your work, do so before writing your response, not after.",
185
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
186
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
187
- ],
200
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
188
201
  ui: {
189
202
  badge: "Local",
190
203
  watchdogMs: 9e5,
@@ -210,7 +223,7 @@ const BUILTIN_PROFILES = [
210
223
  hasStructuredThinking: true,
211
224
  validateToolArgs: false
212
225
  },
213
- promptAdditions: [],
226
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
214
227
  ui: {
215
228
  badge: "API",
216
229
  watchdogMs: 3e5,
@@ -243,15 +256,7 @@ const BUILTIN_PROFILES = [
243
256
  hasStructuredThinking: true,
244
257
  validateToolArgs: false
245
258
  },
246
- promptAdditions: [
247
- "CRITICAL OUTPUT RULES:",
248
- "- Your response ends when you have delivered the answer. Do not append anything after.",
249
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
250
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
251
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
252
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
253
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
254
- ],
259
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
255
260
  ui: {
256
261
  badge: "Spider",
257
262
  watchdogMs: 9e5,
@@ -284,16 +289,7 @@ const BUILTIN_PROFILES = [
284
289
  hasStructuredThinking: false,
285
290
  validateToolArgs: true
286
291
  },
287
- promptAdditions: [
288
- "CRITICAL OUTPUT RULES:",
289
- "- Your response ends when you have delivered the answer. Do not append anything after.",
290
- "- Do not output raw control tokens, channel tags, or turn markers.",
291
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
292
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
293
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
294
- "- Send brief progress updates on long tasks so the user knows you are active.",
295
- "- 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."
296
- ],
292
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
297
293
  ui: {
298
294
  badge: "Spider",
299
295
  watchdogMs: 6e5,
@@ -325,16 +321,7 @@ const BUILTIN_PROFILES = [
325
321
  hasStructuredThinking: true,
326
322
  validateToolArgs: false
327
323
  },
328
- promptAdditions: [
329
- "CRITICAL OUTPUT RULES:",
330
- "- Your response ends when you have delivered the answer. Do not append anything after.",
331
- "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
332
- "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
333
- "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
334
- "- If you need to verify your work, do so before writing your response, not after.",
335
- "- Keep planning and reasoning internal. Only speak when you have a result or need user input.",
336
- "- When working on multi-step tasks, send a brief one-line status update so the user knows you are active."
337
- ],
324
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
338
325
  ui: {
339
326
  badge: "CoreWeave",
340
327
  watchdogMs: 9e5,
@@ -345,7 +332,15 @@ const BUILTIN_PROFILES = [
345
332
 
346
333
  //#endregion
347
334
  //#region src/config/resolve-model-profile.ts
348
- /** Default profile returned when no match is found. */
335
+ /**
336
+ * Default profile returned when no match is found.
337
+ *
338
+ * Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
339
+ * the same safety+style additions as every named profile, so newly-added
340
+ * models without a profile entry inherit sane defaults instead of
341
+ * starting empty (which would silently regress safety rules until someone
342
+ * notices and adds a profile).
343
+ */
349
344
  const FALLBACK_PROFILE = {
350
345
  match: "*",
351
346
  label: "Generic",
@@ -364,7 +359,7 @@ const FALLBACK_PROFILE = {
364
359
  hasStructuredThinking: false,
365
360
  validateToolArgs: false
366
361
  },
367
- promptAdditions: [],
362
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
368
363
  ui: {
369
364
  watchdogMs: 3e5,
370
365
  armWatchdogOnSend: true
@@ -4340,7 +4335,7 @@ async function getMemorySearchManager(params) {
4340
4335
  const wrapper = new FallbackMemoryManager({
4341
4336
  primary,
4342
4337
  fallbackFactory: async () => {
4343
- const { MemoryIndexManager } = await import("./manager-BaSutzfz.js").then((n) => n.n);
4338
+ const { MemoryIndexManager } = await import("./manager-HASZR70T.js").then((n) => n.n);
4344
4339
  return await MemoryIndexManager.get(params);
4345
4340
  }
4346
4341
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4353,7 +4348,7 @@ async function getMemorySearchManager(params) {
4353
4348
  }
4354
4349
  }
4355
4350
  try {
4356
- const { MemoryIndexManager } = await import("./manager-BaSutzfz.js").then((n) => n.n);
4351
+ const { MemoryIndexManager } = await import("./manager-HASZR70T.js").then((n) => n.n);
4357
4352
  return { manager: await MemoryIndexManager.get(params) };
4358
4353
  } catch (err) {
4359
4354
  return {
@@ -6447,6 +6442,86 @@ function buildEmbeddedSandboxInfo(sandbox, execElevated) {
6447
6442
  };
6448
6443
  }
6449
6444
 
6445
+ //#endregion
6446
+ //#region src/agents/system-prompt-skills-autoload.ts
6447
+ const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
6448
+ let cachedPackageRoot;
6449
+ function getPackageRoot() {
6450
+ if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
6451
+ return cachedPackageRoot;
6452
+ }
6453
+ function safeSkillName(name) {
6454
+ return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
6455
+ }
6456
+ function tryLoadSkill(skillName, root) {
6457
+ const skillPath = path.join(root, "skills", skillName, "SKILL.md");
6458
+ try {
6459
+ if (!fs.statSync(skillPath).isFile()) return null;
6460
+ } catch {
6461
+ return null;
6462
+ }
6463
+ try {
6464
+ return fs.readFileSync(skillPath, "utf8");
6465
+ } catch {
6466
+ return null;
6467
+ }
6468
+ }
6469
+ function stripFrontmatter(body) {
6470
+ return body.replace(FRONTMATTER_RE, "").trimStart();
6471
+ }
6472
+ /**
6473
+ * Resolves and loads each named skill. Returns the inlinable Markdown block,
6474
+ * or empty string when no skills loaded / minimal mode / no names supplied.
6475
+ */
6476
+ function buildAutoLoadedSkillsBlock(opts) {
6477
+ if (opts.minimalMode) return "";
6478
+ const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
6479
+ if (names.length === 0) return "";
6480
+ const packageRoot = getPackageRoot();
6481
+ const loaded = [];
6482
+ for (const rawName of names) {
6483
+ const name = rawName.trim();
6484
+ if (!safeSkillName(name)) {
6485
+ logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
6486
+ continue;
6487
+ }
6488
+ let body = null;
6489
+ let source = "bundled";
6490
+ if (opts.workspaceDir) {
6491
+ body = tryLoadSkill(name, opts.workspaceDir);
6492
+ source = "workspace";
6493
+ }
6494
+ if (body === null && packageRoot) {
6495
+ body = tryLoadSkill(name, packageRoot);
6496
+ source = "bundled";
6497
+ }
6498
+ if (body === null) {
6499
+ logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
6500
+ continue;
6501
+ }
6502
+ const stripped = stripFrontmatter(body).trim();
6503
+ if (!stripped) {
6504
+ logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
6505
+ continue;
6506
+ }
6507
+ loaded.push({
6508
+ name,
6509
+ body: stripped,
6510
+ source
6511
+ });
6512
+ }
6513
+ if (loaded.length === 0) return "";
6514
+ return [
6515
+ "",
6516
+ "---",
6517
+ "",
6518
+ "## Auto-loaded Skills",
6519
+ "",
6520
+ loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
6521
+ ""
6522
+ ].join("\n");
6523
+ }
6524
+
6450
6525
  //#endregion
6451
6526
  //#region src/agents/system-prompt.ts
6452
6527
  function buildSkillsSection(params) {
@@ -6963,7 +7038,7 @@ function buildToolSummaryMap(tools) {
6963
7038
  //#endregion
6964
7039
  //#region src/agents/pi-embedded-runner/system-prompt.ts
6965
7040
  function buildEmbeddedSystemPrompt(params) {
6966
- return buildAgentSystemPrompt({
7041
+ const corePrompt = buildAgentSystemPrompt({
6967
7042
  workspaceDir: params.workspaceDir,
6968
7043
  defaultThinkLevel: params.defaultThinkLevel,
6969
7044
  reasoningLevel: params.reasoningLevel,
@@ -6991,6 +7066,14 @@ function buildEmbeddedSystemPrompt(params) {
6991
7066
  contextFiles: params.contextFiles,
6992
7067
  memoryCitationsMode: params.memoryCitationsMode
6993
7068
  });
7069
+ const promptMode = params.promptMode ?? "full";
7070
+ const isMinimal = promptMode === "minimal" || promptMode === "none";
7071
+ const skillsBlock = buildAutoLoadedSkillsBlock({
7072
+ skillNames: params.autoLoadInlineSkills ?? [],
7073
+ workspaceDir: params.workspaceDir,
7074
+ minimalMode: isMinimal
7075
+ });
7076
+ return skillsBlock ? `${corePrompt}${skillsBlock}` : corePrompt;
6994
7077
  }
6995
7078
  function createSystemPromptOverride(systemPrompt) {
6996
7079
  const override = systemPrompt.trim();
@@ -10443,7 +10526,7 @@ async function routeReply(params) {
10443
10526
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10444
10527
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10445
10528
  try {
10446
- const { deliverOutboundPayloads } = await import("./deliver-qUx-eLKt.js").then((n) => n.n);
10529
+ const { deliverOutboundPayloads } = await import("./deliver-nBdNxMIr.js").then((n) => n.n);
10447
10530
  return {
10448
10531
  ok: true,
10449
10532
  messageId: (await deliverOutboundPayloads({
@@ -13328,16 +13411,16 @@ function shouldComputeCommandAuthorized(text, cfg, options) {
13328
13411
 
13329
13412
  //#endregion
13330
13413
  //#region src/channels/sender-label.ts
13331
- function normalize(value) {
13414
+ function normalize$1(value) {
13332
13415
  const trimmed = value?.trim();
13333
13416
  return trimmed ? trimmed : void 0;
13334
13417
  }
13335
13418
  function resolveSenderLabel(params) {
13336
- const name = normalize(params.name);
13337
- const username = normalize(params.username);
13338
- const tag = normalize(params.tag);
13339
- const e164 = normalize(params.e164);
13340
- const id = normalize(params.id);
13419
+ const name = normalize$1(params.name);
13420
+ const username = normalize$1(params.username);
13421
+ const tag = normalize$1(params.tag);
13422
+ const e164 = normalize$1(params.e164);
13423
+ const id = normalize$1(params.id);
13341
13424
  const display = name ?? username ?? tag ?? "";
13342
13425
  const idPart = e164 ?? id ?? "";
13343
13426
  if (display && idPart && display !== idPart) return `${display} (${idPart})`;
@@ -32995,8 +33078,39 @@ const GatewayToolSchema = Type.Object({
32995
33078
  baseHash: Type.Optional(Type.String()),
32996
33079
  sessionKey: Type.Optional(Type.String()),
32997
33080
  note: Type.Optional(Type.String()),
32998
- restartDelayMs: Type.Optional(Type.Number())
33081
+ restartDelayMs: Type.Optional(Type.Number()),
33082
+ userRequestAcknowledgment: Type.Optional(Type.String())
32999
33083
  });
33084
+ /** Actions that mutate gateway state and require explicit user authorization. */
33085
+ const DESTRUCTIVE_ACTIONS = new Set([
33086
+ "config.apply",
33087
+ "config.patch",
33088
+ "update.run"
33089
+ ]);
33090
+ /** Minimum length for a meaningful authorization message. */
33091
+ const MIN_AUTHORIZATION_LENGTH = 10;
33092
+ /**
33093
+ * Asserts the user's request was explicitly acknowledged for destructive
33094
+ * actions. Throws a descriptive error if the acknowledgment is missing,
33095
+ * empty, or trivially short.
33096
+ *
33097
+ * NOTE: This is defense-in-depth, not a hard barrier. A determined model
33098
+ * could still populate the field with fabricated text. The barrier exists
33099
+ * to:
33100
+ * 1. Force the agent to deliberately compose a justification (vs. blind
33101
+ * tool invocation).
33102
+ * 2. Provide an audit trail (the acknowledgment is logged with the tool
33103
+ * call args).
33104
+ * 3. Surface for future tightening (e.g., matching against real session
33105
+ * history).
33106
+ */
33107
+ function assertUserAuthorization(action, params) {
33108
+ if (!DESTRUCTIVE_ACTIONS.has(action)) return;
33109
+ const ack = params.userRequestAcknowledgment;
33110
+ const trimmed = typeof ack === "string" ? ack.trim() : "";
33111
+ 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.`);
33112
+ 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)}.`);
33113
+ }
33000
33114
  function createGatewayTool(opts) {
33001
33115
  return {
33002
33116
  label: "Gateway",
@@ -33007,6 +33121,7 @@ function createGatewayTool(opts) {
33007
33121
  execute: async (_toolCallId, args) => {
33008
33122
  const params = args;
33009
33123
  const action = readStringParam(params, "action", { required: true });
33124
+ assertUserAuthorization(action, params);
33010
33125
  if (action === "restart") {
33011
33126
  if (!isRestartEnabled(opts?.config)) throw new Error("Gateway restart is disabled (commands.restart=false).");
33012
33127
  const sessionKey = typeof params.sessionKey === "string" && params.sessionKey.trim() ? params.sessionKey.trim() : opts?.agentSessionKey?.trim() || void 0;
@@ -44204,7 +44319,7 @@ async function deliverSessionMaintenanceWarning(params) {
44204
44319
  return;
44205
44320
  }
44206
44321
  try {
44207
- const { deliverOutboundPayloads } = await import("./deliver-qUx-eLKt.js").then((n) => n.n);
44322
+ const { deliverOutboundPayloads } = await import("./deliver-nBdNxMIr.js").then((n) => n.n);
44208
44323
  await deliverOutboundPayloads({
44209
44324
  cfg: params.cfg,
44210
44325
  channel,
@@ -47650,7 +47765,7 @@ async function describeStickerImage(params) {
47650
47765
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47651
47766
  try {
47652
47767
  const buffer = await fs$1.readFile(imagePath);
47653
- const { describeImageWithModel } = await import("./image-C6rCON9L.js").then((n) => n.n);
47768
+ const { describeImageWithModel } = await import("./image-CEdTQp1F.js").then((n) => n.n);
47654
47769
  return (await describeImageWithModel({
47655
47770
  buffer,
47656
47771
  fileName: "sticker.webp",
@@ -48073,7 +48188,7 @@ function createWhatsAppLoginTool() {
48073
48188
  force: Type.Optional(Type.Boolean())
48074
48189
  }),
48075
48190
  execute: async (_toolCallId, args) => {
48076
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DdAVHOEC.js");
48191
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DyU6qD2X.js");
48077
48192
  if ((args?.action ?? "start") === "wait") {
48078
48193
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
48079
48194
  return {
@@ -50399,7 +50514,7 @@ async function preflightDiscordMessage(params) {
50399
50514
  let preflightTranscript;
50400
50515
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
50401
50516
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
50402
- const { transcribeFirstAudio } = await import("./audio-preflight-rjCWpcfE.js");
50517
+ const { transcribeFirstAudio } = await import("./audio-preflight-DlO0Hw-w.js");
50403
50518
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
50404
50519
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
50405
50520
  ctx: {
@@ -54405,27 +54520,27 @@ function isVoiceChannelType(type) {
54405
54520
  function createDefaultDeps() {
54406
54521
  return {
54407
54522
  sendMessageWhatsApp: async (...args) => {
54408
- const { sendMessageWhatsApp } = await import("./web-BEDc6iEz.js");
54523
+ const { sendMessageWhatsApp } = await import("./web-Dbe1DwOE.js");
54409
54524
  return await sendMessageWhatsApp(...args);
54410
54525
  },
54411
54526
  sendMessageTelegram: async (...args) => {
54412
- const { sendMessageTelegram } = await import("./send-Bb4it0te.js").then((n) => n.l);
54527
+ const { sendMessageTelegram } = await import("./send-BtbWvw2k.js").then((n) => n.l);
54413
54528
  return await sendMessageTelegram(...args);
54414
54529
  },
54415
54530
  sendMessageDiscord: async (...args) => {
54416
- const { sendMessageDiscord } = await import("./send-C0QjmPaf.js").then((n) => n.t);
54531
+ const { sendMessageDiscord } = await import("./send-DlYO3ExM.js").then((n) => n.t);
54417
54532
  return await sendMessageDiscord(...args);
54418
54533
  },
54419
54534
  sendMessageSlack: async (...args) => {
54420
- const { sendMessageSlack } = await import("./send-BKo1T3HF.js").then((n) => n.n);
54535
+ const { sendMessageSlack } = await import("./send-CyPj_MLV.js").then((n) => n.n);
54421
54536
  return await sendMessageSlack(...args);
54422
54537
  },
54423
54538
  sendMessageSignal: async (...args) => {
54424
- const { sendMessageSignal } = await import("./send-Cpk3Ti6-.js").then((n) => n.i);
54539
+ const { sendMessageSignal } = await import("./send-Dn1Pirhx.js").then((n) => n.i);
54425
54540
  return await sendMessageSignal(...args);
54426
54541
  },
54427
54542
  sendMessageIMessage: async (...args) => {
54428
- const { sendMessageIMessage } = await import("./send-DFtnbzqy.js").then((n) => n.n);
54543
+ const { sendMessageIMessage } = await import("./send-C4IU_tV3.js").then((n) => n.n);
54429
54544
  return await sendMessageIMessage(...args);
54430
54545
  }
54431
54546
  };
@@ -65255,7 +65370,7 @@ async function registerSlackMonitorSlashCommands(params) {
65255
65370
  });
65256
65371
  const deliverSlashPayloads = async (replies) => {
65257
65372
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
65258
- import("./replies-CUWXgyx2.js").then((n) => n.r),
65373
+ import("./replies-IkylJ7lX.js").then((n) => n.r),
65259
65374
  import("./chunk-BRe1o4Af.js").then((n) => n.s),
65260
65375
  import("./markdown-tables-x2Xe2UXh.js").then((n) => n.t)
65261
65376
  ]);
@@ -67528,7 +67643,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
67528
67643
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
67529
67644
  let preflightTranscript;
67530
67645
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
67531
- const { transcribeFirstAudio } = await import("./audio-preflight-rjCWpcfE.js");
67646
+ const { transcribeFirstAudio } = await import("./audio-preflight-DlO0Hw-w.js");
67532
67647
  preflightTranscript = await transcribeFirstAudio({
67533
67648
  ctx: {
67534
67649
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -69673,23 +69788,23 @@ let webLoginQrPromise = null;
69673
69788
  let webChannelPromise = null;
69674
69789
  let whatsappActionsPromise = null;
69675
69790
  function loadWebOutbound() {
69676
- webOutboundPromise ??= import("./outbound-Zmd7UyQH.js").then((n) => n.t);
69791
+ webOutboundPromise ??= import("./outbound-DVVulk0E.js").then((n) => n.t);
69677
69792
  return webOutboundPromise;
69678
69793
  }
69679
69794
  function loadWebLogin() {
69680
- webLoginPromise ??= import("./login-D4rZWBXe.js").then((n) => n.n);
69795
+ webLoginPromise ??= import("./login-Cu0fTI3Z.js").then((n) => n.n);
69681
69796
  return webLoginPromise;
69682
69797
  }
69683
69798
  function loadWebLoginQr() {
69684
- webLoginQrPromise ??= import("./login-qr-DdAVHOEC.js");
69799
+ webLoginQrPromise ??= import("./login-qr-DyU6qD2X.js");
69685
69800
  return webLoginQrPromise;
69686
69801
  }
69687
69802
  function loadWebChannel() {
69688
- webChannelPromise ??= import("./web-BEDc6iEz.js");
69803
+ webChannelPromise ??= import("./web-Dbe1DwOE.js");
69689
69804
  return webChannelPromise;
69690
69805
  }
69691
69806
  function loadWhatsAppActions() {
69692
- whatsappActionsPromise ??= import("./whatsapp-actions-DmVpLXmh.js");
69807
+ whatsappActionsPromise ??= import("./whatsapp-actions-BngdI8G3.js");
69693
69808
  return whatsappActionsPromise;
69694
69809
  }
69695
69810
  function createPluginRuntime() {
@@ -71154,6 +71269,91 @@ function isToolAllowedByPolicies(name, policies) {
71154
71269
  return policies.every((policy) => isToolAllowedByPolicyName(name, policy));
71155
71270
  }
71156
71271
 
71272
+ //#endregion
71273
+ //#region src/agents/pi-tools.read-edit-guard.ts
71274
+ const RETRY_GUIDANCE_SUFFIX$1 = " Read the file first, then retry the edit.";
71275
+ function readGuardError(filePath) {
71276
+ 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}`);
71277
+ }
71278
+ function extractPath(args) {
71279
+ if (!args || typeof args !== "object") return;
71280
+ const record = args;
71281
+ const candidate = record.path ?? record.file_path;
71282
+ if (typeof candidate !== "string") return;
71283
+ const trimmed = candidate.trim();
71284
+ return trimmed.length > 0 ? trimmed : void 0;
71285
+ }
71286
+ function wrapReadToolWithTracker(tool, tracker) {
71287
+ return {
71288
+ ...tool,
71289
+ execute: async (toolCallId, args, signal, onUpdate) => {
71290
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
71291
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
71292
+ const filePath = extractPath(args);
71293
+ if (filePath) tracker.recordRead(filePath);
71294
+ }
71295
+ return result;
71296
+ }
71297
+ };
71298
+ }
71299
+ function wrapWriteToolWithTracker(tool, tracker) {
71300
+ return {
71301
+ ...tool,
71302
+ execute: async (toolCallId, args, signal, onUpdate) => {
71303
+ const result = await tool.execute(toolCallId, args, signal, onUpdate);
71304
+ if (!(!!result && typeof result === "object" && result.isError === true)) {
71305
+ const filePath = extractPath(args);
71306
+ if (filePath) tracker.recordWrite(filePath);
71307
+ }
71308
+ return result;
71309
+ }
71310
+ };
71311
+ }
71312
+ function wrapEditToolWithGuard(tool, tracker) {
71313
+ return {
71314
+ ...tool,
71315
+ execute: async (toolCallId, args, signal, onUpdate) => {
71316
+ const filePath = extractPath(args);
71317
+ if (filePath && !tracker.hasObserved(filePath)) throw readGuardError(filePath);
71318
+ return tool.execute(toolCallId, args, signal, onUpdate);
71319
+ }
71320
+ };
71321
+ }
71322
+
71323
+ //#endregion
71324
+ //#region src/agents/pi-tools.read-edit-tracker.ts
71325
+ function normalize(filePath, workspaceRoot) {
71326
+ if (!workspaceRoot) return filePath;
71327
+ if (path.isAbsolute(filePath)) return path.normalize(filePath);
71328
+ return path.resolve(workspaceRoot, filePath);
71329
+ }
71330
+ function createReadEditTracker(opts = {}) {
71331
+ const observed = /* @__PURE__ */ new Map();
71332
+ const record = (filePath, kind) => {
71333
+ if (typeof filePath !== "string" || !filePath.trim()) return;
71334
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71335
+ const prior = observed.get(key);
71336
+ if (kind === "written" || prior !== "written") observed.set(key, kind);
71337
+ };
71338
+ return {
71339
+ recordRead: (filePath) => record(filePath, "read"),
71340
+ recordWrite: (filePath) => record(filePath, "written"),
71341
+ observation: (filePath) => {
71342
+ if (typeof filePath !== "string" || !filePath.trim()) return null;
71343
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71344
+ return observed.get(key) ?? null;
71345
+ },
71346
+ hasObserved: (filePath) => {
71347
+ if (typeof filePath !== "string" || !filePath.trim()) return false;
71348
+ const key = normalize(filePath.trim(), opts.workspaceRoot);
71349
+ return observed.has(key);
71350
+ },
71351
+ reset: () => {
71352
+ observed.clear();
71353
+ }
71354
+ };
71355
+ }
71356
+
71157
71357
  //#endregion
71158
71358
  //#region src/media/sniff-mime-from-base64.ts
71159
71359
  async function sniffMimeFromBase64(base64) {
@@ -71479,6 +71679,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
71479
71679
  }
71480
71680
  };
71481
71681
  }
71682
+ /**
71683
+ * Override a tool's description while preserving execute, parameters, and
71684
+ * other properties. Used by Stage 2.5 of the prompt-reduction plan to move
71685
+ * usage docs from the system prompt into tool descriptions where they
71686
+ * belong contextually.
71687
+ *
71688
+ * The replacement description should include the upstream's tool-purpose
71689
+ * sentence so models that only read the description (without the prompt
71690
+ * section) still have the same baseline understanding.
71691
+ */
71692
+ function wrapToolWithDescriptionOverride(tool, description) {
71693
+ return {
71694
+ ...tool,
71695
+ description
71696
+ };
71697
+ }
71482
71698
  function wrapToolWorkspaceRootGuard(tool, root) {
71483
71699
  return {
71484
71700
  ...tool,
@@ -71719,6 +71935,26 @@ function resolveToolLoopDetectionConfig(params) {
71719
71935
  }
71720
71936
  };
71721
71937
  }
71938
+ /**
71939
+ * Edit tool description. Replaces the upstream's terse one-liner with
71940
+ * usage notes migrated from the system prompt's "Edit Tool Best Practices"
71941
+ * section in Stage 2.5 of the prompt-reduction plan. Co-locating these
71942
+ * notes with the tool means they ship only when edit is in palette, and
71943
+ * the system prompt section can be deleted in Stage 4 without losing the
71944
+ * guidance.
71945
+ *
71946
+ * Combined with the read-before-edit guard (Stage 1.3) and the model's
71947
+ * own discipline, this should kill the hallucinated-oldText failure class
71948
+ * for any well-intentioned model.
71949
+ */
71950
+ const EDIT_TOOL_DESCRIPTION = [
71951
+ "Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
71952
+ "Best practices to avoid match failures:",
71953
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
71954
+ "- 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.",
71955
+ "- 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.",
71956
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
71957
+ ].join(" ");
71722
71958
  function createSymiCodingTools(options) {
71723
71959
  const execToolName = "exec";
71724
71960
  const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
@@ -71781,33 +72017,34 @@ function createSymiCodingTools(options) {
71781
72017
  });
71782
72018
  if (sandboxRoot && !sandboxFsBridge) throw new Error("Sandbox filesystem bridge is unavailable.");
71783
72019
  const imageSanitization = resolveImageSanitizationLimits(options?.config);
72020
+ const readEditTracker = createReadEditTracker({ workspaceRoot: sandboxRoot ?? workspaceRoot });
71784
72021
  const base = codingTools.flatMap((tool) => {
71785
72022
  if (tool.name === readTool.name) {
71786
72023
  if (sandboxRoot) {
71787
- const sandboxed = createSandboxedReadTool({
72024
+ const tracked = wrapReadToolWithTracker(createSandboxedReadTool({
71788
72025
  root: sandboxRoot,
71789
72026
  bridge: sandboxFsBridge,
71790
72027
  modelContextWindowTokens: options?.modelContextWindowTokens,
71791
72028
  imageSanitization
71792
- });
71793
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxed, sandboxRoot) : sandboxed];
72029
+ }), readEditTracker);
72030
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, sandboxRoot) : tracked];
71794
72031
  }
71795
- const wrapped = createSymiReadTool(createReadTool(workspaceRoot), {
72032
+ const tracked = wrapReadToolWithTracker(createSymiReadTool(createReadTool(workspaceRoot), {
71796
72033
  modelContextWindowTokens: options?.modelContextWindowTokens,
71797
72034
  imageSanitization
71798
- });
71799
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
72035
+ }), readEditTracker);
72036
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
71800
72037
  }
71801
72038
  if (tool.name === "bash" || tool.name === execToolName) return [];
71802
72039
  if (tool.name === "write") {
71803
72040
  if (sandboxRoot) return [];
71804
- const wrapped = wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write);
71805
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
72041
+ const tracked = wrapWriteToolWithTracker(wrapToolParamNormalization(createWriteTool(workspaceRoot), CLAUDE_PARAM_GROUPS.write), readEditTracker);
72042
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(tracked, workspaceRoot) : tracked];
71806
72043
  }
71807
72044
  if (tool.name === "edit") {
71808
72045
  if (sandboxRoot) return [];
71809
- const wrapped = wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit);
71810
- return [workspaceOnly ? wrapToolWorkspaceRootGuard(wrapped, workspaceRoot) : wrapped];
72046
+ const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
72047
+ return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
71811
72048
  }
71812
72049
  return [tool];
71813
72050
  });
@@ -71850,22 +72087,18 @@ function createSymiCodingTools(options) {
71850
72087
  } : void 0,
71851
72088
  workspaceOnly: applyPatchWorkspaceOnly
71852
72089
  });
72090
+ const sandboxedEditTool = sandboxRoot ? wrapEditToolWithGuard(createSandboxedEditTool({
72091
+ root: sandboxRoot,
72092
+ bridge: sandboxFsBridge
72093
+ }), readEditTracker) : null;
72094
+ const sandboxedWriteTool = sandboxRoot ? wrapWriteToolWithTracker(createSandboxedWriteTool({
72095
+ root: sandboxRoot,
72096
+ bridge: sandboxFsBridge
72097
+ }), readEditTracker) : null;
71853
72098
  const withHooks = applyToolPolicyPipeline({
71854
72099
  tools: applyOwnerOnlyToolPolicy([
71855
72100
  ...base,
71856
- ...sandboxRoot ? allowWorkspaceWrites ? [workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedEditTool({
71857
- root: sandboxRoot,
71858
- bridge: sandboxFsBridge
71859
- }), sandboxRoot) : createSandboxedEditTool({
71860
- root: sandboxRoot,
71861
- bridge: sandboxFsBridge
71862
- }), workspaceOnly ? wrapToolWorkspaceRootGuard(createSandboxedWriteTool({
71863
- root: sandboxRoot,
71864
- bridge: sandboxFsBridge
71865
- }), sandboxRoot) : createSandboxedWriteTool({
71866
- root: sandboxRoot,
71867
- bridge: sandboxFsBridge
71868
- })] : [] : [],
72101
+ ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
71869
72102
  ...applyPatchTool ? [applyPatchTool] : [],
71870
72103
  execTool,
71871
72104
  processTool,
@@ -73573,7 +73806,8 @@ async function compactEmbeddedPiSessionDirect(params) {
73573
73806
  userTime,
73574
73807
  userTimeFormat,
73575
73808
  contextFiles,
73576
- memoryCitationsMode: params.config?.memory?.citations
73809
+ memoryCitationsMode: params.config?.memory?.citations,
73810
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
73577
73811
  }));
73578
73812
  const sessionLock = await acquireSessionWriteLock({
73579
73813
  sessionFile: params.sessionFile,
@@ -77763,7 +77997,8 @@ async function runEmbeddedAttempt(params) {
77763
77997
  userTime,
77764
77998
  userTimeFormat,
77765
77999
  contextFiles,
77766
- memoryCitationsMode: params.config?.memory?.citations
78000
+ memoryCitationsMode: params.config?.memory?.citations,
78001
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline
77767
78002
  });
77768
78003
  const systemPromptReport = buildSystemPromptReport({
77769
78004
  source: "run",