@symerian/symi 2.9.1 → 2.9.2

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 (412) hide show
  1. package/dist/{acp-cli-BNM6b6XY.js → acp-cli-Bc6ZQZ4f.js} +2 -2
  2. package/dist/{acp-cli-DXsJS3-G.js → acp-cli-Dy9QuDBN.js} +2 -2
  3. package/dist/{agents-FNeM-byc.js → agents-DTl30WoB.js} +7 -7
  4. package/dist/{agents.config-DUYDFbfP.js → agents.config-CO8F9mkD.js} +1 -1
  5. package/dist/{agents.config-CjML1ogJ.js → agents.config-CZ3GFxPg.js} +1 -1
  6. package/dist/{audio-preflight-CwbuWmdG.js → audio-preflight-8UNY1akA.js} +11 -11
  7. package/dist/{audio-preflight-SaT5IcVn.js → audio-preflight-By0dnw-T.js} +11 -11
  8. package/dist/{audio-preflight-DlO0Hw-w.js → audio-preflight-DQR2Ivi-.js} +5 -5
  9. package/dist/{audio-preflight-CMutcMs5.js → audio-preflight-Dtsvq6Hj.js} +6 -6
  10. package/dist/{audit-qWCLpveM.js → audit-DGwhL71Q.js} +5 -5
  11. package/dist/{audit-Ojap-R-Y.js → audit-OPWWS900.js} +5 -5
  12. package/dist/{auth-choice-BjTiWmH-.js → auth-choice-BYDGn7lJ.js} +4 -4
  13. package/dist/{auth-choice-RQ5keocP.js → auth-choice-BoOyy-ZT.js} +4 -4
  14. package/dist/{banner-dYiFXA70.js → banner-D4MiyUnv.js} +1 -1
  15. package/dist/{browser-cli-BQ9jHIXP.js → browser-cli-CGLTZ9KQ.js} +3 -3
  16. package/dist/{browser-cli-BW0C5Y8-.js → browser-cli-qpJlsofO.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-X_vwo309.js → call-BCTAmPye.js} +1 -1
  21. package/dist/{call-BZbBLMOq.js → call-BIETyST6.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-CjZlTumK.js → channel-options-B6qP-vR-.js} +1 -1
  24. package/dist/{channel-options-DqXYA7rM.js → channel-options-BiSSYYQC.js} +1 -1
  25. package/dist/{channel-web-BITaNjFT.js → channel-web-DP97EUhx.js} +7 -7
  26. package/dist/{channels-cli-7cDtM5kW.js → channels-cli-6LNvJQPb.js} +30 -30
  27. package/dist/{channels-cli-C8CesA1x.js → channels-cli-CE_A3Hai.js} +31 -31
  28. package/dist/{chrome-t-stBgN6.js → chrome-B-hW5hrK.js} +1 -1
  29. package/dist/{chrome-B1zznUiv.js → chrome-BaMQiegP.js} +8 -8
  30. package/dist/{chrome-faqXQ9f1.js → chrome-CO5ZhkcZ.js} +1 -1
  31. package/dist/{chrome-BFDOGeu3.js → chrome-CtTba9sH.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-BJ9_X9eE.js → cli-D4j_JTug.js} +27 -27
  34. package/dist/{cli-ZC_92Xyn.js → cli-DwQ3mqhI.js} +26 -26
  35. package/dist/{command-registry-B1ltIC7z.js → command-registry-b62Qpsi2.js} +11 -11
  36. package/dist/{completion-cli-_P0e-rhC.js → completion-cli-DUT2XYgK.js} +2 -2
  37. package/dist/{completion-cli-KSs4eFcq.js → completion-cli-RQyC3L-t.js} +1 -1
  38. package/dist/{config-BYCtuYPj.js → config-CitI_jxW.js} +6 -0
  39. package/dist/{config-CbBZUq-Q.js → config-D7Zr88dI.js} +6 -0
  40. package/dist/{config-BXMAsmut.js → config-Do4JxgLI.js} +6 -0
  41. package/dist/{config-DE6JXMtt.js → config-Gfhqs66L.js} +6 -0
  42. package/dist/{config-cli-DIrPShKH.js → config-cli-Di8VOhbp.js} +2 -2
  43. package/dist/{config-cli-DjCKp4Pe.js → config-cli-H52N8rp1.js} +2 -2
  44. package/dist/{config-guard-BrZXdLQw.js → config-guard-BLcbR_sH.js} +2 -2
  45. package/dist/{config-guard-DYmSI51f.js → config-guard-CgPPAm7S.js} +3 -3
  46. package/dist/{config-validation-CNRgc5vc.js → config-validation-B6GnatLw.js} +1 -1
  47. package/dist/{config-validation-fdYfdAc3.js → config-validation-UMq2H_tR.js} +1 -1
  48. package/dist/{configure-CsZWO6Nr.js → configure-BF9crM5K.js} +10 -10
  49. package/dist/{configure-Ds8SzTEw.js → configure-DQxuawe-.js} +10 -10
  50. package/dist/{control-service-DQX3HXS4.js → control-service-BkyH7qkF.js} +4 -4
  51. package/dist/{control-service-B5HVCnUI.js → control-service-DnNPjFvU.js} +4 -4
  52. package/dist/{cron-cli-CfSmL43G.js → cron-cli-CcgewYtp.js} +3 -3
  53. package/dist/{cron-cli-D2L3-4aw.js → cron-cli-DEcQk1bb.js} +3 -3
  54. package/dist/{daemon-cli-D9_xrFGD.js → daemon-cli-BNZu5unw.js} +6 -6
  55. package/dist/{daemon-cli-BHwfgmrQ.js → daemon-cli-BiBjGGfw.js} +6 -6
  56. package/dist/daemon-cli.js +6 -0
  57. package/dist/{daemon-runtime-BiZG4Kqi.js → daemon-runtime-C-Mwepv_.js} +1 -1
  58. package/dist/{daemon-runtime-DOqm0LLm.js → daemon-runtime-C86WnKU5.js} +1 -1
  59. package/dist/{deliver-CeNdvQJ3.js → deliver-DaRQn5Ai.js} +3 -3
  60. package/dist/{deliver-Cqk3zmyW.js → deliver-DrgHcdVo.js} +3 -3
  61. package/dist/{deliver-nBdNxMIr.js → deliver-Dx39g9ey.js} +2 -2
  62. package/dist/{deliver--ff__Iq0.js → deliver-XYF4JahT.js} +2 -2
  63. package/dist/{devices-cli-BzyrjuAk.js → devices-cli-Wb4H-vyx.js} +2 -2
  64. package/dist/{devices-cli-CEvTb9Vr.js → devices-cli-hX2lrsCy.js} +2 -2
  65. package/dist/{directory-cli-KZHlp_jk.js → directory-cli-CLIYvXkV.js} +1 -1
  66. package/dist/{directory-cli-Ds7uESrp.js → directory-cli-C_vm-dsr.js} +1 -1
  67. package/dist/{dns-cli-e8z7wTzi.js → dns-cli-BJuUZ4pr.js} +1 -1
  68. package/dist/{dns-cli-SNU_PJfw.js → dns-cli-CTCAHPcB.js} +1 -1
  69. package/dist/{doctor-completion-D4bMStWc.js → doctor-completion-BKXQ50ee.js} +1 -1
  70. package/dist/{doctor-completion-CfGWMYVG.js → doctor-completion-BS2JEeZy.js} +1 -1
  71. package/dist/{doctor-config-flow-CJ4__c8U.js → doctor-config-flow-BFHsvL2k.js} +2 -2
  72. package/dist/{doctor-config-flow-DHXFFSRu.js → doctor-config-flow-l2aPNzHP.js} +2 -2
  73. package/dist/entry.js +1 -1
  74. package/dist/{exec-approvals-cli-z9Iy8aWD.js → exec-approvals-cli-BXDSu2Ze.js} +4 -4
  75. package/dist/{exec-approvals-cli-_AbKrXIH.js → exec-approvals-cli-uAM6-swA.js} +4 -4
  76. package/dist/extensionAPI.js +16 -16
  77. package/dist/{gateway-cli-B4ElmhPF.js → gateway-cli-Do9KUPqe.js} +42 -42
  78. package/dist/{gateway-cli-CfO9aUt0.js → gateway-cli-moPf-zP5.js} +43 -43
  79. package/dist/{gateway-rpc-D1S1i5HM.js → gateway-rpc-DMEPdgmc.js} +1 -1
  80. package/dist/{gateway-rpc-BlWORxUe.js → gateway-rpc-Wa_4MrZb.js} +1 -1
  81. package/dist/{glass-ui-ws-D1UKJUFI.js → glass-ui-ws-D53pvIov.js} +35 -35
  82. package/dist/{glass-ui-ws-Bhu3COgn.js → glass-ui-ws-Dfro-3R8.js} +34 -34
  83. package/dist/{health-CCslN1xh.js → health-BQGRC0xh.js} +5 -5
  84. package/dist/{health-CLRDrjsk.js → health-CV741PBg.js} +5 -5
  85. package/dist/{hooks-cli-DvLYXNNe.js → hooks-cli-CG-PDY2U.js} +28 -28
  86. package/dist/{hooks-cli-BrVLhsJ6.js → hooks-cli-CWXGIL9L.js} +27 -27
  87. package/dist/{image-D5bsPk2_.js → image-BjyeKf1c.js} +2 -2
  88. package/dist/{image-CEdTQp1F.js → image-C-JvPPpM.js} +2 -2
  89. package/dist/{image-B6aY1oY3.js → image-GaF72sln.js} +2 -2
  90. package/dist/{image-Cp6qRPZ2.js → image-dYtWZNKT.js} +2 -2
  91. package/dist/index.js +35 -35
  92. package/dist/{lifecycle-core-CcPnnp9c.js → lifecycle-core-BMVHLJi_.js} +2 -2
  93. package/dist/{lifecycle-core-BUGPz1GT.js → lifecycle-core-HOQrbQ-_.js} +2 -2
  94. package/dist/llm-slug-generator.js +14 -14
  95. package/dist/{login-DwBazcKM.js → login-Cd4DTmg6.js} +2 -2
  96. package/dist/{login-B7OJui4y.js → login-Cv_LYGzG.js} +2 -2
  97. package/dist/{login-DKeZ-sOf.js → login-D4OYfM0U.js} +2 -2
  98. package/dist/{login-Cu0fTI3Z.js → login-DqhTprwd.js} +2 -2
  99. package/dist/{login-qr-BBrzemk7.js → login-qr-CZXIrzvh.js} +2 -2
  100. package/dist/{login-qr-DyU6qD2X.js → login-qr-DiyxAHpv.js} +2 -2
  101. package/dist/{login-qr-CtELJan3.js → login-qr-Dq_hs3eJ.js} +2 -2
  102. package/dist/{login-qr-Ft17VIG6.js → login-qr-Xgw7JPYo.js} +2 -2
  103. package/dist/{logs-cli-CvgvoxvI.js → logs-cli-DZTxEhiM.js} +3 -3
  104. package/dist/{logs-cli-Dg6OSEA6.js → logs-cli-Dh-aAqF3.js} +3 -3
  105. package/dist/{manager-OSWCBsL_.js → manager-B_2KzUSI.js} +1 -1
  106. package/dist/{manager-HASZR70T.js → manager-Bc-MeMho.js} +1 -1
  107. package/dist/{manager-CztTHQhN.js → manager-CLPHK-qG.js} +1 -1
  108. package/dist/{manager-8N1YbbDk.js → manager-yrUe0KOT.js} +1 -1
  109. package/dist/{memory-cli-BmWvHCEJ.js → memory-cli-3RSIw4no.js} +4 -4
  110. package/dist/{memory-cli-BDWdeqta.js → memory-cli-BKNnDIdx.js} +4 -4
  111. package/dist/{model-catalog-BhW-vn5v.js → model-catalog-BFJW_s3i.js} +2 -2
  112. package/dist/{model-catalog-FckJ4pcL.js → model-catalog-DRqmevpR.js} +2 -2
  113. package/dist/{model-picker-D3ii5sBm.js → model-picker-BT8MumhL.js} +2 -2
  114. package/dist/{model-picker-DEUeht6L.js → model-picker-DhsG4iZa.js} +2 -2
  115. package/dist/{models-5C-QKF0q.js → models-D_C2JFPw.js} +8 -8
  116. package/dist/{models-cli-BqW-Y1GI.js → models-cli-DQE60EtL.js} +30 -30
  117. package/dist/{models-cli-B2IebIhR.js → models-cli-j2O4e1Lu.js} +29 -29
  118. package/dist/{models-config-DGDMieos.js → models-config-DdK8uWQW.js} +1 -1
  119. package/dist/{models-config-CHVfeRDR.js → models-config-frWb8fDT.js} +1 -1
  120. package/dist/{node-cli-hAxte5bw.js → node-cli-DB4Z23h8.js} +9 -9
  121. package/dist/{node-cli-emEb0aRo.js → node-cli-DcRlL2Np.js} +9 -9
  122. package/dist/{nodes-cli-DQPQqEYN.js → nodes-cli-B42u9UxB.js} +3 -3
  123. package/dist/{nodes-cli-yd9KABqj.js → nodes-cli-DQ9YsQmy.js} +3 -3
  124. package/dist/{onboard-BL7Ei8OA.js → onboard-Ckw89oRF.js} +7 -7
  125. package/dist/{onboard-o5O2Ipvr.js → onboard-DUIZfWqa.js} +7 -7
  126. package/dist/{onboard-channels-B-PEQmiI.js → onboard-channels-B8Ouc5sR.js} +1 -1
  127. package/dist/{onboard-channels-Do0lkLVV.js → onboard-channels-Oa9IlsGt.js} +1 -1
  128. package/dist/{onboard-custom-BVMtQfB1.js → onboard-custom-7TON2w6b.js} +2 -2
  129. package/dist/{onboard-custom-CVA34zSg.js → onboard-custom-Bb3xuH0G.js} +2 -2
  130. package/dist/{onboard-helpers-O6bxf40E.js → onboard-helpers-BiCrYw-N.js} +2 -2
  131. package/dist/{onboard-helpers-CNFdWQIV.js → onboard-helpers-Ca4KojJF.js} +2 -2
  132. package/dist/{onboard-remote-QMqQxvh7.js → onboard-remote-B8MQTgX-.js} +1 -1
  133. package/dist/{onboard-remote-uYveiXQe.js → onboard-remote-IMqgmH78.js} +1 -1
  134. package/dist/{onboard-skills-CLb94Ag2.js → onboard-skills-BP1P7f-w.js} +1 -1
  135. package/dist/{onboard-skills-Du3aWSN3.js → onboard-skills-BcvPjVfl.js} +1 -1
  136. package/dist/{onboarding-3DwQLO4z.js → onboarding-Cjh-Y8ha.js} +10 -10
  137. package/dist/{onboarding-B_F_DbjQ.js → onboarding-JFWHlqAb.js} +10 -10
  138. package/dist/{onboarding.finalize-BWejCrVi.js → onboarding.finalize-CkGLgiEA.js} +32 -32
  139. package/dist/{onboarding.finalize-D_G6Tcqi.js → onboarding.finalize-spzEoVkm.js} +34 -34
  140. package/dist/{onboarding.gateway-config-D8K7HsWb.js → onboarding.gateway-config-Cp8mV8S9.js} +4 -4
  141. package/dist/{onboarding.gateway-config-Dixr8mmH.js → onboarding.gateway-config-tmzsyFbT.js} +4 -4
  142. package/dist/{outbound-CLCy4Nsg.js → outbound-BD7PNRhC.js} +1 -1
  143. package/dist/{outbound-DVVulk0E.js → outbound-BaF9dF-H.js} +1 -1
  144. package/dist/{outbound-b9pVFyW7.js → outbound-CDuo0JH3.js} +1 -1
  145. package/dist/{outbound-DlWjA7jN.js → outbound-CPcVipU-.js} +1 -1
  146. package/dist/{pairing-cli-Cgj6qx8Z.js → pairing-cli-CfuG75IW.js} +1 -1
  147. package/dist/{pairing-cli-CchjvjCR.js → pairing-cli-K09J3MIl.js} +1 -1
  148. package/dist/{pi-embedded-q_tNOp_h.js → pi-embedded-D6Zi01El.js} +343 -41
  149. package/dist/{pi-embedded-helpers-DrAT2ieP.js → pi-embedded-helpers-B1P8lkqj.js} +5 -5
  150. package/dist/{pi-embedded-helpers-BgpogTwt.js → pi-embedded-helpers-BlL08R8g.js} +1 -1
  151. package/dist/{pi-embedded-helpers-DK2WpZI8.js → pi-embedded-helpers-CmY04lZ7.js} +1 -1
  152. package/dist/{pi-embedded-helpers-BPP4adeW.js → pi-embedded-helpers-DuZtk5SK.js} +6 -6
  153. package/dist/{pi-tools.policy-BE7fB_Cf.js → pi-tools.policy-54ABEJtH.js} +2 -2
  154. package/dist/{pi-tools.policy-GxaAKOgf.js → pi-tools.policy-BFsWV2pS.js} +2 -2
  155. package/dist/{plugin-registry-CRIH5Sdf.js → plugin-registry-CYglC746.js} +2 -2
  156. package/dist/{plugin-registry-B_KRAoou.js → plugin-registry-zGF6HUkQ.js} +2 -2
  157. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +14 -0
  158. package/dist/plugin-sdk/agents/skills/triggers.d.ts +12 -0
  159. package/dist/plugin-sdk/agents/system-prompt-skills-jit.d.ts +28 -0
  160. package/dist/plugin-sdk/agents/tools/skill-search-tool.d.ts +30 -0
  161. package/dist/plugin-sdk/{audio-preflight-CwMsvdv8.js → audio-preflight-CoKYDdd4.js} +6 -6
  162. package/dist/plugin-sdk/{channel-web-CiewzSOW.js → channel-web-eeGSjU9N.js} +7 -7
  163. package/dist/plugin-sdk/{chrome-Cou8jVJ2.js → chrome-CdjVSHtz.js} +1 -1
  164. package/dist/plugin-sdk/config/types.skills.d.ts +14 -0
  165. package/dist/plugin-sdk/config/zod-schema.d.ts +2 -0
  166. package/dist/plugin-sdk/{config-DQntj58u.js → config-Cf-PzD3r.js} +6 -0
  167. package/dist/plugin-sdk/{deliver-OVx3XKTy.js → deliver-hjUeDZ7e.js} +2 -2
  168. package/dist/plugin-sdk/{image-ChrcMCo_.js → image-CS95I-I5.js} +2 -2
  169. package/dist/plugin-sdk/index.js +20 -20
  170. package/dist/plugin-sdk/{login-WuhOM4Dg.js → login-BhLw-aw1.js} +2 -2
  171. package/dist/plugin-sdk/{login-qr-C87Q7LuN.js → login-qr-B4dxH543.js} +2 -2
  172. package/dist/plugin-sdk/{manager-Yvm-LGVR.js → manager-DZ5-lr4s.js} +1 -1
  173. package/dist/plugin-sdk/{outbound-T0XdUo-H.js → outbound-D7yJKgEX.js} +1 -1
  174. package/dist/plugin-sdk/{pi-embedded-helpers-DihvU43r.js → pi-embedded-helpers-6EL59cK1.js} +6 -6
  175. package/dist/plugin-sdk/{pw-ai-DUQ9kG2D.js → pw-ai-DWcXZkbZ.js} +2 -2
  176. package/dist/plugin-sdk/{replies-DD0EJRXx.js → replies-B4fizDsZ.js} +1 -1
  177. package/dist/plugin-sdk/{reply-I6ZFg_UE.js → reply-BRGoceel.js} +348 -46
  178. package/dist/plugin-sdk/{runner-IyZnVyIT.js → runner-D9c_MNRa.js} +2 -2
  179. package/dist/plugin-sdk/{send-Do_qdBr_.js → send-BAzimHH-.js} +1 -1
  180. package/dist/plugin-sdk/{send-DxXXcQ_o.js → send-BfqyNBU1.js} +1 -1
  181. package/dist/plugin-sdk/{send-Cxr9NnOd.js → send-CF7BhO8B.js} +1 -1
  182. package/dist/plugin-sdk/{send-SRQweHTE.js → send-CJIEYVXL.js} +1 -1
  183. package/dist/plugin-sdk/{send-Dd71o3sZ.js → send-DDpZS9jb.js} +1 -1
  184. package/dist/plugin-sdk/{session-LEZ8u8RX.js → session-BfTQAyNx.js} +1 -1
  185. package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-C70yD9PL.js} +1 -1
  186. package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-DuQ-xGok.js} +1 -1
  187. package/dist/plugin-sdk/{synthesis-bQ4DMwsj.js → synthesis-DVsG2Tbp.js} +16 -16
  188. package/dist/plugin-sdk/{web-C3YuHiih.js → web-7u3fdT2S.js} +20 -20
  189. package/dist/plugin-sdk/{whatsapp-actions-ClWxTG5S.js → whatsapp-actions-B_3do0s7.js} +2 -2
  190. package/dist/{plugins-cli-Co9cRpLe.js → plugins-cli-CLb_0vH6.js} +27 -27
  191. package/dist/{plugins-cli-MDYiXsRL.js → plugins-cli-ndIGvW38.js} +28 -28
  192. package/dist/{program-BWqVPm5t.js → program-BovNsUAh.js} +34 -34
  193. package/dist/{program-context-m9C36Cuq.js → program-context-mFSRQPMm.js} +38 -38
  194. package/dist/{prompt-select-styled-DzjQVaDM.js → prompt-select-styled-DlKhnnDV.js} +15 -15
  195. package/dist/{prompt-select-styled-BKJVEVPk.js → prompt-select-styled-vhI0kQYd.js} +15 -15
  196. package/dist/{provider-auth-helpers-DaTqy1aA.js → provider-auth-helpers-DXlKD0hY.js} +2 -2
  197. package/dist/{provider-auth-helpers-DYJ-0sNe.js → provider-auth-helpers-U0t5YhCn.js} +2 -2
  198. package/dist/{push-apns-DdQlLTpV.js → push-apns-hN0N3Wcu.js} +1 -1
  199. package/dist/{push-apns-_aeFBwsP.js → push-apns-rDsc17-c.js} +1 -1
  200. package/dist/{pw-ai-DSmC8YuO.js → pw-ai-B8IypzYb.js} +2 -2
  201. package/dist/{pw-ai-D9ZuX3U6.js → pw-ai-BYRvpqBg.js} +2 -2
  202. package/dist/{pw-ai-Bpp0J0PM.js → pw-ai-BlWK9Tr3.js} +2 -2
  203. package/dist/{pw-ai-XSTIQILG.js → pw-ai-BwKx4yAQ.js} +2 -2
  204. package/dist/{qr-cli-DtHLOD1G.js → qr-cli-B7hz3Zj2.js} +1 -1
  205. package/dist/{qr-cli-Dq9G8FPl.js → qr-cli-Zf3abH3y.js} +1 -1
  206. package/dist/{register.agent-Hi0PN67T.js → register.agent-B1liWWB3.js} +35 -35
  207. package/dist/{register.agent-RNTVF_Nk.js → register.agent-Cyij2g-g.js} +33 -33
  208. package/dist/{register.configure-Dp-F_KKy.js → register.configure-CoYKlH75.js} +37 -37
  209. package/dist/{register.configure-DE2Fg1dO.js → register.configure-keWh1w1p.js} +38 -38
  210. package/dist/{register.maintenance-Bbd-g7nL.js → register.maintenance-CsA9QQRE.js} +37 -37
  211. package/dist/{register.maintenance-QHRRhtsg.js → register.maintenance-CvY-Yar9.js} +35 -35
  212. package/dist/{register.message-BvutRi1a.js → register.message-D7815_7Y.js} +28 -28
  213. package/dist/{register.message-B5uWOXev.js → register.message-DltuBwIg.js} +27 -27
  214. package/dist/{register.onboard-DRHuoRTm.js → register.onboard-CY50To_-.js} +33 -33
  215. package/dist/{register.onboard-CNOh527M.js → register.onboard-FcZymlrx.js} +34 -34
  216. package/dist/{register.setup-D1ePW7dl.js → register.setup-8dkIizGs.js} +34 -34
  217. package/dist/{register.setup-Cj0oOZqL.js → register.setup-X011Evir.js} +33 -33
  218. package/dist/{register.status-health-sessions-sf1XzcPo.js → register.status-health-sessions-DRkIaw1q.js} +32 -32
  219. package/dist/{register.status-health-sessions-DfyO7JaH.js → register.status-health-sessions-u9ZbWWea.js} +30 -30
  220. package/dist/{register.subclis-Do_HdpUT.js → register.subclis-vTS3UwIU.js} +28 -28
  221. package/dist/{replies-IkylJ7lX.js → replies-A6SltFjk.js} +1 -1
  222. package/dist/{replies-CPhYC11m.js → replies-CsNZ9ImJ.js} +1 -1
  223. package/dist/{replies-BxvfG7Oj.js → replies-Dk0cnpHa.js} +1 -1
  224. package/dist/{replies-BV7oFP7Z.js → replies-Dmo0pSSf.js} +1 -1
  225. package/dist/{reply-DEub7xci.js → reply-Dx9DWIO2.js} +355 -52
  226. package/dist/{routes-n7RUgOOW.js → routes-B3wAMCSw.js} +3 -3
  227. package/dist/{routes-Evl8vnTV.js → routes-DH2Da7TP.js} +3 -3
  228. package/dist/{rpc-3T_LjHn1.js → rpc-BPtq6BO7.js} +1 -1
  229. package/dist/{rpc-DeJsMHDF.js → rpc-DCB41PXt.js} +1 -1
  230. package/dist/{run-main-B_ZLo4JR.js → run-main-BQKf71Kt.js} +45 -45
  231. package/dist/{runner-CMvsDzah.js → runner-C4opGXAA.js} +2 -2
  232. package/dist/{runner-CiThXXY3.js → runner-CY_8vnxU.js} +3 -3
  233. package/dist/{runner-B_6xBcPB.js → runner-Dbs3i8HW.js} +2 -2
  234. package/dist/{runner-BX-ap4VU.js → runner-Im1oOE3i.js} +3 -3
  235. package/dist/{sandbox-T9SO3y3b.js → sandbox-BTziorto.js} +5 -5
  236. package/dist/{sandbox-cli-MZJX1Ht6.js → sandbox-cli-BVpVuidu.js} +6 -6
  237. package/dist/{sandbox-cli-Bi8lblc6.js → sandbox-cli-rOwF1Yuh.js} +6 -6
  238. package/dist/{sandbox-BQ5LAIBQ.js → sandbox-wUKYI3zy.js} +5 -5
  239. package/dist/{security-cli-AZBZs6ww.js → security-cli-Bb4vR6LY.js} +9 -9
  240. package/dist/{security-cli-txjMZzBx.js → security-cli-Cg7KhJC7.js} +9 -9
  241. package/dist/{send-CcD9S5so.js → send-8Gw3YmOh.js} +1 -1
  242. package/dist/{send-BtbWvw2k.js → send-90t8KM2a.js} +1 -1
  243. package/dist/{send-DlYO3ExM.js → send-9ktd0CBZ.js} +1 -1
  244. package/dist/{send-C6-rN_Li.js → send-B0szkIfv.js} +1 -1
  245. package/dist/{send-CyPj_MLV.js → send-B7kMNQ-T.js} +1 -1
  246. package/dist/{send-DNqcjLyg.js → send-BbZtP8GJ.js} +1 -1
  247. package/dist/{send-C4IU_tV3.js → send-CQj8FBE3.js} +1 -1
  248. package/dist/{send-Bi8XhwOZ.js → send-Cxr6CgGf.js} +1 -1
  249. package/dist/{send-CfejAK2u.js → send-D27q8Oqo.js} +1 -1
  250. package/dist/{send-CupfdYEg.js → send-D4GfXudZ.js} +1 -1
  251. package/dist/{send-BPBFuPrC.js → send-D5Siw6wn.js} +1 -1
  252. package/dist/{send-BUBES34Y.js → send-DanpvmZQ.js} +1 -1
  253. package/dist/{send-CSkNKYIc.js → send-DbJsN7Lj.js} +1 -1
  254. package/dist/{send-dohExhb8.js → send-Dj6_LS_W.js} +1 -1
  255. package/dist/{send-vmIzYMwN.js → send-F2Cpm-SJ.js} +1 -1
  256. package/dist/{send-BaSqjfd_.js → send-aXMPprv9.js} +1 -1
  257. package/dist/{send-_CmB6CKB.js → send-depbZ9aA.js} +1 -1
  258. package/dist/{send-llekTUks.js → send-nRhkxbqX.js} +1 -1
  259. package/dist/{send-CoSPwGiI.js → send-t_DoGd2Y.js} +1 -1
  260. package/dist/{send-Dn1Pirhx.js → send-zMHWALCW.js} +1 -1
  261. package/dist/{server-context-CGMSzPWd.js → server-context-BPuBLXYG.js} +5 -5
  262. package/dist/{server-context-BkYSrDni.js → server-context-DQIkGNj2.js} +5 -5
  263. package/dist/{server-methods-C-itThFa.js → server-methods-1TzYth88.js} +17 -17
  264. package/dist/{server-methods-P-ayY-6k.js → server-methods-DeIwhdBv.js} +16 -16
  265. package/dist/{server-node-events-tvNFkev2.js → server-node-events-CFMtnBFU.js} +28 -28
  266. package/dist/{server-node-events-D5ee96aZ.js → server-node-events-DF_ks0oa.js} +27 -27
  267. package/dist/{session-CifmyF9K.js → session-C4odFBc2.js} +1 -1
  268. package/dist/{session-bvybh7vL.js → session-CTTpxOx1.js} +1 -1
  269. package/dist/{session-CMploMg7.js → session-Cs58by4_.js} +1 -1
  270. package/dist/{session-DQimwuIx.js → session-d5_vMl76.js} +1 -1
  271. package/dist/{session-utils-DQ-t0PxQ.js → session-utils--1xVj2BC.js} +3 -3
  272. package/dist/{sessions-BIsirZy0.js → sessions-BikjOqQs.js} +3 -3
  273. package/dist/{sessions-BKn2DFYs.js → sessions-CVWGQEWu.js} +1 -1
  274. package/dist/{sessions-DCr5nAOw.js → sessions-CpDbQNFu.js} +1 -1
  275. package/dist/{shared-iaXjUnvo.js → shared-DHpMu95O.js} +1 -1
  276. package/dist/{shared-F4GNd-mC.js → shared-NCp143fJ.js} +1 -1
  277. package/dist/{skill-commands-CSF7Poen.js → skill-commands-QmLQo8Tj.js} +1 -1
  278. package/dist/{skills-XEbTRNYL.js → skills-D0hfZgFz.js} +1 -1
  279. package/dist/{skills-cli-BX1J5GLJ.js → skills-cli-6wYY0Xes.js} +1 -1
  280. package/dist/{skills-cli-CZgrqMPo.js → skills-cli-CkTThcTU.js} +1 -1
  281. package/dist/{status-BlTLrS6h.js → status-CvElSWg2.js} +2 -2
  282. package/dist/{status-CfIkReeE.js → status-CwZgLSfx.js} +10 -10
  283. package/dist/{status-DjvBeoYl.js → status-DEQAH4oA.js} +2 -2
  284. package/dist/{status-BqjF9Q9S.js → status-vO4-v0vI.js} +9 -9
  285. package/dist/{status.update-C5evp93A.js → status.update-BSaVYFQv.js} +1 -1
  286. package/dist/{status.update-BZnfRS2e.js → status.update-DoXJrRh6.js} +1 -1
  287. package/dist/{subagent-registry-DVYhalAo.js → subagent-registry-K1lQH7iR.js} +351 -48
  288. package/dist/{synthesis-y-Ozm8YK.js → synthesis-AYqn8_O8.js} +27 -27
  289. package/dist/{synthesis-DgiYnjmZ.js → synthesis-CZhOC8n4.js} +14 -14
  290. package/dist/{synthesis-DRXsTePq.js → synthesis-DazoL-DI.js} +26 -26
  291. package/dist/{synthesis-DDQ5zAtf.js → synthesis-DhxkkJq7.js} +16 -16
  292. package/dist/{system-cli-IeefTiI1.js → system-cli-BmccUOcE.js} +3 -3
  293. package/dist/{system-cli-hjvWuxnn.js → system-cli-DJIrqTFB.js} +3 -3
  294. package/dist/{systemd-hints-CW7G2Z_2.js → systemd-hints-BbqPFaZ2.js} +1 -1
  295. package/dist/{systemd-hints-CcsN2P1C.js → systemd-hints-CfnF9j3s.js} +1 -1
  296. package/dist/{tui-DulNash-.js → tui-Cc1L4YuN.js} +4 -4
  297. package/dist/{tui-ByDc_eA-.js → tui-D5we2kr7.js} +4 -4
  298. package/dist/{tui-cli-cbFjX5ua.js → tui-cli-BHBp8e8w.js} +9 -9
  299. package/dist/{tui-cli-D--Wucil.js → tui-cli-CmVmkEzr.js} +9 -9
  300. package/dist/{unified-runner-BRmPenSK.js → unified-runner-CavADnkK.js} +350 -47
  301. package/dist/{update-cli-BfvcUFky.js → update-cli-DPf2vrJK.js} +40 -40
  302. package/dist/{update-cli-5uhTWLns.js → update-cli-DmxFKAmJ.js} +38 -38
  303. package/dist/{update-runner-DyENgdTM.js → update-runner-D4UIv_1p.js} +1 -1
  304. package/dist/{update-runner-22u8HOoq.js → update-runner-XU-jPEg_.js} +1 -1
  305. package/dist/{web-s9NWpUYH.js → web-BBbVbRTg.js} +30 -30
  306. package/dist/{web-Dbe1DwOE.js → web-BJIv_6uQ.js} +17 -17
  307. package/dist/{web-CqeSgivQ.js → web-C-E-O8iP.js} +30 -30
  308. package/dist/{web-B8GaP73t.js → web-CIj8erCe.js} +19 -19
  309. package/dist/{webhooks-cli-9lyrT9S-.js → webhooks-cli-BPWIcZ4r.js} +1 -1
  310. package/dist/{webhooks-cli-C56QoA-d.js → webhooks-cli-DCw-yCzR.js} +1 -1
  311. package/dist/{whatsapp-actions-Dx8FkbIf.js → whatsapp-actions-B5o7eFIc.js} +2 -2
  312. package/dist/{whatsapp-actions-D5RBK0Cm.js → whatsapp-actions-CJkCiI_n.js} +2 -2
  313. package/dist/{whatsapp-actions-BV4mjN5j.js → whatsapp-actions-CkT3dnmD.js} +2 -2
  314. package/dist/{whatsapp-actions-BngdI8G3.js → whatsapp-actions-DRvUrapa.js} +2 -2
  315. package/dist/{with-timeout-7gwjaz5c.js → with-timeout-7M4c248g.js} +1 -1
  316. package/dist/{with-timeout-C1vsg3IF.js → with-timeout-BWETfI9T.js} +1 -1
  317. package/extensions/bluebubbles/package.json +1 -1
  318. package/extensions/copilot-proxy/package.json +1 -1
  319. package/extensions/diagnostics-otel/package.json +1 -1
  320. package/extensions/discord/package.json +1 -1
  321. package/extensions/feishu/package.json +1 -1
  322. package/extensions/google-antigravity-auth/package.json +1 -1
  323. package/extensions/google-gemini-cli-auth/package.json +1 -1
  324. package/extensions/googlechat/package.json +1 -1
  325. package/extensions/imessage/package.json +1 -1
  326. package/extensions/irc/package.json +1 -1
  327. package/extensions/learning-loop/package.json +1 -1
  328. package/extensions/line/package.json +1 -1
  329. package/extensions/llm-task/package.json +1 -1
  330. package/extensions/matrix/CHANGELOG.md +6 -0
  331. package/extensions/matrix/package.json +1 -1
  332. package/extensions/mattermost/package.json +1 -1
  333. package/extensions/memory-core/package.json +1 -1
  334. package/extensions/memory-lancedb/package.json +1 -1
  335. package/extensions/minimax-portal-auth/package.json +1 -1
  336. package/extensions/msteams/CHANGELOG.md +6 -0
  337. package/extensions/msteams/package.json +1 -1
  338. package/extensions/nextcloud-talk/package.json +1 -1
  339. package/extensions/nostr/CHANGELOG.md +6 -0
  340. package/extensions/nostr/package.json +1 -1
  341. package/extensions/open-prose/package.json +1 -1
  342. package/extensions/outlook/package.json +1 -1
  343. package/extensions/pipeline/package.json +1 -1
  344. package/extensions/signal/package.json +1 -1
  345. package/extensions/slack/package.json +1 -1
  346. package/extensions/telegram/package.json +1 -1
  347. package/extensions/tlon/package.json +1 -1
  348. package/extensions/twitch/CHANGELOG.md +6 -0
  349. package/extensions/twitch/package.json +1 -1
  350. package/extensions/voice-call/CHANGELOG.md +6 -0
  351. package/extensions/voice-call/package.json +1 -1
  352. package/extensions/whatsapp/package.json +1 -1
  353. package/extensions/zalo/CHANGELOG.md +6 -0
  354. package/extensions/zalo/package.json +1 -1
  355. package/extensions/zalouser/CHANGELOG.md +6 -0
  356. package/extensions/zalouser/package.json +1 -1
  357. package/package.json +1 -1
  358. package/skills/1password/SKILL.md +1 -0
  359. package/skills/apple-notes/SKILL.md +1 -0
  360. package/skills/apple-reminders/SKILL.md +1 -0
  361. package/skills/bear-notes/SKILL.md +1 -0
  362. package/skills/blogwatcher/SKILL.md +1 -0
  363. package/skills/blucli/SKILL.md +1 -0
  364. package/skills/bluebubbles/SKILL.md +1 -0
  365. package/skills/camsnap/SKILL.md +1 -0
  366. package/skills/canvas/SKILL.md +6 -0
  367. package/skills/coding-agent/SKILL.md +1 -0
  368. package/skills/connect-email/SKILL.md +1 -0
  369. package/skills/discord/SKILL.md +1 -0
  370. package/skills/eightctl/SKILL.md +1 -0
  371. package/skills/food-order/SKILL.md +1 -0
  372. package/skills/gemini/SKILL.md +1 -0
  373. package/skills/gh-issues/SKILL.md +1 -0
  374. package/skills/gifgrep/SKILL.md +1 -0
  375. package/skills/github/SKILL.md +1 -0
  376. package/skills/gog/SKILL.md +1 -0
  377. package/skills/goplaces/SKILL.md +1 -0
  378. package/skills/healthcheck/SKILL.md +1 -0
  379. package/skills/himalaya/SKILL.md +1 -0
  380. package/skills/imsg/SKILL.md +1 -0
  381. package/skills/long-task/SKILL.md +1 -0
  382. package/skills/mcporter/SKILL.md +1 -0
  383. package/skills/model-usage/SKILL.md +1 -0
  384. package/skills/nano-banana-pro/SKILL.md +1 -0
  385. package/skills/nano-pdf/SKILL.md +1 -0
  386. package/skills/notion/SKILL.md +1 -0
  387. package/skills/obsidian/SKILL.md +1 -0
  388. package/skills/openai-image-gen/SKILL.md +1 -0
  389. package/skills/openai-whisper/SKILL.md +1 -0
  390. package/skills/openai-whisper-api/SKILL.md +1 -0
  391. package/skills/openhue/SKILL.md +1 -0
  392. package/skills/oracle/SKILL.md +1 -0
  393. package/skills/ordercli/SKILL.md +1 -0
  394. package/skills/peekaboo/SKILL.md +1 -0
  395. package/skills/sag/SKILL.md +1 -0
  396. package/skills/session-logs/SKILL.md +1 -0
  397. package/skills/sherpa-onnx-tts/SKILL.md +1 -0
  398. package/skills/skill-creator/SKILL.md +1 -0
  399. package/skills/slack/SKILL.md +1 -0
  400. package/skills/songsee/SKILL.md +1 -0
  401. package/skills/sonoscli/SKILL.md +1 -0
  402. package/skills/spotify-player/SKILL.md +1 -0
  403. package/skills/summarize/SKILL.md +1 -0
  404. package/skills/symihub/SKILL.md +1 -0
  405. package/skills/things-mac/SKILL.md +1 -0
  406. package/skills/tmux/SKILL.md +1 -0
  407. package/skills/trello/SKILL.md +1 -0
  408. package/skills/video-frames/SKILL.md +1 -0
  409. package/skills/voice-call/SKILL.md +1 -0
  410. package/skills/wacli/SKILL.md +1 -0
  411. package/skills/weather/SKILL.md +1 -0
  412. package/skills/xurl/SKILL.md +1 -0
@@ -14,34 +14,35 @@ import { t as formatCliCommand } from "./command-format-COaS-S7B.js";
14
14
  import { t as parseBooleanValue$1 } from "./boolean-BsqeuxE6.js";
15
15
  import { t as isTruthyEnvValue } from "./env-DPCHYPeH.js";
16
16
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, d as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as isGatewayMessageChannel, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-aT-I_DTX.js";
17
- import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-DNqcjLyg.js";
18
- import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-BYCtuYPj.js";
17
+ import { $ as parseDiscordTarget, A as unpinMessageDiscord, B as listScheduledEventsDiscord, C as editMessageDiscord, Ct as createDiscordRestClient, D as pinMessageDiscord, Dt as normalizeChannelSlug, E as listThreadsDiscord, Et as buildChannelKeyCandidates, F as fetchMemberInfoDiscord, G as uploadStickerDiscord, H as timeoutMemberDiscord, I as fetchRoleInfoDiscord, J as editChannelDiscord, K as createChannelDiscord, L as fetchVoiceStatusDiscord, M as banMemberDiscord, N as createScheduledEventDiscord, O as readMessagesDiscord, Ot as resolveChannelEntryMatchWithFallback, P as fetchChannelInfoDiscord, Q as stripUndefinedFields, R as kickMemberDiscord, S as deleteMessageDiscord, St as createDiscordClient, T as listPinsDiscord, Tt as applyChannelMatchMeta, U as listGuildEmojisDiscord, V as removeRoleDiscord, W as uploadEmojiDiscord, X as removeChannelPermissionDiscord, Y as moveChannelDiscord, Z as setChannelPermissionDiscord, _ as sendPollDiscord, _t as resolveDiscordSystemLocation, a as removeReactionDiscord, at as normalizeDiscordAllowList, b as sendWebhookMessageDiscord, bt as fetchChannelPermissionsDiscord, c as formatDiscordComponentEventText, ct as resolveDiscordChannelConfigWithFallback, d as parseDiscordModalCustomId, dt as resolveDiscordOwnerAllowFrom, et as resolveDiscordChannelId, f as parseDiscordModalCustomIdForCarbon, ft as resolveDiscordShouldRequireMention, g as sendMessageDiscord, gt as formatDiscordUserTag, h as resolveDiscordModalEntry, ht as formatDiscordReactionEmoji, i as removeOwnReactionsDiscord, it as isDiscordGroupAllowedByPolicy, j as addRoleDiscord, k as searchMessagesDiscord, l as parseDiscordComponentCustomId, lt as resolveDiscordGuildEntry, m as resolveDiscordComponentEntry, mt as shouldEmitDiscordReactionNotification, n as fetchReactionsDiscord, nt as listDiscordDirectoryPeersLive, o as sendDiscordComponentMessage, ot as normalizeDiscordSlug, p as readDiscordComponentSpec, pt as resolveGroupDmAllow, q as deleteChannelDiscord, r as reactMessageDiscord, rt as allowListMatches$1, s as createDiscordFormModal, st as resolveDiscordAllowListMatch, tt as listDiscordDirectoryGroupsLive, u as parseDiscordComponentCustomIdForCarbon, ut as resolveDiscordMemberAccessState, v as sendStickerDiscord, vt as resolveTimestampMs, w as fetchMessageDiscord, wt as chunkDiscordTextWithMode, x as createThreadDiscord, xt as hasAnyGuildPermissionDiscord, y as sendVoiceMessageDiscord, yt as fetchDiscord, z as listGuildChannelsDiscord } from "./send-BbZtP8GJ.js";
18
+ import { A as parseConfigPath, B as resolveAgentMaxConcurrent, C as parseDurationMs, D as setConfigOverride, E as resetConfigOverrides, H as VERSION, M as unsetConfigValueAtPath, O as unsetConfigOverride, T as getConfigOverrides, _ as isInboundPathAllowed, b as resolveIMessageRemoteAttachmentRoots, c as resolveConfigSnapshotHash, h as resolveTelegramCustomCommands, i as loadConfig, j as setConfigValueAtPath, k as getConfigValueAtPath, l as writeConfigFile, m as normalizeTelegramCommandName, o as readConfigFileSnapshot, p as TELEGRAM_COMMAND_NAME_PATTERN, u as validateConfigObjectWithPlugins, w as validateJsonSchemaValue, x as normalizeScpRemoteHost, y as resolveIMessageAttachmentRoots, z as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-CitI_jxW.js";
19
19
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-BDSRH8nU.js";
20
20
  import { a as isPathInsideWithRealpath } from "./legacy-names-Be3msDZo.js";
21
21
  import { t as normalizeChatType } from "./chat-type-DyovJwCt.js";
22
22
  import { n as resolveConversationLabel } from "./conversation-label-Bn5j3lUT.js";
23
23
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-CmmmT8IP.js";
24
- import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-BX-ap4VU.js";
25
- import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-B6aY1oY3.js";
26
- import { t as ensureSymiModelsJson } from "./models-config-DGDMieos.js";
24
+ import { _ as applyTemplate, a as resolveMediaAttachmentLocalRoots, c as resolveAttachmentKind, d as registerUnhandledRejectionHandler, f as resolveConcurrency, g as CLI_OUTPUT_MAX_BUFFER, h as resolveMediaUnderstandingScope, i as resolveAutoImageModel, l as buildRandomTempFilePath, m as normalizeMediaUnderstandingChatType, n as createMediaAttachmentCache, o as runCapability, p as resolveTimeoutMs, r as normalizeMediaAttachments, t as buildProviderRegistry } from "./runner-Im1oOE3i.js";
25
+ import { _ as stripThinkingTagsFromText, a as decodeDataUrl, b as minimaxUnderstandImage, c as extractAssistantThinking, d as formatReasoningMessage, f as inferToolMetaFromArgs, g as stripMinimaxToolCallXml, h as stripDowngradedToolCallText, i as coerceImageModelConfig, l as extractThinkingFromTaggedStream, m as promoteThinkingTagsToBlocks, o as resolveProviderVisionModelFromConfig, p as isAssistantMessage, r as coerceImageAssistantText, s as extractAssistantText$1, u as extractThinkingFromTaggedText, v as stripReasoningTagsFromText, y as extractTextFromChatContent } from "./image-GaF72sln.js";
26
+ import { t as ensureSymiModelsJson } from "./models-config-DdK8uWQW.js";
27
27
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-4uUnLc3n.js";
28
- import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-DK2WpZI8.js";
29
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-BQ5LAIBQ.js";
30
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-BFDOGeu3.js";
31
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CGMSzPWd.js";
28
+ import { A as isTransientHttpError, C as isContextOverflowError, D as isRateLimitAssistantError, E as isLikelyContextOverflowError, F as ensureSessionHeader, I as resolveBootstrapMaxChars, L as resolveBootstrapTotalMaxChars, M as parseImageSizeError, N as sanitizeUserFacingText, O as isRawApiErrorPayload, P as buildBootstrapContextFiles, R as sanitizeGoogleTurnOrdering, S as isCompactionFailureError, T as isFailoverErrorMessage, _ as formatRawAssistantErrorForUi, a as isMessagingToolDuplicateNormalized, b as isBillingAssistantError, c as extractToolCallsFromAssistant, d as isAntigravityClaude, f as isGoogleModelApi, g as formatBillingErrorMessage, h as formatAssistantErrorText, j as parseImageDimensionError, k as isTimeoutErrorMessage, l as extractToolResultId, m as classifyFailoverReason, n as validateGeminiTurns, o as normalizeTextForComparison, p as BILLING_ERROR_USER_MESSAGE, r as pickFallbackThinkingLevel, s as sanitizeSessionMessagesImages, t as validateAnthropicTurns, u as downgradeOpenAIReasoningBlocks, v as getApiErrorPayloadFingerprint, w as isFailoverAssistantError, x as isCloudCodeAssistFormatError, y as isAuthAssistantError } from "./pi-embedded-helpers-CmY04lZ7.js";
29
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, f as resolveSandboxConfigForAgent, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-wUKYI3zy.js";
30
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-CtTba9sH.js";
31
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-BPuBLXYG.js";
32
+ import { l as parseFrontmatterBlock } from "./frontmatter-DWQhtOo7.js";
32
33
  import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BG8FpqDp.js";
33
34
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-BF3TeRH2.js";
34
35
  import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BBm9fwuG.js";
35
36
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-BCYMnxkM.js";
36
37
  import { c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, g as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, p as isGifMedia, s as resizeToJpeg, v as mediaKindFromMime } from "./image-ops-1OJMSAUX.js";
37
38
  import { n as getMediaDir, r as saveMediaBuffer } from "./store-r1DJSDq-.js";
38
- import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-BKn2DFYs.js";
39
+ import { B as resolveAgentMainSessionKey, C as capArrayByJsonBytes, D as resolveSessionTranscriptCandidates, E as readSessionTitleFieldsFromTranscript, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, K as buildGroupDisplayName, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, V as resolveExplicitAgentSessionKey, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, b as normalizeAccountId$3, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, n as parseSessionThreadInfo, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields, z as canonicalizeMainSessionAlias } from "./sessions-CVWGQEWu.js";
39
40
  import { a as resolveChannelGroupRequireMention, c as normalizeHyphenSlug, i as resolveChannelGroupPolicy, l as normalizeStringEntries, n as listChannelDocks, r as normalizeSignalMessagingTarget, s as normalizeAtHashSlug, t as getChannelDock, u as normalizeStringEntriesLower } from "./dock-BhS32F6E.js";
40
41
  import { _ as listEnabledDiscordAccounts, a as isWhatsAppGroupJid, c as listEnabledTelegramAccounts, d as resolveTelegramToken, f as resolveSlackAccount, g as createDiscordActionGate, h as resolveSlackBotToken, l as listTelegramAccountIds, m as resolveSlackAppToken, n as listChannelPlugins, o as normalizeWhatsAppTarget, r as normalizeChannelId$1, s as createTelegramActionGate, t as getChannelPlugin, u as resolveTelegramAccount, v as resolveDiscordAccount, y as normalizeDiscordToken } from "./plugins-DKDeQZF0.js";
41
42
  import { a as logWebSelfId, i as getWebAuthAgeMs, m as webAuthExists, n as resolveWhatsAppAccount, o as logoutWeb, u as readWebSelfId } from "./accounts-DDuIpcln.js";
42
43
  import { t as resolveIMessageAccount } from "./accounts-bK-Yqdwx.js";
43
44
  import { n as resolveSignalAccount, t as listEnabledSignalAccounts } from "./accounts-DyJN4_vR.js";
44
- import { a as resolveSlackWebClientOptions, c as buildSlackBlocksFallbackText, i as createSlackWebClient, l as parseSlackTarget, o as parseSlackBlocksInput, s as validateSlackBlocksArray, t as sendMessageSlack, u as resolveSlackChannelId } from "./send-llekTUks.js";
45
+ 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-nRhkxbqX.js";
45
46
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-CyhzMxFA.js";
46
47
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-BzbXHcaD.js";
47
48
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-DdnTeoR1.js";
@@ -51,17 +52,17 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-Db3d
51
52
  import { t as fetchWithSsrFGuard } from "./fetch-guard-DOPkVbh3.js";
52
53
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, t as getAgentScopedMediaLocalRoots } from "./local-roots-aAFLQGkY.js";
53
54
  import { m as runTasksWithConcurrency } from "./internal-iXV867Nr.js";
54
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-BhW-vn5v.js";
55
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-BFJW_s3i.js";
55
56
  import { a as isSilentReplyText, i as isSilentReplyPrefixText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN, t as HEARTBEAT_TOKEN } from "./tokens-BuceUQDl.js";
56
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-7gwjaz5c.js";
57
- import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-Cqk3zmyW.js";
57
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$4 } from "./with-timeout-7M4c248g.js";
58
+ import { C as getGlobalHookRunner, S as parseInlineDirectives$1, _ as normalizeChannelTargetInput, a as normalizeOutboundPayloadsForJson, b as MEDIA_TOKEN_RE, c as applyReplyThreading, d as isRenderablePayload, f as shouldSuppressMessagingToolReplies, g as buildTargetResolverSignature, h as throwIfAborted, i as normalizeOutboundPayloads, l as filterMessagingToolDuplicates, m as resolveReplyToMode, o as normalizeReplyPayloadsForDelivery, p as createReplyToModeFilterForChannel, r as formatOutboundPayloadLog, s as applyReplyTagsToPayload, t as deliverOutboundPayloads, u as filterMessagingToolMediaDuplicates, v as normalizeTargetForProvider, w as initializeGlobalHookRunner, x as splitMediaFromOutput, y as parseReplyDirectives } from "./deliver-DrgHcdVo.js";
58
59
  import { a as logMessageProcessed, c as logWebhookError, d as startDiagnosticHeartbeat, f as stopDiagnosticHeartbeat, i as logLaneEnqueue, l as logWebhookProcessed, m as isDiagnosticsEnabled, o as logMessageQueued, p as emitDiagnosticEvent, r as logLaneDequeue, s as logSessionStateChange, t as diag, u as logWebhookReceived } from "./diagnostic-JkjuvDGH.js";
59
60
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-CUslJyKP.js";
60
- import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-BaSqjfd_.js";
61
+ import { A as hasBotMention, B as resolveSenderAllowMatch, C as buildTelegramGroupPeerId, D as describeReplyTarget, E as buildTypingThreadParams, F as resolveTelegramReplyId, G as toLocationContext, H as isSenderIdAllowed, I as resolveTelegramStreamMode, J as parseTelegramTarget, K as withTelegramApiErrorLogging, L as resolveTelegramThreadSpec, M as resolveTelegramForumThreadId, N as resolveTelegramGroupAllowFromContext, O as expandTextLinks, P as resolveTelegramMediaPlaceholder, R as isSenderAllowed$1, S as buildTelegramGroupFrom, T as buildTelegramThreadParams, U as mergeAllowFromSources, V as firstDefined$1, W as formatLocationText, Y as resolveTelegramTargetChatType, _ as resolveTelegramFetch, a as reactMessageTelegram, b as buildSenderLabel, c as sendStickerTelegram, d as wasSentByBot, f as isRecoverableTelegramNetworkError, g as wrapFileReferencesInHtml, h as renderTelegramHtmlText, i as editMessageTelegram, j as normalizeForwardedContext, k as extractTelegramLocation, m as markdownToTelegramHtml, n as createForumTopicTelegram, o as sendMessageTelegram, p as markdownToTelegramChunks, q as isVoiceCompatibleAudio, r as deleteMessageTelegram, s as sendPollTelegram, t as buildInlineKeyboard, u as resolveTelegramVoiceSend, v as splitTelegramCaption, w as buildTelegramParentPeer, x as buildSenderName, y as buildGroupLabel, z as normalizeAllowFromWithStore$1 } from "./send-aXMPprv9.js";
61
62
  import { a as buildModelAliasLines, n as resolveModel } from "./model-ECsJuJew.js";
62
63
  import { a as resolveAgentIdentity, i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CE2YmmsD.js";
63
- import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BDWdeqta.js";
64
- import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-OSWCBsL_.js";
64
+ import { i as resolveMemoryBackendConfig, n as registerMemoryCli, r as getMemorySearchManager } from "./memory-cli-BKNnDIdx.js";
65
+ import { a as resolveMemorySearchConfig, t as MemoryIndexManager } from "./manager-B_2KzUSI.js";
65
66
  import { n as retryAsync } from "./retry-BoS4e4X_.js";
66
67
  import { c as imageResultFromFile, d as readNumberParam, f as readReactionParams, h as readStringParam, l as jsonResult, m as readStringOrNumberParam, n as missingTargetError, o as createActionGate, p as readStringArrayParam, r as unknownTargetError, s as imageResult, t as ambiguousTargetError, u as parseAvailableTags } from "./target-errors-C9e6dMU_.js";
67
68
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-DIi9uyC6.js";
@@ -70,23 +71,23 @@ import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-jTXFdH5R.js";
70
71
  import { a as resolveNativeSkillsEnabled, i as resolveNativeCommandsEnabled, n as isNativeCommandsExplicitlyDisabled, r as isRestartEnabled, t as isCommandFlagEnabled } from "./commands-vWB85AXk.js";
71
72
  import { a as listChatCommandsForConfig, c as normalizeCommandBody, d as resolveCommandArgMenu, f as serializeCommandArgs, i as listChatCommands, l as parseCommandArgs, o as listNativeCommandSpecs, p as shouldHandleTextCommands, r as findCommandByNativeName, s as listNativeCommandSpecsForConfig, t as buildCommandTextFromArgs, u as resolveCommandArgChoices } from "./commands-registry-D_uByLpw.js";
72
73
  import { Rt as SESSION_LABEL_MAX_LENGTH, t as GatewayClient } from "./client-pd8kwOFJ.js";
73
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BZbBLMOq.js";
74
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege, t as buildGatewayConnectionDetails } from "./call-BIETyST6.js";
74
75
  import { n as formatTimeAgo } from "./format-relative-CviDPm2s.js";
75
76
  import { n as normalizePollInput } from "./polls-DZoQqmds.js";
76
77
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-CoTZV03i.js";
77
78
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-BECUf3wn.js";
78
79
  import { t as convertMarkdownTables } from "./tables-C3TR-LvH.js";
79
- import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-BPBFuPrC.js";
80
+ import { c as signalRpcRequest, l as streamSignalEvents, n as sendReadReceiptSignal, o as resolveSignalRpcContext, r as sendTypingSignal, s as signalCheck, t as sendMessageSignal } from "./send-D5Siw6wn.js";
80
81
  import { i as readChannelAllowFromStore, l as listPairingChannels, o as removeChannelAllowFromStoreEntry, s as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-iAT1if6k.js";
81
82
  import { t as makeProxyFetch } from "./proxy-mdETjik4.js";
82
83
  import { i as formatDurationSeconds, r as formatDurationPrecise, t as formatDurationCompact$1 } from "./format-duration-DeLiQNNv.js";
83
84
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-FCaqxoqg.js";
84
- import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CPhYC11m.js";
85
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-CsNZ9ImJ.js";
85
86
  import { b as ensureSkillsWatcher, i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, o as getRemoteSkillEligibility, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames, x as getSkillsSnapshotVersion } from "./skill-commands-Bz5sreu5.js";
86
87
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-C87_fedd.js";
87
88
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary, s as deriveSessionTotalTokens } from "./session-cost-usage-RPrhIvZF.js";
88
- import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-BUBES34Y.js";
89
- import { r as detectBinary } from "./onboard-helpers-O6bxf40E.js";
89
+ import { a as normalizeIMessageHandle, c as DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, i as isAllowedIMessageSender, o as parseIMessageTarget, r as formatIMessageChatTarget, s as createIMessageRpcClient, t as sendMessageIMessage } from "./send-DanpvmZQ.js";
90
+ import { r as detectBinary } from "./onboard-helpers-BiCrYw-N.js";
90
91
  import { t as resolvePairingIdLabel } from "./pairing-labels-CTL1gXZb.js";
91
92
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-D4P4IiJ6.js";
92
93
  import { t as getActiveWebListener } from "./active-listener-Cif6x8mY.js";
@@ -94,8 +95,8 @@ import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExe
94
95
  import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-BZS89z6C.js";
95
96
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-D3rffA64.js";
96
97
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-CjL9F9WT.js";
97
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BE7fB_Cf.js";
98
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-DQX3HXS4.js";
98
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-54ABEJtH.js";
99
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-BkyH7qkF.js";
99
100
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-CZ1Rrj7O.js";
100
101
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-DF8wPn-_.js";
101
102
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-9fIQGtZy.js";
@@ -10502,7 +10503,7 @@ async function routeReply(params) {
10502
10503
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10503
10504
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10504
10505
  try {
10505
- const { deliverOutboundPayloads } = await import("./deliver-Cqk3zmyW.js").then((n) => n.n);
10506
+ const { deliverOutboundPayloads } = await import("./deliver-DrgHcdVo.js").then((n) => n.n);
10506
10507
  return {
10507
10508
  ok: true,
10508
10509
  messageId: (await deliverOutboundPayloads({
@@ -13052,7 +13053,7 @@ async function describeStickerImage(params) {
13052
13053
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
13053
13054
  try {
13054
13055
  const buffer = await fs$1.readFile(imagePath);
13055
- const { describeImageWithModel } = await import("./image-B6aY1oY3.js").then((n) => n.n);
13056
+ const { describeImageWithModel } = await import("./image-GaF72sln.js").then((n) => n.n);
13056
13057
  return (await describeImageWithModel({
13057
13058
  buffer,
13058
13059
  fileName: "sticker.webp",
@@ -13475,7 +13476,7 @@ function createWhatsAppLoginTool() {
13475
13476
  force: Type.Optional(Type.Boolean())
13476
13477
  }),
13477
13478
  execute: async (_toolCallId, args) => {
13478
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Ft17VIG6.js");
13479
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-Xgw7JPYo.js");
13479
13480
  if ((args?.action ?? "start") === "wait") {
13480
13481
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
13481
13482
  return {
@@ -15691,7 +15692,7 @@ async function preflightDiscordMessage(params) {
15691
15692
  let preflightTranscript;
15692
15693
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
15693
15694
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
15694
- const { transcribeFirstAudio } = await import("./audio-preflight-CwbuWmdG.js");
15695
+ const { transcribeFirstAudio } = await import("./audio-preflight-8UNY1akA.js");
15695
15696
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
15696
15697
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
15697
15698
  ctx: {
@@ -29223,10 +29224,10 @@ async function prepareSessionManagerForRun(params) {
29223
29224
  //#endregion
29224
29225
  //#region src/agents/system-prompt-skills-autoload.ts
29225
29226
  const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
29226
- let cachedPackageRoot;
29227
- function getPackageRoot() {
29228
- if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
29229
- return cachedPackageRoot;
29227
+ let cachedPackageRoot$1;
29228
+ function getPackageRoot$1() {
29229
+ if (cachedPackageRoot$1 === void 0) cachedPackageRoot$1 = resolveSymiPackageRootSync({});
29230
+ return cachedPackageRoot$1;
29230
29231
  }
29231
29232
  function safeSkillName(name) {
29232
29233
  return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
@@ -29255,7 +29256,7 @@ function buildAutoLoadedSkillsBlock(opts) {
29255
29256
  if (opts.minimalMode) return "";
29256
29257
  const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
29257
29258
  if (names.length === 0) return "";
29258
- const packageRoot = getPackageRoot();
29259
+ const packageRoot = getPackageRoot$1();
29259
29260
  const loaded = [];
29260
29261
  for (const rawName of names) {
29261
29262
  const name = rawName.trim();
@@ -29300,6 +29301,296 @@ function buildAutoLoadedSkillsBlock(opts) {
29300
29301
  ].join("\n");
29301
29302
  }
29302
29303
 
29304
+ //#endregion
29305
+ //#region src/agents/skills/triggers.ts
29306
+ const QUOTE_RE = /^["'`](.*)["'`]$/;
29307
+ const ARRAY_FORM_RE = /^\[(.*)\]$/s;
29308
+ function stripWrappingQuotes(s) {
29309
+ const m = s.trim().match(QUOTE_RE);
29310
+ return m ? m[1] : s.trim();
29311
+ }
29312
+ /** Parse a single trigger value, dropping empty / whitespace-only entries. */
29313
+ function cleanTrigger(raw) {
29314
+ const trimmed = stripWrappingQuotes(raw).toLowerCase();
29315
+ return trimmed.length > 0 ? trimmed : null;
29316
+ }
29317
+ /**
29318
+ * Parse the value of a `triggers:` frontmatter field into a string[].
29319
+ * Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
29320
+ * (multiline with leading hyphens). Returns deduped lowercased trigger
29321
+ * strings, or empty array on unparseable / missing input.
29322
+ */
29323
+ function parseTriggersValue(raw) {
29324
+ if (typeof raw !== "string") return [];
29325
+ const trimmed = raw.trim();
29326
+ if (!trimmed) return [];
29327
+ const items = [];
29328
+ const arrayMatch = trimmed.match(ARRAY_FORM_RE);
29329
+ if (arrayMatch) {
29330
+ const inner = arrayMatch[1];
29331
+ let buf = "";
29332
+ let inQuote = null;
29333
+ for (const ch of inner) {
29334
+ if (inQuote) {
29335
+ if (ch === inQuote) inQuote = null;
29336
+ else buf += ch;
29337
+ continue;
29338
+ }
29339
+ if (ch === "\"" || ch === "'") {
29340
+ inQuote = ch;
29341
+ continue;
29342
+ }
29343
+ if (ch === ",") {
29344
+ const cleaned = cleanTrigger(buf);
29345
+ if (cleaned) items.push(cleaned);
29346
+ buf = "";
29347
+ continue;
29348
+ }
29349
+ buf += ch;
29350
+ }
29351
+ const cleaned = cleanTrigger(buf);
29352
+ if (cleaned) items.push(cleaned);
29353
+ } else for (const line of trimmed.split("\n")) {
29354
+ const ltrim = line.trimStart();
29355
+ if (ltrim.startsWith("- ")) {
29356
+ const cleaned = cleanTrigger(ltrim.slice(2));
29357
+ if (cleaned) items.push(cleaned);
29358
+ } else if (ltrim && !ltrim.startsWith("#")) {
29359
+ const cleaned = cleanTrigger(ltrim);
29360
+ if (cleaned) items.push(cleaned);
29361
+ }
29362
+ }
29363
+ const seen = /* @__PURE__ */ new Set();
29364
+ const out = [];
29365
+ for (const t of items) if (!seen.has(t)) {
29366
+ seen.add(t);
29367
+ out.push(t);
29368
+ }
29369
+ return out;
29370
+ }
29371
+ /**
29372
+ * Extract triggers from a parsed frontmatter record. Returns empty array
29373
+ * when the field is absent or unparseable.
29374
+ */
29375
+ function getSkillTriggers(frontmatter) {
29376
+ return parseTriggersValue(frontmatter.triggers);
29377
+ }
29378
+
29379
+ //#endregion
29380
+ //#region src/agents/tools/skill-search-tool.ts
29381
+ const SkillSearchToolSchema = Type.Object({
29382
+ query: Type.String({
29383
+ minLength: 1,
29384
+ description: "Intent description (2-8 words). Match by trigger keywords first, then description text."
29385
+ }),
29386
+ limit: Type.Optional(Type.Number({
29387
+ minimum: 1,
29388
+ maximum: 10,
29389
+ description: "Max results to return (default 5, capped at 10)."
29390
+ }))
29391
+ });
29392
+ const CACHE_TTL_MS = 6e4;
29393
+ const SAFE_NAME_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
29394
+ function loadSkillFromDir(dir, source) {
29395
+ const name = path.basename(dir);
29396
+ if (!SAFE_NAME_RE.test(name)) return null;
29397
+ const file = path.join(dir, "SKILL.md");
29398
+ let raw;
29399
+ try {
29400
+ if (!fs.statSync(file).isFile()) return null;
29401
+ raw = fs.readFileSync(file, "utf8");
29402
+ } catch {
29403
+ return null;
29404
+ }
29405
+ const fm = parseFrontmatterBlock(raw);
29406
+ return {
29407
+ name,
29408
+ description: (fm.description ?? "").trim(),
29409
+ path: file,
29410
+ triggers: getSkillTriggers(fm),
29411
+ source
29412
+ };
29413
+ }
29414
+ function listSkillDirs(root) {
29415
+ const skillsDir = path.join(root, "skills");
29416
+ let entries;
29417
+ try {
29418
+ entries = fs.readdirSync(skillsDir, { withFileTypes: true });
29419
+ } catch {
29420
+ return [];
29421
+ }
29422
+ return entries.filter((e) => e.isDirectory()).map((e) => path.join(skillsDir, e.name));
29423
+ }
29424
+ let cachedPackageRoot;
29425
+ const cachePerWorkspace = /* @__PURE__ */ new Map();
29426
+ function getPackageRoot() {
29427
+ if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
29428
+ return cachedPackageRoot;
29429
+ }
29430
+ function loadAllSkills(workspaceDir) {
29431
+ const cacheKey = workspaceDir ?? "";
29432
+ const now = Date.now();
29433
+ const existing = cachePerWorkspace.get(cacheKey);
29434
+ if (existing && now - existing.loadedAt < CACHE_TTL_MS) return existing.skills;
29435
+ const seen = /* @__PURE__ */ new Map();
29436
+ if (workspaceDir) for (const dir of listSkillDirs(workspaceDir)) {
29437
+ const skill = loadSkillFromDir(dir, "workspace");
29438
+ if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
29439
+ }
29440
+ const packageRoot = getPackageRoot();
29441
+ if (packageRoot) for (const dir of listSkillDirs(packageRoot)) {
29442
+ const skill = loadSkillFromDir(dir, "bundled");
29443
+ if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
29444
+ }
29445
+ const skills = [...seen.values()];
29446
+ cachePerWorkspace.set(cacheKey, {
29447
+ skills,
29448
+ loadedAt: now
29449
+ });
29450
+ return skills;
29451
+ }
29452
+ const TOKEN_SPLIT_RE = /[^\w/]+/;
29453
+ function tokenizeQuery(raw) {
29454
+ return raw.toLowerCase().split(TOKEN_SPLIT_RE).filter((t) => t.length >= 2);
29455
+ }
29456
+ /**
29457
+ * Score a query against one skill's triggers + description.
29458
+ * - Trigger score: ratio of query tokens that appear in the trigger set.
29459
+ * - FTS score: 0.4 × ratio of query tokens that appear in the description
29460
+ * (case-insensitive substring match).
29461
+ * - Final = max(trigger, fts) so trigger matches always beat descriptions.
29462
+ * - Returns 0 for "no signal at all" (caller should drop these).
29463
+ */
29464
+ function scoreSkillMatch(skill, queryTokens) {
29465
+ if (queryTokens.length === 0) return 0;
29466
+ const triggerSet = new Set(skill.triggers.map((t) => t.toLowerCase()));
29467
+ const description = skill.description.toLowerCase();
29468
+ let triggerHits = 0;
29469
+ let ftsHits = 0;
29470
+ for (const token of queryTokens) if (triggerSet.has(token)) triggerHits += 1;
29471
+ else if (description.includes(token)) ftsHits += 1;
29472
+ const triggerScore = triggerHits / queryTokens.length;
29473
+ const ftsScore = ftsHits / queryTokens.length * .4;
29474
+ return Math.max(triggerScore, ftsScore);
29475
+ }
29476
+ /**
29477
+ * Pure-function search; exported for testing without going through the
29478
+ * tool execute wrapper.
29479
+ */
29480
+ function searchSkills(query, limit, workspaceDir) {
29481
+ const tokens = tokenizeQuery(query);
29482
+ if (tokens.length === 0) return [];
29483
+ const all = loadAllSkills(workspaceDir);
29484
+ const scored = [];
29485
+ for (const skill of all) {
29486
+ const score = scoreSkillMatch(skill, tokens);
29487
+ if (score > 0) scored.push({
29488
+ name: skill.name,
29489
+ description: skill.description,
29490
+ path: skill.path,
29491
+ score
29492
+ });
29493
+ }
29494
+ scored.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
29495
+ return scored.slice(0, limit);
29496
+ }
29497
+ function createSkillSearchTool(opts) {
29498
+ return {
29499
+ name: "skill_search",
29500
+ label: "skill_search",
29501
+ description: "Find skills relevant to the current task. Returns matching skills with name/description/path; `read` the SKILL.md to apply. Call before non-trivial tool work — search by intent ('connect email', 'long task') not tool name.",
29502
+ parameters: SkillSearchToolSchema,
29503
+ execute: async (_toolCallId, args) => {
29504
+ const params = args;
29505
+ const query = typeof params.query === "string" ? params.query.trim() : "";
29506
+ if (!query) return jsonResult({
29507
+ ok: false,
29508
+ error: "skill_search requires a non-empty `query` string."
29509
+ });
29510
+ const limit = typeof params.limit === "number" && Number.isFinite(params.limit) ? Math.min(10, Math.max(1, Math.floor(params.limit))) : 5;
29511
+ try {
29512
+ return jsonResult({
29513
+ ok: true,
29514
+ query,
29515
+ matches: searchSkills(query, limit, opts?.workspaceDir)
29516
+ });
29517
+ } catch (err) {
29518
+ const message = err instanceof Error ? err.message : String(err);
29519
+ logWarn(`skill_search failed: ${message}`);
29520
+ return jsonResult({
29521
+ ok: false,
29522
+ error: message
29523
+ });
29524
+ }
29525
+ }
29526
+ };
29527
+ }
29528
+
29529
+ //#endregion
29530
+ //#region src/agents/system-prompt-skills-jit.ts
29531
+ const MAX_ANCHOR_DESCRIPTION_CHARS = 100;
29532
+ const MAX_AUTO_INJECT_RESULTS = 3;
29533
+ const MAX_AUTO_INJECT_TOTAL_CHARS = 600;
29534
+ /**
29535
+ * Build the anchor list block. Returns "" when no anchor list configured
29536
+ * or in preload mode (anchor list adds value only in jit/hybrid).
29537
+ */
29538
+ function buildAnchorListBlock(opts) {
29539
+ if (opts.minimalMode) return "";
29540
+ if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
29541
+ const names = (opts.anchorList ?? []).filter((n) => typeof n === "string" && n.trim().length > 0);
29542
+ if (names.length === 0) return "";
29543
+ const lines = [];
29544
+ for (const name of names) {
29545
+ const description = searchSkills(name, 1, opts.workspaceDir)[0]?.description.trim() ?? "";
29546
+ const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
29547
+ lines.push(truncated ? `- ${name}: ${truncated}` : `- ${name}`);
29548
+ }
29549
+ return [
29550
+ "",
29551
+ "## Anchor Skills",
29552
+ "These skills are always available. Read their SKILL.md via `read` if relevant. For full discovery use the `skill_search` tool.",
29553
+ lines.join("\n"),
29554
+ ""
29555
+ ].join("\n");
29556
+ }
29557
+ /**
29558
+ * Build the auto-injected matches block based on the user message triggers.
29559
+ * Returns "" when discoveryMode doesn't ask for it, no message available,
29560
+ * no matches found, or in minimal mode.
29561
+ */
29562
+ function buildAutoInjectBlock(opts) {
29563
+ if (opts.minimalMode) return "";
29564
+ if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
29565
+ const message = (opts.userMessage ?? "").trim();
29566
+ if (!message) return "";
29567
+ const matches = searchSkills(message, MAX_AUTO_INJECT_RESULTS, opts.workspaceDir);
29568
+ if (matches.length === 0) return "";
29569
+ const lines = [];
29570
+ let total = 0;
29571
+ for (const match of matches) {
29572
+ const description = match.description.trim();
29573
+ const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
29574
+ const skillRef = path.basename(path.dirname(match.path));
29575
+ const line = truncated ? `- ${skillRef}: ${truncated}` : `- ${skillRef}`;
29576
+ if (total + line.length > MAX_AUTO_INJECT_TOTAL_CHARS) break;
29577
+ lines.push(line);
29578
+ total += line.length + 1;
29579
+ }
29580
+ if (lines.length === 0) return "";
29581
+ return [
29582
+ "",
29583
+ "## Possibly Relevant Skills (auto-suggested for this request)",
29584
+ "These skills' triggers matched keywords in your message. Read the SKILL.md if it applies; otherwise ignore and proceed.",
29585
+ lines.join("\n"),
29586
+ ""
29587
+ ].join("\n");
29588
+ }
29589
+ /** Convenience: build both blocks concatenated. */
29590
+ function buildSkillsJitBlocks(opts) {
29591
+ return `${buildAnchorListBlock(opts)}${buildAutoInjectBlock(opts)}`;
29592
+ }
29593
+
29303
29594
  //#endregion
29304
29595
  //#region src/agents/tool-summaries.ts
29305
29596
  function buildToolSummaryMap(tools) {
@@ -29345,12 +29636,17 @@ function buildEmbeddedSystemPrompt(params) {
29345
29636
  });
29346
29637
  const promptMode = params.promptMode ?? "full";
29347
29638
  const isMinimal = promptMode === "minimal" || promptMode === "none";
29348
- const skillsBlock = buildAutoLoadedSkillsBlock({
29639
+ return `${corePrompt}${buildAutoLoadedSkillsBlock({
29349
29640
  skillNames: params.autoLoadInlineSkills ?? [],
29350
29641
  workspaceDir: params.workspaceDir,
29351
29642
  minimalMode: isMinimal
29352
- });
29353
- return skillsBlock ? `${corePrompt}${skillsBlock}` : corePrompt;
29643
+ })}${buildSkillsJitBlocks({
29644
+ discoveryMode: params.skillsDiscoveryMode,
29645
+ anchorList: params.skillsAnchorList,
29646
+ userMessage: params.currentUserMessage,
29647
+ workspaceDir: params.workspaceDir,
29648
+ minimalMode: isMinimal
29649
+ })}`;
29354
29650
  }
29355
29651
  function createSystemPromptOverride(systemPrompt) {
29356
29652
  const override = systemPrompt.trim();
@@ -30139,7 +30435,10 @@ async function runEmbeddedAttempt(params) {
30139
30435
  userTimeFormat,
30140
30436
  contextFiles,
30141
30437
  memoryCitationsMode: params.config?.memory?.citations,
30142
- autoLoadInlineSkills: params.config?.skills?.autoLoadInline
30438
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
30439
+ skillsDiscoveryMode: params.config?.skills?.discoveryMode,
30440
+ skillsAnchorList: params.config?.skills?.anchorList,
30441
+ currentUserMessage: params.prompt
30143
30442
  });
30144
30443
  const systemPromptReport = buildSystemPromptReport({
30145
30444
  source: "run",
@@ -32019,27 +32318,27 @@ async function runAgentTurn(params) {
32019
32318
  function createDefaultDeps() {
32020
32319
  return {
32021
32320
  sendMessageWhatsApp: async (...args) => {
32022
- const { sendMessageWhatsApp } = await import("./web-CqeSgivQ.js");
32321
+ const { sendMessageWhatsApp } = await import("./web-C-E-O8iP.js");
32023
32322
  return await sendMessageWhatsApp(...args);
32024
32323
  },
32025
32324
  sendMessageTelegram: async (...args) => {
32026
- const { sendMessageTelegram } = await import("./send-BaSqjfd_.js").then((n) => n.l);
32325
+ const { sendMessageTelegram } = await import("./send-aXMPprv9.js").then((n) => n.l);
32027
32326
  return await sendMessageTelegram(...args);
32028
32327
  },
32029
32328
  sendMessageDiscord: async (...args) => {
32030
- const { sendMessageDiscord } = await import("./send-DNqcjLyg.js").then((n) => n.t);
32329
+ const { sendMessageDiscord } = await import("./send-BbZtP8GJ.js").then((n) => n.t);
32031
32330
  return await sendMessageDiscord(...args);
32032
32331
  },
32033
32332
  sendMessageSlack: async (...args) => {
32034
- const { sendMessageSlack } = await import("./send-llekTUks.js").then((n) => n.n);
32333
+ const { sendMessageSlack } = await import("./send-nRhkxbqX.js").then((n) => n.n);
32035
32334
  return await sendMessageSlack(...args);
32036
32335
  },
32037
32336
  sendMessageSignal: async (...args) => {
32038
- const { sendMessageSignal } = await import("./send-BPBFuPrC.js").then((n) => n.i);
32337
+ const { sendMessageSignal } = await import("./send-D5Siw6wn.js").then((n) => n.i);
32039
32338
  return await sendMessageSignal(...args);
32040
32339
  },
32041
32340
  sendMessageIMessage: async (...args) => {
32042
- const { sendMessageIMessage } = await import("./send-BUBES34Y.js").then((n) => n.n);
32341
+ const { sendMessageIMessage } = await import("./send-DanpvmZQ.js").then((n) => n.n);
32043
32342
  return await sendMessageIMessage(...args);
32044
32343
  }
32045
32344
  };
@@ -43590,7 +43889,7 @@ async function registerSlackMonitorSlashCommands(params) {
43590
43889
  });
43591
43890
  const deliverSlashPayloads = async (replies) => {
43592
43891
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
43593
- import("./replies-CPhYC11m.js").then((n) => n.r),
43892
+ import("./replies-CsNZ9ImJ.js").then((n) => n.r),
43594
43893
  import("./chunk-DIi9uyC6.js").then((n) => n.s),
43595
43894
  import("./markdown-tables-kCfKPOgH.js").then((n) => n.t)
43596
43895
  ]);
@@ -48284,7 +48583,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
48284
48583
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
48285
48584
  let preflightTranscript;
48286
48585
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
48287
- const { transcribeFirstAudio } = await import("./audio-preflight-CwbuWmdG.js");
48586
+ const { transcribeFirstAudio } = await import("./audio-preflight-8UNY1akA.js");
48288
48587
  preflightTranscript = await transcribeFirstAudio({
48289
48588
  ctx: {
48290
48589
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -50438,23 +50737,23 @@ let webLoginQrPromise = null;
50438
50737
  let webChannelPromise = null;
50439
50738
  let whatsappActionsPromise = null;
50440
50739
  function loadWebOutbound() {
50441
- webOutboundPromise ??= import("./outbound-DlWjA7jN.js").then((n) => n.t);
50740
+ webOutboundPromise ??= import("./outbound-CPcVipU-.js").then((n) => n.t);
50442
50741
  return webOutboundPromise;
50443
50742
  }
50444
50743
  function loadWebLogin() {
50445
- webLoginPromise ??= import("./login-DwBazcKM.js").then((n) => n.n);
50744
+ webLoginPromise ??= import("./login-Cd4DTmg6.js").then((n) => n.n);
50446
50745
  return webLoginPromise;
50447
50746
  }
50448
50747
  function loadWebLoginQr() {
50449
- webLoginQrPromise ??= import("./login-qr-Ft17VIG6.js");
50748
+ webLoginQrPromise ??= import("./login-qr-Xgw7JPYo.js");
50450
50749
  return webLoginQrPromise;
50451
50750
  }
50452
50751
  function loadWebChannel() {
50453
- webChannelPromise ??= import("./web-CqeSgivQ.js");
50752
+ webChannelPromise ??= import("./web-C-E-O8iP.js");
50454
50753
  return webChannelPromise;
50455
50754
  }
50456
50755
  function loadWhatsAppActions() {
50457
- whatsappActionsPromise ??= import("./whatsapp-actions-D5RBK0Cm.js");
50756
+ whatsappActionsPromise ??= import("./whatsapp-actions-CJkCiI_n.js");
50458
50757
  return whatsappActionsPromise;
50459
50758
  }
50460
50759
  function createPluginRuntime() {
@@ -65225,6 +65524,7 @@ function createSymiTools(options) {
65225
65524
  createCronTool({ agentSessionKey: options?.agentSessionKey }),
65226
65525
  createTaskListTool({ workspaceDir }),
65227
65526
  createTaskCancelTool({ workspaceDir }),
65527
+ createSkillSearchTool({ workspaceDir }),
65228
65528
  ...messageTool ? [messageTool] : [],
65229
65529
  createTtsTool({
65230
65530
  agentChannel: options?.agentChannel,
@@ -65950,7 +66250,10 @@ async function compactEmbeddedPiSessionDirect(params) {
65950
66250
  userTimeFormat,
65951
66251
  contextFiles,
65952
66252
  memoryCitationsMode: params.config?.memory?.citations,
65953
- autoLoadInlineSkills: params.config?.skills?.autoLoadInline
66253
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
66254
+ skillsDiscoveryMode: params.config?.skills?.discoveryMode,
66255
+ skillsAnchorList: params.config?.skills?.anchorList,
66256
+ currentUserMessage: void 0
65954
66257
  }));
65955
66258
  const sessionLock = await acquireSessionWriteLock({
65956
66259
  sessionFile: params.sessionFile,
@@ -73626,7 +73929,7 @@ async function deliverSessionMaintenanceWarning(params) {
73626
73929
  return;
73627
73930
  }
73628
73931
  try {
73629
- const { deliverOutboundPayloads } = await import("./deliver-Cqk3zmyW.js").then((n) => n.n);
73932
+ const { deliverOutboundPayloads } = await import("./deliver-DrgHcdVo.js").then((n) => n.n);
73630
73933
  await deliverOutboundPayloads({
73631
73934
  cfg: params.cfg,
73632
73935
  channel,