@symerian/symi 2.9.0 → 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 (416) hide show
  1. package/dist/{acp-cli-Bav1bRj2.js → acp-cli-Bc6ZQZ4f.js} +2 -2
  2. package/dist/{acp-cli-BTu3_kZ1.js → acp-cli-Dy9QuDBN.js} +2 -2
  3. package/dist/{agents-CvNeiuSB.js → agents-DTl30WoB.js} +7 -7
  4. package/dist/{agents.config-BCgY5FjE.js → agents.config-CO8F9mkD.js} +1 -1
  5. package/dist/{agents.config-Ct64cGQ8.js → agents.config-CZ3GFxPg.js} +1 -1
  6. package/dist/{audio-preflight-C2EgDXSo.js → audio-preflight-8UNY1akA.js} +11 -11
  7. package/dist/{audio-preflight-1dv3T5Zx.js → audio-preflight-By0dnw-T.js} +11 -11
  8. package/dist/{audio-preflight-Cb-T0r6e.js → audio-preflight-DQR2Ivi-.js} +5 -5
  9. package/dist/{audio-preflight-C6vpFnOG.js → audio-preflight-Dtsvq6Hj.js} +6 -6
  10. package/dist/{audit-CuKP86d_.js → audit-DGwhL71Q.js} +5 -5
  11. package/dist/{audit-C9nq99IR.js → audit-OPWWS900.js} +5 -5
  12. package/dist/{auth-choice-DmMyKZX4.js → auth-choice-BYDGn7lJ.js} +4 -4
  13. package/dist/{auth-choice-ChFU9OCF.js → auth-choice-BoOyy-ZT.js} +4 -4
  14. package/dist/{banner-Bf46tqiY.js → banner-D4MiyUnv.js} +1 -1
  15. package/dist/{browser-cli-ClgQ-C8E.js → browser-cli-CGLTZ9KQ.js} +3 -3
  16. package/dist/{browser-cli-DuPPIcuV.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-M4YyUnwu.js → call-BCTAmPye.js} +1 -1
  21. package/dist/{call-DYfKEdwh.js → call-BIETyST6.js} +1 -1
  22. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  23. package/dist/{channel-options-Bqc2VCgt.js → channel-options-B6qP-vR-.js} +1 -1
  24. package/dist/{channel-options-D4a0ZJ72.js → channel-options-BiSSYYQC.js} +1 -1
  25. package/dist/{channel-web-YNC2xS5K.js → channel-web-DP97EUhx.js} +7 -7
  26. package/dist/{channels-cli-BFJcNLbB.js → channels-cli-6LNvJQPb.js} +30 -30
  27. package/dist/{channels-cli-h3GnmmM9.js → channels-cli-CE_A3Hai.js} +31 -31
  28. package/dist/{chrome-B14NNyfm.js → chrome-B-hW5hrK.js} +1 -1
  29. package/dist/{chrome-ROtrXlNs.js → chrome-BaMQiegP.js} +1 -1
  30. package/dist/{chrome-D2ohnA09.js → chrome-CO5ZhkcZ.js} +1 -1
  31. package/dist/{chrome-BJvuH-NZ.js → chrome-CtTba9sH.js} +1 -1
  32. package/dist/cli/daemon-cli.js +1 -1
  33. package/dist/{cli-BX54CAM7.js → cli-D4j_JTug.js} +27 -27
  34. package/dist/{cli-BpQlSGVs.js → cli-DwQ3mqhI.js} +26 -26
  35. package/dist/{command-registry-BiRjJ2Sy.js → command-registry-b62Qpsi2.js} +11 -11
  36. package/dist/{completion-cli-BYXofVqv.js → completion-cli-DUT2XYgK.js} +2 -2
  37. package/dist/{completion-cli-C8K5J1ld.js → completion-cli-RQyC3L-t.js} +1 -1
  38. package/dist/{config-PXAJCHa5.js → config-CitI_jxW.js} +8 -0
  39. package/dist/{config-BAVNLbja.js → config-D7Zr88dI.js} +8 -0
  40. package/dist/{config-BkZ9HOKT.js → config-Do4JxgLI.js} +8 -0
  41. package/dist/{config-DXt3pc08.js → config-Gfhqs66L.js} +8 -0
  42. package/dist/{config-cli-BPPD3xqE.js → config-cli-Di8VOhbp.js} +2 -2
  43. package/dist/{config-cli-Deoo6r2K.js → config-cli-H52N8rp1.js} +2 -2
  44. package/dist/{config-guard-BvqCjFPk.js → config-guard-BLcbR_sH.js} +2 -2
  45. package/dist/{config-guard-CaP-V3tf.js → config-guard-CgPPAm7S.js} +3 -3
  46. package/dist/{config-validation-B6Fa3VmF.js → config-validation-B6GnatLw.js} +1 -1
  47. package/dist/{config-validation-EmHZVnuz.js → config-validation-UMq2H_tR.js} +1 -1
  48. package/dist/{configure-D4f0P3bH.js → configure-BF9crM5K.js} +10 -10
  49. package/dist/{configure-BKHxUAAh.js → configure-DQxuawe-.js} +10 -10
  50. package/dist/{control-service-C0pRqIFv.js → control-service-BkyH7qkF.js} +4 -4
  51. package/dist/{control-service-Bujr5pk7.js → control-service-DnNPjFvU.js} +4 -4
  52. package/dist/{cron-cli-C8-Gv5dd.js → cron-cli-CcgewYtp.js} +3 -3
  53. package/dist/{cron-cli-BEdmHCWZ.js → cron-cli-DEcQk1bb.js} +3 -3
  54. package/dist/{daemon-cli-D6wyb9bo.js → daemon-cli-BNZu5unw.js} +6 -6
  55. package/dist/{daemon-cli-BFoJGCHZ.js → daemon-cli-BiBjGGfw.js} +6 -6
  56. package/dist/daemon-cli.js +8 -0
  57. package/dist/{daemon-runtime-Cp7obV7Q.js → daemon-runtime-C-Mwepv_.js} +1 -1
  58. package/dist/{daemon-runtime-D_elkkFW.js → daemon-runtime-C86WnKU5.js} +1 -1
  59. package/dist/{deliver-Bdk_R0pQ.js → deliver-DaRQn5Ai.js} +3 -3
  60. package/dist/{deliver-D7BQXt0l.js → deliver-DrgHcdVo.js} +3 -3
  61. package/dist/{deliver-B0OUq6RP.js → deliver-Dx39g9ey.js} +2 -2
  62. package/dist/{deliver-D0bWiRCg.js → deliver-XYF4JahT.js} +2 -2
  63. package/dist/{devices-cli-CHt4I-7e.js → devices-cli-Wb4H-vyx.js} +2 -2
  64. package/dist/{devices-cli-BXc6DPkC.js → devices-cli-hX2lrsCy.js} +2 -2
  65. package/dist/{directory-cli-CQTzAhw1.js → directory-cli-CLIYvXkV.js} +1 -1
  66. package/dist/{directory-cli-DRWJsAT6.js → directory-cli-C_vm-dsr.js} +1 -1
  67. package/dist/{dns-cli-BBVIay6Z.js → dns-cli-BJuUZ4pr.js} +1 -1
  68. package/dist/{dns-cli-BCKPibb8.js → dns-cli-CTCAHPcB.js} +1 -1
  69. package/dist/{doctor-completion-gMWymNcA.js → doctor-completion-BKXQ50ee.js} +1 -1
  70. package/dist/{doctor-completion-woDYSVtY.js → doctor-completion-BS2JEeZy.js} +1 -1
  71. package/dist/{doctor-config-flow-BCMxS2lf.js → doctor-config-flow-BFHsvL2k.js} +2 -2
  72. package/dist/{doctor-config-flow-B2dVxbL7.js → doctor-config-flow-l2aPNzHP.js} +2 -2
  73. package/dist/entry.js +1 -1
  74. package/dist/{exec-approvals-cli-BBKVrFTj.js → exec-approvals-cli-BXDSu2Ze.js} +4 -4
  75. package/dist/{exec-approvals-cli-CKRDAo17.js → exec-approvals-cli-uAM6-swA.js} +4 -4
  76. package/dist/extensionAPI.js +16 -16
  77. package/dist/{gateway-cli-DsnkTUOp.js → gateway-cli-Do9KUPqe.js} +42 -42
  78. package/dist/{gateway-cli-Bnh42-56.js → gateway-cli-moPf-zP5.js} +43 -43
  79. package/dist/{gateway-rpc-BEfosIsg.js → gateway-rpc-DMEPdgmc.js} +1 -1
  80. package/dist/{gateway-rpc-DZrB7Sl_.js → gateway-rpc-Wa_4MrZb.js} +1 -1
  81. package/dist/{glass-ui-ws-0Y0KsBvU.js → glass-ui-ws-D53pvIov.js} +35 -35
  82. package/dist/{glass-ui-ws-uj3DRmL8.js → glass-ui-ws-Dfro-3R8.js} +34 -34
  83. package/dist/{health-Dl2WRoTa.js → health-BQGRC0xh.js} +5 -5
  84. package/dist/{health-CcV5nKIK.js → health-CV741PBg.js} +5 -5
  85. package/dist/{hooks-cli-CTcHtm_0.js → hooks-cli-CG-PDY2U.js} +28 -28
  86. package/dist/{hooks-cli-DEJe3dUH.js → hooks-cli-CWXGIL9L.js} +27 -27
  87. package/dist/{image-MNvheU8U.js → image-BjyeKf1c.js} +2 -2
  88. package/dist/{image-BuVL0jHI.js → image-C-JvPPpM.js} +2 -2
  89. package/dist/{image-6RZuWKy5.js → image-GaF72sln.js} +2 -2
  90. package/dist/{image-CnEFsKgw.js → image-dYtWZNKT.js} +2 -2
  91. package/dist/index.js +35 -35
  92. package/dist/{lifecycle-core-Uucs6Wz6.js → lifecycle-core-BMVHLJi_.js} +2 -2
  93. package/dist/{lifecycle-core-v3lT0Ymo.js → lifecycle-core-HOQrbQ-_.js} +2 -2
  94. package/dist/llm-slug-generator.js +14 -14
  95. package/dist/{login-F4pbdnF5.js → login-Cd4DTmg6.js} +2 -2
  96. package/dist/{login-EYdkb0dH.js → login-Cv_LYGzG.js} +2 -2
  97. package/dist/{login-C7EdfiAr.js → login-D4OYfM0U.js} +2 -2
  98. package/dist/{login-D4rZWBXe.js → login-DqhTprwd.js} +2 -2
  99. package/dist/{login-qr-Apnag5S6.js → login-qr-CZXIrzvh.js} +2 -2
  100. package/dist/{login-qr-DdAVHOEC.js → login-qr-DiyxAHpv.js} +2 -2
  101. package/dist/{login-qr-BElXRp6T.js → login-qr-Dq_hs3eJ.js} +2 -2
  102. package/dist/{login-qr-DML5LgsI.js → login-qr-Xgw7JPYo.js} +2 -2
  103. package/dist/{logs-cli-N5jQvJTm.js → logs-cli-DZTxEhiM.js} +3 -3
  104. package/dist/{logs-cli-CsHpYc2M.js → logs-cli-Dh-aAqF3.js} +3 -3
  105. package/dist/{manager-9Mni2AA9.js → manager-B_2KzUSI.js} +1 -1
  106. package/dist/{manager-CjW8kPVc.js → manager-Bc-MeMho.js} +1 -1
  107. package/dist/{manager-C-H0XXJq.js → manager-CLPHK-qG.js} +1 -1
  108. package/dist/{manager-QPF0UtOC.js → manager-yrUe0KOT.js} +1 -1
  109. package/dist/{memory-cli-OW9XfyYu.js → memory-cli-3RSIw4no.js} +4 -4
  110. package/dist/{memory-cli-BTByRgM0.js → memory-cli-BKNnDIdx.js} +4 -4
  111. package/dist/{model-catalog-D7k3dDQq.js → model-catalog-BFJW_s3i.js} +2 -2
  112. package/dist/{model-catalog-BuYrTTBn.js → model-catalog-DRqmevpR.js} +2 -2
  113. package/dist/{model-picker-BNWV-jU4.js → model-picker-BT8MumhL.js} +2 -2
  114. package/dist/{model-picker-n7beL1F5.js → model-picker-DhsG4iZa.js} +2 -2
  115. package/dist/{models-Q1jV8ArL.js → models-D_C2JFPw.js} +8 -8
  116. package/dist/{models-cli-Cy6H1sFq.js → models-cli-DQE60EtL.js} +30 -30
  117. package/dist/{models-cli-pfVmmgpv.js → models-cli-j2O4e1Lu.js} +29 -29
  118. package/dist/{models-config-B91ShhoT.js → models-config-DdK8uWQW.js} +1 -1
  119. package/dist/{models-config-J1x_DaPn.js → models-config-frWb8fDT.js} +1 -1
  120. package/dist/{node-cli-CwnTjFkG.js → node-cli-DB4Z23h8.js} +9 -9
  121. package/dist/{node-cli-BD4E-Y8a.js → node-cli-DcRlL2Np.js} +9 -9
  122. package/dist/{nodes-cli-Dv0NXhCO.js → nodes-cli-B42u9UxB.js} +3 -3
  123. package/dist/{nodes-cli-DUD8_q_Q.js → nodes-cli-DQ9YsQmy.js} +3 -3
  124. package/dist/{onboard-CvpyaUQd.js → onboard-Ckw89oRF.js} +7 -7
  125. package/dist/{onboard-EL8foMiP.js → onboard-DUIZfWqa.js} +7 -7
  126. package/dist/{onboard-channels-BRoSUijQ.js → onboard-channels-B8Ouc5sR.js} +1 -1
  127. package/dist/{onboard-channels-Bupbm6zh.js → onboard-channels-Oa9IlsGt.js} +1 -1
  128. package/dist/{onboard-custom-Dk9cL3Uu.js → onboard-custom-7TON2w6b.js} +2 -2
  129. package/dist/{onboard-custom-CJGSIPt3.js → onboard-custom-Bb3xuH0G.js} +2 -2
  130. package/dist/{onboard-helpers-CBxazphs.js → onboard-helpers-BiCrYw-N.js} +2 -2
  131. package/dist/{onboard-helpers-DWDNKmkJ.js → onboard-helpers-Ca4KojJF.js} +2 -2
  132. package/dist/{onboard-remote-cZrkePlK.js → onboard-remote-B8MQTgX-.js} +1 -1
  133. package/dist/{onboard-remote-DoIKLWXA.js → onboard-remote-IMqgmH78.js} +1 -1
  134. package/dist/{onboard-skills-BjGYTueQ.js → onboard-skills-BP1P7f-w.js} +1 -1
  135. package/dist/{onboard-skills-zauvnEui.js → onboard-skills-BcvPjVfl.js} +1 -1
  136. package/dist/{onboarding-Ch8WSJ3j.js → onboarding-Cjh-Y8ha.js} +10 -10
  137. package/dist/{onboarding-Dg5ydWSh.js → onboarding-JFWHlqAb.js} +10 -10
  138. package/dist/{onboarding.finalize-Bo8-8TtH.js → onboarding.finalize-CkGLgiEA.js} +32 -32
  139. package/dist/{onboarding.finalize-CCTaCp2s.js → onboarding.finalize-spzEoVkm.js} +34 -34
  140. package/dist/{onboarding.gateway-config-Dg12RcXA.js → onboarding.gateway-config-Cp8mV8S9.js} +4 -4
  141. package/dist/{onboarding.gateway-config-uIRsaxMy.js → onboarding.gateway-config-tmzsyFbT.js} +4 -4
  142. package/dist/{outbound-mG1crIsY.js → outbound-BD7PNRhC.js} +1 -1
  143. package/dist/{outbound-Zmd7UyQH.js → outbound-BaF9dF-H.js} +1 -1
  144. package/dist/{outbound-CW8eNbCh.js → outbound-CDuo0JH3.js} +1 -1
  145. package/dist/{outbound-B5OgOn1h.js → outbound-CPcVipU-.js} +1 -1
  146. package/dist/{pairing-cli-Cl4t3cDV.js → pairing-cli-CfuG75IW.js} +1 -1
  147. package/dist/{pairing-cli-7X1qlhzF.js → pairing-cli-K09J3MIl.js} +1 -1
  148. package/dist/{pi-embedded-Bl3YkBkI.js → pi-embedded-D6Zi01El.js} +517 -94
  149. package/dist/{pi-embedded-helpers-D1_Sab0M.js → pi-embedded-helpers-B1P8lkqj.js} +5 -5
  150. package/dist/{pi-embedded-helpers-YD1JQ5xV.js → pi-embedded-helpers-BlL08R8g.js} +1 -1
  151. package/dist/{pi-embedded-helpers-DHAJW99p.js → pi-embedded-helpers-CmY04lZ7.js} +1 -1
  152. package/dist/{pi-embedded-helpers-TcYQOZAY.js → pi-embedded-helpers-DuZtk5SK.js} +6 -6
  153. package/dist/{pi-tools.policy-Bx5zp45n.js → pi-tools.policy-54ABEJtH.js} +2 -2
  154. package/dist/{pi-tools.policy-o0ytjRqu.js → pi-tools.policy-BFsWV2pS.js} +2 -2
  155. package/dist/{plugin-registry-BVYZLxmo.js → plugin-registry-CYglC746.js} +2 -2
  156. package/dist/{plugin-registry-Bn9Mj8mP.js → plugin-registry-zGF6HUkQ.js} +2 -2
  157. package/dist/plugin-sdk/agents/pi-embedded-runner/system-prompt.d.ts +21 -0
  158. package/dist/plugin-sdk/agents/pi-tools.read.d.ts +11 -0
  159. package/dist/plugin-sdk/agents/skills/triggers.d.ts +12 -0
  160. package/dist/plugin-sdk/agents/system-prompt-skills-autoload.d.ts +21 -0
  161. package/dist/plugin-sdk/agents/system-prompt-skills-jit.d.ts +28 -0
  162. package/dist/plugin-sdk/agents/tools/skill-search-tool.d.ts +30 -0
  163. package/dist/plugin-sdk/{audio-preflight-DucGa8w7.js → audio-preflight-CoKYDdd4.js} +6 -6
  164. package/dist/plugin-sdk/{channel-web-BhqGIC7q.js → channel-web-eeGSjU9N.js} +7 -7
  165. package/dist/plugin-sdk/{chrome-D9kN9org.js → chrome-CdjVSHtz.js} +1 -1
  166. package/dist/plugin-sdk/config/model-profiles-builtin.d.ts +16 -0
  167. package/dist/plugin-sdk/config/resolve-model-profile.d.ts +9 -1
  168. package/dist/plugin-sdk/config/types.skills.d.ts +22 -0
  169. package/dist/plugin-sdk/config/zod-schema.d.ts +6 -0
  170. package/dist/plugin-sdk/{config-BzupW6LN.js → config-Cf-PzD3r.js} +8 -0
  171. package/dist/plugin-sdk/{deliver-CKgFosI5.js → deliver-hjUeDZ7e.js} +2 -2
  172. package/dist/plugin-sdk/{image-DFyINnvE.js → image-CS95I-I5.js} +2 -2
  173. package/dist/plugin-sdk/index.js +20 -20
  174. package/dist/plugin-sdk/{login-K1YB_7-t.js → login-BhLw-aw1.js} +2 -2
  175. package/dist/plugin-sdk/{login-qr-lMl_OqDj.js → login-qr-B4dxH543.js} +2 -2
  176. package/dist/plugin-sdk/{manager-DdOb0Em2.js → manager-DZ5-lr4s.js} +1 -1
  177. package/dist/plugin-sdk/{outbound-DW3cqlQW.js → outbound-D7yJKgEX.js} +1 -1
  178. package/dist/plugin-sdk/{pi-embedded-helpers-BL7ZRhGv.js → pi-embedded-helpers-6EL59cK1.js} +6 -6
  179. package/dist/plugin-sdk/{pw-ai-B3T0mTHr.js → pw-ai-DWcXZkbZ.js} +2 -2
  180. package/dist/plugin-sdk/{replies-BR2TPTVW.js → replies-B4fizDsZ.js} +1 -1
  181. package/dist/plugin-sdk/{reply-Cjjf4VYT.js → reply-BRGoceel.js} +517 -94
  182. package/dist/plugin-sdk/{runner-BhifC1J_.js → runner-D9c_MNRa.js} +2 -2
  183. package/dist/plugin-sdk/{send-DLO_yV5_.js → send-BAzimHH-.js} +1 -1
  184. package/dist/plugin-sdk/{send-CGhw9mO3.js → send-BfqyNBU1.js} +1 -1
  185. package/dist/plugin-sdk/{send-ZhAe1nXO.js → send-CF7BhO8B.js} +1 -1
  186. package/dist/plugin-sdk/{send-jsofmTfJ.js → send-CJIEYVXL.js} +1 -1
  187. package/dist/plugin-sdk/{send-BP5pSPaZ.js → send-DDpZS9jb.js} +1 -1
  188. package/dist/plugin-sdk/{session-BfyK_04G.js → session-BfTQAyNx.js} +1 -1
  189. package/dist/plugin-sdk/{skill-commands-DEfqC_kJ.js → skill-commands-C70yD9PL.js} +1 -1
  190. package/dist/plugin-sdk/{skills-C9DbB-Kp.js → skills-DuQ-xGok.js} +1 -1
  191. package/dist/plugin-sdk/{synthesis-CZ8BYNXP.js → synthesis-DVsG2Tbp.js} +16 -16
  192. package/dist/plugin-sdk/{web-B8upqMUo.js → web-7u3fdT2S.js} +20 -20
  193. package/dist/plugin-sdk/{whatsapp-actions-eTefsWhW.js → whatsapp-actions-B_3do0s7.js} +2 -2
  194. package/dist/{plugins-cli-CYOQh2DM.js → plugins-cli-CLb_0vH6.js} +27 -27
  195. package/dist/{plugins-cli-3h1N5N8n.js → plugins-cli-ndIGvW38.js} +28 -28
  196. package/dist/{program-D3_xE9BL.js → program-BovNsUAh.js} +34 -34
  197. package/dist/{program-context-COwsYCbf.js → program-context-mFSRQPMm.js} +38 -38
  198. package/dist/{prompt-select-styled-rKPBDv7n.js → prompt-select-styled-DlKhnnDV.js} +15 -15
  199. package/dist/{prompt-select-styled-D88AWCeM.js → prompt-select-styled-vhI0kQYd.js} +15 -15
  200. package/dist/{provider-auth-helpers-rff7s_gC.js → provider-auth-helpers-DXlKD0hY.js} +2 -2
  201. package/dist/{provider-auth-helpers-CyZyVx-V.js → provider-auth-helpers-U0t5YhCn.js} +2 -2
  202. package/dist/{push-apns-BNzgqUl3.js → push-apns-hN0N3Wcu.js} +1 -1
  203. package/dist/{push-apns-d9qKGKPe.js → push-apns-rDsc17-c.js} +1 -1
  204. package/dist/{pw-ai-D9fCYPe7.js → pw-ai-B8IypzYb.js} +2 -2
  205. package/dist/{pw-ai-DYZonrPL.js → pw-ai-BYRvpqBg.js} +2 -2
  206. package/dist/{pw-ai-DWkC5eGA.js → pw-ai-BlWK9Tr3.js} +2 -2
  207. package/dist/{pw-ai-40Jf9QIb.js → pw-ai-BwKx4yAQ.js} +2 -2
  208. package/dist/{qr-cli-6eVyM6ek.js → qr-cli-B7hz3Zj2.js} +1 -1
  209. package/dist/{qr-cli-CCWM_3Nb.js → qr-cli-Zf3abH3y.js} +1 -1
  210. package/dist/{register.agent-D_MON8p-.js → register.agent-B1liWWB3.js} +35 -35
  211. package/dist/{register.agent-BjaqQA02.js → register.agent-Cyij2g-g.js} +33 -33
  212. package/dist/{register.configure-BWkkQhpH.js → register.configure-CoYKlH75.js} +37 -37
  213. package/dist/{register.configure-UJi9sfNv.js → register.configure-keWh1w1p.js} +38 -38
  214. package/dist/{register.maintenance-ChskcWGz.js → register.maintenance-CsA9QQRE.js} +37 -37
  215. package/dist/{register.maintenance-DJptz3DR.js → register.maintenance-CvY-Yar9.js} +35 -35
  216. package/dist/{register.message-CiadI_oS.js → register.message-D7815_7Y.js} +28 -28
  217. package/dist/{register.message-BDTsiyrW.js → register.message-DltuBwIg.js} +27 -27
  218. package/dist/{register.onboard-KR_-4TLY.js → register.onboard-CY50To_-.js} +33 -33
  219. package/dist/{register.onboard-BflOE1jy.js → register.onboard-FcZymlrx.js} +34 -34
  220. package/dist/{register.setup-Cl0sD25T.js → register.setup-8dkIizGs.js} +34 -34
  221. package/dist/{register.setup-W-oNfOp0.js → register.setup-X011Evir.js} +33 -33
  222. package/dist/{register.status-health-sessions-CCQs235z.js → register.status-health-sessions-DRkIaw1q.js} +32 -32
  223. package/dist/{register.status-health-sessions-CT_SmmOH.js → register.status-health-sessions-u9ZbWWea.js} +30 -30
  224. package/dist/{register.subclis-ByZAz4st.js → register.subclis-vTS3UwIU.js} +28 -28
  225. package/dist/{replies-CUWXgyx2.js → replies-A6SltFjk.js} +1 -1
  226. package/dist/{replies-CZH45dMt.js → replies-CsNZ9ImJ.js} +1 -1
  227. package/dist/{replies-Sxbew659.js → replies-Dk0cnpHa.js} +1 -1
  228. package/dist/{replies-D0NFBbd-.js → replies-Dmo0pSSf.js} +1 -1
  229. package/dist/{reply-CgyjcoxC.js → reply-Dx9DWIO2.js} +524 -100
  230. package/dist/{routes-c86p9MPH.js → routes-B3wAMCSw.js} +3 -3
  231. package/dist/{routes-wmFRpLa9.js → routes-DH2Da7TP.js} +3 -3
  232. package/dist/{rpc-BKlQ97aZ.js → rpc-BPtq6BO7.js} +1 -1
  233. package/dist/{rpc-DC4ol5Xa.js → rpc-DCB41PXt.js} +1 -1
  234. package/dist/{run-main-xmWpjZL9.js → run-main-BQKf71Kt.js} +45 -45
  235. package/dist/{runner-ecX1WzDt.js → runner-C4opGXAA.js} +2 -2
  236. package/dist/{runner-Cbz8g76d.js → runner-CY_8vnxU.js} +3 -3
  237. package/dist/{runner-DFuAePEr.js → runner-Dbs3i8HW.js} +2 -2
  238. package/dist/{runner-BBYms6g4.js → runner-Im1oOE3i.js} +3 -3
  239. package/dist/{sandbox-WWVXeHlA.js → sandbox-BTziorto.js} +5 -5
  240. package/dist/{sandbox-cli-momxce7H.js → sandbox-cli-BVpVuidu.js} +6 -6
  241. package/dist/{sandbox-cli-BtGgnGrs.js → sandbox-cli-rOwF1Yuh.js} +6 -6
  242. package/dist/{sandbox-CCHQuSja.js → sandbox-wUKYI3zy.js} +5 -5
  243. package/dist/{security-cli-BfiJ3e0Y.js → security-cli-Bb4vR6LY.js} +9 -9
  244. package/dist/{security-cli-CIB7kqEk.js → security-cli-Cg7KhJC7.js} +9 -9
  245. package/dist/{send-BaFD3lZ7.js → send-8Gw3YmOh.js} +1 -1
  246. package/dist/{send-Bb4it0te.js → send-90t8KM2a.js} +1 -1
  247. package/dist/{send-C0QjmPaf.js → send-9ktd0CBZ.js} +1 -1
  248. package/dist/{send-Iocbaltq.js → send-B0szkIfv.js} +1 -1
  249. package/dist/{send-BKo1T3HF.js → send-B7kMNQ-T.js} +1 -1
  250. package/dist/{send-COVVt64P.js → send-BbZtP8GJ.js} +1 -1
  251. package/dist/{send-DFtnbzqy.js → send-CQj8FBE3.js} +1 -1
  252. package/dist/{send-Dz656vcm.js → send-Cxr6CgGf.js} +1 -1
  253. package/dist/{send-DLVrnezL.js → send-D27q8Oqo.js} +1 -1
  254. package/dist/{send-9sVK0zP4.js → send-D4GfXudZ.js} +1 -1
  255. package/dist/{send-DvbOiJ-I.js → send-D5Siw6wn.js} +1 -1
  256. package/dist/{send-SF7x1UHb.js → send-DanpvmZQ.js} +1 -1
  257. package/dist/{send-5GrSqB6v.js → send-DbJsN7Lj.js} +1 -1
  258. package/dist/{send-DGbBPbV0.js → send-Dj6_LS_W.js} +1 -1
  259. package/dist/{send-BaBv1rAU.js → send-F2Cpm-SJ.js} +1 -1
  260. package/dist/{send-DpMnSIi5.js → send-aXMPprv9.js} +1 -1
  261. package/dist/{send-B5kAnKqP.js → send-depbZ9aA.js} +1 -1
  262. package/dist/{send-BqOhAhRS.js → send-nRhkxbqX.js} +1 -1
  263. package/dist/{send-CJJuN-Fg.js → send-t_DoGd2Y.js} +1 -1
  264. package/dist/{send-Cpk3Ti6-.js → send-zMHWALCW.js} +1 -1
  265. package/dist/{server-context-DefCxQsB.js → server-context-BPuBLXYG.js} +5 -5
  266. package/dist/{server-context-C66bI8ZM.js → server-context-DQIkGNj2.js} +5 -5
  267. package/dist/{server-methods-DDpCXuOU.js → server-methods-1TzYth88.js} +17 -17
  268. package/dist/{server-methods-CBn954AO.js → server-methods-DeIwhdBv.js} +16 -16
  269. package/dist/{server-node-events-BBEMSKVE.js → server-node-events-CFMtnBFU.js} +28 -28
  270. package/dist/{server-node-events-BUEZ3py9.js → server-node-events-DF_ks0oa.js} +27 -27
  271. package/dist/{session-BTeY6Gn2.js → session-C4odFBc2.js} +1 -1
  272. package/dist/{session-BpaF8fzk.js → session-CTTpxOx1.js} +1 -1
  273. package/dist/{session-mFiujXaP.js → session-Cs58by4_.js} +1 -1
  274. package/dist/{session-BtL_LuWh.js → session-d5_vMl76.js} +1 -1
  275. package/dist/{session-utils-DaBIs243.js → session-utils--1xVj2BC.js} +3 -3
  276. package/dist/{sessions-B2KSRtKQ.js → sessions-BikjOqQs.js} +3 -3
  277. package/dist/{sessions-BeYHj0gr.js → sessions-CVWGQEWu.js} +1 -1
  278. package/dist/{sessions-BPD85pWA.js → sessions-CpDbQNFu.js} +1 -1
  279. package/dist/{shared-C9vLT1Vj.js → shared-DHpMu95O.js} +1 -1
  280. package/dist/{shared-PtB96PLH.js → shared-NCp143fJ.js} +1 -1
  281. package/dist/{skill-commands-CSF7Poen.js → skill-commands-QmLQo8Tj.js} +1 -1
  282. package/dist/{skills-XEbTRNYL.js → skills-D0hfZgFz.js} +1 -1
  283. package/dist/{skills-cli-dTks7st0.js → skills-cli-6wYY0Xes.js} +1 -1
  284. package/dist/{skills-cli-DiND94Um.js → skills-cli-CkTThcTU.js} +1 -1
  285. package/dist/{status-BjMiGq0n.js → status-CvElSWg2.js} +2 -2
  286. package/dist/{status-PfvX-BjO.js → status-CwZgLSfx.js} +10 -10
  287. package/dist/{status-CpvzoCOC.js → status-DEQAH4oA.js} +2 -2
  288. package/dist/{status-CG5iHUJ6.js → status-vO4-v0vI.js} +9 -9
  289. package/dist/{status.update-8HXdAdwz.js → status.update-BSaVYFQv.js} +1 -1
  290. package/dist/{status.update-B5zI1_Id.js → status.update-DoXJrRh6.js} +1 -1
  291. package/dist/{subagent-registry-D0IYimMO.js → subagent-registry-K1lQH7iR.js} +525 -101
  292. package/dist/{synthesis-D55QrjAJ.js → synthesis-AYqn8_O8.js} +27 -27
  293. package/dist/{synthesis-CBwKBuLy.js → synthesis-CZhOC8n4.js} +14 -14
  294. package/dist/{synthesis-BVZ5RJLg.js → synthesis-DazoL-DI.js} +26 -26
  295. package/dist/{synthesis-itgrzpuj.js → synthesis-DhxkkJq7.js} +16 -16
  296. package/dist/{system-cli-BERSpUjO.js → system-cli-BmccUOcE.js} +3 -3
  297. package/dist/{system-cli-C61hzNPk.js → system-cli-DJIrqTFB.js} +3 -3
  298. package/dist/{systemd-hints-Ct8ebNeC.js → systemd-hints-BbqPFaZ2.js} +1 -1
  299. package/dist/{systemd-hints-vhJS1sOh.js → systemd-hints-CfnF9j3s.js} +1 -1
  300. package/dist/{tui-Dg_cvgVP.js → tui-Cc1L4YuN.js} +4 -4
  301. package/dist/{tui-CI_zqapL.js → tui-D5we2kr7.js} +4 -4
  302. package/dist/{tui-cli-BD1cbShC.js → tui-cli-BHBp8e8w.js} +9 -9
  303. package/dist/{tui-cli-DtBW_VCL.js → tui-cli-CmVmkEzr.js} +9 -9
  304. package/dist/{unified-runner-BhnvjB1J.js → unified-runner-CavADnkK.js} +515 -91
  305. package/dist/{update-cli-CL1_LPBS.js → update-cli-DPf2vrJK.js} +40 -40
  306. package/dist/{update-cli-D3K4mhrr.js → update-cli-DmxFKAmJ.js} +38 -38
  307. package/dist/{update-runner-Bmq67eos.js → update-runner-D4UIv_1p.js} +1 -1
  308. package/dist/{update-runner-DMucmRlv.js → update-runner-XU-jPEg_.js} +1 -1
  309. package/dist/{web-B0lZdBBl.js → web-BBbVbRTg.js} +30 -30
  310. package/dist/{web-DCO_YCRw.js → web-BJIv_6uQ.js} +17 -17
  311. package/dist/{web-DmgQtLx3.js → web-C-E-O8iP.js} +30 -30
  312. package/dist/{web-C1HPdY_D.js → web-CIj8erCe.js} +19 -19
  313. package/dist/{webhooks-cli-BEk3Xj9r.js → webhooks-cli-BPWIcZ4r.js} +1 -1
  314. package/dist/{webhooks-cli-B7WTF3ao.js → webhooks-cli-DCw-yCzR.js} +1 -1
  315. package/dist/{whatsapp-actions-BUZuNBin.js → whatsapp-actions-B5o7eFIc.js} +2 -2
  316. package/dist/{whatsapp-actions-DEn0NRir.js → whatsapp-actions-CJkCiI_n.js} +2 -2
  317. package/dist/{whatsapp-actions-uEcDLORc.js → whatsapp-actions-CkT3dnmD.js} +2 -2
  318. package/dist/{whatsapp-actions-DmVpLXmh.js → whatsapp-actions-DRvUrapa.js} +2 -2
  319. package/dist/{with-timeout-DwriPEWn.js → with-timeout-7M4c248g.js} +1 -1
  320. package/dist/{with-timeout-BuIx7QnX.js → with-timeout-BWETfI9T.js} +1 -1
  321. package/extensions/bluebubbles/package.json +1 -1
  322. package/extensions/copilot-proxy/package.json +1 -1
  323. package/extensions/diagnostics-otel/package.json +1 -1
  324. package/extensions/discord/package.json +1 -1
  325. package/extensions/feishu/package.json +1 -1
  326. package/extensions/google-antigravity-auth/package.json +1 -1
  327. package/extensions/google-gemini-cli-auth/package.json +1 -1
  328. package/extensions/googlechat/package.json +1 -1
  329. package/extensions/imessage/package.json +1 -1
  330. package/extensions/irc/package.json +1 -1
  331. package/extensions/learning-loop/package.json +1 -1
  332. package/extensions/line/package.json +1 -1
  333. package/extensions/llm-task/package.json +1 -1
  334. package/extensions/matrix/CHANGELOG.md +12 -0
  335. package/extensions/matrix/package.json +1 -1
  336. package/extensions/mattermost/package.json +1 -1
  337. package/extensions/memory-core/package.json +1 -1
  338. package/extensions/memory-lancedb/package.json +1 -1
  339. package/extensions/minimax-portal-auth/package.json +1 -1
  340. package/extensions/msteams/CHANGELOG.md +12 -0
  341. package/extensions/msteams/package.json +1 -1
  342. package/extensions/nextcloud-talk/package.json +1 -1
  343. package/extensions/nostr/CHANGELOG.md +12 -0
  344. package/extensions/nostr/package.json +1 -1
  345. package/extensions/open-prose/package.json +1 -1
  346. package/extensions/outlook/package.json +1 -1
  347. package/extensions/pipeline/package.json +1 -1
  348. package/extensions/signal/package.json +1 -1
  349. package/extensions/slack/package.json +1 -1
  350. package/extensions/telegram/package.json +1 -1
  351. package/extensions/tlon/package.json +1 -1
  352. package/extensions/twitch/CHANGELOG.md +12 -0
  353. package/extensions/twitch/package.json +1 -1
  354. package/extensions/voice-call/CHANGELOG.md +12 -0
  355. package/extensions/voice-call/package.json +1 -1
  356. package/extensions/whatsapp/package.json +1 -1
  357. package/extensions/zalo/CHANGELOG.md +12 -0
  358. package/extensions/zalo/package.json +1 -1
  359. package/extensions/zalouser/CHANGELOG.md +12 -0
  360. package/extensions/zalouser/package.json +1 -1
  361. package/package.json +1 -1
  362. package/skills/1password/SKILL.md +1 -0
  363. package/skills/apple-notes/SKILL.md +1 -0
  364. package/skills/apple-reminders/SKILL.md +1 -0
  365. package/skills/bear-notes/SKILL.md +1 -0
  366. package/skills/blogwatcher/SKILL.md +1 -0
  367. package/skills/blucli/SKILL.md +1 -0
  368. package/skills/bluebubbles/SKILL.md +1 -0
  369. package/skills/camsnap/SKILL.md +1 -0
  370. package/skills/canvas/SKILL.md +6 -0
  371. package/skills/coding-agent/SKILL.md +1 -0
  372. package/skills/connect-email/SKILL.md +1 -0
  373. package/skills/discord/SKILL.md +1 -0
  374. package/skills/eightctl/SKILL.md +1 -0
  375. package/skills/food-order/SKILL.md +1 -0
  376. package/skills/gemini/SKILL.md +1 -0
  377. package/skills/gh-issues/SKILL.md +1 -0
  378. package/skills/gifgrep/SKILL.md +1 -0
  379. package/skills/github/SKILL.md +1 -0
  380. package/skills/gog/SKILL.md +1 -0
  381. package/skills/goplaces/SKILL.md +1 -0
  382. package/skills/healthcheck/SKILL.md +1 -0
  383. package/skills/himalaya/SKILL.md +1 -0
  384. package/skills/imsg/SKILL.md +1 -0
  385. package/skills/long-task/SKILL.md +1 -0
  386. package/skills/mcporter/SKILL.md +1 -0
  387. package/skills/model-usage/SKILL.md +1 -0
  388. package/skills/nano-banana-pro/SKILL.md +1 -0
  389. package/skills/nano-pdf/SKILL.md +1 -0
  390. package/skills/notion/SKILL.md +1 -0
  391. package/skills/obsidian/SKILL.md +1 -0
  392. package/skills/openai-image-gen/SKILL.md +1 -0
  393. package/skills/openai-whisper/SKILL.md +1 -0
  394. package/skills/openai-whisper-api/SKILL.md +1 -0
  395. package/skills/openhue/SKILL.md +1 -0
  396. package/skills/oracle/SKILL.md +1 -0
  397. package/skills/ordercli/SKILL.md +1 -0
  398. package/skills/peekaboo/SKILL.md +1 -0
  399. package/skills/sag/SKILL.md +1 -0
  400. package/skills/session-logs/SKILL.md +1 -0
  401. package/skills/sherpa-onnx-tts/SKILL.md +1 -0
  402. package/skills/skill-creator/SKILL.md +1 -0
  403. package/skills/slack/SKILL.md +1 -0
  404. package/skills/songsee/SKILL.md +1 -0
  405. package/skills/sonoscli/SKILL.md +1 -0
  406. package/skills/spotify-player/SKILL.md +1 -0
  407. package/skills/summarize/SKILL.md +1 -0
  408. package/skills/symihub/SKILL.md +1 -0
  409. package/skills/things-mac/SKILL.md +1 -0
  410. package/skills/tmux/SKILL.md +1 -0
  411. package/skills/trello/SKILL.md +1 -0
  412. package/skills/video-frames/SKILL.md +1 -0
  413. package/skills/voice-call/SKILL.md +1 -0
  414. package/skills/wacli/SKILL.md +1 -0
  415. package/skills/weather/SKILL.md +1 -0
  416. package/skills/xurl/SKILL.md +1 -0
@@ -4,16 +4,17 @@ 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-D1_Sab0M.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-B1P8lkqj.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-Do4JxgLI.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-ROtrXlNs.js";
16
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BaMQiegP.js";
17
+ import { l as parseFrontmatterBlock } from "./frontmatter-CTR5f_Ez.js";
17
18
  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
19
  import { n as formatErrorMessage, r as formatUncaughtError } from "./errors-XIsvXeC-.js";
19
20
  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 +28,20 @@ import { _ as resolveDiscordAccount, a as normalizeWhatsAppTarget, c as listTele
27
28
  import { a as logoutWeb, i as logWebSelfId, l as readWebSelfId, p as webAuthExists, r as getWebAuthAgeMs, t as resolveWhatsAppAccount } from "./accounts-BRw8yhIW.js";
28
29
  import { t as resolveIMessageAccount } from "./accounts-3dCrO3oZ.js";
29
30
  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";
31
+ 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-B7kMNQ-T.js";
32
+ 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-9ktd0CBZ.js";
32
33
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-BBh3Gsrx.js";
33
34
  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-B0OUq6RP.js";
35
+ 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-Dx39g9ey.js";
35
36
  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
37
  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-BuVL0jHI.js";
38
+ 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-C-JvPPpM.js";
38
39
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-RXOlh8ar.js";
39
40
  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";
41
+ 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-90t8KM2a.js";
41
42
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-CuZX_Q4t.js";
42
43
  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-CjW8kPVc.js";
44
+ import { a as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, r as probeOllamaEmbeddingModels, t as MemoryIndexManager } from "./manager-Bc-MeMho.js";
44
45
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DjnxpF_K.js";
45
46
  import { n as retryAsync } from "./retry-B-y5suGA.js";
46
47
  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 +51,7 @@ import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-CVCB
50
51
  import { a as readResponseWithLimit, i as fetchRemoteMedia, n as getDefaultMediaLocalRoots, o as fetchWithSsrFGuard, t as getAgentScopedMediaLocalRoots } from "./local-roots-ClipCZ9s.js";
51
52
  import { a as loadWebMedia, i as getDefaultLocalRoots } from "./ir-7tMVY7D_.js";
52
53
  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-ecX1WzDt.js";
54
+ 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-C4opGXAA.js";
54
55
  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
56
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-DZQU0r3y.js";
56
57
  import { n as wrapFetchWithAbortSignal, t as resolveFetch } from "./fetch-ClslA6GS.js";
@@ -58,11 +59,11 @@ import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-po
58
59
  import { n as recordChannelActivity, r as createDiscordRetryRunner, t as getChannelActivity } from "./channel-activity-D8QD7GoV.js";
59
60
  import { n as normalizePollInput } from "./polls-Kt7OzYCK.js";
60
61
  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";
62
+ import { a as resolveSignalRpcContext, c as streamSignalEvents, n as sendReadReceiptSignal, o as signalCheck, r as sendTypingSignal, s as signalRpcRequest, t as sendMessageSignal } from "./send-zMHWALCW.js";
63
+ 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-CQj8FBE3.js";
63
64
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Jy5dFY67.js";
64
65
  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";
66
+ import { a as createReplyReferencePlanner, i as resolveSlackThreadTs, n as deliverReplies$3, t as createSlackReplyDeliveryPlan } from "./replies-A6SltFjk.js";
66
67
  import { t as getActiveWebListener } from "./active-listener-BVZOh2T1.js";
67
68
  import { createRequire } from "node:module";
68
69
  import * as path$1 from "node:path";
@@ -105,6 +106,38 @@ import { apiThrottler } from "@grammyjs/transformer-throttler";
105
106
 
106
107
  //#region src/config/model-profiles-builtin.ts
107
108
  /**
109
+ * Shared safety + output-style additions applied to most built-in profiles
110
+ * and the Generic fallback. These rules came from a long history of
111
+ * model-specific bugs (verification-monologue padding, "I have addressed"
112
+ * preambles, post-answer assessment lists). Keeping them in one place
113
+ * means a new profile inherits sane defaults instead of starting empty.
114
+ *
115
+ * Stage 2.4 of the prompt-reduction plan: rules that ALL profiles need
116
+ * live here; profile-specific rules (control-token stripping, tool-arg
117
+ * cleanup, reasoning hints) live in their own per-profile additions.
118
+ *
119
+ * Exported so resolve-model-profile.ts can apply the same additions to
120
+ * the Generic fallback profile — no model resolves to "Generic" without
121
+ * inheriting the safety/style rules.
122
+ */
123
+ const SAFETY_AND_STYLE_ADDITIONS = [
124
+ "CRITICAL OUTPUT RULES:",
125
+ "- Your response ends when you have delivered the answer. Do not append anything after.",
126
+ "- Do not begin any sentence with 'I have addressed' or 'I've reviewed'.",
127
+ "- Do not write verification checklists, self-assessments, or numbered assessment lists after your answer.",
128
+ "- Do not write 'Verification:', 'Requirements:', 'Status Check:', or 'Everything is correct'.",
129
+ "- If you need to verify your work, do so before writing your response, not after.",
130
+ "- Send brief progress updates on long tasks so the user knows you are active."
131
+ ];
132
+ /** Hint for native-reasoning models (Nemotron, Qwen 3.5/3.6) to keep
133
+ * planning internal. Not applied to Gemma/Ollama because those models
134
+ * don't have structured thinking and the rule confuses them. */
135
+ const REASONING_DISCIPLINE_ADDITION = "- Keep planning and reasoning internal. Only speak when you have a result or need user input.";
136
+ /** Hint for models that leak Gemma-style control tokens (Gemma family,
137
+ * Ollama hosting any uncensored open model). Forces tool-arg cleanup and
138
+ * forbids leaking turn markers in user-visible text. */
139
+ 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."];
140
+ /**
108
141
  * Built-in model profiles. Ordered from most-specific to least-specific so
109
142
  * that `resolveModelProfile` can return the first match.
110
143
  *
@@ -138,17 +171,7 @@ const BUILTIN_PROFILES = [
138
171
  hasStructuredThinking: false,
139
172
  validateToolArgs: true
140
173
  },
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
- ],
174
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
152
175
  ui: {
153
176
  badge: "Local",
154
177
  watchdogMs: 9e5,
@@ -175,16 +198,7 @@ const BUILTIN_PROFILES = [
175
198
  hasStructuredThinking: true,
176
199
  validateToolArgs: false
177
200
  },
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
- ],
201
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
188
202
  ui: {
189
203
  badge: "Local",
190
204
  watchdogMs: 9e5,
@@ -210,7 +224,7 @@ const BUILTIN_PROFILES = [
210
224
  hasStructuredThinking: true,
211
225
  validateToolArgs: false
212
226
  },
213
- promptAdditions: [],
227
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
214
228
  ui: {
215
229
  badge: "API",
216
230
  watchdogMs: 3e5,
@@ -243,15 +257,7 @@ const BUILTIN_PROFILES = [
243
257
  hasStructuredThinking: true,
244
258
  validateToolArgs: false
245
259
  },
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
- ],
260
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
255
261
  ui: {
256
262
  badge: "Spider",
257
263
  watchdogMs: 9e5,
@@ -284,16 +290,7 @@ const BUILTIN_PROFILES = [
284
290
  hasStructuredThinking: false,
285
291
  validateToolArgs: true
286
292
  },
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
- ],
293
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, ...CONTROL_TOKEN_ADDITIONS],
297
294
  ui: {
298
295
  badge: "Spider",
299
296
  watchdogMs: 6e5,
@@ -325,16 +322,7 @@ const BUILTIN_PROFILES = [
325
322
  hasStructuredThinking: true,
326
323
  validateToolArgs: false
327
324
  },
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
- ],
325
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS, REASONING_DISCIPLINE_ADDITION],
338
326
  ui: {
339
327
  badge: "CoreWeave",
340
328
  watchdogMs: 9e5,
@@ -345,7 +333,15 @@ const BUILTIN_PROFILES = [
345
333
 
346
334
  //#endregion
347
335
  //#region src/config/resolve-model-profile.ts
348
- /** Default profile returned when no match is found. */
336
+ /**
337
+ * Default profile returned when no match is found.
338
+ *
339
+ * Stage 2.4 of the prompt-reduction plan: the Generic fallback now ships
340
+ * the same safety+style additions as every named profile, so newly-added
341
+ * models without a profile entry inherit sane defaults instead of
342
+ * starting empty (which would silently regress safety rules until someone
343
+ * notices and adds a profile).
344
+ */
349
345
  const FALLBACK_PROFILE = {
350
346
  match: "*",
351
347
  label: "Generic",
@@ -364,7 +360,7 @@ const FALLBACK_PROFILE = {
364
360
  hasStructuredThinking: false,
365
361
  validateToolArgs: false
366
362
  },
367
- promptAdditions: [],
363
+ promptAdditions: [...SAFETY_AND_STYLE_ADDITIONS],
368
364
  ui: {
369
365
  watchdogMs: 3e5,
370
366
  armWatchdogOnSend: true
@@ -4340,7 +4336,7 @@ async function getMemorySearchManager(params) {
4340
4336
  const wrapper = new FallbackMemoryManager({
4341
4337
  primary,
4342
4338
  fallbackFactory: async () => {
4343
- const { MemoryIndexManager } = await import("./manager-CjW8kPVc.js").then((n) => n.n);
4339
+ const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
4344
4340
  return await MemoryIndexManager.get(params);
4345
4341
  }
4346
4342
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4353,7 +4349,7 @@ async function getMemorySearchManager(params) {
4353
4349
  }
4354
4350
  }
4355
4351
  try {
4356
- const { MemoryIndexManager } = await import("./manager-CjW8kPVc.js").then((n) => n.n);
4352
+ const { MemoryIndexManager } = await import("./manager-Bc-MeMho.js").then((n) => n.n);
4357
4353
  return { manager: await MemoryIndexManager.get(params) };
4358
4354
  } catch (err) {
4359
4355
  return {
@@ -6447,6 +6443,376 @@ function buildEmbeddedSandboxInfo(sandbox, execElevated) {
6447
6443
  };
6448
6444
  }
6449
6445
 
6446
+ //#endregion
6447
+ //#region src/agents/system-prompt-skills-autoload.ts
6448
+ const FRONTMATTER_RE = /^---\s*\n[\s\S]*?\n---\s*\n?/;
6449
+ let cachedPackageRoot$1;
6450
+ function getPackageRoot$1() {
6451
+ if (cachedPackageRoot$1 === void 0) cachedPackageRoot$1 = resolveSymiPackageRootSync({});
6452
+ return cachedPackageRoot$1;
6453
+ }
6454
+ function safeSkillName(name) {
6455
+ return /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/.test(name);
6456
+ }
6457
+ function tryLoadSkill(skillName, root) {
6458
+ const skillPath = path.join(root, "skills", skillName, "SKILL.md");
6459
+ try {
6460
+ if (!fs.statSync(skillPath).isFile()) return null;
6461
+ } catch {
6462
+ return null;
6463
+ }
6464
+ try {
6465
+ return fs.readFileSync(skillPath, "utf8");
6466
+ } catch {
6467
+ return null;
6468
+ }
6469
+ }
6470
+ function stripFrontmatter(body) {
6471
+ return body.replace(FRONTMATTER_RE, "").trimStart();
6472
+ }
6473
+ /**
6474
+ * Resolves and loads each named skill. Returns the inlinable Markdown block,
6475
+ * or empty string when no skills loaded / minimal mode / no names supplied.
6476
+ */
6477
+ function buildAutoLoadedSkillsBlock(opts) {
6478
+ if (opts.minimalMode) return "";
6479
+ const names = opts.skillNames.filter((n) => typeof n === "string" && n.trim().length > 0);
6480
+ if (names.length === 0) return "";
6481
+ const packageRoot = getPackageRoot$1();
6482
+ const loaded = [];
6483
+ for (const rawName of names) {
6484
+ const name = rawName.trim();
6485
+ if (!safeSkillName(name)) {
6486
+ logWarn(`autoLoadInline: skipping invalid skill name '${rawName}'`);
6487
+ continue;
6488
+ }
6489
+ let body = null;
6490
+ let source = "bundled";
6491
+ if (opts.workspaceDir) {
6492
+ body = tryLoadSkill(name, opts.workspaceDir);
6493
+ source = "workspace";
6494
+ }
6495
+ if (body === null && packageRoot) {
6496
+ body = tryLoadSkill(name, packageRoot);
6497
+ source = "bundled";
6498
+ }
6499
+ if (body === null) {
6500
+ logWarn(`autoLoadInline: skill '${name}' not found in workspace or bundled skills`);
6501
+ continue;
6502
+ }
6503
+ const stripped = stripFrontmatter(body).trim();
6504
+ if (!stripped) {
6505
+ logWarn(`autoLoadInline: skill '${name}' has empty body after frontmatter strip; skipping`);
6506
+ continue;
6507
+ }
6508
+ loaded.push({
6509
+ name,
6510
+ body: stripped,
6511
+ source
6512
+ });
6513
+ }
6514
+ if (loaded.length === 0) return "";
6515
+ return [
6516
+ "",
6517
+ "---",
6518
+ "",
6519
+ "## Auto-loaded Skills",
6520
+ "",
6521
+ loaded.map((skill) => `<!-- auto-loaded: ${skill.name} (${skill.source}) -->\n${skill.body}`).join("\n\n---\n\n"),
6522
+ ""
6523
+ ].join("\n");
6524
+ }
6525
+
6526
+ //#endregion
6527
+ //#region src/agents/skills/triggers.ts
6528
+ const QUOTE_RE = /^["'`](.*)["'`]$/;
6529
+ const ARRAY_FORM_RE = /^\[(.*)\]$/s;
6530
+ function stripWrappingQuotes(s) {
6531
+ const m = s.trim().match(QUOTE_RE);
6532
+ return m ? m[1] : s.trim();
6533
+ }
6534
+ /** Parse a single trigger value, dropping empty / whitespace-only entries. */
6535
+ function cleanTrigger(raw) {
6536
+ const trimmed = stripWrappingQuotes(raw).toLowerCase();
6537
+ return trimmed.length > 0 ? trimmed : null;
6538
+ }
6539
+ /**
6540
+ * Parse the value of a `triggers:` frontmatter field into a string[].
6541
+ * Accepts both inline-array form `[a, b, "c d"]` and YAML-list form
6542
+ * (multiline with leading hyphens). Returns deduped lowercased trigger
6543
+ * strings, or empty array on unparseable / missing input.
6544
+ */
6545
+ function parseTriggersValue(raw) {
6546
+ if (typeof raw !== "string") return [];
6547
+ const trimmed = raw.trim();
6548
+ if (!trimmed) return [];
6549
+ const items = [];
6550
+ const arrayMatch = trimmed.match(ARRAY_FORM_RE);
6551
+ if (arrayMatch) {
6552
+ const inner = arrayMatch[1];
6553
+ let buf = "";
6554
+ let inQuote = null;
6555
+ for (const ch of inner) {
6556
+ if (inQuote) {
6557
+ if (ch === inQuote) inQuote = null;
6558
+ else buf += ch;
6559
+ continue;
6560
+ }
6561
+ if (ch === "\"" || ch === "'") {
6562
+ inQuote = ch;
6563
+ continue;
6564
+ }
6565
+ if (ch === ",") {
6566
+ const cleaned = cleanTrigger(buf);
6567
+ if (cleaned) items.push(cleaned);
6568
+ buf = "";
6569
+ continue;
6570
+ }
6571
+ buf += ch;
6572
+ }
6573
+ const cleaned = cleanTrigger(buf);
6574
+ if (cleaned) items.push(cleaned);
6575
+ } else for (const line of trimmed.split("\n")) {
6576
+ const ltrim = line.trimStart();
6577
+ if (ltrim.startsWith("- ")) {
6578
+ const cleaned = cleanTrigger(ltrim.slice(2));
6579
+ if (cleaned) items.push(cleaned);
6580
+ } else if (ltrim && !ltrim.startsWith("#")) {
6581
+ const cleaned = cleanTrigger(ltrim);
6582
+ if (cleaned) items.push(cleaned);
6583
+ }
6584
+ }
6585
+ const seen = /* @__PURE__ */ new Set();
6586
+ const out = [];
6587
+ for (const t of items) if (!seen.has(t)) {
6588
+ seen.add(t);
6589
+ out.push(t);
6590
+ }
6591
+ return out;
6592
+ }
6593
+ /**
6594
+ * Extract triggers from a parsed frontmatter record. Returns empty array
6595
+ * when the field is absent or unparseable.
6596
+ */
6597
+ function getSkillTriggers(frontmatter) {
6598
+ return parseTriggersValue(frontmatter.triggers);
6599
+ }
6600
+
6601
+ //#endregion
6602
+ //#region src/agents/tools/skill-search-tool.ts
6603
+ const SkillSearchToolSchema = Type.Object({
6604
+ query: Type.String({
6605
+ minLength: 1,
6606
+ description: "Intent description (2-8 words). Match by trigger keywords first, then description text."
6607
+ }),
6608
+ limit: Type.Optional(Type.Number({
6609
+ minimum: 1,
6610
+ maximum: 10,
6611
+ description: "Max results to return (default 5, capped at 10)."
6612
+ }))
6613
+ });
6614
+ const CACHE_TTL_MS = 6e4;
6615
+ const SAFE_NAME_RE = /^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,59}$/;
6616
+ function loadSkillFromDir(dir, source) {
6617
+ const name = path.basename(dir);
6618
+ if (!SAFE_NAME_RE.test(name)) return null;
6619
+ const file = path.join(dir, "SKILL.md");
6620
+ let raw;
6621
+ try {
6622
+ if (!fs.statSync(file).isFile()) return null;
6623
+ raw = fs.readFileSync(file, "utf8");
6624
+ } catch {
6625
+ return null;
6626
+ }
6627
+ const fm = parseFrontmatterBlock(raw);
6628
+ return {
6629
+ name,
6630
+ description: (fm.description ?? "").trim(),
6631
+ path: file,
6632
+ triggers: getSkillTriggers(fm),
6633
+ source
6634
+ };
6635
+ }
6636
+ function listSkillDirs(root) {
6637
+ const skillsDir = path.join(root, "skills");
6638
+ let entries;
6639
+ try {
6640
+ entries = fs.readdirSync(skillsDir, { withFileTypes: true });
6641
+ } catch {
6642
+ return [];
6643
+ }
6644
+ return entries.filter((e) => e.isDirectory()).map((e) => path.join(skillsDir, e.name));
6645
+ }
6646
+ let cachedPackageRoot;
6647
+ const cachePerWorkspace = /* @__PURE__ */ new Map();
6648
+ function getPackageRoot() {
6649
+ if (cachedPackageRoot === void 0) cachedPackageRoot = resolveSymiPackageRootSync({});
6650
+ return cachedPackageRoot;
6651
+ }
6652
+ function loadAllSkills(workspaceDir) {
6653
+ const cacheKey = workspaceDir ?? "";
6654
+ const now = Date.now();
6655
+ const existing = cachePerWorkspace.get(cacheKey);
6656
+ if (existing && now - existing.loadedAt < CACHE_TTL_MS) return existing.skills;
6657
+ const seen = /* @__PURE__ */ new Map();
6658
+ if (workspaceDir) for (const dir of listSkillDirs(workspaceDir)) {
6659
+ const skill = loadSkillFromDir(dir, "workspace");
6660
+ if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
6661
+ }
6662
+ const packageRoot = getPackageRoot();
6663
+ if (packageRoot) for (const dir of listSkillDirs(packageRoot)) {
6664
+ const skill = loadSkillFromDir(dir, "bundled");
6665
+ if (skill && !seen.has(skill.name)) seen.set(skill.name, skill);
6666
+ }
6667
+ const skills = [...seen.values()];
6668
+ cachePerWorkspace.set(cacheKey, {
6669
+ skills,
6670
+ loadedAt: now
6671
+ });
6672
+ return skills;
6673
+ }
6674
+ const TOKEN_SPLIT_RE = /[^\w/]+/;
6675
+ function tokenizeQuery(raw) {
6676
+ return raw.toLowerCase().split(TOKEN_SPLIT_RE).filter((t) => t.length >= 2);
6677
+ }
6678
+ /**
6679
+ * Score a query against one skill's triggers + description.
6680
+ * - Trigger score: ratio of query tokens that appear in the trigger set.
6681
+ * - FTS score: 0.4 × ratio of query tokens that appear in the description
6682
+ * (case-insensitive substring match).
6683
+ * - Final = max(trigger, fts) so trigger matches always beat descriptions.
6684
+ * - Returns 0 for "no signal at all" (caller should drop these).
6685
+ */
6686
+ function scoreSkillMatch(skill, queryTokens) {
6687
+ if (queryTokens.length === 0) return 0;
6688
+ const triggerSet = new Set(skill.triggers.map((t) => t.toLowerCase()));
6689
+ const description = skill.description.toLowerCase();
6690
+ let triggerHits = 0;
6691
+ let ftsHits = 0;
6692
+ for (const token of queryTokens) if (triggerSet.has(token)) triggerHits += 1;
6693
+ else if (description.includes(token)) ftsHits += 1;
6694
+ const triggerScore = triggerHits / queryTokens.length;
6695
+ const ftsScore = ftsHits / queryTokens.length * .4;
6696
+ return Math.max(triggerScore, ftsScore);
6697
+ }
6698
+ /**
6699
+ * Pure-function search; exported for testing without going through the
6700
+ * tool execute wrapper.
6701
+ */
6702
+ function searchSkills(query, limit, workspaceDir) {
6703
+ const tokens = tokenizeQuery(query);
6704
+ if (tokens.length === 0) return [];
6705
+ const all = loadAllSkills(workspaceDir);
6706
+ const scored = [];
6707
+ for (const skill of all) {
6708
+ const score = scoreSkillMatch(skill, tokens);
6709
+ if (score > 0) scored.push({
6710
+ name: skill.name,
6711
+ description: skill.description,
6712
+ path: skill.path,
6713
+ score
6714
+ });
6715
+ }
6716
+ scored.sort((a, b) => b.score - a.score || a.name.localeCompare(b.name));
6717
+ return scored.slice(0, limit);
6718
+ }
6719
+ function createSkillSearchTool(opts) {
6720
+ return {
6721
+ name: "skill_search",
6722
+ label: "skill_search",
6723
+ 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.",
6724
+ parameters: SkillSearchToolSchema,
6725
+ execute: async (_toolCallId, args) => {
6726
+ const params = args;
6727
+ const query = typeof params.query === "string" ? params.query.trim() : "";
6728
+ if (!query) return jsonResult({
6729
+ ok: false,
6730
+ error: "skill_search requires a non-empty `query` string."
6731
+ });
6732
+ const limit = typeof params.limit === "number" && Number.isFinite(params.limit) ? Math.min(10, Math.max(1, Math.floor(params.limit))) : 5;
6733
+ try {
6734
+ return jsonResult({
6735
+ ok: true,
6736
+ query,
6737
+ matches: searchSkills(query, limit, opts?.workspaceDir)
6738
+ });
6739
+ } catch (err) {
6740
+ const message = err instanceof Error ? err.message : String(err);
6741
+ logWarn(`skill_search failed: ${message}`);
6742
+ return jsonResult({
6743
+ ok: false,
6744
+ error: message
6745
+ });
6746
+ }
6747
+ }
6748
+ };
6749
+ }
6750
+
6751
+ //#endregion
6752
+ //#region src/agents/system-prompt-skills-jit.ts
6753
+ const MAX_ANCHOR_DESCRIPTION_CHARS = 100;
6754
+ const MAX_AUTO_INJECT_RESULTS = 3;
6755
+ const MAX_AUTO_INJECT_TOTAL_CHARS = 600;
6756
+ /**
6757
+ * Build the anchor list block. Returns "" when no anchor list configured
6758
+ * or in preload mode (anchor list adds value only in jit/hybrid).
6759
+ */
6760
+ function buildAnchorListBlock(opts) {
6761
+ if (opts.minimalMode) return "";
6762
+ if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
6763
+ const names = (opts.anchorList ?? []).filter((n) => typeof n === "string" && n.trim().length > 0);
6764
+ if (names.length === 0) return "";
6765
+ const lines = [];
6766
+ for (const name of names) {
6767
+ const description = searchSkills(name, 1, opts.workspaceDir)[0]?.description.trim() ?? "";
6768
+ const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
6769
+ lines.push(truncated ? `- ${name}: ${truncated}` : `- ${name}`);
6770
+ }
6771
+ return [
6772
+ "",
6773
+ "## Anchor Skills",
6774
+ "These skills are always available. Read their SKILL.md via `read` if relevant. For full discovery use the `skill_search` tool.",
6775
+ lines.join("\n"),
6776
+ ""
6777
+ ].join("\n");
6778
+ }
6779
+ /**
6780
+ * Build the auto-injected matches block based on the user message triggers.
6781
+ * Returns "" when discoveryMode doesn't ask for it, no message available,
6782
+ * no matches found, or in minimal mode.
6783
+ */
6784
+ function buildAutoInjectBlock(opts) {
6785
+ if (opts.minimalMode) return "";
6786
+ if (opts.discoveryMode !== "jit" && opts.discoveryMode !== "hybrid") return "";
6787
+ const message = (opts.userMessage ?? "").trim();
6788
+ if (!message) return "";
6789
+ const matches = searchSkills(message, MAX_AUTO_INJECT_RESULTS, opts.workspaceDir);
6790
+ if (matches.length === 0) return "";
6791
+ const lines = [];
6792
+ let total = 0;
6793
+ for (const match of matches) {
6794
+ const description = match.description.trim();
6795
+ const truncated = description.length > MAX_ANCHOR_DESCRIPTION_CHARS ? `${description.slice(0, MAX_ANCHOR_DESCRIPTION_CHARS - 1)}…` : description;
6796
+ const skillRef = path.basename(path.dirname(match.path));
6797
+ const line = truncated ? `- ${skillRef}: ${truncated}` : `- ${skillRef}`;
6798
+ if (total + line.length > MAX_AUTO_INJECT_TOTAL_CHARS) break;
6799
+ lines.push(line);
6800
+ total += line.length + 1;
6801
+ }
6802
+ if (lines.length === 0) return "";
6803
+ return [
6804
+ "",
6805
+ "## Possibly Relevant Skills (auto-suggested for this request)",
6806
+ "These skills' triggers matched keywords in your message. Read the SKILL.md if it applies; otherwise ignore and proceed.",
6807
+ lines.join("\n"),
6808
+ ""
6809
+ ].join("\n");
6810
+ }
6811
+ /** Convenience: build both blocks concatenated. */
6812
+ function buildSkillsJitBlocks(opts) {
6813
+ return `${buildAnchorListBlock(opts)}${buildAutoInjectBlock(opts)}`;
6814
+ }
6815
+
6450
6816
  //#endregion
6451
6817
  //#region src/agents/system-prompt.ts
6452
6818
  function buildSkillsSection(params) {
@@ -6963,7 +7329,7 @@ function buildToolSummaryMap(tools) {
6963
7329
  //#endregion
6964
7330
  //#region src/agents/pi-embedded-runner/system-prompt.ts
6965
7331
  function buildEmbeddedSystemPrompt(params) {
6966
- return buildAgentSystemPrompt({
7332
+ const corePrompt = buildAgentSystemPrompt({
6967
7333
  workspaceDir: params.workspaceDir,
6968
7334
  defaultThinkLevel: params.defaultThinkLevel,
6969
7335
  reasoningLevel: params.reasoningLevel,
@@ -6991,6 +7357,19 @@ function buildEmbeddedSystemPrompt(params) {
6991
7357
  contextFiles: params.contextFiles,
6992
7358
  memoryCitationsMode: params.memoryCitationsMode
6993
7359
  });
7360
+ const promptMode = params.promptMode ?? "full";
7361
+ const isMinimal = promptMode === "minimal" || promptMode === "none";
7362
+ return `${corePrompt}${buildAutoLoadedSkillsBlock({
7363
+ skillNames: params.autoLoadInlineSkills ?? [],
7364
+ workspaceDir: params.workspaceDir,
7365
+ minimalMode: isMinimal
7366
+ })}${buildSkillsJitBlocks({
7367
+ discoveryMode: params.skillsDiscoveryMode,
7368
+ anchorList: params.skillsAnchorList,
7369
+ userMessage: params.currentUserMessage,
7370
+ workspaceDir: params.workspaceDir,
7371
+ minimalMode: isMinimal
7372
+ })}`;
6994
7373
  }
6995
7374
  function createSystemPromptOverride(systemPrompt) {
6996
7375
  const override = systemPrompt.trim();
@@ -10443,7 +10822,7 @@ async function routeReply(params) {
10443
10822
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
10444
10823
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
10445
10824
  try {
10446
- const { deliverOutboundPayloads } = await import("./deliver-B0OUq6RP.js").then((n) => n.n);
10825
+ const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
10447
10826
  return {
10448
10827
  ok: true,
10449
10828
  messageId: (await deliverOutboundPayloads({
@@ -40457,6 +40836,7 @@ function createSymiTools(options) {
40457
40836
  createCronTool({ agentSessionKey: options?.agentSessionKey }),
40458
40837
  createTaskListTool({ workspaceDir }),
40459
40838
  createTaskCancelTool({ workspaceDir }),
40839
+ createSkillSearchTool({ workspaceDir }),
40460
40840
  ...messageTool ? [messageTool] : [],
40461
40841
  createTtsTool({
40462
40842
  agentChannel: options?.agentChannel,
@@ -44236,7 +44616,7 @@ async function deliverSessionMaintenanceWarning(params) {
44236
44616
  return;
44237
44617
  }
44238
44618
  try {
44239
- const { deliverOutboundPayloads } = await import("./deliver-B0OUq6RP.js").then((n) => n.n);
44619
+ const { deliverOutboundPayloads } = await import("./deliver-Dx39g9ey.js").then((n) => n.n);
44240
44620
  await deliverOutboundPayloads({
44241
44621
  cfg: params.cfg,
44242
44622
  channel,
@@ -47682,7 +48062,7 @@ async function describeStickerImage(params) {
47682
48062
  logVerbose(`telegram: describing sticker with ${provider}/${model}`);
47683
48063
  try {
47684
48064
  const buffer = await fs$1.readFile(imagePath);
47685
- const { describeImageWithModel } = await import("./image-BuVL0jHI.js").then((n) => n.n);
48065
+ const { describeImageWithModel } = await import("./image-C-JvPPpM.js").then((n) => n.n);
47686
48066
  return (await describeImageWithModel({
47687
48067
  buffer,
47688
48068
  fileName: "sticker.webp",
@@ -48105,7 +48485,7 @@ function createWhatsAppLoginTool() {
48105
48485
  force: Type.Optional(Type.Boolean())
48106
48486
  }),
48107
48487
  execute: async (_toolCallId, args) => {
48108
- const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DdAVHOEC.js");
48488
+ const { startWebLoginWithQr, waitForWebLogin } = await import("./login-qr-DiyxAHpv.js");
48109
48489
  if ((args?.action ?? "start") === "wait") {
48110
48490
  const result = await waitForWebLogin({ timeoutMs: typeof args.timeoutMs === "number" ? args.timeoutMs : void 0 });
48111
48491
  return {
@@ -50431,7 +50811,7 @@ async function preflightDiscordMessage(params) {
50431
50811
  let preflightTranscript;
50432
50812
  const hasAudioAttachment = message.attachments?.some((att) => att.contentType?.startsWith("audio/"));
50433
50813
  if (!isDirectMessage && shouldRequireMention && hasAudioAttachment && !baseText && mentionRegexes.length > 0) try {
50434
- const { transcribeFirstAudio } = await import("./audio-preflight-Cb-T0r6e.js");
50814
+ const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
50435
50815
  const audioPaths = message.attachments?.filter((att) => att.contentType?.startsWith("audio/")).map((att) => att.url) ?? [];
50436
50816
  if (audioPaths.length > 0) preflightTranscript = await transcribeFirstAudio({
50437
50817
  ctx: {
@@ -54437,27 +54817,27 @@ function isVoiceChannelType(type) {
54437
54817
  function createDefaultDeps() {
54438
54818
  return {
54439
54819
  sendMessageWhatsApp: async (...args) => {
54440
- const { sendMessageWhatsApp } = await import("./web-DCO_YCRw.js");
54820
+ const { sendMessageWhatsApp } = await import("./web-BJIv_6uQ.js");
54441
54821
  return await sendMessageWhatsApp(...args);
54442
54822
  },
54443
54823
  sendMessageTelegram: async (...args) => {
54444
- const { sendMessageTelegram } = await import("./send-Bb4it0te.js").then((n) => n.l);
54824
+ const { sendMessageTelegram } = await import("./send-90t8KM2a.js").then((n) => n.l);
54445
54825
  return await sendMessageTelegram(...args);
54446
54826
  },
54447
54827
  sendMessageDiscord: async (...args) => {
54448
- const { sendMessageDiscord } = await import("./send-C0QjmPaf.js").then((n) => n.t);
54828
+ const { sendMessageDiscord } = await import("./send-9ktd0CBZ.js").then((n) => n.t);
54449
54829
  return await sendMessageDiscord(...args);
54450
54830
  },
54451
54831
  sendMessageSlack: async (...args) => {
54452
- const { sendMessageSlack } = await import("./send-BKo1T3HF.js").then((n) => n.n);
54832
+ const { sendMessageSlack } = await import("./send-B7kMNQ-T.js").then((n) => n.n);
54453
54833
  return await sendMessageSlack(...args);
54454
54834
  },
54455
54835
  sendMessageSignal: async (...args) => {
54456
- const { sendMessageSignal } = await import("./send-Cpk3Ti6-.js").then((n) => n.i);
54836
+ const { sendMessageSignal } = await import("./send-zMHWALCW.js").then((n) => n.i);
54457
54837
  return await sendMessageSignal(...args);
54458
54838
  },
54459
54839
  sendMessageIMessage: async (...args) => {
54460
- const { sendMessageIMessage } = await import("./send-DFtnbzqy.js").then((n) => n.n);
54840
+ const { sendMessageIMessage } = await import("./send-CQj8FBE3.js").then((n) => n.n);
54461
54841
  return await sendMessageIMessage(...args);
54462
54842
  }
54463
54843
  };
@@ -65287,7 +65667,7 @@ async function registerSlackMonitorSlashCommands(params) {
65287
65667
  });
65288
65668
  const deliverSlashPayloads = async (replies) => {
65289
65669
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
65290
- import("./replies-CUWXgyx2.js").then((n) => n.r),
65670
+ import("./replies-A6SltFjk.js").then((n) => n.r),
65291
65671
  import("./chunk-BRe1o4Af.js").then((n) => n.s),
65292
65672
  import("./markdown-tables-x2Xe2UXh.js").then((n) => n.t)
65293
65673
  ]);
@@ -67560,7 +67940,7 @@ const buildTelegramMessageContext = async ({ primaryCtx, allMedia, storeAllowFro
67560
67940
  const hasAudio = allMedia.some((media) => media.contentType?.startsWith("audio/"));
67561
67941
  let preflightTranscript;
67562
67942
  if (isGroup && requireMention && hasAudio && !hasUserText && mentionRegexes.length > 0) try {
67563
- const { transcribeFirstAudio } = await import("./audio-preflight-Cb-T0r6e.js");
67943
+ const { transcribeFirstAudio } = await import("./audio-preflight-DQR2Ivi-.js");
67564
67944
  preflightTranscript = await transcribeFirstAudio({
67565
67945
  ctx: {
67566
67946
  MediaPaths: allMedia.length > 0 ? allMedia.map((m) => m.path) : void 0,
@@ -69705,23 +70085,23 @@ let webLoginQrPromise = null;
69705
70085
  let webChannelPromise = null;
69706
70086
  let whatsappActionsPromise = null;
69707
70087
  function loadWebOutbound() {
69708
- webOutboundPromise ??= import("./outbound-Zmd7UyQH.js").then((n) => n.t);
70088
+ webOutboundPromise ??= import("./outbound-BaF9dF-H.js").then((n) => n.t);
69709
70089
  return webOutboundPromise;
69710
70090
  }
69711
70091
  function loadWebLogin() {
69712
- webLoginPromise ??= import("./login-D4rZWBXe.js").then((n) => n.n);
70092
+ webLoginPromise ??= import("./login-DqhTprwd.js").then((n) => n.n);
69713
70093
  return webLoginPromise;
69714
70094
  }
69715
70095
  function loadWebLoginQr() {
69716
- webLoginQrPromise ??= import("./login-qr-DdAVHOEC.js");
70096
+ webLoginQrPromise ??= import("./login-qr-DiyxAHpv.js");
69717
70097
  return webLoginQrPromise;
69718
70098
  }
69719
70099
  function loadWebChannel() {
69720
- webChannelPromise ??= import("./web-DCO_YCRw.js");
70100
+ webChannelPromise ??= import("./web-BJIv_6uQ.js");
69721
70101
  return webChannelPromise;
69722
70102
  }
69723
70103
  function loadWhatsAppActions() {
69724
- whatsappActionsPromise ??= import("./whatsapp-actions-DmVpLXmh.js");
70104
+ whatsappActionsPromise ??= import("./whatsapp-actions-DRvUrapa.js");
69725
70105
  return whatsappActionsPromise;
69726
70106
  }
69727
70107
  function createPluginRuntime() {
@@ -71596,6 +71976,22 @@ function wrapToolParamNormalization(tool, requiredParamGroups) {
71596
71976
  }
71597
71977
  };
71598
71978
  }
71979
+ /**
71980
+ * Override a tool's description while preserving execute, parameters, and
71981
+ * other properties. Used by Stage 2.5 of the prompt-reduction plan to move
71982
+ * usage docs from the system prompt into tool descriptions where they
71983
+ * belong contextually.
71984
+ *
71985
+ * The replacement description should include the upstream's tool-purpose
71986
+ * sentence so models that only read the description (without the prompt
71987
+ * section) still have the same baseline understanding.
71988
+ */
71989
+ function wrapToolWithDescriptionOverride(tool, description) {
71990
+ return {
71991
+ ...tool,
71992
+ description
71993
+ };
71994
+ }
71599
71995
  function wrapToolWorkspaceRootGuard(tool, root) {
71600
71996
  return {
71601
71997
  ...tool,
@@ -71836,6 +72232,26 @@ function resolveToolLoopDetectionConfig(params) {
71836
72232
  }
71837
72233
  };
71838
72234
  }
72235
+ /**
72236
+ * Edit tool description. Replaces the upstream's terse one-liner with
72237
+ * usage notes migrated from the system prompt's "Edit Tool Best Practices"
72238
+ * section in Stage 2.5 of the prompt-reduction plan. Co-locating these
72239
+ * notes with the tool means they ship only when edit is in palette, and
72240
+ * the system prompt section can be deleted in Stage 4 without losing the
72241
+ * guidance.
72242
+ *
72243
+ * Combined with the read-before-edit guard (Stage 1.3) and the model's
72244
+ * own discipline, this should kill the hallucinated-oldText failure class
72245
+ * for any well-intentioned model.
72246
+ */
72247
+ const EDIT_TOOL_DESCRIPTION = [
72248
+ "Edit a file by replacing exact text. The oldText must match the file EXACTLY (whitespace, indentation, and all).",
72249
+ "Best practices to avoid match failures:",
72250
+ "- Use the SHORTEST unique snippet that identifies the edit location (1-3 lines). Do NOT paste large blocks.",
72251
+ "- 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.",
72252
+ "- 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.",
72253
+ "- Prefer lines with distinctive content (function names, unique strings) over generic code (braces, blank lines)."
72254
+ ].join(" ");
71839
72255
  function createSymiCodingTools(options) {
71840
72256
  const execToolName = "exec";
71841
72257
  const sandbox = options?.sandbox?.enabled ? options.sandbox : void 0;
@@ -71924,7 +72340,7 @@ function createSymiCodingTools(options) {
71924
72340
  }
71925
72341
  if (tool.name === "edit") {
71926
72342
  if (sandboxRoot) return [];
71927
- const guarded = wrapEditToolWithGuard(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), readEditTracker);
72343
+ const guarded = wrapEditToolWithGuard(wrapToolWithDescriptionOverride(wrapToolParamNormalization(createEditTool(workspaceRoot), CLAUDE_PARAM_GROUPS.edit), EDIT_TOOL_DESCRIPTION), readEditTracker);
71928
72344
  return [workspaceOnly ? wrapToolWorkspaceRootGuard(guarded, workspaceRoot) : guarded];
71929
72345
  }
71930
72346
  return [tool];
@@ -73687,7 +74103,11 @@ async function compactEmbeddedPiSessionDirect(params) {
73687
74103
  userTime,
73688
74104
  userTimeFormat,
73689
74105
  contextFiles,
73690
- memoryCitationsMode: params.config?.memory?.citations
74106
+ memoryCitationsMode: params.config?.memory?.citations,
74107
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
74108
+ skillsDiscoveryMode: params.config?.skills?.discoveryMode,
74109
+ skillsAnchorList: params.config?.skills?.anchorList,
74110
+ currentUserMessage: void 0
73691
74111
  }));
73692
74112
  const sessionLock = await acquireSessionWriteLock({
73693
74113
  sessionFile: params.sessionFile,
@@ -77877,7 +78297,11 @@ async function runEmbeddedAttempt(params) {
77877
78297
  userTime,
77878
78298
  userTimeFormat,
77879
78299
  contextFiles,
77880
- memoryCitationsMode: params.config?.memory?.citations
78300
+ memoryCitationsMode: params.config?.memory?.citations,
78301
+ autoLoadInlineSkills: params.config?.skills?.autoLoadInline,
78302
+ skillsDiscoveryMode: params.config?.skills?.discoveryMode,
78303
+ skillsAnchorList: params.config?.skills?.anchorList,
78304
+ currentUserMessage: params.prompt
77881
78305
  });
77882
78306
  const systemPromptReport = buildSystemPromptReport({
77883
78307
  source: "run",