@symerian/symi 3.4.27 → 3.4.29

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 (215) hide show
  1. package/dist/{agent-DOOj3Gzb.js → agent-CQlyTNu-.js} +1 -1
  2. package/dist/{agent-CiqPWDUd.js → agent-N_J2cDO6.js} +18 -18
  3. package/dist/{agent-scope-Bnsyyeci.js → agent-scope-DOrZjOnW.js} +18 -18
  4. package/dist/{agents-BBQfFoen.js → agents-1xmRO246.js} +2 -2
  5. package/dist/{agents.config-Dm3oLpYK.js → agents.config-BJ9RIQlb.js} +1 -1
  6. package/dist/{audit-BSX7fMfc.js → audit-DCwHws4M.js} +20 -20
  7. package/dist/{auth-choice-rhBmet5i.js → auth-choice-DwXdS4c2.js} +11 -11
  8. package/dist/{auth-choice-BYbTjWcs.js → auth-choice-Ryx7oj6G.js} +1 -1
  9. package/dist/{auth-profiles-D5nYBj_Z.js → auth-profiles-Ce7R_25e.js} +2 -2
  10. package/dist/{auth-token-CAV1oLQG.js → auth-token-DgRRSbEX.js} +3 -3
  11. package/dist/{banner-C1qG5Rm9.js → banner-CxMQaUgh.js} +1 -1
  12. package/dist/{browser-cli-De8jg4-F.js → browser-cli-C3hfJNZy.js} +9 -9
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +2 -2
  15. package/dist/bundled/session-memory/handler.js +2 -2
  16. package/dist/{call-CW8U1BPq.js → call-BouPakqe.js} +9 -9
  17. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  18. package/dist/{channel-options-CJD7jwYg.js → channel-options-WR29vfWK.js} +1 -1
  19. package/dist/{channel-options-BsXUgCMq.js → channel-options-n9C_ovb1.js} +1 -1
  20. package/dist/{channels-cli-Dxn5n9e4.js → channels-cli-Cs-Uq67O.js} +7 -7
  21. package/dist/{channels-cli-Bao4VNbH.js → channels-cli-DbFGI3vF.js} +57 -57
  22. package/dist/{chrome-pFBxO63W.js → chrome-rzK8edU7.js} +2 -2
  23. package/dist/{cli-WP38F9C5.js → cli-7ceDvtPc.js} +45 -45
  24. package/dist/{cli-CrhLSz3t.js → cli-D55pCJ8Q.js} +4 -4
  25. package/dist/{client-T5P9umyG.js → client-BzUAFrla.js} +1 -1
  26. package/dist/{command-registry-DoXcG7FZ.js → command-registry-DAy62yhH.js} +10 -10
  27. package/dist/{commands-registry-BjcGLk4v.js → commands-registry-VfAQOVZO.js} +1 -1
  28. package/dist/{completion-cli-C0SXi7ya.js → completion-cli-Bc1jojml.js} +12 -12
  29. package/dist/{completion-cli-DaWi3_ux.js → completion-cli-Bh-Y2NVp.js} +2 -2
  30. package/dist/{config-D-PYSlE8.js → config-D7SS4vdk.js} +2 -2
  31. package/dist/{config-cli-DXKm0pS5.js → config-cli-BxRcn2oD.js} +1 -1
  32. package/dist/{config-cli-DS67KtKf.js → config-cli-DupKETmw.js} +4 -4
  33. package/dist/{config-guard-xLTTFANi.js → config-guard-BGAQzX2K.js} +6 -6
  34. package/dist/{config-validation-C4wGq3rz.js → config-validation-COcIIMNe.js} +1 -1
  35. package/dist/{configure-B99YJJb0.js → configure-0XYm59w7.js} +14 -14
  36. package/dist/{configure-CzO4_jJJ.js → configure-BilM_Fgn.js} +2 -2
  37. package/dist/{consolidate-BB4BOQIN.js → consolidate-DI20-Wtn.js} +6 -6
  38. package/dist/{control-service-y53w3Jzy.js → control-service-Ry7Le68N.js} +4 -4
  39. package/dist/{control-ui-assets-Dryy7mCE.js → control-ui-assets-DuDhl0co.js} +1 -1
  40. package/dist/{cron-cli-BMblAFRK.js → cron-cli-DHFgjr_X.js} +7 -7
  41. package/dist/{daemon-cli-BJGNf5qV.js → daemon-cli-fC2R9YZd.js} +11 -11
  42. package/dist/{daemon-runtime-u4p9jsEF.js → daemon-runtime-tZgIbDPz.js} +10 -10
  43. package/dist/{deliver-C79-Umbk.js → deliver-DB4v0Tyl.js} +2 -2
  44. package/dist/{deps-UA1UBhl7.js → deps-BlmO-MfQ.js} +1 -1
  45. package/dist/{devices-cli-wsTs-nti.js → devices-cli-DtkKN4l0.js} +6 -6
  46. package/dist/{diagnostics-oW0LBW-t.js → diagnostics-tVJR9V0_.js} +5 -5
  47. package/dist/{directory-cli-D8As6t8Z.js → directory-cli-Bfy_ejW2.js} +3 -3
  48. package/dist/{dm-policy-shared-DRJrFKqJ.js → dm-policy-shared-CBlUyDSX.js} +1 -1
  49. package/dist/{dns-cli-BKOTBn3n.js → dns-cli-DzKaV6NZ.js} +3 -3
  50. package/dist/{docs-cli-D5j7Nmz2.js → docs-cli-a90_8wuN.js} +1 -1
  51. package/dist/{doctor-completion-mev5PRjN.js → doctor-completion-B6OPl_GZ.js} +2 -2
  52. package/dist/{doctor-completion-B1YCzbvi.js → doctor-completion-BZJWX3Dr.js} +1 -1
  53. package/dist/{doctor-config-flow-Uv41seME.js → doctor-config-flow-30ZEvATb.js} +9 -9
  54. package/dist/entry.js +1 -1
  55. package/dist/{exec-approvals-cli-B4ry9s5r.js → exec-approvals-cli-C3gZAwV8.js} +13 -13
  56. package/dist/extensionAPI.js +2 -2
  57. package/dist/{file-lock-2AecMjCa.js → file-lock-BVUYnlQv.js} +8 -8
  58. package/dist/{fs-safe-B0Is-oLk.js → fs-safe-BdejYjW8.js} +6 -6
  59. package/dist/{gateway-cli-B3JVj_dv.js → gateway-cli-CyhLb-zS.js} +98 -98
  60. package/dist/{gateway-cli-Chnp6icp.js → gateway-cli-DQhYa6AL.js} +10 -10
  61. package/dist/{gateway-rpc-CLzM6ugo.js → gateway-rpc-DNq7EMhm.js} +1 -1
  62. package/dist/{glass-ui-ws-5o8dvEZO.js → glass-ui-ws-CLDbMDPk.js} +8 -8
  63. package/dist/{glass-ui-ws--GjxFRyX.js → glass-ui-ws-SJVljtUx.js} +67 -67
  64. package/dist/{health-D2th0Ip6.js → health-DZ0aipDZ.js} +4 -4
  65. package/dist/{hooks-cli-B4Nvp9AV.js → hooks-cli-BMRj13QU.js} +59 -59
  66. package/dist/{hooks-cli-B_sZth4r.js → hooks-cli-BVtdP5x7.js} +5 -5
  67. package/dist/{image-ops-BzCBIakN.js → image-ops-L70xVnpG.js} +10 -10
  68. package/dist/index.js +52 -52
  69. package/dist/{inspect-U3g9owQ8.js → inspect-CXsOujVt.js} +4 -4
  70. package/dist/{install-safe-path-BwMMOh9z.js → install-safe-path-D5gi-nfu.js} +11 -11
  71. package/dist/{installs-vdi1BESF.js → installs-DF_LhGX6.js} +10 -10
  72. package/dist/{internal-csqU78gW.js → internal-DVCddhhN.js} +9 -9
  73. package/dist/{lifecycle-core-BfmNlC-k.js → lifecycle-core-Bvdl2ShM.js} +5 -5
  74. package/dist/llm-slug-generator.js +2 -2
  75. package/dist/{local-roots-2Jb79HZ8.js → local-roots-CgDCgCuM.js} +1 -1
  76. package/dist/{logs-cli-COZzdFu6.js → logs-cli-mdSEYBKS.js} +7 -7
  77. package/dist/{manager-DyYRwHZt.js → manager-BLg6zbeA.js} +15 -15
  78. package/dist/{manager-BfbQb9qM.js → manager-BhIaahpm.js} +1 -1
  79. package/dist/{manager-Bryhc0Ip.js → manager-BsQIpjy1.js} +1 -1
  80. package/dist/{manager-C5FGNRjL.js → manager-CtDuNn2T.js} +1 -1
  81. package/dist/{memory-DgDnTEcB.js → memory-B4DsKRSc.js} +5 -5
  82. package/dist/{memory-Cypj1lBQ.js → memory-BENbCb4f.js} +2 -2
  83. package/dist/{memory-cli-DB7UIev4.js → memory-cli-BIjwqjBx.js} +2 -2
  84. package/dist/{memory-cli-CfJkD7mO.js → memory-cli-DotHyA76.js} +12 -12
  85. package/dist/{model-DbILYCfo.js → model-DsMHOvMn.js} +1 -1
  86. package/dist/{model-auth-_C07_3Yr.js → model-auth-1EAQvYRv.js} +2 -2
  87. package/dist/{model-catalog-CeqDEWGz.js → model-catalog-DQTmHZK7.js} +3 -3
  88. package/dist/{model-picker-C_f6MALt.js → model-picker-D4TY_tPx.js} +5 -5
  89. package/dist/{model-selection-CCTzD29o.js → model-selection-7wdmO-Iw.js} +1 -1
  90. package/dist/{models-Bpqeds64.js → models-CmToZKBp.js} +2 -2
  91. package/dist/{models-cli-BUWfj5iJ.js → models-cli-CZgkOUZB.js} +55 -55
  92. package/dist/{models-cli-Bc47WFhD.js → models-cli-Di7iKhD4.js} +6 -6
  93. package/dist/{models-config-Dp5-tBqs.js → models-config-CRnTzdFs.js} +8 -8
  94. package/dist/{node-cli-BdjmGI32.js → node-cli-BXv9SEDG.js} +27 -27
  95. package/dist/{node-service-DphkTjBV.js → node-service-CrDVFWQl.js} +1 -1
  96. package/dist/{nodes-cli-BChJzcKY.js → nodes-cli-Cim3ANNU.js} +10 -10
  97. package/dist/{nodes-screen-Cp5QP3ET.js → nodes-screen-De9ma6e1.js} +4 -4
  98. package/dist/{npm-registry-spec-CqVgiBCf.js → npm-registry-spec-YMWTMnm_.js} +9 -9
  99. package/dist/{onboard-BbfERyKU.js → onboard-BXI02b3e.js} +1 -1
  100. package/dist/{onboard-C0nMMiiS.js → onboard-CuLvp4Ds.js} +15 -15
  101. package/dist/{onboard-channels-CMp9YXHC.js → onboard-channels-A6_QP7MR.js} +1 -1
  102. package/dist/{onboard-channels-CmsfVut5.js → onboard-channels-E5NIYGJz.js} +4 -4
  103. package/dist/{onboard-custom-BfHczxx0.js → onboard-custom-BrtjWDlX.js} +3 -3
  104. package/dist/{onboard-helpers-OB_xKQze.js → onboard-helpers---sZ9pdZ.js} +8 -8
  105. package/dist/{onboard-hooks-BA22KYCG.js → onboard-hooks-CtIRdncr.js} +1 -1
  106. package/dist/{onboard-remote-Dv2Uz8Ru.js → onboard-remote-BUB3VPBP.js} +1 -1
  107. package/dist/{onboard-skills-BzxofI4T.js → onboard-skills-Cs3BZ4VJ.js} +3 -3
  108. package/dist/{onboarding-vgZFhH5N.js → onboarding-BWMBA6cP.js} +12 -12
  109. package/dist/{onboarding-DoYMfCjS.js → onboarding-BeYl1Egj.js} +3 -3
  110. package/dist/{onboarding.finalize-Dj0xG8pk.js → onboarding.finalize-Bk-XW8b3.js} +4 -4
  111. package/dist/{onboarding.finalize-BYHDzz2i.js → onboarding.finalize-CH8dBgA2.js} +31 -31
  112. package/dist/{onboarding.gateway-config-CDRLfIZM.js → onboarding.gateway-config-arRNxrI9.js} +8 -8
  113. package/dist/{openai-model-default-Dl21Ivjc.js → openai-model-default-XudD4Xik.js} +2 -2
  114. package/dist/{pairing-cli-C2_Zobhz.js → pairing-cli-NDavTm1_.js} +5 -5
  115. package/dist/{pairing-store-Be-ZQK87.js → pairing-store-BNhJOnWn.js} +1 -1
  116. package/dist/{pairing-token-B703A1U3.js → pairing-token-Dcy37-4s.js} +7 -7
  117. package/dist/{paths-BWqg8NZT.js → paths-DObzwe08.js} +1 -1
  118. package/dist/{pi-auth-json-D-vdh-nY.js → pi-auth-json-Db8XJVGL.js} +6 -6
  119. package/dist/{pi-embedded-C7mJzGIf.js → pi-embedded-BL3_b-H_.js} +6 -52
  120. package/dist/{pi-embedded-helpers-y3vJmW6T.js → pi-embedded-helpers-B5cWV7_y.js} +6 -6
  121. package/dist/{pi-tools.policy-ji-L-Mpv.js → pi-tools.policy-BdGVEMZn.js} +3 -3
  122. package/dist/{plugin-auto-enable-Ctbn2w4Q.js → plugin-auto-enable-B_lNp6yM.js} +1 -1
  123. package/dist/{plugin-registry-pKaJ4ltN.js → plugin-registry-CAdIrLmG.js} +1 -1
  124. package/dist/{plugin-registry-D2ZbwBU_.js → plugin-registry-DovNSdK0.js} +3 -3
  125. package/dist/plugin-sdk/agents/pi-tools.types.d.ts +2 -1
  126. package/dist/plugin-sdk/agents/tools/common.d.ts +0 -30
  127. package/dist/{plugins-cli-uo8lcB7v.js → plugins-cli-JzKO-vmR.js} +5 -5
  128. package/dist/{plugins-cli-CoHiV4BX.js → plugins-cli-ZG4PxNTC.js} +54 -54
  129. package/dist/{ports-ukrEAkOP.js → ports-C3ZSkRGq.js} +1 -1
  130. package/dist/{ports-CB_Iu83U.js → ports-gxLM5ahL.js} +2 -2
  131. package/dist/{program-rzYjZKRz.js → program-BbfU4idg.js} +10 -10
  132. package/dist/{program-context-B1ZbQmLL.js → program-context-ByiEP1Lk.js} +38 -38
  133. package/dist/{prompt-select-styled-F6P-rvFI.js → prompt-select-styled-CWH2Mcrb.js} +4 -4
  134. package/dist/{prompt-select-styled-CX0v66wx.js → prompt-select-styled-DvrG_zWV.js} +38 -38
  135. package/dist/{provider-auth-helpers-_jn9PngO.js → provider-auth-helpers-2x7YxT5F.js} +6 -6
  136. package/dist/{provider-auth-helpers-Ck98bkHV.js → provider-auth-helpers-CMQexdSl.js} +1 -1
  137. package/dist/{push-apns-BtMtpzEm.js → push-apns-CtWwPxRj.js} +1 -1
  138. package/dist/{push-apns-CmeoBcIQ.js → push-apns-eGdGU3r7.js} +4 -4
  139. package/dist/{pw-ai-CQJsGI1b.js → pw-ai-tgngV3iZ.js} +7 -7
  140. package/dist/{qmd-manager-DawTY2mB.js → qmd-manager-qV_04VKG.js} +19 -19
  141. package/dist/{qr-cli-DKowtQcM.js → qr-cli-Vo1XL6B2.js} +3 -3
  142. package/dist/{register.agent-_UqSBmt5.js → register.agent-DZE9NBNx.js} +9 -9
  143. package/dist/{register.agent-0hWBZXD7.js → register.agent-Dwkya1rv.js} +67 -67
  144. package/dist/{register.configure-KrTtvKSp.js → register.configure-CD8WkXo8.js} +8 -8
  145. package/dist/{register.configure-CgQ6sqtQ.js → register.configure-DCpbCHR0.js} +70 -70
  146. package/dist/{register.maintenance-DjZeknO6.js → register.maintenance-Bqjj77CZ.js} +67 -67
  147. package/dist/{register.maintenance-DDSfzFoo.js → register.maintenance-CxVeo_7j.js} +9 -9
  148. package/dist/{register.message-DSwwDcGi.js → register.message-tcJN7-E3.js} +5 -5
  149. package/dist/{register.message-DTZJ5OiL.js → register.message-uhAmNxoO.js} +47 -47
  150. package/dist/{register.onboard-B8k5phG7.js → register.onboard-F6d_Wrv1.js} +25 -25
  151. package/dist/{register.onboard-BToIZTIS.js → register.onboard-Rm5t0yxX.js} +2 -2
  152. package/dist/{register.setup-BdUewOo1.js → register.setup-C2datfZK.js} +2 -2
  153. package/dist/{register.setup-1fexz2oW.js → register.setup-CcHxpsUT.js} +28 -28
  154. package/dist/{register.status-health-sessions-eBaeXIvo.js → register.status-health-sessions-DFVjS9Hy.js} +3 -3
  155. package/dist/{register.status-health-sessions-0RyA2cXf.js → register.status-health-sessions-DIUDRMqm.js} +41 -41
  156. package/dist/{register.subclis-tX3BslaT.js → register.subclis-D9uGnVGm.js} +9 -9
  157. package/dist/{replies-D3cffD5N.js → replies-DzsYQ8Md.js} +1 -1
  158. package/dist/{reply-prefix-CtZtkTJK.js → reply-prefix-BFNeXT65.js} +1 -1
  159. package/dist/{resolve-route-B0i_o4Fo.js → resolve-route-Zww0Y-HJ.js} +1 -1
  160. package/dist/{routes-zpAUwtCG.js → routes-C-rIjd8Z.js} +10 -10
  161. package/dist/{rpc-DhsDKVo-.js → rpc-BkFkeuJ6.js} +1 -1
  162. package/dist/{run-main-DIl_Kl0B.js → run-main-HkbyvIDy.js} +17 -17
  163. package/dist/{sandbox-DQCaejcD.js → sandbox-Dx8IMw-E.js} +18 -18
  164. package/dist/{sandbox-cli-CbvyZs1z.js → sandbox-cli-BFkLKdlk.js} +13 -13
  165. package/dist/{security-cli-CbJxNYZx.js → security-cli-BEpQ_rO1.js} +29 -29
  166. package/dist/{send-QscYkkNh.js → send-Cxu1tl56.js} +7 -7
  167. package/dist/{server-context-CXVq7gZ7.js → server-context--mmXXEkE.js} +5 -5
  168. package/dist/{server-methods-CpFBGxWI.js → server-methods-DJ8eiTu1.js} +6 -6
  169. package/dist/{server-methods-DPxjPGr0.js → server-methods-RtjWUhkv.js} +58 -58
  170. package/dist/{server-node-events-2SUW10k3.js → server-node-events-CT8fFtBQ.js} +6 -6
  171. package/dist/{server-node-events-B_BPbi7z.js → server-node-events-DQ1iCUgY.js} +48 -48
  172. package/dist/{service-Cm4-5AH9.js → service-CyEDtYLq.js} +15 -15
  173. package/dist/{session-dirs-BypCYFN3.js → session-dirs-CXErIzZq.js} +2 -2
  174. package/dist/{session-utils-lXjJoBxe.js → session-utils-BZnPW904.js} +14 -14
  175. package/dist/{sessions-aSo5jsmg.js → sessions-optZRB57.js} +10 -10
  176. package/dist/{shared-DDX_4ypC.js → shared-Ctok0Bcs.js} +1 -1
  177. package/dist/{shared-BI-gOZsD.js → shared-DJFwvlUi.js} +3 -3
  178. package/dist/{skill-commands-C9WuAfb2.js → skill-commands-yPirQFOb.js} +4 -4
  179. package/dist/{skill-scanner-CFqMkfZW.js → skill-scanner-BBwesm0w.js} +5 -5
  180. package/dist/{skills-CYcBtLGH.js → skills-BwDmcZdt.js} +4 -4
  181. package/dist/{skills-cli-BgyaAQoj.js → skills-cli-gC5ETdly.js} +7 -7
  182. package/dist/{skills-install-MGsx6q5Z.js → skills-install-CLN_Ks5r.js} +3 -3
  183. package/dist/{skills-remote-BcRQTDsZ.js → skills-remote-bz71Bstn.js} +3 -3
  184. package/dist/{skills-status-CbSdFlvm.js → skills-status-iltfI_bO.js} +1 -1
  185. package/dist/{sqlite-BpogPlQW.js → sqlite-Cod7C5ba.js} +5 -5
  186. package/dist/{status-DbNNmkNB.js → status-CoqGtHXq.js} +1 -1
  187. package/dist/{status-BVYDUlnp.js → status-Cpz64Vy_.js} +1 -1
  188. package/dist/{status-C-r9JpJf.js → status-CuMBp54T.js} +23 -23
  189. package/dist/{status-DIJvpgEm.js → status-EAjzyREy.js} +3 -3
  190. package/dist/{status.update-EyslEZkn.js → status.update-F4CbQCxF.js} +3 -3
  191. package/dist/{subagent-registry-DWemyjbN.js → subagent-registry-Dkif1XYO.js} +6 -52
  192. package/dist/{symi-root-DeCVdZB4.js → symi-root-BQ0IpoW2.js} +2 -2
  193. package/dist/{synthesis-BdTiornP.js → synthesis-B6tq6-9G.js} +2 -2
  194. package/dist/{synthesis-C7RlvHEs.js → synthesis-CKKZrrYd.js} +45 -45
  195. package/dist/{synthesis-BxYzOZUA.js → synthesis-CpsURf9J.js} +4 -4
  196. package/dist/{synthesis-DQ7Y6OE0.js → synthesis-mgcCKSzl.js} +2 -2
  197. package/dist/{system-cli-DgOvK_kU.js → system-cli-DMKzffe3.js} +7 -7
  198. package/dist/{systemd-B2nTr3Y2.js → systemd-DRpQb_L1.js} +5 -5
  199. package/dist/{systemd-hints-DtOWJT_2.js → systemd-hints-DR4u43WA.js} +6 -6
  200. package/dist/{systemd-linger-CWi5l8Nt.js → systemd-linger-BQQl5RXN.js} +1 -1
  201. package/dist/{tui-D7ms_iQ4.js → tui-CqrM_Fj2.js} +7 -7
  202. package/dist/{tui-cli-DNvAqIYN.js → tui-cli-BsqRmqTX.js} +19 -19
  203. package/dist/{unified-runner-DPWNhQQA.js → unified-runner-DAWxqcS9.js} +6 -52
  204. package/dist/{unified-runner-BIUJm_Iv.js → unified-runner-DZAjU6aB.js} +104 -150
  205. package/dist/{update-pddgyV7i.js → update-CWEjB8uS.js} +3 -3
  206. package/dist/{update-check-CduiCxPo.js → update-check-CxBGAP1E.js} +5 -5
  207. package/dist/{update-cli-BM-A3cIZ.js → update-cli-Bgk30eoA.js} +9 -9
  208. package/dist/{update-cli-GKXF83cS.js → update-cli-t7W6vcQY.js} +77 -77
  209. package/dist/{update-runner-BMYqz1dl.js → update-runner-C4Uy75eP.js} +15 -15
  210. package/dist/{webhooks-cli-BPPmnDCj.js → webhooks-cli-Dp-pp0Sf.js} +4 -4
  211. package/dist/{with-timeout-D1qzvPE0.js → with-timeout-B5zAsivw.js} +1 -1
  212. package/dist/{workspace-dirs-DCICLTHx.js → workspace-dirs-jKFQf7of.js} +1 -1
  213. package/dist/{wsl-Sed675xh.js → wsl-DMA0sTvh.js} +2 -2
  214. package/package.json +1 -1
  215. package/dist/plugin-sdk/agents/tools/availability-filter.d.ts +0 -10
@@ -3,91 +3,91 @@ import { D as shouldLogVerbose, H as createInternalHookEvent, M as getChildLogge
3
3
  import { _ as resolveStateDir, u as resolveGatewayPort } from "./paths-By0XjHBk.js";
4
4
  import { S as isPlainObject, _ as shortenHomeInString, b as sliceUtf16Safe, c as escapeRegExp, h as resolveUserPath, r as clampInt, t as CONFIG_DIR, u as isRecord, v as shortenHomePath, x as truncateUtf16Safe, y as sleep } from "./utils-CTPsqyE_.js";
5
5
  import { d as createNonExitingRuntime, f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
6
- import { T as resolveAuthProfileDisplayLabel, a as markAuthProfileFailure, b as ensureAuthProfileStore, g as markAuthProfileGood, h as listProfilesForProvider, i as isProfileInCooldown, n as resolveAuthProfileOrder, o as markAuthProfileUsed, r as getSoonestCooldownExpiry, w as resolveAuthStorePathForDisplay } from "./auth-profiles-D5nYBj_Z.js";
6
+ import { T as resolveAuthProfileDisplayLabel, a as markAuthProfileFailure, b as ensureAuthProfileStore, g as markAuthProfileGood, h as listProfilesForProvider, i as isProfileInCooldown, n as resolveAuthProfileOrder, o as markAuthProfileUsed, r as getSoonestCooldownExpiry, w as resolveAuthStorePathForDisplay } from "./auth-profiles-Ce7R_25e.js";
7
7
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
8
8
  import { S as resolveThreadParentSessionKey, _ as isAcpSessionKey, a as classifySessionKeyShape, b as isSubagentSessionKey, c as resolveAgentIdFromSessionKey, g as getSubagentDepth, l as resolveThreadSessionKeys, m as normalizeAccountId, o as normalizeAgentId, p as DEFAULT_ACCOUNT_ID, r as buildAgentMainSessionKey, s as normalizeMainKey, t as DEFAULT_AGENT_ID, u as sanitizeAgentId, x as parseAgentSessionKey, y as isCronSessionKey } from "./session-key-DUSb7CCb.js";
9
- import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-DeCVdZB4.js";
9
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-BQ0IpoW2.js";
10
10
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-DuYbft0z.js";
11
- import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentConfig, s as resolveAgentSkillsFilter, w as filterBootstrapFilesForSession } from "./agent-scope-Bnsyyeci.js";
12
- import { C as DEFAULT_MODEL, S as DEFAULT_CONTEXT_TOKENS, _ as resolveModelRefFromString, a as findNormalizedProviderValue, b as resolveThinkingDefault, c as modelKey, h as resolveDefaultModelForAgent, l as normalizeModelRef$1, m as resolveConfiguredModelRef, n as buildConfiguredAllowlistKeys, r as buildModelAliasIndex, t as buildAllowedModelSet, u as normalizeProviderId, w as DEFAULT_PROVIDER, x as getProviderAdapter, y as resolveSubagentSpawnModelSelection } from "./model-selection-CCTzD29o.js";
11
+ import { C as ensureAgentWorkspace, E as loadWorkspaceBootstrapFiles, c as resolveAgentWorkspaceDir, d as resolveSessionAgentId, f as resolveSessionAgentIds, h as DEFAULT_BOOTSTRAP_FILENAME, i as resolveAgentDir, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, r as resolveAgentConfig, s as resolveAgentSkillsFilter, w as filterBootstrapFilesForSession } from "./agent-scope-DOrZjOnW.js";
12
+ import { C as DEFAULT_MODEL, S as DEFAULT_CONTEXT_TOKENS, _ as resolveModelRefFromString, a as findNormalizedProviderValue, b as resolveThinkingDefault, c as modelKey, h as resolveDefaultModelForAgent, l as normalizeModelRef$1, m as resolveConfiguredModelRef, n as buildConfiguredAllowlistKeys, r as buildModelAliasIndex, t as buildAllowedModelSet, u as normalizeProviderId, w as DEFAULT_PROVIDER, x as getProviderAdapter, y as resolveSubagentSpawnModelSelection } from "./model-selection-7wdmO-Iw.js";
13
13
  import { n as normalizeSecretInput } from "./normalize-secret-input-DjGU5EXe.js";
14
14
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-CNp4GTiH.js";
15
15
  import { t as resolveSymiAgentDir } from "./agent-paths-BbZSGrUA.js";
16
- import { A as isRawApiErrorPayload, B as sanitizeGoogleTurnOrdering, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, I as buildBootstrapContextFiles, L as ensureSessionHeader, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, R as resolveBootstrapMaxChars, S as isBillingAssistantError, T as isContextOverflowError, _ as formatAssistantErrorText, a as normalizeTextForComparison, b as getApiErrorPayloadFingerprint, c as sanitizeToolResultImages, d as extractToolResultId, f as downgradeOpenAIReasoningBlocks, g as classifyFailoverReason, h as BILLING_ERROR_USER_MESSAGE, i as isMessagingToolDuplicateNormalized, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as resolveImageSanitizationLimits, m as isGoogleModelApi, n as validateGeminiTurns, o as sanitizeSessionMessagesImages, p as isAntigravityClaude, r as pickFallbackThinkingLevel, s as sanitizeImageBlocks, t as validateAnthropicTurns, u as extractToolCallsFromAssistant, v as formatBillingErrorMessage, w as isCompactionFailureError, x as isAuthAssistantError, y as formatRawAssistantErrorForUi, z as resolveBootstrapTotalMaxChars } from "./pi-embedded-helpers-y3vJmW6T.js";
17
- import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, C as unsetConfigValueAtPath, N as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, f as parseDurationMs, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-D-PYSlE8.js";
16
+ import { A as isRawApiErrorPayload, B as sanitizeGoogleTurnOrdering, C as isCloudCodeAssistFormatError, D as isFailoverErrorMessage, E as isFailoverAssistantError, F as sanitizeUserFacingText, I as buildBootstrapContextFiles, L as ensureSessionHeader, M as isTransientHttpError, N as parseImageDimensionError, O as isLikelyContextOverflowError, P as parseImageSizeError, R as resolveBootstrapMaxChars, S as isBillingAssistantError, T as isContextOverflowError, _ as formatAssistantErrorText, a as normalizeTextForComparison, b as getApiErrorPayloadFingerprint, c as sanitizeToolResultImages, d as extractToolResultId, f as downgradeOpenAIReasoningBlocks, g as classifyFailoverReason, h as BILLING_ERROR_USER_MESSAGE, i as isMessagingToolDuplicateNormalized, j as isTimeoutErrorMessage, k as isRateLimitAssistantError, l as resolveImageSanitizationLimits, m as isGoogleModelApi, n as validateGeminiTurns, o as sanitizeSessionMessagesImages, p as isAntigravityClaude, r as pickFallbackThinkingLevel, s as sanitizeImageBlocks, t as validateAnthropicTurns, u as extractToolCallsFromAssistant, v as formatBillingErrorMessage, w as isCompactionFailureError, x as isAuthAssistantError, y as formatRawAssistantErrorForUi, z as resolveBootstrapTotalMaxChars } from "./pi-embedded-helpers-B5cWV7_y.js";
17
+ import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, C as unsetConfigValueAtPath, N as VERSION, S as setConfigValueAtPath, _ as resetConfigOverrides, b as getConfigValueAtPath, c as resolveConfigSnapshotHash, f as parseDurationMs, g as getConfigOverrides, h as validateJsonSchemaValue, i as loadConfig, l as writeConfigFile, o as readConfigFileSnapshot, u as validateConfigObjectWithPlugins, v as setConfigOverride, x as parseConfigPath, y as unsetConfigOverride } from "./config-D7SS4vdk.js";
18
18
  import { t as parseBooleanValue } from "./boolean-CbZoNRMn.js";
19
19
  import { t as isTruthyEnvValue } from "./env-BRnPI9sO.js";
20
20
  import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell } from "./shell-env-Dc3iU7HK.js";
21
21
  import { a as safeStatSync, c as applyTestPluginDefaults, d as resolveEnableState, f as resolveMemorySlotDecision, h as isDangerousHostEnvVarName, i as isPathInside, n as loadPluginManifestRegistry, r as discoverSymiPlugins, u as normalizePluginsConfig } from "./manifest-registry-D1MLZEjS.js";
22
22
  import { a as isPathInsideWithRealpath } from "./legacy-names-BQ9vKISY.js";
23
- import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-DQCaejcD.js";
24
- import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-pFBxO63W.js";
25
- import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context-CXVq7gZ7.js";
23
+ import { C as stripPluginOnlyAllowlist, S as resolveToolProfilePolicy, T as matchesAnyGlobPattern, _ as collectExplicitAllowlist, a as ensureSandboxWorkspaceForSession, b as mergeAlsoAllowPolicy, c as resolveSandboxRuntimeStatus, d as getBridgeAuthForPort, g as buildPluginToolGroups, h as applyOwnerOnlyToolPolicy, o as resolveSandboxContext, v as expandPolicyWithPluginGroups, w as compileGlobPatterns, x as normalizeToolName } from "./sandbox-Dx8IMw-E.js";
24
+ import { T as DEFAULT_AI_SNAPSHOT_MAX_CHARS } from "./chrome-rzK8edU7.js";
25
+ import { i as resolveBrowserConfig, m as resolveBrowserControlAuth } from "./server-context--mmXXEkE.js";
26
26
  import { l as parseFrontmatterBlock } from "./frontmatter-B_jqcova.js";
27
- import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-CYcBtLGH.js";
28
- import { n as getMediaDir, r as saveMediaBuffer } from "./routes-zpAUwtCG.js";
27
+ import { a as resolveSkillsPromptForRun, d as resolveSandboxInputPath, h as applySkillEnvOverridesFromSnapshot, i as loadWorkspaceSkillEntries, l as assertMediaNotDataUrl, m as applySkillEnvOverrides, p as resolveSandboxedMediaSource, r as buildWorkspaceSkillSnapshot, u as assertSandboxPath } from "./skills-BwDmcZdt.js";
28
+ import { n as getMediaDir, r as saveMediaBuffer } from "./routes-C-rIjd8Z.js";
29
29
  import { n as formatErrorMessage, r as formatUncaughtError, t as extractErrorCode } from "./errors-bI7Tdx75.js";
30
- import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BWqg8NZT.js";
30
+ import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-DObzwe08.js";
31
31
  import { i as isBlockedHostnameOrIp, o as normalizeHostname, t as SsrFBlockedError } from "./ssrf-DOZRI5XH.js";
32
- import { _ as mediaKindFromMime, c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, h as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as normalizeMimeType$1, p as kindFromMime, s as resizeToJpeg, u as getFileExtension } from "./image-ops-BzCBIakN.js";
33
- import { C as capArrayByJsonBytes, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields } from "./sessions-aSo5jsmg.js";
32
+ import { _ as mediaKindFromMime, c as detectMime, d as imageMimeFromFormat, f as isAudioFileName, h as MAX_IMAGE_BYTES, i as getImageMetadata, l as extensionForMime, m as normalizeMimeType$1, p as kindFromMime, s as resizeToJpeg, u as getFileExtension } from "./image-ops-L70xVnpG.js";
33
+ import { C as capArrayByJsonBytes, F as resolveSessionResetType, H as resolveMainSessionKey, I as resolveThreadFlag, J as acquireSessionWriteLock, L as DEFAULT_RESET_TRIGGERS, M as evaluateSessionFreshness, N as resolveChannelResetConfig, P as resolveSessionResetPolicy, R as resolveFreshSessionTotalTokens, S as archiveSessionTranscripts, W as deriveSessionMetaPatch, X as resolveSessionLockMaxHoldFromTimeout, _ as mergeDeliveryContext, a as resolveAndPersistSessionFile, c as recordSessionMetaFromInbound, d as updateSessionStore, f as updateSessionStoreEntry, g as deliveryContextKey, h as deliveryContextFromSession, j as resolveSessionKey, m as resolveCacheTtlMs$1, o as loadSessionStore, p as isCacheEnabled, q as resolveGroupSessionKey, r as appendAssistantMessageToSessionTranscript, s as readSessionUpdatedAt, t as extractDeliveryInfo, u as updateLastRoute, v as normalizeDeliveryContext, y as normalizeSessionDeliveryFields } from "./sessions-optZRB57.js";
34
34
  import { c as normalizeStringEntries, i as resolveChannelGroupRequireMention, l as normalizeStringEntriesLower, n as listChannelDocks, o as normalizeAtHashSlug, r as resolveChannelGroupPolicy, s as normalizeHyphenSlug, t as getChannelDock } from "./dock-hF45sewN.js";
35
35
  import { a as isInternalMessageChannel, c as listDeliverableMessageChannels, h as GATEWAY_CLIENT_NAMES, l as normalizeMessageChannel, m as GATEWAY_CLIENT_MODES, n as isDeliverableMessageChannel, o as isMarkdownCapableMessageChannel, p as GATEWAY_CLIENT_IDS, t as INTERNAL_MESSAGE_CHANNEL, u as resolveGatewayMessageChannel } from "./message-channel-DgjXWzf-.js";
36
36
  import { t as normalizeChatType } from "./chat-type-CUJqUqwu.js";
37
37
  import { n as resolveConversationLabel } from "./conversation-label-CffvEjpp.js";
38
38
  import { a as resolveSlackAccount, c as resolveSlackBotToken, n as listChannelPlugins, r as normalizeChannelId$1, s as resolveSlackAppToken, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
39
- import { _ as resolveSlackChannelId, a as markdownToIRWithMeta, c as MediaFetchError, d as createSlackWebClient, f as resolveSlackWebClientOptions, g as parseSlackTarget, h as buildSlackBlocksFallbackText, i as renderMarkdownWithMarkers, l as fetchRemoteMedia, m as validateSlackBlocksArray, o as getDefaultLocalRoots, p as parseSlackBlocksInput, s as loadWebMedia, t as sendMessageSlack, u as readResponseWithLimit } from "./send-QscYkkNh.js";
39
+ import { _ as resolveSlackChannelId, a as markdownToIRWithMeta, c as MediaFetchError, d as createSlackWebClient, f as resolveSlackWebClientOptions, g as parseSlackTarget, h as buildSlackBlocksFallbackText, i as renderMarkdownWithMarkers, l as fetchRemoteMedia, m as validateSlackBlocksArray, o as getDefaultLocalRoots, p as parseSlackBlocksInput, s as loadWebMedia, t as sendMessageSlack, u as readResponseWithLimit } from "./send-Cxu1tl56.js";
40
40
  import { c as resolveStorePath, i as resolveSessionTranscriptPath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, t as resolveDefaultSessionStorePath } from "./paths-BtvQ7JvU.js";
41
41
  import { i as normalizeInputProvenance, n as applyInputProvenanceToUserMessage, r as hasInterSessionUserProvenance } from "./input-provenance-Dfn-vEsu.js";
42
42
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-x1D4Vniz.js";
43
43
  import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels, u as resolveResponseUsageMode } from "./thinking-COroyVA5.js";
44
44
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-0yh2UnJq.js";
45
- import { c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-C79-Umbk.js";
45
+ import { c as normalizeChannelTargetInput, d as parseReplyDirectives, f as MEDIA_TOKEN_RE, g as initializeGlobalHookRunner, h as getGlobalHookRunner, l as normalizeTargetForProvider, m as parseInlineDirectives$1, o as normalizeReplyPayloadsForDelivery, p as splitMediaFromOutput, s as buildTargetResolverSignature, t as deliverOutboundPayloads, u as throwIfAborted } from "./deliver-DB4v0Tyl.js";
46
46
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-DbT9t0Sh.js";
47
47
  import { r as getDiagnosticSessionState } from "./diagnostic-session-state-DnkpMfCl.js";
48
- import { i as resolveApiKeyForProvider, n as getCustomProviderApiKey, o as resolveEnvApiKey, r as requireApiKey, s as resolveModelAuthMode, t as getApiKeyForModel } from "./model-auth-_C07_3Yr.js";
49
- import { b as OLLAMA_NATIVE_BASE_URL, c as normalizeGoogleModelId, t as ensureSymiModelsJson, x as createOllamaStreamFn } from "./models-config-Dp5-tBqs.js";
50
- import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-D-vdh-nY.js";
48
+ import { i as resolveApiKeyForProvider, n as getCustomProviderApiKey, o as resolveEnvApiKey, r as requireApiKey, s as resolveModelAuthMode, t as getApiKeyForModel } from "./model-auth-1EAQvYRv.js";
49
+ import { b as OLLAMA_NATIVE_BASE_URL, c as normalizeGoogleModelId, t as ensureSymiModelsJson, x as createOllamaStreamFn } from "./models-config-CRnTzdFs.js";
50
+ import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-Db8XJVGL.js";
51
51
  import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o as derivePromptTokens, r as loadSessionCostSummary } from "./session-cost-usage-D6Ocwmq1.js";
52
- import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-lXjJoBxe.js";
53
- import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-D1qzvPE0.js";
54
- import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-CtZtkTJK.js";
55
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DgDnTEcB.js";
56
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-DyYRwHZt.js";
57
- import { f as runTasksWithConcurrency } from "./internal-csqU78gW.js";
52
+ import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-BZnPW904.js";
53
+ import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-B5zAsivw.js";
54
+ import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
55
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-B4DsKRSc.js";
56
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-BLg6zbeA.js";
57
+ import { f as runTasksWithConcurrency } from "./internal-DVCddhhN.js";
58
58
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BxfKjCUx.js";
59
59
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CS1Tvb3z.js";
60
60
  import { n as fetchWithTimeout, t as bindAbortRelay } from "./fetch-timeout-BhdrdVp5.js";
61
61
  import { t as fetchWithSsrFGuard } from "./fetch-guard-JHxT9355.js";
62
- import { n as getDefaultMediaLocalRoots } from "./local-roots-2Jb79HZ8.js";
62
+ import { n as getDefaultMediaLocalRoots } from "./local-roots-CgDCgCuM.js";
63
63
  import { i as resolveNativeSkillsEnabled, n as isRestartEnabled, r as resolveNativeCommandsEnabled, t as isCommandFlagEnabled } from "./commands-DUzLGgEZ.js";
64
- import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig } from "./commands-registry-BjcGLk4v.js";
65
- import { zt as SESSION_LABEL_MAX_LENGTH } from "./client-T5P9umyG.js";
66
- import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-CW8U1BPq.js";
64
+ import { a as shouldHandleTextCommands, i as normalizeCommandBody, n as listChatCommands, r as listChatCommandsForConfig } from "./commands-registry-VfAQOVZO.js";
65
+ import { zt as SESSION_LABEL_MAX_LENGTH } from "./client-BzUAFrla.js";
66
+ import { a as randomIdempotencyKey, d as resolveLeastPrivilegeOperatorScopesForMethod, n as callGateway, r as callGatewayLeastPrivilege } from "./call-BouPakqe.js";
67
67
  import { n as resolveToolDisplay, t as formatToolDetail } from "./tool-display-DFOL6UQ9.js";
68
68
  import { n as formatTimeAgo } from "./format-relative-D4GQsWlP.js";
69
69
  import { r as normalizeInboundTextNewlines, t as finalizeInboundContext } from "./inbound-context-B7Rvs8pK.js";
70
- import { g as getSkillsSnapshotVersion, h as ensureSkillsWatcher, t as getRemoteSkillEligibility } from "./skills-remote-BcRQTDsZ.js";
70
+ import { g as getSkillsSnapshotVersion, h as ensureSkillsWatcher, t as getRemoteSkillEligibility } from "./skills-remote-bz71Bstn.js";
71
71
  import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-ClQLvlCW.js";
72
- import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-CeqDEWGz.js";
73
- import { i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames } from "./skill-commands-C9WuAfb2.js";
74
- import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-Be-ZQK87.js";
72
+ import { n as loadModelCatalog, r as modelSupportsVision, t as findModelInCatalog } from "./model-catalog-DQTmHZK7.js";
73
+ import { i as resolveSkillCommandInvocation, n as listSkillCommandsForAgents, r as listSkillCommandsForWorkspace, t as listReservedChatSlashCommandNames } from "./skill-commands-yPirQFOb.js";
74
+ import { a as removeChannelAllowFromStoreEntry, c as listPairingChannels, i as readChannelAllowFromStore, o as upsertChannelPairingRequest, t as addChannelAllowFromStoreEntry } from "./pairing-store-BNhJOnWn.js";
75
75
  import { _ as getTrustedSafeBinDirs, b as buildSafeShellCommand, d as resolveExecApprovals, f as resolveExecApprovalsFromFile, g as resolveSafeBins, h as evaluateShellAllowlist, i as maxAsk, l as recordAllowlistUse, n as addAllowlistEntry, o as minSecurity, u as requiresExecApproval, y as buildSafeBinsShellCommand } from "./exec-approvals-DioSaIeH.js";
76
- import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-Cp5QP3ET.js";
76
+ import { a as canvasSnapshotTempPath, c as parseCameraClipPayload, d as writeCameraClipPayloadToFile, f as writeUrlToFile, g as normalizePathPrepend, h as mergePathPrepend, i as parseEnvPairs, l as parseCameraSnapPayload, m as applyPathPrepend, n as screenRecordTempPath, o as parseCanvasSnapshotPayload, p as buildNodeShellCommand, r as writeScreenRecordToFile, s as cameraTempPath, t as parseScreenRecordPayload, u as writeBase64ToFile } from "./nodes-screen-De9ma6e1.js";
77
77
  import { n as parseNodeList, r as parsePairingList, t as resolveNodeIdFromCandidates } from "./node-match-N7nsmfM6.js";
78
78
  import { t as formatDurationCompact$1 } from "./format-duration-CIjmjQST.js";
79
79
  import { n as recordCommandPoll, r as resetCommandPollCount } from "./command-poll-backoff-9ygk6nTV.js";
80
80
  import { i as resolveModelCostConfig, n as formatTokenCount$2, r as formatUsd, t as estimateUsageCost } from "./usage-format-_37Bn-Jb.js";
81
81
  import { c as resolveGatewayLaunchAgentLabel, d as resolveGatewaySystemdServiceName } from "./constants-ChnKXZKi.js";
82
- import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-y53w3Jzy.js";
82
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-Ry7Le68N.js";
83
83
  import { i as parseAbsoluteTimeMs, r as resolveDefaultCronStaggerMs, t as normalizeCronStaggerMs } from "./stagger-DUVGiPYV.js";
84
84
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-DF4bza2Q.js";
85
- import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-B0i_o4Fo.js";
85
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-Zww0Y-HJ.js";
86
86
  import { t as parseTimeoutMs } from "./parse-timeout-DUdeaMqF.js";
87
- import { n as registerMemoryCli } from "./memory-cli-CfJkD7mO.js";
88
- import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-D3cffD5N.js";
89
- import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-ji-L-Mpv.js";
90
- import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-DbILYCfo.js";
87
+ import { n as registerMemoryCli } from "./memory-cli-DotHyA76.js";
88
+ import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-DzsYQ8Md.js";
89
+ import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-BdGVEMZn.js";
90
+ import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-DsMHOvMn.js";
91
91
  import { createRequire } from "node:module";
92
92
  import process$1 from "node:process";
93
93
  import { fileURLToPath } from "node:url";
@@ -96,7 +96,7 @@ import path from "node:path";
96
96
  import fs, { constants, existsSync, statSync } from "node:fs";
97
97
  import os, { homedir } from "node:os";
98
98
  import JSON5 from "json5";
99
- import fsPromises from "node:fs/promises";
99
+ import fs$1 from "node:fs/promises";
100
100
  import { execFileSync, spawn, spawnSync } from "node:child_process";
101
101
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
102
102
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
@@ -1846,7 +1846,7 @@ async function imageResult(params) {
1846
1846
  }, params.label, params.imageSanitization);
1847
1847
  }
1848
1848
  async function imageResultFromFile(params) {
1849
- const buf = await fsPromises.readFile(params.path);
1849
+ const buf = await fs$1.readFile(params.path);
1850
1850
  const mimeType = await detectMime({ buffer: buf.slice(0, 256) }) ?? "image/png";
1851
1851
  return await imageResult({
1852
1852
  label: params.label,
@@ -5807,7 +5807,7 @@ async function routeReply(params) {
5807
5807
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
5808
5808
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
5809
5809
  try {
5810
- const { deliverOutboundPayloads } = await import("./deliver-C79-Umbk.js").then((n) => n.n);
5810
+ const { deliverOutboundPayloads } = await import("./deliver-DB4v0Tyl.js").then((n) => n.n);
5811
5811
  return {
5812
5812
  ok: true,
5813
5813
  messageId: (await deliverOutboundPayloads({
@@ -11648,7 +11648,7 @@ var MediaAttachmentCache = class {
11648
11648
  const size = await this.ensureLocalStat(entry);
11649
11649
  if (entry.resolvedPath) {
11650
11650
  if (size !== void 0 && size > params.maxBytes) throw new MediaUnderstandingSkipError("maxBytes", `Attachment ${params.attachmentIndex + 1} exceeds maxBytes ${params.maxBytes}`);
11651
- const buffer = await fsPromises.readFile(entry.resolvedPath);
11651
+ const buffer = await fs$1.readFile(entry.resolvedPath);
11652
11652
  entry.buffer = buffer;
11653
11653
  entry.bufferMime = entry.bufferMime ?? entry.attachment.mime ?? await detectMime({
11654
11654
  buffer,
@@ -11718,10 +11718,10 @@ var MediaAttachmentCache = class {
11718
11718
  prefix: "symi-media",
11719
11719
  extension: path.extname(bufferResult.fileName || "") || ""
11720
11720
  });
11721
- await fsPromises.writeFile(tmpPath, bufferResult.buffer);
11721
+ await fs$1.writeFile(tmpPath, bufferResult.buffer);
11722
11722
  entry.tempPath = tmpPath;
11723
11723
  entry.tempCleanup = async () => {
11724
- await fsPromises.unlink(tmpPath).catch(() => {});
11724
+ await fs$1.unlink(tmpPath).catch(() => {});
11725
11725
  };
11726
11726
  return {
11727
11727
  path: tmpPath,
@@ -11768,12 +11768,12 @@ var MediaAttachmentCache = class {
11768
11768
  if (entry.statSize !== void 0) return entry.statSize;
11769
11769
  try {
11770
11770
  const currentPath = entry.resolvedPath;
11771
- const stat = await fsPromises.stat(currentPath);
11771
+ const stat = await fs$1.stat(currentPath);
11772
11772
  if (!stat.isFile()) {
11773
11773
  entry.resolvedPath = void 0;
11774
11774
  return;
11775
11775
  }
11776
- const canonicalPath = await fsPromises.realpath(currentPath).catch(() => currentPath);
11776
+ const canonicalPath = await fs$1.realpath(currentPath).catch(() => currentPath);
11777
11777
  if (!isInboundPathAllowed({
11778
11778
  filePath: canonicalPath,
11779
11779
  roots: await this.getCanonicalLocalPathRoots()
@@ -11795,7 +11795,7 @@ var MediaAttachmentCache = class {
11795
11795
  if (this.canonicalLocalPathRoots) return await this.canonicalLocalPathRoots;
11796
11796
  this.canonicalLocalPathRoots = (async () => mergeInboundPathRoots(this.localPathRoots, await Promise.all(this.localPathRoots.map(async (root) => {
11797
11797
  if (root.includes("*")) return root;
11798
- return await fsPromises.realpath(root).catch(() => root);
11798
+ return await fs$1.realpath(root).catch(() => root);
11799
11799
  }))))();
11800
11800
  return await this.canonicalLocalPathRoots;
11801
11801
  }
@@ -11866,7 +11866,7 @@ function formatAudioTranscripts(outputs) {
11866
11866
  async function fileExists(filePath) {
11867
11867
  if (!filePath) return false;
11868
11868
  try {
11869
- await fsPromises.stat(filePath);
11869
+ await fs$1.stat(filePath);
11870
11870
  return true;
11871
11871
  } catch {
11872
11872
  return false;
@@ -11966,7 +11966,7 @@ async function resolveCliOutput(params) {
11966
11966
  const commandId = commandBase(params.command);
11967
11967
  const fileOutput = commandId === "whisper-cli" ? resolveWhisperCppOutputPath(params.args) : commandId === "whisper" ? resolveWhisperOutputPath(params.args, params.mediaPath) : null;
11968
11968
  if (fileOutput && await fileExists(fileOutput)) try {
11969
- const content = await fsPromises.readFile(fileOutput, "utf8");
11969
+ const content = await fs$1.readFile(fileOutput, "utf8");
11970
11970
  if (content.trim()) return content.trim();
11971
11971
  } catch {}
11972
11972
  if (commandId === "gemini") {
@@ -12257,7 +12257,7 @@ async function runCliEntry(params) {
12257
12257
  maxBytes,
12258
12258
  timeoutMs
12259
12259
  });
12260
- const outputDir = await fsPromises.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
12260
+ const outputDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
12261
12261
  const mediaPath = pathResult.path;
12262
12262
  const outputBase = path.join(outputDir, path.parse(mediaPath).name);
12263
12263
  const templCtx = {
@@ -12291,7 +12291,7 @@ async function runCliEntry(params) {
12291
12291
  model: command
12292
12292
  };
12293
12293
  } finally {
12294
- await fsPromises.rm(outputDir, {
12294
+ await fs$1.rm(outputDir, {
12295
12295
  recursive: true,
12296
12296
  force: true
12297
12297
  }).catch(() => {});
@@ -12335,9 +12335,9 @@ function candidateBinaryNames(name) {
12335
12335
  }
12336
12336
  async function isExecutable$1(filePath) {
12337
12337
  try {
12338
- if (!(await fsPromises.stat(filePath)).isFile()) return false;
12338
+ if (!(await fs$1.stat(filePath)).isFile()) return false;
12339
12339
  if (process.platform === "win32") return true;
12340
- await fsPromises.access(filePath, constants.X_OK);
12340
+ await fs$1.access(filePath, constants.X_OK);
12341
12341
  return true;
12342
12342
  } catch {
12343
12343
  return false;
@@ -14041,7 +14041,7 @@ async function createModelSelectionState(params) {
14041
14041
  }
14042
14042
  }
14043
14043
  if (sessionEntry && sessionStore && sessionKey && sessionEntry.authProfileOverride) {
14044
- const { ensureAuthProfileStore } = await import("./auth-profiles-D5nYBj_Z.js").then((n) => n.t);
14044
+ const { ensureAuthProfileStore } = await import("./auth-profiles-Ce7R_25e.js").then((n) => n.t);
14045
14045
  const profile = ensureAuthProfileStore(void 0, { allowKeychainPrompt: false }).profiles[sessionEntry.authProfileOverride];
14046
14046
  const providerKey = normalizeProviderId(provider);
14047
14047
  if (!profile || normalizeProviderId(profile.provider) !== providerKey) await clearSessionAuthProfileOverride({
@@ -17185,7 +17185,7 @@ async function resolveSandboxWorkdir(params) {
17185
17185
  cwd: process.cwd(),
17186
17186
  root: params.sandbox.workspaceDir
17187
17187
  });
17188
- if (!(await fsPromises.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
17188
+ if (!(await fs$1.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
17189
17189
  const relative = resolved.relative ? resolved.relative.split(path.sep).join(path.posix.sep) : "";
17190
17190
  const containerWorkdir = relative ? path.posix.join(params.sandbox.containerWorkdir, relative) : params.sandbox.containerWorkdir;
17191
17191
  return {
@@ -18199,13 +18199,13 @@ async function validateScriptFileForShellBleed(params) {
18199
18199
  cwd: params.workdir,
18200
18200
  root: params.workdir
18201
18201
  });
18202
- stat = await fsPromises.stat(absPath);
18202
+ stat = await fs$1.stat(absPath);
18203
18203
  } catch {
18204
18204
  return;
18205
18205
  }
18206
18206
  if (!stat.isFile()) return;
18207
18207
  if (stat.size > 512 * 1024) return;
18208
- const content = await fsPromises.readFile(absPath, "utf-8");
18208
+ const content = await fs$1.readFile(absPath, "utf-8");
18209
18209
  const first = /\$[A-Z_][A-Z0-9_]{1,}/g.exec(content);
18210
18210
  if (first) {
18211
18211
  const idx = first.index;
@@ -22881,7 +22881,7 @@ async function handleCommands(params) {
22881
22881
  try {
22882
22882
  const messages = [];
22883
22883
  if (sessionFile) {
22884
- const content = await fsPromises.readFile(sessionFile, "utf-8");
22884
+ const content = await fs$1.readFile(sessionFile, "utf-8");
22885
22885
  for (const line of content.split("\n")) {
22886
22886
  if (!line.trim()) continue;
22887
22887
  try {
@@ -25068,7 +25068,7 @@ async function readJsonlFromPath(jsonlPath) {
25068
25068
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${resolved}`);
25069
25069
  throw new Error("jsonlPath outside allowed roots");
25070
25070
  }
25071
- const canonical = await fsPromises.realpath(resolved).catch(() => resolved);
25071
+ const canonical = await fs$1.realpath(resolved).catch(() => resolved);
25072
25072
  if (!isInboundPathAllowed({
25073
25073
  filePath: canonical,
25074
25074
  roots
@@ -25076,7 +25076,7 @@ async function readJsonlFromPath(jsonlPath) {
25076
25076
  if (shouldLogVerbose()) logVerbose(`Blocked canvas jsonlPath outside allowed roots: ${canonical}`);
25077
25077
  throw new Error("jsonlPath outside allowed roots");
25078
25078
  }
25079
- return await fsPromises.readFile(canonical, "utf8");
25079
+ return await fs$1.readFile(canonical, "utf8");
25080
25080
  }
25081
25081
  const CanvasToolSchema = Type.Object({
25082
25082
  action: stringEnum(CANVAS_ACTIONS),
@@ -26607,7 +26607,7 @@ async function hydrateAttachmentPayload(params) {
26607
26607
  accountId: params.accountId
26608
26608
  }),
26609
26609
  sandboxValidated: true,
26610
- readFile: (filePath) => fsPromises.readFile(filePath)
26610
+ readFile: (filePath) => fs$1.readFile(filePath)
26611
26611
  });
26612
26612
  params.args.buffer = media.buffer.toString("base64");
26613
26613
  if (!contentTypeParam && media.contentType) params.args.contentType = media.contentType;
@@ -32551,19 +32551,11 @@ function createWebSearchTool(options) {
32551
32551
  const provider = resolveSearchProvider(search);
32552
32552
  const perplexityConfig = resolvePerplexityConfig(search);
32553
32553
  const grokConfig = resolveGrokConfig(search);
32554
- const description = provider === "perplexity" ? "Search the web using Perplexity Sonar (direct or via OpenRouter). Returns AI-synthesized answers with citations from real-time web search." : provider === "grok" ? "Search the web using xAI Grok. Returns AI-synthesized answers with citations from real-time web search." : "Search the web using Brave Search API. Supports region-specific and localized search via country and language parameters. Returns titles, URLs, and snippets for fast research.";
32555
- const resolveActiveApiKey = () => {
32556
- if (provider === "perplexity") return resolvePerplexityApiKey(perplexityConfig)?.apiKey;
32557
- if (provider === "grok") return resolveGrokApiKey(grokConfig);
32558
- return resolveSearchApiKey(search);
32559
- };
32560
32554
  return {
32561
32555
  label: "Web Search",
32562
32556
  name: "web_search",
32563
- description,
32557
+ description: provider === "perplexity" ? "Search the web using Perplexity Sonar (direct or via OpenRouter). Returns AI-synthesized answers with citations from real-time web search." : provider === "grok" ? "Search the web using xAI Grok. Returns AI-synthesized answers with citations from real-time web search." : "Search the web using Brave Search API. Supports region-specific and localized search via country and language parameters. Returns titles, URLs, and snippets for fast research.",
32564
32558
  parameters: WebSearchSchema,
32565
- checkFn: () => Boolean(resolveActiveApiKey()),
32566
- requiredEnv: provider === "perplexity" ? ["PERPLEXITY_API_KEY", "OPENROUTER_API_KEY"] : provider === "grok" ? ["XAI_API_KEY"] : ["BRAVE_API_KEY"],
32567
32559
  execute: async (_toolCallId, args) => {
32568
32560
  const perplexityAuth = provider === "perplexity" ? resolvePerplexityApiKey(perplexityConfig) : void 0;
32569
32561
  const apiKey = provider === "perplexity" ? perplexityAuth?.apiKey : provider === "grok" ? resolveGrokApiKey(grokConfig) : resolveSearchApiKey(search);
@@ -33109,7 +33101,7 @@ async function deliverSessionMaintenanceWarning(params) {
33109
33101
  return;
33110
33102
  }
33111
33103
  try {
33112
- const { deliverOutboundPayloads } = await import("./deliver-C79-Umbk.js").then((n) => n.n);
33104
+ const { deliverOutboundPayloads } = await import("./deliver-DB4v0Tyl.js").then((n) => n.n);
33113
33105
  await deliverOutboundPayloads({
33114
33106
  cfg: params.cfg,
33115
33107
  channel,
@@ -33514,7 +33506,7 @@ async function stageSandboxMedia(params) {
33514
33506
  };
33515
33507
  try {
33516
33508
  const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
33517
- await fsPromises.mkdir(destDir, { recursive: true });
33509
+ await fs$1.mkdir(destDir, { recursive: true });
33518
33510
  const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
33519
33511
  cfg,
33520
33512
  accountId: ctx.AccountId
@@ -33564,7 +33556,7 @@ async function stageSandboxMedia(params) {
33564
33556
  usedNames.add(fileName);
33565
33557
  const dest = path.join(destDir, fileName);
33566
33558
  if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
33567
- else await fsPromises.copyFile(source, dest);
33559
+ else await fs$1.copyFile(source, dest);
33568
33560
  const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
33569
33561
  staged.set(source, stagedPath);
33570
33562
  }
@@ -38875,7 +38867,7 @@ function readSlackExternalArgMenuToken(raw) {
38875
38867
  }
38876
38868
  let commandsRegistry;
38877
38869
  async function getCommandsRegistry() {
38878
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BjcGLk4v.js").then((n) => n.t);
38870
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-VfAQOVZO.js").then((n) => n.t);
38879
38871
  return commandsRegistry;
38880
38872
  }
38881
38873
  function encodeSlackCommandArgValue(parts) {
@@ -39217,11 +39209,11 @@ async function registerSlackMonitorSlashCommands(params) {
39217
39209
  const channelName = channelInfo?.name;
39218
39210
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
39219
39211
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
39220
- import("./resolve-route-B0i_o4Fo.js").then((n) => n.r),
39212
+ import("./resolve-route-Zww0Y-HJ.js").then((n) => n.r),
39221
39213
  import("./inbound-context-B7Rvs8pK.js").then((n) => n.n),
39222
39214
  Promise.resolve().then(() => provider_dispatcher_exports)
39223
39215
  ]);
39224
- const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-CffvEjpp.js").then((n) => n.t), import("./reply-prefix-CtZtkTJK.js").then((n) => n.n)]);
39216
+ const [{ resolveConversationLabel }, { createReplyPrefixOptions }] = await Promise.all([import("./conversation-label-CffvEjpp.js").then((n) => n.t), import("./reply-prefix-BFNeXT65.js").then((n) => n.n)]);
39225
39217
  const route = resolveAgentRoute({
39226
39218
  cfg,
39227
39219
  channel: "slack",
@@ -39278,7 +39270,7 @@ async function registerSlackMonitorSlashCommands(params) {
39278
39270
  });
39279
39271
  const deliverSlashPayloads = async (replies) => {
39280
39272
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
39281
- import("./replies-D3cffD5N.js").then((n) => n.r),
39273
+ import("./replies-DzsYQ8Md.js").then((n) => n.r),
39282
39274
  import("./chunk-BxfKjCUx.js").then((n) => n.s),
39283
39275
  import("./markdown-tables-CS1Tvb3z.js").then((n) => n.t)
39284
39276
  ]);
@@ -39333,7 +39325,7 @@ async function registerSlackMonitorSlashCommands(params) {
39333
39325
  let nativeCommands = [];
39334
39326
  if (nativeEnabled) {
39335
39327
  reg = await getCommandsRegistry();
39336
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-C9WuAfb2.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
39328
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-yPirQFOb.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
39337
39329
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
39338
39330
  skillCommands,
39339
39331
  provider: "slack"
@@ -40466,7 +40458,7 @@ function resolvePluginTools(params) {
40466
40458
  //#endregion
40467
40459
  //#region src/agents/apply-patch-update.ts
40468
40460
  async function defaultReadFile(filePath) {
40469
- return fsPromises.readFile(filePath, "utf8");
40461
+ return fs$1.readFile(filePath, "utf8");
40470
40462
  }
40471
40463
  async function applyUpdateHunk(filePath, chunks, options) {
40472
40464
  const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
@@ -40710,10 +40702,10 @@ function resolvePatchFileOps(options) {
40710
40702
  };
40711
40703
  }
40712
40704
  return {
40713
- readFile: (filePath) => fsPromises.readFile(filePath, "utf8"),
40714
- writeFile: (filePath, content) => fsPromises.writeFile(filePath, content, "utf8"),
40715
- remove: (filePath) => fsPromises.rm(filePath),
40716
- mkdirp: (dir) => fsPromises.mkdir(dir, { recursive: true }).then(() => {})
40705
+ readFile: (filePath) => fs$1.readFile(filePath, "utf8"),
40706
+ writeFile: (filePath, content) => fs$1.writeFile(filePath, content, "utf8"),
40707
+ remove: (filePath) => fs$1.rm(filePath),
40708
+ mkdirp: (dir) => fs$1.mkdir(dir, { recursive: true }).then(() => {})
40717
40709
  };
40718
40710
  }
40719
40711
  async function ensureDir(filePath, ops) {
@@ -41562,44 +41554,6 @@ function applyToolPolicyPipeline(params) {
41562
41554
  return filtered;
41563
41555
  }
41564
41556
 
41565
- //#endregion
41566
- //#region src/agents/tools/availability-filter.ts
41567
- const FORCE_ALL_TOOLS_ENV = "SYMI_FORCE_ALL_TOOLS";
41568
- /**
41569
- * Filter the tool palette by each tool's `checkFn`. Tools without a
41570
- * checkFn pass through unchanged. Throwing checkFns are treated as
41571
- * available (defensive). The `SYMI_FORCE_ALL_TOOLS=1` env bypasses the
41572
- * filter entirely.
41573
- *
41574
- * Pure function — does not mutate the input array.
41575
- */
41576
- function filterToolsByAvailability(tools) {
41577
- if (isTruthyEnvValue(process.env[FORCE_ALL_TOOLS_ENV])) return [...tools];
41578
- const out = [];
41579
- for (const tool of tools) {
41580
- if (!tool.checkFn) {
41581
- out.push(tool);
41582
- continue;
41583
- }
41584
- let available;
41585
- try {
41586
- available = tool.checkFn();
41587
- } catch (err) {
41588
- logVerbose(`tool availability: checkFn for "${getToolName(tool)}" threw — including tool anyway. ${String(err)}`);
41589
- out.push(tool);
41590
- continue;
41591
- }
41592
- if (available) out.push(tool);
41593
- else logVerbose(`tool availability: filtered out "${getToolName(tool)}" — checkFn returned false. Set ${FORCE_ALL_TOOLS_ENV}=1 to bypass this filter.`);
41594
- }
41595
- return out;
41596
- }
41597
- function getToolName(tool) {
41598
- const definition = tool.definition;
41599
- if (definition && typeof definition.name === "string") return definition.name;
41600
- return "(unknown tool)";
41601
- }
41602
-
41603
41557
  //#endregion
41604
41558
  //#region src/agents/pi-tools.ts
41605
41559
  function isOpenAIProvider(provider) {
@@ -41819,7 +41773,7 @@ function createSymiCodingTools(options) {
41819
41773
  root: sandboxRoot,
41820
41774
  bridge: sandboxFsBridge
41821
41775
  }), readEditTracker) : null;
41822
- const withHooks = filterToolsByAvailability(applyToolPolicyPipeline({
41776
+ const withHooks = applyToolPolicyPipeline({
41823
41777
  tools: applyOwnerOnlyToolPolicy([
41824
41778
  ...base,
41825
41779
  ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
@@ -41891,7 +41845,7 @@ function createSymiCodingTools(options) {
41891
41845
  label: "subagent tools.allow"
41892
41846
  }
41893
41847
  ]
41894
- })).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41848
+ }).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41895
41849
  agentId,
41896
41850
  sessionKey: options?.sessionKey,
41897
41851
  loopDetection: resolveToolLoopDetectionConfig({
@@ -41918,7 +41872,7 @@ async function repairSessionFileIfNeeded(params) {
41918
41872
  };
41919
41873
  let content;
41920
41874
  try {
41921
- content = await fsPromises.readFile(sessionFile, "utf-8");
41875
+ content = await fs$1.readFile(sessionFile, "utf-8");
41922
41876
  } catch (err) {
41923
41877
  if (err?.code === "ENOENT") return {
41924
41878
  repaired: false,
@@ -41966,15 +41920,15 @@ async function repairSessionFileIfNeeded(params) {
41966
41920
  const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
41967
41921
  const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
41968
41922
  try {
41969
- const stat = await fsPromises.stat(sessionFile).catch(() => null);
41970
- await fsPromises.writeFile(backupPath, content, "utf-8");
41971
- if (stat) await fsPromises.chmod(backupPath, stat.mode);
41972
- await fsPromises.writeFile(tmpPath, cleaned, "utf-8");
41973
- if (stat) await fsPromises.chmod(tmpPath, stat.mode);
41974
- await fsPromises.rename(tmpPath, sessionFile);
41923
+ const stat = await fs$1.stat(sessionFile).catch(() => null);
41924
+ await fs$1.writeFile(backupPath, content, "utf-8");
41925
+ if (stat) await fs$1.chmod(backupPath, stat.mode);
41926
+ await fs$1.writeFile(tmpPath, cleaned, "utf-8");
41927
+ if (stat) await fs$1.chmod(tmpPath, stat.mode);
41928
+ await fs$1.rename(tmpPath, sessionFile);
41975
41929
  } catch (err) {
41976
41930
  try {
41977
- await fsPromises.unlink(tmpPath);
41931
+ await fs$1.unlink(tmpPath);
41978
41932
  } catch (cleanupErr) {
41979
41933
  params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
41980
41934
  }
@@ -43247,7 +43201,7 @@ async function prewarmSessionFile(sessionFile) {
43247
43201
  if (!isSessionManagerCacheEnabled()) return;
43248
43202
  if (isSessionManagerCached(sessionFile)) return;
43249
43203
  try {
43250
- const handle = await fsPromises.open(sessionFile, "r");
43204
+ const handle = await fs$1.open(sessionFile, "r");
43251
43205
  try {
43252
43206
  const buffer = Buffer$1.alloc(4096);
43253
43207
  await handle.read(buffer, 0, buffer.length, 0);
@@ -43387,7 +43341,7 @@ async function compactEmbeddedPiSessionDirect(params) {
43387
43341
  } catch (err) {
43388
43342
  return fail(describeUnknownError(err));
43389
43343
  }
43390
- await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
43344
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
43391
43345
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
43392
43346
  const sandbox = await resolveSandboxContext({
43393
43347
  config: params.config,
@@ -43395,7 +43349,7 @@ async function compactEmbeddedPiSessionDirect(params) {
43395
43349
  workspaceDir: resolvedWorkspace
43396
43350
  });
43397
43351
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
43398
- await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
43352
+ await fs$1.mkdir(effectiveWorkspace, { recursive: true });
43399
43353
  await ensureSessionHeader({
43400
43354
  sessionFile: params.sessionFile,
43401
43355
  sessionId: params.sessionId,
@@ -43720,12 +43674,12 @@ function getQueuedFileWriter(writers, filePath) {
43720
43674
  const existing = writers.get(filePath);
43721
43675
  if (existing) return existing;
43722
43676
  const dir = path.dirname(filePath);
43723
- const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
43677
+ const ready = fs$1.mkdir(dir, { recursive: true }).catch(() => void 0);
43724
43678
  let queue = Promise.resolve();
43725
43679
  const writer = {
43726
43680
  filePath,
43727
43681
  write: (line) => {
43728
- queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
43682
+ queue = queue.then(() => ready).then(() => fs$1.appendFile(filePath, line, "utf8")).catch(() => void 0);
43729
43683
  }
43730
43684
  };
43731
43685
  writers.set(filePath, writer);
@@ -46905,7 +46859,7 @@ Use the message tool with buttons:
46905
46859
  */
46906
46860
  async function readSessionFile(sessionFile) {
46907
46861
  try {
46908
- return await fsPromises.readFile(sessionFile, "utf-8");
46862
+ return await fs$1.readFile(sessionFile, "utf-8");
46909
46863
  } catch {
46910
46864
  return null;
46911
46865
  }
@@ -46914,8 +46868,8 @@ async function writeAtomically(sessionFile, text) {
46914
46868
  const dir = path.dirname(sessionFile);
46915
46869
  const base = path.basename(sessionFile);
46916
46870
  const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
46917
- await fsPromises.writeFile(tmp, text, "utf-8");
46918
- await fsPromises.rename(tmp, sessionFile);
46871
+ await fs$1.writeFile(tmp, text, "utf-8");
46872
+ await fs$1.rename(tmp, sessionFile);
46919
46873
  }
46920
46874
  /**
46921
46875
  * Remove empty assistant JSONL entries from the session file.
@@ -47017,7 +46971,7 @@ function isInPoisonRange(version) {
47017
46971
  */
47018
46972
  async function checkSessionPoison(sessionFile) {
47019
46973
  try {
47020
- const firstLine = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n")[0];
46974
+ const firstLine = (await fs$1.readFile(sessionFile, "utf-8")).split("\n")[0];
47021
46975
  if (!firstLine) return null;
47022
46976
  const header = JSON.parse(firstLine);
47023
46977
  if (header.type !== "session") return null;
@@ -47035,7 +46989,7 @@ async function checkSessionPoison(sessionFile) {
47035
46989
  */
47036
46990
  async function archivePoisonedSession(sessionFile) {
47037
46991
  const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
47038
- await fsPromises.rename(sessionFile, archiveName);
46992
+ await fs$1.rename(sessionFile, archiveName);
47039
46993
  return archiveName;
47040
46994
  }
47041
46995
  /**
@@ -47044,14 +46998,14 @@ async function archivePoisonedSession(sessionFile) {
47044
46998
  */
47045
46999
  async function stampSessionVersion(sessionFile) {
47046
47000
  try {
47047
- const lines = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n");
47001
+ const lines = (await fs$1.readFile(sessionFile, "utf-8")).split("\n");
47048
47002
  if (lines.length === 0) return;
47049
47003
  const header = JSON.parse(lines[0]);
47050
47004
  if (header.type !== "session") return;
47051
47005
  if (header.symiVersion === VERSION) return;
47052
47006
  header.symiVersion = VERSION;
47053
47007
  lines[0] = JSON.stringify(header);
47054
- await fsPromises.writeFile(sessionFile, lines.join("\n"), "utf-8");
47008
+ await fs$1.writeFile(sessionFile, lines.join("\n"), "utf-8");
47055
47009
  } catch {}
47056
47010
  }
47057
47011
  /**
@@ -47280,7 +47234,7 @@ async function prepareSessionManagerForRun(params) {
47280
47234
  return;
47281
47235
  }
47282
47236
  if (params.hadSessionFile && header && !hasAssistant) {
47283
- await fsPromises.writeFile(params.sessionFile, "", "utf-8");
47237
+ await fs$1.writeFile(params.sessionFile, "", "utf-8");
47284
47238
  sm.fileEntries = [header];
47285
47239
  sm.byId?.clear?.();
47286
47240
  sm.labelsById?.clear?.();
@@ -47838,7 +47792,7 @@ async function runEmbeddedAttempt(params) {
47838
47792
  const prevCwd = process.cwd();
47839
47793
  const runAbortController = new AbortController();
47840
47794
  log$7.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
47841
- await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
47795
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
47842
47796
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
47843
47797
  const sandbox = await resolveSandboxContext({
47844
47798
  config: params.config,
@@ -47846,7 +47800,7 @@ async function runEmbeddedAttempt(params) {
47846
47800
  workspaceDir: resolvedWorkspace
47847
47801
  });
47848
47802
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
47849
- await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
47803
+ await fs$1.mkdir(effectiveWorkspace, { recursive: true });
47850
47804
  let restoreSkillEnv;
47851
47805
  process.chdir(effectiveWorkspace);
47852
47806
  try {
@@ -48055,7 +48009,7 @@ async function runEmbeddedAttempt(params) {
48055
48009
  sessionFile: params.sessionFile,
48056
48010
  warn: (message) => log$7.warn(message)
48057
48011
  });
48058
- const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
48012
+ const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
48059
48013
  const transcriptPolicy = resolveTranscriptPolicy({
48060
48014
  modelApi: params.model?.api,
48061
48015
  provider: params.provider,
@@ -49147,7 +49101,7 @@ async function runEmbeddedPiAgent(params) {
49147
49101
  }
49148
49102
  runLoopIterations += 1;
49149
49103
  attemptedThinking.add(thinkLevel);
49150
- await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
49104
+ await fs$1.mkdir(resolvedWorkspace, { recursive: true });
49151
49105
  const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
49152
49106
  const attempt = await runEmbeddedAttempt({
49153
49107
  sessionId: params.sessionId,