@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,24 +3,24 @@ import "./paths-By0XjHBk.js";
3
3
  import "./utils-CTPsqyE_.js";
4
4
  import "./subsystem-CHbO_DkH.js";
5
5
  import "./exec-DuYbft0z.js";
6
- import "./agent-scope-DOrZjOnW.js";
7
- import "./model-selection-7wdmO-Iw.js";
8
- import "./config-D7SS4vdk.js";
6
+ import "./agent-scope-Bnsyyeci.js";
7
+ import "./model-selection-CCTzD29o.js";
8
+ import "./config-D-PYSlE8.js";
9
9
  import "./boolean-CbZoNRMn.js";
10
10
  import "./env-BRnPI9sO.js";
11
11
  import "./shell-env-Dc3iU7HK.js";
12
12
  import "./manifest-registry-D1MLZEjS.js";
13
13
  import { a as findTailscaleBinary } from "./tailscale-DpKBMIvx.js";
14
- import "./sessions-optZRB57.js";
14
+ import "./sessions-aSo5jsmg.js";
15
15
  import "./dock-hF45sewN.js";
16
16
  import "./message-channel-DgjXWzf-.js";
17
17
  import "./plugins-CF5skkHh.js";
18
18
  import "./paths-BtvQ7JvU.js";
19
- import "./client-BzUAFrla.js";
20
- import "./call-BouPakqe.js";
21
- import "./pairing-token-Dcy37-4s.js";
19
+ import "./client-T5P9umyG.js";
20
+ import "./call-CW8U1BPq.js";
21
+ import "./pairing-token-B703A1U3.js";
22
22
  import "./prompt-style-BEDZROvQ.js";
23
- import { h as randomToken, u as normalizeGatewayTokenInput, y as validateGatewayPasswordInput } from "./onboard-helpers---sZ9pdZ.js";
23
+ import { h as randomToken, u as normalizeGatewayTokenInput, y as validateGatewayPasswordInput } from "./onboard-helpers-OB_xKQze.js";
24
24
  import { i as TAILSCALE_MISSING_BIN_NOTE_LINES, n as TAILSCALE_DOCS_LINES, r as TAILSCALE_EXPOSURE_OPTIONS, t as validateIPv4AddressInput } from "./ipv4-Coaw2jro.js";
25
25
 
26
26
  //#region src/wizard/onboarding.gateway-config.ts
@@ -1,7 +1,7 @@
1
1
  import { c as escapeRegExp, p as resolveConfigDir } from "./utils-CTPsqyE_.js";
2
- import { p as resolveAllowlistModelKey, w as DEFAULT_PROVIDER } from "./model-selection-7wdmO-Iw.js";
2
+ import { p as resolveAllowlistModelKey, w as DEFAULT_PROVIDER } from "./model-selection-CCTzD29o.js";
3
3
  import { n as fetchWithTimeout } from "./fetch-timeout-BhdrdVp5.js";
4
- import { St as ZAI_GLOBAL_BASE_URL, bt as ZAI_CODING_CN_BASE_URL, xt as ZAI_CODING_GLOBAL_BASE_URL, yt as ZAI_CN_BASE_URL } from "./auth-token-DgRRSbEX.js";
4
+ import { St as ZAI_GLOBAL_BASE_URL, bt as ZAI_CODING_CN_BASE_URL, xt as ZAI_CODING_GLOBAL_BASE_URL, yt as ZAI_CN_BASE_URL } from "./auth-token-CAV1oLQG.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs";
7
7
 
@@ -4,16 +4,16 @@ import "./utils-CTPsqyE_.js";
4
4
  import { f as defaultRuntime } from "./subsystem-CHbO_DkH.js";
5
5
  import { t as formatCliCommand } from "./command-format-BzjsXBTi.js";
6
6
  import "./exec-DuYbft0z.js";
7
- import "./agent-scope-DOrZjOnW.js";
8
- import "./model-selection-7wdmO-Iw.js";
9
- import "./file-lock-BVUYnlQv.js";
10
- import { i as loadConfig } from "./config-D7SS4vdk.js";
7
+ import "./agent-scope-Bnsyyeci.js";
8
+ import "./model-selection-CCTzD29o.js";
9
+ import "./file-lock-2AecMjCa.js";
10
+ import { i as loadConfig } from "./config-D-PYSlE8.js";
11
11
  import "./boolean-CbZoNRMn.js";
12
12
  import "./env-BRnPI9sO.js";
13
13
  import "./shell-env-Dc3iU7HK.js";
14
14
  import "./manifest-registry-D1MLZEjS.js";
15
15
  import { r as normalizeChannelId } from "./plugins-CF5skkHh.js";
16
- import { c as listPairingChannels, l as notifyPairingApproved, n as approveChannelPairingCode, r as listChannelPairingRequests, s as getPairingAdapter } from "./pairing-store-BNhJOnWn.js";
16
+ import { c as listPairingChannels, l as notifyPairingApproved, n as approveChannelPairingCode, r as listChannelPairingRequests, s as getPairingAdapter } from "./pairing-store-Be-ZQK87.js";
17
17
  import { t as formatDocsLink } from "./links-TQwptN6q.js";
18
18
  import { t as renderTable } from "./table-D902H0x3.js";
19
19
 
@@ -1,6 +1,6 @@
1
1
  import { _ as resolveStateDir, b as resolveRequiredHomeDir, h as resolveOAuthDir } from "./paths-By0XjHBk.js";
2
2
  import { g as safeParseJson } from "./utils-CTPsqyE_.js";
3
- import { t as withFileLock$1 } from "./file-lock-BVUYnlQv.js";
3
+ import { t as withFileLock$1 } from "./file-lock-2AecMjCa.js";
4
4
  import { n as listChannelPlugins, t as getChannelPlugin } from "./plugins-CF5skkHh.js";
5
5
  import crypto from "node:crypto";
6
6
  import path from "node:path";
@@ -2,12 +2,12 @@ import { _ as resolveStateDir } from "./paths-By0XjHBk.js";
2
2
  import { t as safeEqualSecret } from "./secret-equal-CbntzRkh.js";
3
3
  import { randomBytes, randomUUID } from "node:crypto";
4
4
  import path from "node:path";
5
- import fs from "node:fs/promises";
5
+ import fsPromises from "node:fs/promises";
6
6
 
7
7
  //#region src/infra/json-files.ts
8
8
  async function readJsonFile(filePath) {
9
9
  try {
10
- const raw = await fs.readFile(filePath, "utf8");
10
+ const raw = await fsPromises.readFile(filePath, "utf8");
11
11
  return JSON.parse(raw);
12
12
  } catch {
13
13
  return null;
@@ -16,15 +16,15 @@ async function readJsonFile(filePath) {
16
16
  async function writeJsonAtomic(filePath, value, options) {
17
17
  const mode = options?.mode ?? 384;
18
18
  const dir = path.dirname(filePath);
19
- await fs.mkdir(dir, { recursive: true });
19
+ await fsPromises.mkdir(dir, { recursive: true });
20
20
  const tmp = `${filePath}.${randomUUID()}.tmp`;
21
- await fs.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
21
+ await fsPromises.writeFile(tmp, JSON.stringify(value, null, 2), "utf8");
22
22
  try {
23
- await fs.chmod(tmp, mode);
23
+ await fsPromises.chmod(tmp, mode);
24
24
  } catch {}
25
- await fs.rename(tmp, filePath);
25
+ await fsPromises.rename(tmp, filePath);
26
26
  try {
27
- await fs.chmod(filePath, mode);
27
+ await fsPromises.chmod(filePath, mode);
28
28
  } catch {}
29
29
  }
30
30
  function createAsyncLock() {
@@ -1,5 +1,5 @@
1
1
  import { B as resolvePreferredSymiTmpDir } from "./registry-Sbac4a4z.js";
2
- import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-BdejYjW8.js";
2
+ import { n as openFileWithinRoot, t as SafeOpenError } from "./fs-safe-B0Is-oLk.js";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/browser/paths.ts
@@ -1,15 +1,15 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { b as ensureAuthProfileStore } from "./auth-profiles-Ce7R_25e.js";
3
- import { u as normalizeProviderId } from "./model-selection-7wdmO-Iw.js";
2
+ import { b as ensureAuthProfileStore } from "./auth-profiles-D5nYBj_Z.js";
3
+ import { u as normalizeProviderId } from "./model-selection-CCTzD29o.js";
4
4
  import { t as normalizeOptionalSecretInput } from "./normalize-secret-input-DjGU5EXe.js";
5
5
  import path from "node:path";
6
- import fs from "node:fs/promises";
6
+ import fsPromises from "node:fs/promises";
7
7
 
8
8
  //#region src/agents/pi-auth-json.ts
9
9
  var pi_auth_json_exports = /* @__PURE__ */ __exportAll({ ensurePiAuthJsonFromAuthProfiles: () => ensurePiAuthJsonFromAuthProfiles });
10
10
  async function readAuthJson(filePath) {
11
11
  try {
12
- const raw = await fs.readFile(filePath, "utf8");
12
+ const raw = await fsPromises.readFile(filePath, "utf8");
13
13
  const parsed = JSON.parse(raw);
14
14
  if (!parsed || typeof parsed !== "object") return {};
15
15
  return parsed;
@@ -120,11 +120,11 @@ async function ensurePiAuthJsonFromAuthProfiles(agentDir, options) {
120
120
  wrote: false,
121
121
  authPath
122
122
  };
123
- await fs.mkdir(agentDir, {
123
+ await fsPromises.mkdir(agentDir, {
124
124
  recursive: true,
125
125
  mode: 448
126
126
  });
127
- await fs.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
127
+ await fsPromises.writeFile(authPath, `${JSON.stringify(existing, null, 2)}\n`, { mode: 384 });
128
128
  return {
129
129
  wrote: true,
130
130
  authPath
@@ -9,7 +9,7 @@ import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as reso
9
9
  import { t as normalizeChatType } from "./chat-type-Acj2OK2p.js";
10
10
  import { i as resolveSlackAccount, n as listChannelPlugins, o as resolveSlackAppToken, r as normalizeChannelId$1, s as resolveSlackBotToken, t as getChannelPlugin } from "./plugins-CZ_mYwXq.js";
11
11
  import { S as resolveSlackChannelId, _ as resolveSlackWebClientOptions, a as sendMessageSlack, b as buildSlackBlocksFallbackText, c as getDefaultLocalRoots, d as fetchRemoteMedia, f as readResponseWithLimit, g as createSlackWebClient, h as fetchWithTimeout, i as resolveSlackThreadTs, l as loadWebMedia, m as bindAbortRelay, n as deliverReplies, o as renderMarkdownWithMarkers, p as fetchWithSsrFGuard, s as markdownToIRWithMeta, t as createSlackReplyDeliveryPlan, u as MediaFetchError, v as parseSlackBlocksInput, x as parseSlackTarget, y as validateSlackBlocksArray } from "./replies-BYF1gbJf.js";
12
- import { $ as loadSessionStore, $t as resolveToolProfilePolicy, A as formatRawAssistantErrorForUi, At as resolveMainSessionKey, B as isRateLimitAssistantError, Bt as saveMediaBuffer, C as downgradeOpenAIReasoningBlocks, Ct as resolveChannelResetConfig, D as classifyFailoverReason, Dt as DEFAULT_RESET_TRIGGERS, E as BILLING_ERROR_USER_MESSAGE, Et as resolveThreadFlag, F as isCompactionFailureError, Ft as createBrowserRouteContext, G as parseImageSizeError, Gt as resolveBrowserControlAuth, H as isTimeoutErrorMessage, Ht as resolveExistingPathsWithinRoot, I as isContextOverflowError, It as registerBrowserRoutes, J as resolveSandboxContext, Jt as collectExplicitAllowlist, K as sanitizeUserFacingText, Kt as applyOwnerOnlyToolPolicy, L as isFailoverAssistantError, Lt as resolveBrowserConfig, M as isAuthAssistantError, Mt as resolveGroupSessionKey, N as isBillingAssistantError, Nt as acquireSessionWriteLock, O as formatAssistantErrorText, Ot as resolveFreshSessionTotalTokens, P as isCloudCodeAssistFormatError, Pt as resolveSessionLockMaxHoldFromTimeout, Q as resolveAndPersistSessionFile, Qt as normalizeToolName$1, R as isFailoverErrorMessage, Rt as resolveProfile, S as extractToolResultId, St as evaluateSessionFreshness, T as isGoogleModelApi, Tt as resolveSessionResetType, U as isTransientHttpError, Ut as getBridgeAuthForPort, V as isRawApiErrorPayload, Vt as DEFAULT_UPLOAD_DIR, W as parseImageDimensionError, Wt as ensureBrowserControlAuth, X as extractDeliveryInfo, Xt as expandToolGroups, Y as resolveSandboxRuntimeStatus, Yt as expandPolicyWithPluginGroups, Z as appendAssistantMessageToSessionTranscript, Zt as mergeAlsoAllowPolicy, _ as sanitizeSessionMessagesImages, _t as INPUT_PROVENANCE_KIND_VALUES, a as normalizeChannelTargetInput, an as resolveBootstrapMaxChars, at as updateSessionStoreEntry, b as resolveImageSanitizationLimits, bt as normalizeInputProvenance, c as parseReplyDirectives, cn as getGlobalHookRunner, ct as deliveryContextFromSession, d as parseInlineDirectives$1, dt as normalizeDeliveryContext, en as stripPluginOnlyAllowlist, et as readSessionUpdatedAt, f as validateAnthropicTurns, ft as normalizeSessionDeliveryFields, g as normalizeTextForComparison, gt as extractToolCallNames, h as isMessagingToolDuplicateNormalized, ht as countToolResults, i as buildTargetResolverSignature, in as ensureSessionHeader, it as updateSessionStore, j as getApiErrorPayloadFingerprint, jt as deriveSessionMetaPatch, k as formatBillingErrorMessage, kt as canonicalizeMainSessionAlias, l as MEDIA_TOKEN_RE, ln as initializeGlobalHookRunner, lt as deliveryContextKey, m as pickFallbackThinkingLevel, mt as capArrayByJsonBytes, nn as matchesAnyGlobPattern, o as normalizeTargetForProvider, on as resolveBootstrapTotalMaxChars, ot as isCacheEnabled, p as validateGeminiTurns, pt as archiveSessionTranscripts, q as ensureSandboxWorkspaceForSession, qt as buildPluginToolGroups, r as normalizeReplyPayloadsForDelivery, rn as buildBootstrapContextFiles, rt as updateLastRoute, s as throwIfAborted, sn as sanitizeGoogleTurnOrdering, st as resolveCacheTtlMs$1, t as deliverOutboundPayloads, tn as compileGlobPatterns, tt as recordSessionMetaFromInbound, u as splitMediaFromOutput, ut as mergeDeliveryContext, v as sanitizeImageBlocks, vt as applyInputProvenanceToUserMessage, w as isAntigravityClaude, wt as resolveSessionResetPolicy, x as extractToolCallsFromAssistant, xt as resolveSessionKey, y as sanitizeToolResultImages, yt as hasInterSessionUserProvenance, z as isLikelyContextOverflowError, zt as getMediaDir } from "./deliver-oWGJwzFf.js";
12
+ import { $ as loadSessionStore, $t as resolveToolProfilePolicy, A as formatRawAssistantErrorForUi, At as resolveMainSessionKey, B as isRateLimitAssistantError, Bt as saveMediaBuffer, C as downgradeOpenAIReasoningBlocks, Ct as resolveChannelResetConfig, D as classifyFailoverReason, Dt as DEFAULT_RESET_TRIGGERS, E as BILLING_ERROR_USER_MESSAGE, Et as resolveThreadFlag, F as isCompactionFailureError, Ft as createBrowserRouteContext, G as parseImageSizeError, Gt as resolveBrowserControlAuth, H as isTimeoutErrorMessage, Ht as resolveExistingPathsWithinRoot, I as isContextOverflowError, It as registerBrowserRoutes, J as resolveSandboxContext, Jt as collectExplicitAllowlist, K as sanitizeUserFacingText, Kt as applyOwnerOnlyToolPolicy, L as isFailoverAssistantError, Lt as resolveBrowserConfig, M as isAuthAssistantError, Mt as resolveGroupSessionKey, N as isBillingAssistantError, Nt as acquireSessionWriteLock, O as formatAssistantErrorText, Ot as resolveFreshSessionTotalTokens, P as isCloudCodeAssistFormatError, Pt as resolveSessionLockMaxHoldFromTimeout, Q as resolveAndPersistSessionFile, Qt as normalizeToolName$1, R as isFailoverErrorMessage, Rt as resolveProfile, S as extractToolResultId, St as evaluateSessionFreshness, T as isGoogleModelApi, Tt as resolveSessionResetType, U as isTransientHttpError, Ut as getBridgeAuthForPort, V as isRawApiErrorPayload, Vt as DEFAULT_UPLOAD_DIR, W as parseImageDimensionError, Wt as ensureBrowserControlAuth, X as extractDeliveryInfo, Xt as expandToolGroups, Y as resolveSandboxRuntimeStatus, Yt as expandPolicyWithPluginGroups, Z as appendAssistantMessageToSessionTranscript, Zt as mergeAlsoAllowPolicy, _ as sanitizeSessionMessagesImages, _t as INPUT_PROVENANCE_KIND_VALUES, a as normalizeChannelTargetInput, an as resolveBootstrapMaxChars, at as updateSessionStoreEntry, b as resolveImageSanitizationLimits, bt as normalizeInputProvenance, c as parseReplyDirectives, cn as getGlobalHookRunner, ct as deliveryContextFromSession, d as parseInlineDirectives$1, dt as normalizeDeliveryContext, en as stripPluginOnlyAllowlist, et as readSessionUpdatedAt, f as validateAnthropicTurns, ft as normalizeSessionDeliveryFields, g as normalizeTextForComparison, gt as extractToolCallNames, h as isMessagingToolDuplicateNormalized, ht as countToolResults, i as buildTargetResolverSignature, in as ensureSessionHeader, it as updateSessionStore, j as getApiErrorPayloadFingerprint, jt as deriveSessionMetaPatch, k as formatBillingErrorMessage, kt as canonicalizeMainSessionAlias, l as MEDIA_TOKEN_RE, ln as initializeGlobalHookRunner, lt as deliveryContextKey, m as pickFallbackThinkingLevel, mt as capArrayByJsonBytes, nn as matchesAnyGlobPattern, o as normalizeTargetForProvider, on as resolveBootstrapTotalMaxChars, ot as isCacheEnabled, p as validateGeminiTurns, pt as archiveSessionTranscripts, q as ensureSandboxWorkspaceForSession, qt as buildPluginToolGroups, r as normalizeReplyPayloadsForDelivery, rn as buildBootstrapContextFiles, rt as updateLastRoute, s as throwIfAborted, sn as sanitizeGoogleTurnOrdering, st as resolveCacheTtlMs$1, t as deliverOutboundPayloads, tn as compileGlobPatterns, tt as recordSessionMetaFromInbound, u as splitMediaFromOutput, ut as mergeDeliveryContext, v as sanitizeImageBlocks, vt as applyInputProvenanceToUserMessage, w as isAntigravityClaude, wt as resolveSessionResetPolicy, x as extractToolCallsFromAssistant, xt as resolveSessionKey, y as sanitizeToolResultImages, yt as hasInterSessionUserProvenance, z as isLikelyContextOverflowError, zt as getMediaDir } from "./deliver-Cjyb6h4g.js";
13
13
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-BdRnGknC.js";
14
14
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-DpxCUzoM.js";
15
15
  import { S as GATEWAY_CLIENT_NAMES, _ as listDeliverableMessageChannels, a as chunkText, b as GATEWAY_CLIENT_IDS, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, g as isMarkdownCapableMessageChannel, h as isInternalMessageChannel, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, m as isDeliverableMessageChannel, o as chunkTextWithMode, p as INTERNAL_MESSAGE_CHANNEL, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt, v as normalizeMessageChannel, x as GATEWAY_CLIENT_MODES, y as resolveGatewayMessageChannel } from "./chunk-CAZujdOi.js";
@@ -18,7 +18,7 @@ import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, T as VERSION, _
18
18
  import { t as parseBooleanValue } from "./boolean-BW6OTjPi.js";
19
19
  import { i as resolveShellEnvFallbackTimeoutMs, n as getShellPathFromLoginShell, s as isTruthyEnvValue } from "./shell-env-DgjeObDZ.js";
20
20
  import { c as normalizePluginsConfig, f as isPathInsideWithRealpath, i as safeStatSync, l as resolveEnableState, n as discoverSymiPlugins, p as isDangerousHostEnvVarName, r as isPathInside, s as applyTestPluginDefaults, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-CAWGTwb5.js";
21
- import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-B7-rO4i9.js";
21
+ import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-BKUACyeO.js";
22
22
  import { n as resolveCliName, t as formatCliCommand } from "./command-format-DPd9RN2g.js";
23
23
  import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, h as parseFrontmatterBlock, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DO7WNsVJ.js";
24
24
  import { n as redactToolDetail } from "./redact-DSOAcWMe.js";
@@ -29,7 +29,7 @@ import { n as resolveConversationLabel } from "./conversation-label-DTTqF8gH.js"
29
29
  import { i as resolveSessionTranscriptPath, n as resolveSessionFilePath, o as resolveSessionTranscriptsDirForAgent, r as resolveSessionFilePathOptions, s as resolveStorePath, t as resolveDefaultSessionStorePath } from "./paths-BsT3BvfH.js";
30
30
  import { t as emitSessionTranscriptUpdate } from "./transcript-events-ChU6IQwp.js";
31
31
  import { n as saveJsonFile, t as loadJsonFile } from "./json-file-B7D44OOV.js";
32
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-DhHNnMyK.js";
32
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-Bryhc0Ip.js";
33
33
  import { r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-dYUr1mDQ.js";
34
34
  import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-Ce-sg7EN.js";
35
35
  import { n as resolveMarkdownTableMode } from "./markdown-tables-jQzXAsf3.js";
@@ -53,7 +53,7 @@ import { fileURLToPath } from "node:url";
53
53
  import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
54
54
  import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUID } from "node:crypto";
55
55
  import AjvPkg from "ajv";
56
- import { WebSocket as WebSocket$1 } from "ws";
56
+ import { WebSocket } from "ws";
57
57
  import { Buffer as Buffer$1 } from "node:buffer";
58
58
  import { complete, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
59
59
  import { BedrockClient, ListFoundationModelsCommand } from "@aws-sdk/client-bedrock";
@@ -3390,7 +3390,7 @@ async function getMemorySearchManager(params) {
3390
3390
  const wrapper = new FallbackMemoryManager({
3391
3391
  primary,
3392
3392
  fallbackFactory: async () => {
3393
- const { MemoryIndexManager } = await import("./manager-DhHNnMyK.js").then((n) => n.t);
3393
+ const { MemoryIndexManager } = await import("./manager-Bryhc0Ip.js").then((n) => n.t);
3394
3394
  return await MemoryIndexManager.get(params);
3395
3395
  }
3396
3396
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -3403,7 +3403,7 @@ async function getMemorySearchManager(params) {
3403
3403
  }
3404
3404
  }
3405
3405
  try {
3406
- const { MemoryIndexManager } = await import("./manager-DhHNnMyK.js").then((n) => n.t);
3406
+ const { MemoryIndexManager } = await import("./manager-Bryhc0Ip.js").then((n) => n.t);
3407
3407
  return { manager: await MemoryIndexManager.get(params) };
3408
3408
  } catch (err) {
3409
3409
  return {
@@ -5918,7 +5918,7 @@ var GatewayClient = class {
5918
5918
  if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
5919
5919
  });
5920
5920
  }
5921
- this.ws = new WebSocket$1(url, wsOptions);
5921
+ this.ws = new WebSocket(url, wsOptions);
5922
5922
  this.ws.on("open", () => {
5923
5923
  if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
5924
5924
  const tlsError = this.validateTlsFingerprint();
@@ -6137,7 +6137,7 @@ var GatewayClient = class {
6137
6137
  return null;
6138
6138
  }
6139
6139
  async request(method, params, opts) {
6140
- if (!this.ws || this.ws.readyState !== WebSocket$1.OPEN) throw new Error("gateway not connected");
6140
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
6141
6141
  const id = randomUUID();
6142
6142
  const frame = {
6143
6143
  type: "req",
@@ -7084,7 +7084,7 @@ async function routeReply(params) {
7084
7084
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
7085
7085
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
7086
7086
  try {
7087
- const { deliverOutboundPayloads } = await import("./deliver-oWGJwzFf.js").then((n) => n.n);
7087
+ const { deliverOutboundPayloads } = await import("./deliver-Cjyb6h4g.js").then((n) => n.n);
7088
7088
  return {
7089
7089
  ok: true,
7090
7090
  messageId: (await deliverOutboundPayloads({
@@ -40590,11 +40590,19 @@ function createWebSearchTool(options) {
40590
40590
  const provider = resolveSearchProvider(search);
40591
40591
  const perplexityConfig = resolvePerplexityConfig(search);
40592
40592
  const grokConfig = resolveGrokConfig(search);
40593
+ 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.";
40594
+ const resolveActiveApiKey = () => {
40595
+ if (provider === "perplexity") return resolvePerplexityApiKey(perplexityConfig)?.apiKey;
40596
+ if (provider === "grok") return resolveGrokApiKey(grokConfig);
40597
+ return resolveSearchApiKey(search);
40598
+ };
40593
40599
  return {
40594
40600
  label: "Web Search",
40595
40601
  name: "web_search",
40596
- 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.",
40602
+ description,
40597
40603
  parameters: WebSearchSchema,
40604
+ checkFn: () => Boolean(resolveActiveApiKey()),
40605
+ requiredEnv: provider === "perplexity" ? ["PERPLEXITY_API_KEY", "OPENROUTER_API_KEY"] : provider === "grok" ? ["XAI_API_KEY"] : ["BRAVE_API_KEY"],
40598
40606
  execute: async (_toolCallId, args) => {
40599
40607
  const perplexityAuth = provider === "perplexity" ? resolvePerplexityApiKey(perplexityConfig) : void 0;
40600
40608
  const apiKey = provider === "perplexity" ? perplexityAuth?.apiKey : provider === "grok" ? resolveGrokApiKey(grokConfig) : resolveSearchApiKey(search);
@@ -41140,7 +41148,7 @@ async function deliverSessionMaintenanceWarning(params) {
41140
41148
  return;
41141
41149
  }
41142
41150
  try {
41143
- const { deliverOutboundPayloads } = await import("./deliver-oWGJwzFf.js").then((n) => n.n);
41151
+ const { deliverOutboundPayloads } = await import("./deliver-Cjyb6h4g.js").then((n) => n.n);
41144
41152
  await deliverOutboundPayloads({
41145
41153
  cfg: params.cfg,
41146
41154
  channel,
@@ -60903,6 +60911,44 @@ function applyToolPolicyPipeline(params) {
60903
60911
  return filtered;
60904
60912
  }
60905
60913
 
60914
+ //#endregion
60915
+ //#region src/agents/tools/availability-filter.ts
60916
+ const FORCE_ALL_TOOLS_ENV = "SYMI_FORCE_ALL_TOOLS";
60917
+ /**
60918
+ * Filter the tool palette by each tool's `checkFn`. Tools without a
60919
+ * checkFn pass through unchanged. Throwing checkFns are treated as
60920
+ * available (defensive). The `SYMI_FORCE_ALL_TOOLS=1` env bypasses the
60921
+ * filter entirely.
60922
+ *
60923
+ * Pure function — does not mutate the input array.
60924
+ */
60925
+ function filterToolsByAvailability(tools) {
60926
+ if (isTruthyEnvValue(process.env[FORCE_ALL_TOOLS_ENV])) return [...tools];
60927
+ const out = [];
60928
+ for (const tool of tools) {
60929
+ if (!tool.checkFn) {
60930
+ out.push(tool);
60931
+ continue;
60932
+ }
60933
+ let available;
60934
+ try {
60935
+ available = tool.checkFn();
60936
+ } catch (err) {
60937
+ logVerbose(`tool availability: checkFn for "${getToolName(tool)}" threw — including tool anyway. ${String(err)}`);
60938
+ out.push(tool);
60939
+ continue;
60940
+ }
60941
+ if (available) out.push(tool);
60942
+ else logVerbose(`tool availability: filtered out "${getToolName(tool)}" — checkFn returned false. Set ${FORCE_ALL_TOOLS_ENV}=1 to bypass this filter.`);
60943
+ }
60944
+ return out;
60945
+ }
60946
+ function getToolName(tool) {
60947
+ const definition = tool.definition;
60948
+ if (definition && typeof definition.name === "string") return definition.name;
60949
+ return "(unknown tool)";
60950
+ }
60951
+
60906
60952
  //#endregion
60907
60953
  //#region src/agents/pi-tools.ts
60908
60954
  function isOpenAIProvider(provider) {
@@ -61122,7 +61168,7 @@ function createSymiCodingTools(options) {
61122
61168
  root: sandboxRoot,
61123
61169
  bridge: sandboxFsBridge
61124
61170
  }), readEditTracker) : null;
61125
- const withHooks = applyToolPolicyPipeline({
61171
+ const withHooks = filterToolsByAvailability(applyToolPolicyPipeline({
61126
61172
  tools: applyOwnerOnlyToolPolicy([
61127
61173
  ...base,
61128
61174
  ...sandboxRoot ? allowWorkspaceWrites && sandboxedEditTool && sandboxedWriteTool ? [workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedEditTool, sandboxRoot) : sandboxedEditTool, workspaceOnly ? wrapToolWorkspaceRootGuard(sandboxedWriteTool, sandboxRoot) : sandboxedWriteTool] : [] : [],
@@ -61194,7 +61240,7 @@ function createSymiCodingTools(options) {
61194
61240
  label: "subagent tools.allow"
61195
61241
  }
61196
61242
  ]
61197
- }).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
61243
+ })).map((tool) => normalizeToolParameters(tool, { modelProvider: options?.modelProvider })).map((tool) => wrapToolWithBeforeToolCallHook(tool, {
61198
61244
  agentId,
61199
61245
  sessionKey: options?.sessionKey,
61200
61246
  loopDetection: resolveToolLoopDetectionConfig({
@@ -1,11 +1,11 @@
1
1
  import { x as truncateUtf16Safe } from "./utils-CTPsqyE_.js";
2
2
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
3
- import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-Dx8IMw-E.js";
4
- import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-L70xVnpG.js";
3
+ import { s as formatSandboxToolPolicyBlockedMessage } from "./sandbox-DQCaejcD.js";
4
+ import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BzCBIakN.js";
5
5
  import { s as normalizeThinkLevel } from "./thinking-COroyVA5.js";
6
6
  import { createHash } from "node:crypto";
7
7
  import path from "node:path";
8
- import fs from "node:fs/promises";
8
+ import fsPromises from "node:fs/promises";
9
9
 
10
10
  //#region src/agents/pi-embedded-helpers/bootstrap.ts
11
11
  function isBase64Signature(value) {
@@ -102,10 +102,10 @@ function clampToBudget(content, budget) {
102
102
  async function ensureSessionHeader(params) {
103
103
  const file = params.sessionFile;
104
104
  try {
105
- await fs.stat(file);
105
+ await fsPromises.stat(file);
106
106
  return;
107
107
  } catch {}
108
- await fs.mkdir(path.dirname(file), { recursive: true });
108
+ await fsPromises.mkdir(path.dirname(file), { recursive: true });
109
109
  const entry = {
110
110
  type: "session",
111
111
  version: 2,
@@ -113,7 +113,7 @@ async function ensureSessionHeader(params) {
113
113
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
114
114
  cwd: params.cwd
115
115
  };
116
- await fs.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
116
+ await fsPromises.writeFile(file, `${JSON.stringify(entry)}\n`, "utf-8");
117
117
  }
118
118
  function buildBootstrapContextFiles(files, opts) {
119
119
  const maxChars = opts?.maxChars ?? DEFAULT_BOOTSTRAP_MAX_CHARS;
@@ -1,7 +1,7 @@
1
1
  import { S as resolveThreadParentSessionKey, c as resolveAgentIdFromSessionKey } from "./session-key-DUSb7CCb.js";
2
- import { r as resolveAgentConfig } from "./agent-scope-DOrZjOnW.js";
3
- import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-D7SS4vdk.js";
4
- import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-Dx8IMw-E.js";
2
+ import { r as resolveAgentConfig } from "./agent-scope-Bnsyyeci.js";
3
+ import { A as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH } from "./config-D-PYSlE8.js";
4
+ import { T as matchesAnyGlobPattern, w as compileGlobPatterns, x as normalizeToolName, y as expandToolGroups } from "./sandbox-DQCaejcD.js";
5
5
  import { a as resolveChannelGroupToolsPolicy, t as getChannelDock } from "./dock-hF45sewN.js";
6
6
  import { l as normalizeMessageChannel } from "./message-channel-DgjXWzf-.js";
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { o as getChatChannelMeta, s as listChatChannels, u as normalizeChatChannelId } from "./registry-Sbac4a4z.js";
2
2
  import { u as isRecord } from "./utils-CTPsqyE_.js";
3
- import { u as normalizeProviderId } from "./model-selection-7wdmO-Iw.js";
3
+ import { u as normalizeProviderId } from "./model-selection-CCTzD29o.js";
4
4
  import { n as getChannelPluginCatalogEntry, r as listChannelPluginCatalogEntries } from "./catalog-DsC3JTw1.js";
5
5
  import { t as ensurePluginAllowlisted } from "./plugins-allowlist-CWCQC08H.js";
6
6
 
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
- import { s as loadSymiPlugins } from "./unified-runner-DZAjU6aB.js";
2
+ import { s as loadSymiPlugins } from "./unified-runner-BIUJm_Iv.js";
3
3
  import { d as getActivePluginRegistry } from "./registry-Sbac4a4z.js";
4
4
  import { t as createSubsystemLogger } from "./subsystem-CHbO_DkH.js";
5
- import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-DOrZjOnW.js";
6
- import { i as loadConfig } from "./config-D7SS4vdk.js";
5
+ import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-Bnsyyeci.js";
6
+ import { i as loadConfig } from "./config-D-PYSlE8.js";
7
7
 
8
8
  //#region src/cli/plugin-registry.ts
9
9
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
2
2
  import { M as getActivePluginRegistry, o as createSubsystemLogger } from "./entry.js";
3
3
  import { c as resolveAgentWorkspaceDir, l as resolveDefaultAgentId } from "./agent-scope-C-Jte08L.js";
4
4
  import { i as loadConfig } from "./config-_DaupjQd.js";
5
- import { m as loadSymiPlugins } from "./subagent-registry-Dkif1XYO.js";
5
+ import { m as loadSymiPlugins } from "./subagent-registry-DWemyjbN.js";
6
6
 
7
7
  //#region src/cli/plugin-registry.ts
8
8
  var plugin_registry_exports = /* @__PURE__ */ __exportAll({ ensurePluginRegistryLoaded: () => ensurePluginRegistryLoaded });
@@ -1,2 +1 @@
1
- import type { AgentTool } from "@mariozechner/pi-agent-core";
2
- export type AnyAgentTool = AgentTool<any, unknown>;
1
+ export type { AnyAgentTool } from "./tools/common.js";
@@ -0,0 +1,10 @@
1
+ import type { AnyAgentTool } from "./common.js";
2
+ /**
3
+ * Filter the tool palette by each tool's `checkFn`. Tools without a
4
+ * checkFn pass through unchanged. Throwing checkFns are treated as
5
+ * available (defensive). The `SYMI_FORCE_ALL_TOOLS=1` env bypasses the
6
+ * filter entirely.
7
+ *
8
+ * Pure function — does not mutate the input array.
9
+ */
10
+ export declare function filterToolsByAvailability(tools: readonly AnyAgentTool[]): AnyAgentTool[];
@@ -2,6 +2,36 @@ import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core";
2
2
  import type { ImageSanitizationLimits } from "../image-sanitization.js";
3
3
  export type AnyAgentTool = AgentTool<any, unknown> & {
4
4
  ownerOnly?: boolean;
5
+ /**
6
+ * Optional runtime availability check. If defined and returns `false`,
7
+ * the tool is filtered out of the agent's palette before the LLM ever
8
+ * sees it — preventing wasted turns on tools that can't actually run
9
+ * (e.g., a search tool with no API key configured).
10
+ *
11
+ * **Defensive design rules**:
12
+ * - Default behavior (when not defined) is "always available" — tools
13
+ * without checkFn are NEVER filtered. Existing tools keep working
14
+ * exactly as before.
15
+ * - When implementing checkFn, only return `false` if the tool is
16
+ * CERTAIN to fail. When uncertain, return `true` and let the agent
17
+ * try — better to surface the real error than to wrongly hide a
18
+ * working tool.
19
+ * - For multi-credential tools (e.g., web_search has 4 providers),
20
+ * return `true` if ANY credential path is available.
21
+ * - The user can bypass all checkFn filtering by setting the env var
22
+ * `SYMI_FORCE_ALL_TOOLS=1` — useful when our check is wrong and
23
+ * the user knows their setup works.
24
+ */
25
+ checkFn?: () => boolean;
26
+ /**
27
+ * Optional declarative list of env var names this tool may use. Pure
28
+ * metadata — the gateway uses it to answer "Why isn't tool X
29
+ * available?" by listing which env vars would enable it. Not consumed
30
+ * for actual gating (that's checkFn's job). When the tool accepts
31
+ * credentials from multiple sources (env, config, profile store),
32
+ * list every env var name it ever consults.
33
+ */
34
+ requiredEnv?: readonly string[];
5
35
  };
6
36
  export type StringParamOptions = {
7
37
  required?: boolean;