@symerian/symi 3.4.25 → 3.4.27

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 (221) hide show
  1. package/dist/{agent-N_J2cDO6.js → agent-CiqPWDUd.js} +18 -18
  2. package/dist/{agent-CQlyTNu-.js → agent-DOOj3Gzb.js} +1 -1
  3. package/dist/{agent-scope-DOrZjOnW.js → agent-scope-Bnsyyeci.js} +18 -18
  4. package/dist/{agents-1xmRO246.js → agents-BBQfFoen.js} +2 -2
  5. package/dist/{agents.config-BJ9RIQlb.js → agents.config-Dm3oLpYK.js} +1 -1
  6. package/dist/{audit-DCwHws4M.js → audit-BSX7fMfc.js} +20 -20
  7. package/dist/{auth-choice-Ryx7oj6G.js → auth-choice-BYbTjWcs.js} +1 -1
  8. package/dist/{auth-choice-DwXdS4c2.js → auth-choice-rhBmet5i.js} +11 -11
  9. package/dist/{auth-profiles-Ce7R_25e.js → auth-profiles-D5nYBj_Z.js} +2 -2
  10. package/dist/{auth-token-DgRRSbEX.js → auth-token-CAV1oLQG.js} +3 -3
  11. package/dist/{banner-CxMQaUgh.js → banner-C1qG5Rm9.js} +1 -1
  12. package/dist/{browser-cli-C3hfJNZy.js → browser-cli-De8jg4-F.js} +9 -9
  13. package/dist/build-info.json +3 -3
  14. package/dist/bundled/boot-md/handler.js +4 -4
  15. package/dist/bundled/session-memory/handler.js +4 -4
  16. package/dist/{call-BouPakqe.js → call-CW8U1BPq.js} +9 -9
  17. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  18. package/dist/{channel-options-n9C_ovb1.js → channel-options-BsXUgCMq.js} +1 -1
  19. package/dist/{channel-options-WR29vfWK.js → channel-options-CJD7jwYg.js} +1 -1
  20. package/dist/{channels-cli-DbFGI3vF.js → channels-cli-Bao4VNbH.js} +57 -57
  21. package/dist/{channels-cli-Cs-Uq67O.js → channels-cli-Dxn5n9e4.js} +7 -7
  22. package/dist/{chrome-B7-rO4i9.js → chrome-BKUACyeO.js} +7 -7
  23. package/dist/{chrome-C_I81hbq.js → chrome-DPjznJQ-.js} +7 -7
  24. package/dist/{chrome-rzK8edU7.js → chrome-pFBxO63W.js} +2 -2
  25. package/dist/{cli-D55pCJ8Q.js → cli-CrhLSz3t.js} +4 -4
  26. package/dist/{cli-7ceDvtPc.js → cli-WP38F9C5.js} +45 -45
  27. package/dist/{client-BzUAFrla.js → client-T5P9umyG.js} +1 -1
  28. package/dist/{command-registry-DAy62yhH.js → command-registry-DoXcG7FZ.js} +10 -10
  29. package/dist/{commands-registry-VfAQOVZO.js → commands-registry-BjcGLk4v.js} +1 -1
  30. package/dist/{completion-cli-Bc1jojml.js → completion-cli-C0SXi7ya.js} +12 -12
  31. package/dist/{completion-cli-Bh-Y2NVp.js → completion-cli-DaWi3_ux.js} +2 -2
  32. package/dist/{config-D7SS4vdk.js → config-D-PYSlE8.js} +2 -2
  33. package/dist/{config-cli-DupKETmw.js → config-cli-DS67KtKf.js} +4 -4
  34. package/dist/{config-cli-BxRcn2oD.js → config-cli-DXKm0pS5.js} +1 -1
  35. package/dist/{config-guard-BGAQzX2K.js → config-guard-xLTTFANi.js} +6 -6
  36. package/dist/{config-validation-COcIIMNe.js → config-validation-C4wGq3rz.js} +1 -1
  37. package/dist/{configure-0XYm59w7.js → configure-B99YJJb0.js} +14 -14
  38. package/dist/{configure-BilM_Fgn.js → configure-CzO4_jJJ.js} +2 -2
  39. package/dist/{consolidate-DI20-Wtn.js → consolidate-BB4BOQIN.js} +6 -6
  40. package/dist/{control-service-Ry7Le68N.js → control-service-y53w3Jzy.js} +4 -4
  41. package/dist/{control-ui-assets-DuDhl0co.js → control-ui-assets-Dryy7mCE.js} +1 -1
  42. package/dist/{cron-cli-DHFgjr_X.js → cron-cli-BMblAFRK.js} +7 -7
  43. package/dist/{daemon-cli-fC2R9YZd.js → daemon-cli-BJGNf5qV.js} +11 -11
  44. package/dist/{daemon-runtime-tZgIbDPz.js → daemon-runtime-u4p9jsEF.js} +10 -10
  45. package/dist/{deliver-DB4v0Tyl.js → deliver-C79-Umbk.js} +2 -2
  46. package/dist/{deliver-oWGJwzFf.js → deliver-Cjyb6h4g.js} +4 -4
  47. package/dist/{deliver-DyO3QD8O.js → deliver-DTRkeYm3.js} +4 -4
  48. package/dist/{deps-BlmO-MfQ.js → deps-UA1UBhl7.js} +1 -1
  49. package/dist/{devices-cli-DtkKN4l0.js → devices-cli-wsTs-nti.js} +6 -6
  50. package/dist/{diagnostics-tVJR9V0_.js → diagnostics-oW0LBW-t.js} +5 -5
  51. package/dist/{directory-cli-Bfy_ejW2.js → directory-cli-D8As6t8Z.js} +3 -3
  52. package/dist/{dm-policy-shared-CBlUyDSX.js → dm-policy-shared-DRJrFKqJ.js} +1 -1
  53. package/dist/{dns-cli-DzKaV6NZ.js → dns-cli-BKOTBn3n.js} +3 -3
  54. package/dist/{docs-cli-a90_8wuN.js → docs-cli-D5j7Nmz2.js} +1 -1
  55. package/dist/{doctor-completion-BZJWX3Dr.js → doctor-completion-B1YCzbvi.js} +1 -1
  56. package/dist/{doctor-completion-B6OPl_GZ.js → doctor-completion-mev5PRjN.js} +2 -2
  57. package/dist/{doctor-config-flow-30ZEvATb.js → doctor-config-flow-Uv41seME.js} +9 -9
  58. package/dist/entry.js +1 -1
  59. package/dist/{exec-approvals-cli-C3gZAwV8.js → exec-approvals-cli-B4ry9s5r.js} +13 -13
  60. package/dist/extensionAPI.js +4 -4
  61. package/dist/{file-lock-BVUYnlQv.js → file-lock-2AecMjCa.js} +8 -8
  62. package/dist/{fs-safe-BdejYjW8.js → fs-safe-B0Is-oLk.js} +6 -6
  63. package/dist/{gateway-cli-CyhLb-zS.js → gateway-cli-B3JVj_dv.js} +98 -98
  64. package/dist/{gateway-cli-DQhYa6AL.js → gateway-cli-Chnp6icp.js} +10 -10
  65. package/dist/{gateway-rpc-DNq7EMhm.js → gateway-rpc-CLzM6ugo.js} +1 -1
  66. package/dist/{glass-ui-ws-SJVljtUx.js → glass-ui-ws--GjxFRyX.js} +67 -67
  67. package/dist/{glass-ui-ws-CLDbMDPk.js → glass-ui-ws-5o8dvEZO.js} +8 -8
  68. package/dist/{health-DZ0aipDZ.js → health-D2th0Ip6.js} +4 -4
  69. package/dist/{hooks-cli-BMRj13QU.js → hooks-cli-B4Nvp9AV.js} +59 -59
  70. package/dist/{hooks-cli-BVtdP5x7.js → hooks-cli-B_sZth4r.js} +5 -5
  71. package/dist/{image-ops-L70xVnpG.js → image-ops-BzCBIakN.js} +10 -10
  72. package/dist/index.js +52 -52
  73. package/dist/{inspect-CXsOujVt.js → inspect-U3g9owQ8.js} +4 -4
  74. package/dist/{install-safe-path-D5gi-nfu.js → install-safe-path-BwMMOh9z.js} +11 -11
  75. package/dist/{installs-DF_LhGX6.js → installs-vdi1BESF.js} +10 -10
  76. package/dist/{internal-DVCddhhN.js → internal-csqU78gW.js} +9 -9
  77. package/dist/{lifecycle-core-Bvdl2ShM.js → lifecycle-core-BfmNlC-k.js} +5 -5
  78. package/dist/llm-slug-generator.js +4 -4
  79. package/dist/{local-roots-CgDCgCuM.js → local-roots-2Jb79HZ8.js} +1 -1
  80. package/dist/{logs-cli-mdSEYBKS.js → logs-cli-COZzdFu6.js} +7 -7
  81. package/dist/{manager-BhIaahpm.js → manager-BfbQb9qM.js} +1 -1
  82. package/dist/{manager-DhHNnMyK.js → manager-Bryhc0Ip.js} +1 -1
  83. package/dist/{manager-BIt2_nlu.js → manager-C5FGNRjL.js} +1 -1
  84. package/dist/{manager-BLg6zbeA.js → manager-DyYRwHZt.js} +15 -15
  85. package/dist/{memory-BENbCb4f.js → memory-Cypj1lBQ.js} +2 -2
  86. package/dist/{memory-B4DsKRSc.js → memory-DgDnTEcB.js} +5 -5
  87. package/dist/{memory-cli-DotHyA76.js → memory-cli-CfJkD7mO.js} +12 -12
  88. package/dist/{memory-cli-BIjwqjBx.js → memory-cli-DB7UIev4.js} +2 -2
  89. package/dist/{model-DsMHOvMn.js → model-DbILYCfo.js} +1 -1
  90. package/dist/{model-auth-1EAQvYRv.js → model-auth-_C07_3Yr.js} +2 -2
  91. package/dist/{model-catalog-DQTmHZK7.js → model-catalog-CeqDEWGz.js} +3 -3
  92. package/dist/{model-picker-D4TY_tPx.js → model-picker-C_f6MALt.js} +5 -5
  93. package/dist/{model-selection-7wdmO-Iw.js → model-selection-CCTzD29o.js} +1 -1
  94. package/dist/{models-CmToZKBp.js → models-Bpqeds64.js} +2 -2
  95. package/dist/{models-cli-CZgkOUZB.js → models-cli-BUWfj5iJ.js} +55 -55
  96. package/dist/{models-cli-Di7iKhD4.js → models-cli-Bc47WFhD.js} +6 -6
  97. package/dist/{models-config-CRnTzdFs.js → models-config-Dp5-tBqs.js} +8 -8
  98. package/dist/{node-cli-BXv9SEDG.js → node-cli-BdjmGI32.js} +27 -27
  99. package/dist/{node-service-CrDVFWQl.js → node-service-DphkTjBV.js} +1 -1
  100. package/dist/{nodes-cli-Cim3ANNU.js → nodes-cli-BChJzcKY.js} +10 -10
  101. package/dist/{nodes-screen-De9ma6e1.js → nodes-screen-Cp5QP3ET.js} +4 -4
  102. package/dist/{npm-registry-spec-YMWTMnm_.js → npm-registry-spec-CqVgiBCf.js} +9 -9
  103. package/dist/{onboard-BXI02b3e.js → onboard-BbfERyKU.js} +1 -1
  104. package/dist/{onboard-CuLvp4Ds.js → onboard-C0nMMiiS.js} +15 -15
  105. package/dist/{onboard-channels-A6_QP7MR.js → onboard-channels-CMp9YXHC.js} +1 -1
  106. package/dist/{onboard-channels-E5NIYGJz.js → onboard-channels-CmsfVut5.js} +4 -4
  107. package/dist/{onboard-custom-BrtjWDlX.js → onboard-custom-BfHczxx0.js} +3 -3
  108. package/dist/{onboard-helpers---sZ9pdZ.js → onboard-helpers-OB_xKQze.js} +8 -8
  109. package/dist/{onboard-hooks-CtIRdncr.js → onboard-hooks-BA22KYCG.js} +1 -1
  110. package/dist/{onboard-remote-BUB3VPBP.js → onboard-remote-Dv2Uz8Ru.js} +1 -1
  111. package/dist/{onboard-skills-Cs3BZ4VJ.js → onboard-skills-BzxofI4T.js} +3 -3
  112. package/dist/{onboarding-BeYl1Egj.js → onboarding-DoYMfCjS.js} +3 -3
  113. package/dist/{onboarding-BWMBA6cP.js → onboarding-vgZFhH5N.js} +12 -12
  114. package/dist/{onboarding.finalize-CH8dBgA2.js → onboarding.finalize-BYHDzz2i.js} +31 -31
  115. package/dist/{onboarding.finalize-Bk-XW8b3.js → onboarding.finalize-Dj0xG8pk.js} +4 -4
  116. package/dist/{onboarding.gateway-config-arRNxrI9.js → onboarding.gateway-config-CDRLfIZM.js} +8 -8
  117. package/dist/{openai-model-default-XudD4Xik.js → openai-model-default-Dl21Ivjc.js} +2 -2
  118. package/dist/{pairing-cli-NDavTm1_.js → pairing-cli-C2_Zobhz.js} +5 -5
  119. package/dist/{pairing-store-BNhJOnWn.js → pairing-store-Be-ZQK87.js} +1 -1
  120. package/dist/{pairing-token-Dcy37-4s.js → pairing-token-B703A1U3.js} +7 -7
  121. package/dist/{paths-DObzwe08.js → paths-BWqg8NZT.js} +1 -1
  122. package/dist/{pi-auth-json-Db8XJVGL.js → pi-auth-json-D-vdh-nY.js} +6 -6
  123. package/dist/{pi-embedded-0I7WdtRz.js → pi-embedded-C7mJzGIf.js} +59 -13
  124. package/dist/{pi-embedded-helpers-B5cWV7_y.js → pi-embedded-helpers-y3vJmW6T.js} +6 -6
  125. package/dist/{pi-tools.policy-BdGVEMZn.js → pi-tools.policy-ji-L-Mpv.js} +3 -3
  126. package/dist/{plugin-auto-enable-B_lNp6yM.js → plugin-auto-enable-Ctbn2w4Q.js} +1 -1
  127. package/dist/{plugin-registry-DovNSdK0.js → plugin-registry-D2ZbwBU_.js} +3 -3
  128. package/dist/{plugin-registry-CAdIrLmG.js → plugin-registry-pKaJ4ltN.js} +1 -1
  129. package/dist/plugin-sdk/agents/pi-tools.types.d.ts +1 -2
  130. package/dist/plugin-sdk/agents/tools/availability-filter.d.ts +10 -0
  131. package/dist/plugin-sdk/agents/tools/common.d.ts +30 -0
  132. package/dist/{plugins-cli-ZG4PxNTC.js → plugins-cli-CoHiV4BX.js} +54 -54
  133. package/dist/{plugins-cli-JzKO-vmR.js → plugins-cli-uo8lcB7v.js} +5 -5
  134. package/dist/{ports-gxLM5ahL.js → ports-CB_Iu83U.js} +2 -2
  135. package/dist/{ports-C3ZSkRGq.js → ports-ukrEAkOP.js} +1 -1
  136. package/dist/{program-context-ByiEP1Lk.js → program-context-B1ZbQmLL.js} +38 -38
  137. package/dist/{program-BbfU4idg.js → program-rzYjZKRz.js} +10 -10
  138. package/dist/{prompt-select-styled-DvrG_zWV.js → prompt-select-styled-CX0v66wx.js} +38 -38
  139. package/dist/{prompt-select-styled-CWH2Mcrb.js → prompt-select-styled-F6P-rvFI.js} +4 -4
  140. package/dist/{provider-auth-helpers-CMQexdSl.js → provider-auth-helpers-Ck98bkHV.js} +1 -1
  141. package/dist/{provider-auth-helpers-2x7YxT5F.js → provider-auth-helpers-_jn9PngO.js} +6 -6
  142. package/dist/{push-apns-CtWwPxRj.js → push-apns-BtMtpzEm.js} +1 -1
  143. package/dist/{push-apns-eGdGU3r7.js → push-apns-CmeoBcIQ.js} +4 -4
  144. package/dist/{pw-ai-BOOB8qoi.js → pw-ai-BFS9ezWe.js} +1 -1
  145. package/dist/{pw-ai-tgngV3iZ.js → pw-ai-CQJsGI1b.js} +7 -7
  146. package/dist/{pw-ai-Cx-Ko_FL.js → pw-ai-D2pEVS5n.js} +1 -1
  147. package/dist/{qmd-manager-qV_04VKG.js → qmd-manager-DawTY2mB.js} +19 -19
  148. package/dist/{qr-cli-Vo1XL6B2.js → qr-cli-DKowtQcM.js} +3 -3
  149. package/dist/{register.agent-Dwkya1rv.js → register.agent-0hWBZXD7.js} +67 -67
  150. package/dist/{register.agent-DZE9NBNx.js → register.agent-_UqSBmt5.js} +9 -9
  151. package/dist/{register.configure-DCpbCHR0.js → register.configure-CgQ6sqtQ.js} +70 -70
  152. package/dist/{register.configure-CD8WkXo8.js → register.configure-KrTtvKSp.js} +8 -8
  153. package/dist/{register.maintenance-CxVeo_7j.js → register.maintenance-DDSfzFoo.js} +9 -9
  154. package/dist/{register.maintenance-Bqjj77CZ.js → register.maintenance-DjZeknO6.js} +67 -67
  155. package/dist/{register.message-tcJN7-E3.js → register.message-DSwwDcGi.js} +5 -5
  156. package/dist/{register.message-uhAmNxoO.js → register.message-DTZJ5OiL.js} +47 -47
  157. package/dist/{register.onboard-F6d_Wrv1.js → register.onboard-B8k5phG7.js} +25 -25
  158. package/dist/{register.onboard-Rm5t0yxX.js → register.onboard-BToIZTIS.js} +2 -2
  159. package/dist/{register.setup-CcHxpsUT.js → register.setup-1fexz2oW.js} +28 -28
  160. package/dist/{register.setup-C2datfZK.js → register.setup-BdUewOo1.js} +2 -2
  161. package/dist/{register.status-health-sessions-DIUDRMqm.js → register.status-health-sessions-0RyA2cXf.js} +41 -41
  162. package/dist/{register.status-health-sessions-DFVjS9Hy.js → register.status-health-sessions-eBaeXIvo.js} +3 -3
  163. package/dist/{register.subclis-D9uGnVGm.js → register.subclis-tX3BslaT.js} +9 -9
  164. package/dist/{replies-DzsYQ8Md.js → replies-D3cffD5N.js} +1 -1
  165. package/dist/{reply-prefix-BFNeXT65.js → reply-prefix-CtZtkTJK.js} +1 -1
  166. package/dist/{resolve-route-Zww0Y-HJ.js → resolve-route-B0i_o4Fo.js} +1 -1
  167. package/dist/{routes-C-rIjd8Z.js → routes-zpAUwtCG.js} +10 -10
  168. package/dist/{rpc-BkFkeuJ6.js → rpc-DhsDKVo-.js} +1 -1
  169. package/dist/{run-main-HkbyvIDy.js → run-main-DIl_Kl0B.js} +17 -17
  170. package/dist/{sandbox-Dx8IMw-E.js → sandbox-DQCaejcD.js} +18 -18
  171. package/dist/{sandbox-cli-BFkLKdlk.js → sandbox-cli-CbvyZs1z.js} +13 -13
  172. package/dist/{security-cli-BEpQ_rO1.js → security-cli-CbJxNYZx.js} +29 -29
  173. package/dist/{send-Cxu1tl56.js → send-QscYkkNh.js} +7 -7
  174. package/dist/{server-context--mmXXEkE.js → server-context-CXVq7gZ7.js} +5 -5
  175. package/dist/{server-methods-DJ8eiTu1.js → server-methods-CpFBGxWI.js} +6 -6
  176. package/dist/{server-methods-RtjWUhkv.js → server-methods-DPxjPGr0.js} +58 -58
  177. package/dist/{server-node-events-CT8fFtBQ.js → server-node-events-2SUW10k3.js} +6 -6
  178. package/dist/{server-node-events-DQ1iCUgY.js → server-node-events-B_BPbi7z.js} +48 -48
  179. package/dist/{service-CyEDtYLq.js → service-Cm4-5AH9.js} +15 -15
  180. package/dist/{session-dirs-CXErIzZq.js → session-dirs-BypCYFN3.js} +2 -2
  181. package/dist/{session-utils-BZnPW904.js → session-utils-lXjJoBxe.js} +14 -14
  182. package/dist/{sessions-optZRB57.js → sessions-aSo5jsmg.js} +10 -10
  183. package/dist/{shared-DJFwvlUi.js → shared-BI-gOZsD.js} +3 -3
  184. package/dist/{shared-Ctok0Bcs.js → shared-DDX_4ypC.js} +1 -1
  185. package/dist/{skill-commands-yPirQFOb.js → skill-commands-C9WuAfb2.js} +4 -4
  186. package/dist/{skill-scanner-BBwesm0w.js → skill-scanner-CFqMkfZW.js} +5 -5
  187. package/dist/{skills-BwDmcZdt.js → skills-CYcBtLGH.js} +4 -4
  188. package/dist/{skills-cli-gC5ETdly.js → skills-cli-BgyaAQoj.js} +7 -7
  189. package/dist/{skills-install-CLN_Ks5r.js → skills-install-MGsx6q5Z.js} +3 -3
  190. package/dist/{skills-remote-bz71Bstn.js → skills-remote-BcRQTDsZ.js} +3 -3
  191. package/dist/{skills-status-iltfI_bO.js → skills-status-CbSdFlvm.js} +1 -1
  192. package/dist/{sqlite-Cod7C5ba.js → sqlite-BpogPlQW.js} +5 -5
  193. package/dist/{status-Cpz64Vy_.js → status-BVYDUlnp.js} +1 -1
  194. package/dist/{status-CuMBp54T.js → status-C-r9JpJf.js} +23 -23
  195. package/dist/{status-EAjzyREy.js → status-DIJvpgEm.js} +3 -3
  196. package/dist/{status-CoqGtHXq.js → status-DbNNmkNB.js} +1 -1
  197. package/dist/{status.update-F4CbQCxF.js → status.update-EyslEZkn.js} +3 -3
  198. package/dist/{subagent-registry-Dkif1XYO.js → subagent-registry-DWemyjbN.js} +52 -6
  199. package/dist/{symi-root-BQ0IpoW2.js → symi-root-DeCVdZB4.js} +2 -2
  200. package/dist/{synthesis-D3fpp3Vu.js → synthesis-BdTiornP.js} +4 -4
  201. package/dist/{synthesis-CpsURf9J.js → synthesis-BxYzOZUA.js} +4 -4
  202. package/dist/{synthesis-CKKZrrYd.js → synthesis-C7RlvHEs.js} +45 -45
  203. package/dist/{synthesis-B0PXRiiM.js → synthesis-DQ7Y6OE0.js} +4 -4
  204. package/dist/{system-cli-DMKzffe3.js → system-cli-DgOvK_kU.js} +7 -7
  205. package/dist/{systemd-DRpQb_L1.js → systemd-B2nTr3Y2.js} +5 -5
  206. package/dist/{systemd-hints-DR4u43WA.js → systemd-hints-DtOWJT_2.js} +6 -6
  207. package/dist/{systemd-linger-BQQl5RXN.js → systemd-linger-CWi5l8Nt.js} +1 -1
  208. package/dist/{tui-CqrM_Fj2.js → tui-D7ms_iQ4.js} +7 -7
  209. package/dist/{tui-cli-BsqRmqTX.js → tui-cli-DNvAqIYN.js} +19 -19
  210. package/dist/{unified-runner-DZAjU6aB.js → unified-runner-BIUJm_Iv.js} +150 -104
  211. package/dist/{unified-runner-DkPztkL8.js → unified-runner-DPWNhQQA.js} +59 -13
  212. package/dist/{update-check-CxBGAP1E.js → update-check-CduiCxPo.js} +5 -5
  213. package/dist/{update-cli-Bgk30eoA.js → update-cli-BM-A3cIZ.js} +9 -9
  214. package/dist/{update-cli-t7W6vcQY.js → update-cli-GKXF83cS.js} +77 -77
  215. package/dist/{update-CWEjB8uS.js → update-pddgyV7i.js} +3 -3
  216. package/dist/{update-runner-C4Uy75eP.js → update-runner-BMYqz1dl.js} +15 -15
  217. package/dist/{webhooks-cli-Dp-pp0Sf.js → webhooks-cli-BPPmnDCj.js} +4 -4
  218. package/dist/{with-timeout-B5zAsivw.js → with-timeout-D1qzvPE0.js} +1 -1
  219. package/dist/{workspace-dirs-jKFQf7of.js → workspace-dirs-DCICLTHx.js} +1 -1
  220. package/dist/{wsl-DMA0sTvh.js → wsl-Sed675xh.js} +2 -2
  221. package/package.json +1 -1
@@ -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-Ce7R_25e.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";
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-BQ0IpoW2.js";
9
+ import { n as resolveSymiPackageRootSync, t as resolveSymiPackageRoot } from "./symi-root-DeCVdZB4.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-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";
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";
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-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";
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";
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-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";
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";
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-BwDmcZdt.js";
28
- import { n as getMediaDir, r as saveMediaBuffer } from "./routes-C-rIjd8Z.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";
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-DObzwe08.js";
30
+ import { i as resolveExistingPathsWithinRoot, r as DEFAULT_UPLOAD_DIR } from "./paths-BWqg8NZT.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-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";
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";
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-Cxu1tl56.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";
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-DB4v0Tyl.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";
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-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";
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";
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-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";
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";
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-CgDCgCuM.js";
62
+ import { n as getDefaultMediaLocalRoots } from "./local-roots-2Jb79HZ8.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-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";
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";
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-bz71Bstn.js";
70
+ import { g as getSkillsSnapshotVersion, h as ensureSkillsWatcher, t as getRemoteSkillEligibility } from "./skills-remote-BcRQTDsZ.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-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";
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";
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-De9ma6e1.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";
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-Ry7Le68N.js";
82
+ import { n as createBrowserControlContext, r as startBrowserControlServiceFromConfig } from "./control-service-y53w3Jzy.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-Zww0Y-HJ.js";
85
+ import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-B0i_o4Fo.js";
86
86
  import { t as parseTimeoutMs } from "./parse-timeout-DUdeaMqF.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";
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";
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 fs$1 from "node:fs/promises";
99
+ import fsPromises 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 fs$1.readFile(params.path);
1849
+ const buf = await fsPromises.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-DB4v0Tyl.js").then((n) => n.n);
5810
+ const { deliverOutboundPayloads } = await import("./deliver-C79-Umbk.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 fs$1.readFile(entry.resolvedPath);
11651
+ const buffer = await fsPromises.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 fs$1.writeFile(tmpPath, bufferResult.buffer);
11721
+ await fsPromises.writeFile(tmpPath, bufferResult.buffer);
11722
11722
  entry.tempPath = tmpPath;
11723
11723
  entry.tempCleanup = async () => {
11724
- await fs$1.unlink(tmpPath).catch(() => {});
11724
+ await fsPromises.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 fs$1.stat(currentPath);
11771
+ const stat = await fsPromises.stat(currentPath);
11772
11772
  if (!stat.isFile()) {
11773
11773
  entry.resolvedPath = void 0;
11774
11774
  return;
11775
11775
  }
11776
- const canonicalPath = await fs$1.realpath(currentPath).catch(() => currentPath);
11776
+ const canonicalPath = await fsPromises.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 fs$1.realpath(root).catch(() => root);
11798
+ return await fsPromises.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 fs$1.stat(filePath);
11869
+ await fsPromises.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 fs$1.readFile(fileOutput, "utf8");
11969
+ const content = await fsPromises.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 fs$1.mkdtemp(path.join(os.tmpdir(), "symi-media-cli-"));
12260
+ const outputDir = await fsPromises.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 fs$1.rm(outputDir, {
12294
+ await fsPromises.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 fs$1.stat(filePath)).isFile()) return false;
12338
+ if (!(await fsPromises.stat(filePath)).isFile()) return false;
12339
12339
  if (process.platform === "win32") return true;
12340
- await fs$1.access(filePath, constants.X_OK);
12340
+ await fsPromises.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-Ce7R_25e.js").then((n) => n.t);
14044
+ const { ensureAuthProfileStore } = await import("./auth-profiles-D5nYBj_Z.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 fs$1.stat(resolved.resolved)).isDirectory()) throw new Error("workdir is not a directory");
17188
+ if (!(await fsPromises.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 fs$1.stat(absPath);
18202
+ stat = await fsPromises.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 fs$1.readFile(absPath, "utf-8");
18208
+ const content = await fsPromises.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 fs$1.readFile(sessionFile, "utf-8");
22884
+ const content = await fsPromises.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 fs$1.realpath(resolved).catch(() => resolved);
25071
+ const canonical = await fsPromises.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 fs$1.readFile(canonical, "utf8");
25079
+ return await fsPromises.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) => fs$1.readFile(filePath)
26610
+ readFile: (filePath) => fsPromises.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,11 +32551,19 @@ 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
+ };
32554
32560
  return {
32555
32561
  label: "Web Search",
32556
32562
  name: "web_search",
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.",
32563
+ description,
32558
32564
  parameters: WebSearchSchema,
32565
+ checkFn: () => Boolean(resolveActiveApiKey()),
32566
+ requiredEnv: provider === "perplexity" ? ["PERPLEXITY_API_KEY", "OPENROUTER_API_KEY"] : provider === "grok" ? ["XAI_API_KEY"] : ["BRAVE_API_KEY"],
32559
32567
  execute: async (_toolCallId, args) => {
32560
32568
  const perplexityAuth = provider === "perplexity" ? resolvePerplexityApiKey(perplexityConfig) : void 0;
32561
32569
  const apiKey = provider === "perplexity" ? perplexityAuth?.apiKey : provider === "grok" ? resolveGrokApiKey(grokConfig) : resolveSearchApiKey(search);
@@ -33101,7 +33109,7 @@ async function deliverSessionMaintenanceWarning(params) {
33101
33109
  return;
33102
33110
  }
33103
33111
  try {
33104
- const { deliverOutboundPayloads } = await import("./deliver-DB4v0Tyl.js").then((n) => n.n);
33112
+ const { deliverOutboundPayloads } = await import("./deliver-C79-Umbk.js").then((n) => n.n);
33105
33113
  await deliverOutboundPayloads({
33106
33114
  cfg: params.cfg,
33107
33115
  channel,
@@ -33506,7 +33514,7 @@ async function stageSandboxMedia(params) {
33506
33514
  };
33507
33515
  try {
33508
33516
  const destDir = sandbox ? path.join(effectiveWorkspaceDir, "media", "inbound") : effectiveWorkspaceDir;
33509
- await fs$1.mkdir(destDir, { recursive: true });
33517
+ await fsPromises.mkdir(destDir, { recursive: true });
33510
33518
  const remoteAttachmentRoots = resolveIMessageRemoteAttachmentRoots({
33511
33519
  cfg,
33512
33520
  accountId: ctx.AccountId
@@ -33556,7 +33564,7 @@ async function stageSandboxMedia(params) {
33556
33564
  usedNames.add(fileName);
33557
33565
  const dest = path.join(destDir, fileName);
33558
33566
  if (ctx.MediaRemoteHost) await scpFile(ctx.MediaRemoteHost, source, dest);
33559
- else await fs$1.copyFile(source, dest);
33567
+ else await fsPromises.copyFile(source, dest);
33560
33568
  const stagedPath = sandbox ? path.posix.join("media", "inbound", fileName) : dest;
33561
33569
  staged.set(source, stagedPath);
33562
33570
  }
@@ -38867,7 +38875,7 @@ function readSlackExternalArgMenuToken(raw) {
38867
38875
  }
38868
38876
  let commandsRegistry;
38869
38877
  async function getCommandsRegistry() {
38870
- if (!commandsRegistry) commandsRegistry = await import("./commands-registry-VfAQOVZO.js").then((n) => n.t);
38878
+ if (!commandsRegistry) commandsRegistry = await import("./commands-registry-BjcGLk4v.js").then((n) => n.t);
38871
38879
  return commandsRegistry;
38872
38880
  }
38873
38881
  function encodeSlackCommandArgValue(parts) {
@@ -39209,11 +39217,11 @@ async function registerSlackMonitorSlashCommands(params) {
39209
39217
  const channelName = channelInfo?.name;
39210
39218
  const roomLabel = channelName ? `#${channelName}` : `#${command.channel_id}`;
39211
39219
  const [{ resolveAgentRoute }, { finalizeInboundContext }, { dispatchReplyWithDispatcher }] = await Promise.all([
39212
- import("./resolve-route-Zww0Y-HJ.js").then((n) => n.r),
39220
+ import("./resolve-route-B0i_o4Fo.js").then((n) => n.r),
39213
39221
  import("./inbound-context-B7Rvs8pK.js").then((n) => n.n),
39214
39222
  Promise.resolve().then(() => provider_dispatcher_exports)
39215
39223
  ]);
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)]);
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)]);
39217
39225
  const route = resolveAgentRoute({
39218
39226
  cfg,
39219
39227
  channel: "slack",
@@ -39270,7 +39278,7 @@ async function registerSlackMonitorSlashCommands(params) {
39270
39278
  });
39271
39279
  const deliverSlashPayloads = async (replies) => {
39272
39280
  const [{ deliverSlackSlashReplies }, { resolveChunkMode }, { resolveMarkdownTableMode }] = await Promise.all([
39273
- import("./replies-DzsYQ8Md.js").then((n) => n.r),
39281
+ import("./replies-D3cffD5N.js").then((n) => n.r),
39274
39282
  import("./chunk-BxfKjCUx.js").then((n) => n.s),
39275
39283
  import("./markdown-tables-CS1Tvb3z.js").then((n) => n.t)
39276
39284
  ]);
@@ -39325,7 +39333,7 @@ async function registerSlackMonitorSlashCommands(params) {
39325
39333
  let nativeCommands = [];
39326
39334
  if (nativeEnabled) {
39327
39335
  reg = await getCommandsRegistry();
39328
- const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-yPirQFOb.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
39336
+ const skillCommands = nativeSkillsEnabled ? (await import("./skill-commands-C9WuAfb2.js").then((n) => n.a)).listSkillCommandsForAgents({ cfg }) : [];
39329
39337
  nativeCommands = reg.listNativeCommandSpecsForConfig(cfg, {
39330
39338
  skillCommands,
39331
39339
  provider: "slack"
@@ -40458,7 +40466,7 @@ function resolvePluginTools(params) {
40458
40466
  //#endregion
40459
40467
  //#region src/agents/apply-patch-update.ts
40460
40468
  async function defaultReadFile(filePath) {
40461
- return fs$1.readFile(filePath, "utf8");
40469
+ return fsPromises.readFile(filePath, "utf8");
40462
40470
  }
40463
40471
  async function applyUpdateHunk(filePath, chunks, options) {
40464
40472
  const originalLines = (await (options?.readFile ?? defaultReadFile)(filePath).catch((err) => {
@@ -40702,10 +40710,10 @@ function resolvePatchFileOps(options) {
40702
40710
  };
40703
40711
  }
40704
40712
  return {
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(() => {})
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(() => {})
40709
40717
  };
40710
40718
  }
40711
40719
  async function ensureDir(filePath, ops) {
@@ -41554,6 +41562,44 @@ function applyToolPolicyPipeline(params) {
41554
41562
  return filtered;
41555
41563
  }
41556
41564
 
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
+
41557
41603
  //#endregion
41558
41604
  //#region src/agents/pi-tools.ts
41559
41605
  function isOpenAIProvider(provider) {
@@ -41773,7 +41819,7 @@ function createSymiCodingTools(options) {
41773
41819
  root: sandboxRoot,
41774
41820
  bridge: sandboxFsBridge
41775
41821
  }), readEditTracker) : null;
41776
- const withHooks = applyToolPolicyPipeline({
41822
+ const withHooks = filterToolsByAvailability(applyToolPolicyPipeline({
41777
41823
  tools: applyOwnerOnlyToolPolicy([
41778
41824
  ...base,
41779
41825
  ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
@@ -41845,7 +41891,7 @@ function createSymiCodingTools(options) {
41845
41891
  label: "subagent tools.allow"
41846
41892
  }
41847
41893
  ]
41848
- }).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41894
+ })).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
41849
41895
  agentId,
41850
41896
  sessionKey: options?.sessionKey,
41851
41897
  loopDetection: resolveToolLoopDetectionConfig({
@@ -41872,7 +41918,7 @@ async function repairSessionFileIfNeeded(params) {
41872
41918
  };
41873
41919
  let content;
41874
41920
  try {
41875
- content = await fs$1.readFile(sessionFile, "utf-8");
41921
+ content = await fsPromises.readFile(sessionFile, "utf-8");
41876
41922
  } catch (err) {
41877
41923
  if (err?.code === "ENOENT") return {
41878
41924
  repaired: false,
@@ -41920,15 +41966,15 @@ async function repairSessionFileIfNeeded(params) {
41920
41966
  const backupPath = `${sessionFile}.bak-${process.pid}-${Date.now()}`;
41921
41967
  const tmpPath = `${sessionFile}.repair-${process.pid}-${Date.now()}.tmp`;
41922
41968
  try {
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);
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);
41929
41975
  } catch (err) {
41930
41976
  try {
41931
- await fs$1.unlink(tmpPath);
41977
+ await fsPromises.unlink(tmpPath);
41932
41978
  } catch (cleanupErr) {
41933
41979
  params.warn?.(`session file repair cleanup failed: ${cleanupErr instanceof Error ? cleanupErr.message : "unknown error"} (${path.basename(tmpPath)})`);
41934
41980
  }
@@ -43201,7 +43247,7 @@ async function prewarmSessionFile(sessionFile) {
43201
43247
  if (!isSessionManagerCacheEnabled()) return;
43202
43248
  if (isSessionManagerCached(sessionFile)) return;
43203
43249
  try {
43204
- const handle = await fs$1.open(sessionFile, "r");
43250
+ const handle = await fsPromises.open(sessionFile, "r");
43205
43251
  try {
43206
43252
  const buffer = Buffer$1.alloc(4096);
43207
43253
  await handle.read(buffer, 0, buffer.length, 0);
@@ -43341,7 +43387,7 @@ async function compactEmbeddedPiSessionDirect(params) {
43341
43387
  } catch (err) {
43342
43388
  return fail(describeUnknownError(err));
43343
43389
  }
43344
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
43390
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
43345
43391
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
43346
43392
  const sandbox = await resolveSandboxContext({
43347
43393
  config: params.config,
@@ -43349,7 +43395,7 @@ async function compactEmbeddedPiSessionDirect(params) {
43349
43395
  workspaceDir: resolvedWorkspace
43350
43396
  });
43351
43397
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
43352
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
43398
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
43353
43399
  await ensureSessionHeader({
43354
43400
  sessionFile: params.sessionFile,
43355
43401
  sessionId: params.sessionId,
@@ -43674,12 +43720,12 @@ function getQueuedFileWriter(writers, filePath) {
43674
43720
  const existing = writers.get(filePath);
43675
43721
  if (existing) return existing;
43676
43722
  const dir = path.dirname(filePath);
43677
- const ready = fs$1.mkdir(dir, { recursive: true }).catch(() => void 0);
43723
+ const ready = fsPromises.mkdir(dir, { recursive: true }).catch(() => void 0);
43678
43724
  let queue = Promise.resolve();
43679
43725
  const writer = {
43680
43726
  filePath,
43681
43727
  write: (line) => {
43682
- queue = queue.then(() => ready).then(() => fs$1.appendFile(filePath, line, "utf8")).catch(() => void 0);
43728
+ queue = queue.then(() => ready).then(() => fsPromises.appendFile(filePath, line, "utf8")).catch(() => void 0);
43683
43729
  }
43684
43730
  };
43685
43731
  writers.set(filePath, writer);
@@ -46859,7 +46905,7 @@ Use the message tool with buttons:
46859
46905
  */
46860
46906
  async function readSessionFile(sessionFile) {
46861
46907
  try {
46862
- return await fs$1.readFile(sessionFile, "utf-8");
46908
+ return await fsPromises.readFile(sessionFile, "utf-8");
46863
46909
  } catch {
46864
46910
  return null;
46865
46911
  }
@@ -46868,8 +46914,8 @@ async function writeAtomically(sessionFile, text) {
46868
46914
  const dir = path.dirname(sessionFile);
46869
46915
  const base = path.basename(sessionFile);
46870
46916
  const tmp = path.join(dir, `.${base}.prune-${process.pid}-${Date.now()}.tmp`);
46871
- await fs$1.writeFile(tmp, text, "utf-8");
46872
- await fs$1.rename(tmp, sessionFile);
46917
+ await fsPromises.writeFile(tmp, text, "utf-8");
46918
+ await fsPromises.rename(tmp, sessionFile);
46873
46919
  }
46874
46920
  /**
46875
46921
  * Remove empty assistant JSONL entries from the session file.
@@ -46971,7 +47017,7 @@ function isInPoisonRange(version) {
46971
47017
  */
46972
47018
  async function checkSessionPoison(sessionFile) {
46973
47019
  try {
46974
- const firstLine = (await fs$1.readFile(sessionFile, "utf-8")).split("\n")[0];
47020
+ const firstLine = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n")[0];
46975
47021
  if (!firstLine) return null;
46976
47022
  const header = JSON.parse(firstLine);
46977
47023
  if (header.type !== "session") return null;
@@ -46989,7 +47035,7 @@ async function checkSessionPoison(sessionFile) {
46989
47035
  */
46990
47036
  async function archivePoisonedSession(sessionFile) {
46991
47037
  const archiveName = `${sessionFile}.archived-poison.${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")}`;
46992
- await fs$1.rename(sessionFile, archiveName);
47038
+ await fsPromises.rename(sessionFile, archiveName);
46993
47039
  return archiveName;
46994
47040
  }
46995
47041
  /**
@@ -46998,14 +47044,14 @@ async function archivePoisonedSession(sessionFile) {
46998
47044
  */
46999
47045
  async function stampSessionVersion(sessionFile) {
47000
47046
  try {
47001
- const lines = (await fs$1.readFile(sessionFile, "utf-8")).split("\n");
47047
+ const lines = (await fsPromises.readFile(sessionFile, "utf-8")).split("\n");
47002
47048
  if (lines.length === 0) return;
47003
47049
  const header = JSON.parse(lines[0]);
47004
47050
  if (header.type !== "session") return;
47005
47051
  if (header.symiVersion === VERSION) return;
47006
47052
  header.symiVersion = VERSION;
47007
47053
  lines[0] = JSON.stringify(header);
47008
- await fs$1.writeFile(sessionFile, lines.join("\n"), "utf-8");
47054
+ await fsPromises.writeFile(sessionFile, lines.join("\n"), "utf-8");
47009
47055
  } catch {}
47010
47056
  }
47011
47057
  /**
@@ -47234,7 +47280,7 @@ async function prepareSessionManagerForRun(params) {
47234
47280
  return;
47235
47281
  }
47236
47282
  if (params.hadSessionFile && header && !hasAssistant) {
47237
- await fs$1.writeFile(params.sessionFile, "", "utf-8");
47283
+ await fsPromises.writeFile(params.sessionFile, "", "utf-8");
47238
47284
  sm.fileEntries = [header];
47239
47285
  sm.byId?.clear?.();
47240
47286
  sm.labelsById?.clear?.();
@@ -47792,7 +47838,7 @@ async function runEmbeddedAttempt(params) {
47792
47838
  const prevCwd = process.cwd();
47793
47839
  const runAbortController = new AbortController();
47794
47840
  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"}`);
47795
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
47841
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
47796
47842
  const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
47797
47843
  const sandbox = await resolveSandboxContext({
47798
47844
  config: params.config,
@@ -47800,7 +47846,7 @@ async function runEmbeddedAttempt(params) {
47800
47846
  workspaceDir: resolvedWorkspace
47801
47847
  });
47802
47848
  const effectiveWorkspace = sandbox?.enabled ? sandbox.workspaceAccess === "rw" ? resolvedWorkspace : sandbox.workspaceDir : resolvedWorkspace;
47803
- await fs$1.mkdir(effectiveWorkspace, { recursive: true });
47849
+ await fsPromises.mkdir(effectiveWorkspace, { recursive: true });
47804
47850
  let restoreSkillEnv;
47805
47851
  process.chdir(effectiveWorkspace);
47806
47852
  try {
@@ -48009,7 +48055,7 @@ async function runEmbeddedAttempt(params) {
48009
48055
  sessionFile: params.sessionFile,
48010
48056
  warn: (message) => log$7.warn(message)
48011
48057
  });
48012
- const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
48058
+ const hadSessionFile = await fsPromises.stat(params.sessionFile).then(() => true).catch(() => false);
48013
48059
  const transcriptPolicy = resolveTranscriptPolicy({
48014
48060
  modelApi: params.model?.api,
48015
48061
  provider: params.provider,
@@ -49101,7 +49147,7 @@ async function runEmbeddedPiAgent(params) {
49101
49147
  }
49102
49148
  runLoopIterations += 1;
49103
49149
  attemptedThinking.add(thinkLevel);
49104
- await fs$1.mkdir(resolvedWorkspace, { recursive: true });
49150
+ await fsPromises.mkdir(resolvedWorkspace, { recursive: true });
49105
49151
  const prompt = provider === "anthropic" ? scrubAnthropicRefusalMagic(params.prompt) : params.prompt;
49106
49152
  const attempt = await runEmbeddedAttempt({
49107
49153
  sessionId: params.sessionId,