@nikolasp98/minion 2026.6.14-dev.20260616061802 → 2026.6.16-dev

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 (393) hide show
  1. package/dist/{acp-cli-Du7NWZu3.js → acp-cli-2xKZfd6v.js} +3 -3
  2. package/dist/{acp-cli-BmKOFno7.js → acp-cli-q8e4aJoa.js} +3 -3
  3. package/dist/{agent-6dzad4Vk.js → agent-CZq9c4BW.js} +13 -13
  4. package/dist/{agent-step-C3wXb9Cx.js → agent-step-D5w2xNfi.js} +2 -2
  5. package/dist/{agent-step-Bf1GImWB.js → agent-step-DnVo1ws9.js} +2 -2
  6. package/dist/{agents-Dw2xlB7X.js → agents-3owoMugG.js} +7 -7
  7. package/dist/{agents-list-tool-Dq0lIpTn.js → agents-list-tool-Bjcc4I_6.js} +3 -3
  8. package/dist/{agents-list-tool-D9mHFLLa.js → agents-list-tool-CzUTgXov.js} +3 -3
  9. package/dist/{agents.config-1imA1H12.js → agents.config-Di1Fb5KI.js} +12 -12
  10. package/dist/{audit-DmbpL3cv.js → audit-B8L_aShb.js} +10 -10
  11. package/dist/{audit-DmJGMt0j.js → audit-Ck6MCUxx.js} +10 -10
  12. package/dist/{auth-choice-neer30p3.js → auth-choice-B6U5biA7.js} +4 -4
  13. package/dist/{auth-choice-CAmZkQLg.js → auth-choice-DmpOyRlb.js} +4 -4
  14. package/dist/{banner-DpI_geg3.js → banner-Be2ToLay.js} +1 -1
  15. package/dist/{browser-cli-z39mB4Us.js → browser-cli-BvtSNPci.js} +3 -3
  16. package/dist/{browser-cli-DDHEGwdS.js → browser-cli-De-S5eSp.js} +3 -3
  17. package/dist/{browser-tool-CWG74LXa.js → browser-tool-BVAlCkv9.js} +7 -7
  18. package/dist/{browser-tool-CZsdYOyF.js → browser-tool-CTNhVzit.js} +7 -7
  19. package/dist/build-info.json +3 -3
  20. package/dist/bundled/boot-md/handler.js +489 -42
  21. package/dist/bundled/kg-message-sync/handler.js +6 -2
  22. package/dist/bundled/session-memory/handler.js +47 -1
  23. package/dist/{call-DkT-xA-u.js → call-BrDNyQiZ.js} +2 -2
  24. package/dist/{call-COjGFB_A.js → call-Di0NGY7s.js} +2 -2
  25. package/dist/{call-BKa0221r.js → call-QNmBuec5.js} +1 -1
  26. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  27. package/dist/{canvas-tool-yqzOmVk8.js → canvas-tool-C8kJ8X6t.js} +2 -2
  28. package/dist/{canvas-tool-D7utVUj9.js → canvas-tool-v_tDod0l.js} +2 -2
  29. package/dist/{channel-options-DDJR7t6c.js → channel-options-BgB_XE_R.js} +1 -1
  30. package/dist/{channel-options-wAeX19Sd.js → channel-options-C3G3uvc8.js} +1 -1
  31. package/dist/{channel-web-B731iz_S.js → channel-web-C7erWB8c.js} +7 -7
  32. package/dist/{channels-cli-DyZ1QjyT.js → channels-cli-CWL9_dUC.js} +9 -9
  33. package/dist/{channels-cli-B2lgO976.js → channels-cli-D0WU7aEW.js} +9 -9
  34. package/dist/{chrome-BYfNS8BB.js → chrome-BUH9jMtc.js} +1 -1
  35. package/dist/{chrome-DKRiholg.js → chrome-WqxB18cs.js} +2 -2
  36. package/dist/{chrome-C3MXJRdA.js → chrome-xmfH0ICu.js} +2 -2
  37. package/dist/{clawbot-cli-ByrTjcjf.js → clawbot-cli-BqvWmOf2.js} +1 -1
  38. package/dist/{clawbot-cli-C-8EFRKv.js → clawbot-cli-Cy4xxEwA.js} +1 -1
  39. package/dist/cli/daemon-cli.js +1 -1
  40. package/dist/{cli-DNiohgQu.js → cli-C6-qelzK.js} +3 -3
  41. package/dist/{cli-D-m3umOT.js → cli-COPy2u3N.js} +3 -3
  42. package/dist/{client-D2hf2jQ7.js → client-BIS2Uayk.js} +4 -4
  43. package/dist/{client-BQN-LuPk.js → client-BoM5FwV4.js} +4 -4
  44. package/dist/{client-xu3whbFC.js → client-CTr2olAS.js} +4 -4
  45. package/dist/{command-registry-CB0tYTNA.js → command-registry-BSAY6wdm.js} +14 -14
  46. package/dist/{commands-registry-PW7IInMR.js → commands-registry-SXjoCA7i.js} +2 -2
  47. package/dist/{commands-registry-dia3m7-M.js → commands-registry-UnBqSA67.js} +2 -2
  48. package/dist/{completion-cli-Dg5pvBMY.js → completion-cli--3eqgAwK.js} +1 -1
  49. package/dist/{completion-cli-CSzxM5wY.js → completion-cli-RDTl_9qR.js} +2 -2
  50. package/dist/{config-BBoAK0dA.js → config-CkMQunWU.js} +6 -2
  51. package/dist/{config-ClkrcdId.js → config-DHYot764.js} +2 -2
  52. package/dist/{config-BgqD6SVw.js → config-DJTLRK5S.js} +2 -2
  53. package/dist/{config-cli-Denu0eEu.js → config-cli-BUCeVfP_.js} +4 -4
  54. package/dist/{config-cli-DtAjejub.js → config-cli-C1RrXpz0.js} +4 -4
  55. package/dist/{config-guard-DF1WNs2e.js → config-guard-CVx36OOi.js} +3 -3
  56. package/dist/config-guard-Csz0-uEX.js +2 -0
  57. package/dist/{config-validation-mmyHFUrK.js → config-validation-BVN3OEOd.js} +2 -2
  58. package/dist/{config-validation-lm5BwYiy.js → config-validation-C3jULSMI.js} +2 -2
  59. package/dist/{configure-CxrB1V4C.js → configure-CQEz5KQ3.js} +15 -15
  60. package/dist/{configure-CroxylRT.js → configure-akx6bWAt.js} +15 -15
  61. package/dist/{cron-cli-CYFkAl-f.js → cron-cli-BoMJUHUX.js} +2 -2
  62. package/dist/{cron-cli-CMjG3iLg.js → cron-cli-DvtMDSN2.js} +1 -1
  63. package/dist/{cron-tool-B3ffaxAO.js → cron-tool-Dcr3QMih.js} +5 -5
  64. package/dist/{cron-tool-BnUUPLV3.js → cron-tool-DllqQBKI.js} +5 -5
  65. package/dist/{daemon-cli-Bs0GD5xF.js → daemon-cli-CHfZAu4w.js} +9 -9
  66. package/dist/{daemon-cli-dauqwBcE.js → daemon-cli-D7K6zRR6.js} +9 -9
  67. package/dist/daemon-cli.js +6 -2
  68. package/dist/daemon-install-helpers-Ls_foXgf.js +2 -0
  69. package/dist/daemon-install-helpers-VzSaKa-j.js +2 -0
  70. package/dist/{daemon-runtime-C-XyxJRT.js → daemon-runtime--L-FasK6.js} +1 -1
  71. package/dist/{daemon-runtime-BLp3uThx.js → daemon-runtime-DKTkFmdZ.js} +1 -1
  72. package/dist/{deliver-C40KRMzm.js → deliver-BCijF1xe.js} +4 -4
  73. package/dist/{deliver-C5vVViLg.js → deliver-DiDYkpmh.js} +5 -5
  74. package/dist/{deliver-Dhut24vc.js → deliver-Ds0o_rCY.js} +3 -3
  75. package/dist/{deps-DRyTOIPO.js → deps-DFeGFeii.js} +6 -6
  76. package/dist/{devices-cli-DFPiK0W5.js → devices-cli-C9OvVBEs.js} +1 -1
  77. package/dist/{devices-cli-BfwxECLu.js → devices-cli-D4YJarjz.js} +1 -1
  78. package/dist/{diagnostic-Bzd3eHBU.js → diagnostic-CVAiT8Yi.js} +2 -2
  79. package/dist/{diagnostic-session-state-C8e7GxAm.js → diagnostic-session-state-Cj5nMvNL.js} +1 -1
  80. package/dist/{directory-cli-BX_a06o7.js → directory-cli--LuldZqc.js} +2 -2
  81. package/dist/{directory-cli-BQlGeeQK.js → directory-cli-DHpksyLI.js} +2 -2
  82. package/dist/{dispatcher-BWcYLowQ.js → dispatcher-D46WCdTe.js} +7 -7
  83. package/dist/{dispatcher-DefEQC4n.js → dispatcher-D8fgAnwH.js} +7 -7
  84. package/dist/{dm-policy-shared-Dm70u4Yr.js → dm-policy-shared-CEUsAI0F.js} +1 -1
  85. package/dist/{dm-policy-shared-DeX6SUMT.js → dm-policy-shared-DZglJJMa.js} +1 -1
  86. package/dist/{dns-cli-CxMaD4cI.js → dns-cli-C4L7EzEY.js} +2 -2
  87. package/dist/{dns-cli-DAdvx6qq.js → dns-cli-wSFONc42.js} +2 -2
  88. package/dist/{docs-cli-BR1YXIH4.js → docs-cli-4Dzg7LrJ.js} +1 -1
  89. package/dist/{docs-cli-BR8IKtP3.js → docs-cli-BWUGypxO.js} +1 -1
  90. package/dist/doctor-completion-B4bzzPyA.js +2 -0
  91. package/dist/doctor-completion-CE9xjPcf.js +2 -0
  92. package/dist/{doctor-completion-C3YAoPkP.js → doctor-completion-COKl8-PU.js} +1 -1
  93. package/dist/{doctor-completion-CkIy7FpB.js → doctor-completion-DPjvm1G7.js} +1 -1
  94. package/dist/{doctor-config-flow-CsP66Ij5.js → doctor-config-flow-CCqETtju.js} +4 -4
  95. package/dist/{doctor-config-flow-D_WRZLT3.js → doctor-config-flow-CRibe33c.js} +4 -4
  96. package/dist/entry.js +1 -1
  97. package/dist/{exec-approvals-cli-CLIzgYS8.js → exec-approvals-cli-CCqVDSOe.js} +2 -2
  98. package/dist/{exec-approvals-cli-DW2-7TEV.js → exec-approvals-cli-RRZ5wIP0.js} +2 -2
  99. package/dist/extensionAPI.d.ts +36 -2
  100. package/dist/extensionAPI.js +263 -20
  101. package/dist/{gateway-Duqy39t3.js → gateway-Bvd5CqY4.js} +3 -3
  102. package/dist/{gateway-CqhiWZQd.js → gateway-D_kwhuup.js} +3 -3
  103. package/dist/{gateway-cli-CUrxOlB4.js → gateway-cli-BbuSOWKq.js} +328 -244
  104. package/dist/{gateway-cli-BrM4d8E7.js → gateway-cli-C-AMSwgo.js} +324 -240
  105. package/dist/{gateway-0sVK3Rjy.js → gateway-q_fM0u-m.js} +2 -2
  106. package/dist/{gateway-rpc-BGgh3mTl.js → gateway-rpc-Ed0F1N_m.js} +1 -1
  107. package/dist/{gateway-rpc-9WQJwkTJ.js → gateway-rpc-J14XBNuM.js} +1 -1
  108. package/dist/{gateway-tool-DtlbDV6N.js → gateway-tool-Bi96OPGe.js} +3 -3
  109. package/dist/{gateway-tool-CMd3r3O5.js → gateway-tool-CNaxsMbd.js} +3 -3
  110. package/dist/{github-copilot-auth-Dh5sombA.js → github-copilot-auth-BmlL3P7c.js} +2 -2
  111. package/dist/{github-copilot-auth-ClDHXpfT.js → github-copilot-auth-DhjScF3O.js} +2 -2
  112. package/dist/{gmail-Dkq3kngs.js → gmail-BuCz-KEp.js} +1 -1
  113. package/dist/{gmail-DpPYd91j.js → gmail-C1O6grHu.js} +1 -1
  114. package/dist/{health-BlZEOPXK.js → health-6TTjEZoo.js} +8 -8
  115. package/dist/{health-BJ-Irw3K.js → health-BJbAa4df.js} +8 -8
  116. package/dist/{hooks-cli-Bqd1BR2r.js → hooks-cli-C0Z9dRtP.js} +2 -2
  117. package/dist/{hooks-cli-CR_bwhdf.js → hooks-cli-DFrRHJ1j.js} +2 -2
  118. package/dist/{host-D3VZGype.js → host-C8oRBLB6.js} +1 -1
  119. package/dist/{host-CafVbu36.js → host-DCfZcVR_.js} +1 -1
  120. package/dist/{image-tool-CwCxITcF.js → image-tool-D_dhIXLT.js} +2 -2
  121. package/dist/{image-tool-BY8NbIQs.js → image-tool-y-FDf6-M.js} +2 -2
  122. package/dist/index.d.ts +36 -2
  123. package/dist/index.js +10 -10
  124. package/dist/{io-TKYkFbcF.js → io-C_Q6AU5E.js} +2 -2
  125. package/dist/{io-oiyyZuuG.js → io-CpUiX-Lv.js} +2 -2
  126. package/dist/{ir-CP9ltYx0.js → ir-D0vxg3iM.js} +2 -2
  127. package/dist/{knowledge-graph-Dd0rSl0Q.js → knowledge-graph-BFnL_feN.js} +1 -1
  128. package/dist/{lifecycle-core-C7W7YZwn.js → lifecycle-core-CCUOBmZs.js} +3 -3
  129. package/dist/{lifecycle-core-BQztQGrv.js → lifecycle-core-CX37YE4Z.js} +3 -3
  130. package/dist/llm-slug-generator.js +47 -1
  131. package/dist/{logs-cli-CdAJHTuP.js → logs-cli-BYdqoMkJ.js} +2 -2
  132. package/dist/{logs-cli-lcuW5kPv.js → logs-cli-Comxq7pP.js} +2 -2
  133. package/dist/{manager-DeR0znMP.js → manager-DvUEsXx3.js} +1 -1
  134. package/dist/{memory-cli-BxVGlaEm.js → memory-cli-Bz--RMDo.js} +3 -3
  135. package/dist/{memory-cli-Y_w-AsVt.js → memory-cli-ilkHc_D4.js} +3 -3
  136. package/dist/{message-action-runner-CE4bDq6V.js → message-action-runner-BZQOV03k.js} +9 -9
  137. package/dist/{message-action-runner-BdclEzxx.js → message-action-runner-J8W9BPhj.js} +9 -9
  138. package/dist/{message-tool-BpFLUe6E.js → message-tool-BHJpugQ6.js} +6 -6
  139. package/dist/{message-tool-_MODnjgC.js → message-tool-GTRrYMuR.js} +6 -6
  140. package/dist/{model-catalog-AiXYmm_2.js → model-catalog-7Ew4iFgU.js} +3 -3
  141. package/dist/{model-catalog-CIgjk707.js → model-catalog-B1R3eepi.js} +3 -3
  142. package/dist/{model-fallback-DsefSc26.js → model-fallback--afWtYyY.js} +2 -2
  143. package/dist/{model-fallback-C92G-WUW.js → model-fallback-DXR7ZbvM.js} +2 -2
  144. package/dist/{model-fallback-Dwkt7imi.js → model-fallback-GSMox3YK.js} +3 -3
  145. package/dist/{model-picker-B_SEgewv.js → model-picker--bqpbxbC.js} +2 -2
  146. package/dist/{model-picker-DLr3xagY.js → model-picker-DJpEjKZT.js} +2 -2
  147. package/dist/{models-YFKEQsfy.js → models-CETV4zZ3.js} +12 -12
  148. package/dist/{models-cli-DuHCNW7r.js → models-cli-B5caj79x.js} +2 -2
  149. package/dist/{models-cli-yoQKaR0X.js → models-cli-DPT6gYJm.js} +12 -12
  150. package/dist/{models-config-BWzVL4DK.js → models-config-CX3wpMrd.js} +2 -2
  151. package/dist/{models-config-Df7nRCU-.js → models-config-ChIAfklN.js} +2 -2
  152. package/dist/{node-cli-D4pCYQMW.js → node-cli-4VRhz_1P.js} +7 -7
  153. package/dist/{node-cli-DzvdQBVp.js → node-cli-DyoQqYo1.js} +7 -7
  154. package/dist/{nodes-cli-CHWJMLm6.js → nodes-cli-CNQ633Hz.js} +5 -5
  155. package/dist/{nodes-cli-cjiOPFLH.js → nodes-cli-Dl3KtKoX.js} +5 -5
  156. package/dist/{nodes-tool-CR8MmpTZ.js → nodes-tool-BkgixWxk.js} +3 -3
  157. package/dist/{nodes-tool-DxMgloLr.js → nodes-tool-BmT8LWTt.js} +3 -3
  158. package/dist/{nodes-utils-BHrOJOWk.js → nodes-utils-B1jr4oHE.js} +1 -1
  159. package/dist/{nodes-utils-BRFzmJmB.js → nodes-utils-CVaBTJ5V.js} +1 -1
  160. package/dist/{nodes-utils-Eo4ilZ36.js → nodes-utils-DVNKajNN.js} +1 -1
  161. package/dist/{onboard-D3EkmOs0.js → onboard-BSb-bXtw.js} +9 -9
  162. package/dist/{onboard-DdguleAq.js → onboard-DHzBfhN9.js} +9 -9
  163. package/dist/{onboard-channels-DBltNYY2.js → onboard-channels-BP5oQVqD.js} +1 -1
  164. package/dist/{onboard-channels-cSzxNqaz.js → onboard-channels-CNmc5fTo.js} +1 -1
  165. package/dist/{onboard-channels-CeAsHBgW.js → onboard-channels-DHeOj8d6.js} +1 -1
  166. package/dist/{onboard-channels-ZDMAODeW.js → onboard-channels-DqoegMtk.js} +1 -1
  167. package/dist/{onboard-custom-DqkrqRdv.js → onboard-custom-B7OO328d.js} +2 -2
  168. package/dist/{onboard-custom-DMHUJH5-.js → onboard-custom-BODmfSpC.js} +1 -1
  169. package/dist/{onboard-custom-Vb7K9679.js → onboard-custom-BZv_tJxB.js} +1 -1
  170. package/dist/{onboard-custom-DOEx3xcN.js → onboard-custom-D7LvDFdH.js} +2 -2
  171. package/dist/{onboard-helpers-D60Qp1ne.js → onboard-helpers-B9IGa3vx.js} +5 -5
  172. package/dist/{onboard-helpers-7fbTU2tq.js → onboard-helpers-BKca3qU4.js} +1 -1
  173. package/dist/{onboard-helpers-DCve32jF.js → onboard-helpers-DP2LE5Oh.js} +5 -5
  174. package/dist/{onboard-helpers-xGGsG9to.js → onboard-helpers-HkYz_NGi.js} +1 -1
  175. package/dist/{onboard-remote-B13DRLJa.js → onboard-remote-DQrtJWPJ.js} +1 -1
  176. package/dist/{onboard-remote-C6s3bR7X.js → onboard-remote-kBPMv7zo.js} +1 -1
  177. package/dist/{onboard-skills-BU0OKpqj.js → onboard-skills-Cd2WeuBn.js} +3 -3
  178. package/dist/{onboard-skills-CKzdl2Ph.js → onboard-skills-KRXxu17b.js} +3 -3
  179. package/dist/{onboarding-BkiZ3JkU.js → onboarding-Cg42Uf0E.js} +11 -11
  180. package/dist/{onboarding-C--TfoeE.js → onboarding-nPyIyp8f.js} +11 -11
  181. package/dist/{onboarding.finalize-CUkOVH_E.js → onboarding.finalize-B8gctARP.js} +9 -9
  182. package/dist/{onboarding.finalize-Damz4ET-.js → onboarding.finalize-BoMhnz3U.js} +9 -9
  183. package/dist/{onboarding.gateway-config-BA3PQJBL.js → onboarding.gateway-config-Co5c5Jsj.js} +2 -2
  184. package/dist/{onboarding.gateway-config-4wtmgfdq.js → onboarding.gateway-config-DkkPCpUx.js} +2 -2
  185. package/dist/{outbound-send-deps-BmDpImVK.js → outbound-send-deps-Dg8cSoFv.js} +6 -6
  186. package/dist/{outbound-session-B9B7Vsxm.js → outbound-session-BCNTkSVV.js} +3 -3
  187. package/dist/{outbound-session-pZGUQ4vz.js → outbound-session-BG0ZMrIB.js} +3 -3
  188. package/dist/{pairing-cli-CRnZKVjx.js → pairing-cli-B_sfgSbk.js} +2 -2
  189. package/dist/{pairing-cli-aoyKpG0L.js → pairing-cli-mUAKj093.js} +2 -2
  190. package/dist/{pi-embedded-helpers-D-m7pmXE.js → pi-embedded-helpers-BsRnajNh.js} +1 -1
  191. package/dist/{pi-embedded-helpers-CkhQP2gU.js → pi-embedded-helpers-CSxJBpFl.js} +1 -1
  192. package/dist/{pi-embedded-helpers-BbHYim54.js → pi-embedded-helpers-CUfPWD_N.js} +6 -5
  193. package/dist/{pi-embedded-utils-C6MaVLHj.js → pi-embedded-utils-BlNfBen_.js} +1 -1
  194. package/dist/{pi-embedded-utils-DIGchmzO.js → pi-embedded-utils-Bql42QTv.js} +1 -1
  195. package/dist/{pi-embedded-utils-Ip0GsjWb.js → pi-embedded-utils-BtyCE2ZK.js} +1 -1
  196. package/dist/{pi-model-discovery-Ot_Q_yYa.js → pi-model-discovery-BV73T1am.js} +1 -1
  197. package/dist/{pi-tools.policy-Dt2kTSid.js → pi-tools.policy-DDJ31-0E.js} +3 -3
  198. package/dist/{plugin-registry-BZCSZFQn.js → plugin-registry-Dq33ZU89.js} +3 -3
  199. package/dist/{plugin-registry-DMRnpxA2.js → plugin-registry-RoPLmlrM.js} +3 -3
  200. package/dist/plugin-sdk/agents/bash/bash-tools.exec-runtime.d.ts +4 -0
  201. package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-context-guard.d.ts +5 -0
  202. package/dist/plugin-sdk/agents/pi-embedded-runner/tool-result-reduce.d.ts +8 -0
  203. package/dist/plugin-sdk/agents/sandbox/tier0/index.d.ts +3 -0
  204. package/dist/plugin-sdk/agents/sandbox/tier0/registry.d.ts +28 -0
  205. package/dist/plugin-sdk/agents/sandbox/tier0/router.d.ts +18 -0
  206. package/dist/plugin-sdk/agents/sandbox/tier0/virtual-sandbox.d.ts +30 -0
  207. package/dist/plugin-sdk/agents/sandbox/types.d.ts +5 -0
  208. package/dist/plugin-sdk/agents/sections/behaviour.d.ts +9 -0
  209. package/dist/plugin-sdk/agents/skills/compact-prompt.d.ts +12 -0
  210. package/dist/plugin-sdk/agents/skills/workspace.d.ts +4 -0
  211. package/dist/plugin-sdk/channels/discord.js +487 -40
  212. package/dist/plugin-sdk/channels/googlechat.js +3 -1
  213. package/dist/plugin-sdk/channels/imessage.js +487 -40
  214. package/dist/plugin-sdk/channels/line.js +489 -42
  215. package/dist/plugin-sdk/channels/msteams.js +3 -1
  216. package/dist/plugin-sdk/channels/signal.js +487 -40
  217. package/dist/plugin-sdk/channels/slack.js +487 -40
  218. package/dist/plugin-sdk/channels/telegram.js +487 -40
  219. package/dist/plugin-sdk/channels/whatsapp.js +488 -41
  220. package/dist/plugin-sdk/config/types.agent-defaults.d.ts +8 -0
  221. package/dist/plugin-sdk/config/types.agents.d.ts +4 -0
  222. package/dist/plugin-sdk/config/types.gateway.d.ts +8 -0
  223. package/dist/plugin-sdk/config/types.skills.d.ts +7 -0
  224. package/dist/plugin-sdk/config/types.tools.d.ts +8 -0
  225. package/dist/plugin-sdk/config/zod-schema.agent-defaults.d.ts +3 -0
  226. package/dist/plugin-sdk/config/zod-schema.agent-runtime.d.ts +9 -0
  227. package/dist/plugin-sdk/config/zod-schema.agents.d.ts +6 -0
  228. package/dist/plugin-sdk/config/zod-schema.d.ts +26 -0
  229. package/dist/plugin-sdk/core.js +6 -2
  230. package/dist/plugin-sdk/index.js +501 -54
  231. package/dist/{plugins-cli-BKMBY-np.js → plugins-cli-BA0wJM-k.js} +3 -3
  232. package/dist/{plugins-cli-D3_BCsVN.js → plugins-cli-a-DWljrI.js} +3 -3
  233. package/dist/{program-context-CVLR19jJ.js → program-context-CUZUPsiC.js} +43 -43
  234. package/dist/{program-DFvYiOXj.js → program-gbYi5UIa.js} +7 -7
  235. package/dist/{prompt-select-styled-D-axSDjg.js → prompt-select-styled-DAdqH32e.js} +17 -17
  236. package/dist/{prompt-select-styled-n1nMLPsI.js → prompt-select-styled-lKRNiihE.js} +17 -17
  237. package/dist/{push-apns-Dh6xZki_.js → push-apns-BhtcU_Da.js} +1 -1
  238. package/dist/{push-apns-D4wjtIOe.js → push-apns-D69Af97u.js} +1 -1
  239. package/dist/{pw-ai-2VhRhF2B.js → pw-ai-Ba9xJlWV.js} +2 -2
  240. package/dist/{pw-ai-Blk_s6D5.js → pw-ai-Cvjg4UOk.js} +2 -2
  241. package/dist/{pw-ai-B6oeo1wI.js → pw-ai-DiwvYyv3.js} +2 -2
  242. package/dist/{pw-session-Crb06R5v.js → pw-session-BZ1pAX5r.js} +1 -1
  243. package/dist/{pw-session-DmaV4mTM.js → pw-session-BxiZ6YYh.js} +1 -1
  244. package/dist/{pw-session-CATqkBLI.js → pw-session-EHew9i-n.js} +1 -1
  245. package/dist/{qr-cli-B3IWV_8b.js → qr-cli-CFsUuFR-.js} +2 -2
  246. package/dist/{qr-cli-SfioxAM_.js → qr-cli-SfzcWdI0.js} +2 -2
  247. package/dist/{register.agent-DDVZDpQC.js → register.agent-B4bNkRtB.js} +11 -11
  248. package/dist/{register.agent-Dfk70LYq.js → register.agent-DHCAqxWX.js} +8 -8
  249. package/dist/{register.channel-BvMvb6ip.js → register.channel-B1vKkWV7.js} +2 -2
  250. package/dist/{register.channel-BJtyCgD7.js → register.channel-D0lVq7dU.js} +2 -2
  251. package/dist/{register.configure-WQlTjNyz.js → register.configure-DFSJd0YH.js} +1 -1
  252. package/dist/{register.configure-BdKChDnl.js → register.configure-DIHFldND.js} +1 -1
  253. package/dist/{register.drone-B-xrDJpJ.js → register.drone-Do4i5ZE9.js} +2 -2
  254. package/dist/{register.drone-DSHJ5vq1.js → register.drone-Tckr0QFo.js} +2 -2
  255. package/dist/{register.maintenance-DoMoBeyF.js → register.maintenance-Bw9G1eZ0.js} +5 -5
  256. package/dist/{register.maintenance-DnP_N0ye.js → register.maintenance-D5LVEuKI.js} +5 -5
  257. package/dist/{register.message-Xl-pZILp.js → register.message-BsGRyTVT.js} +7 -7
  258. package/dist/{register.message-Cdp8TM0J.js → register.message-C_51tZCE.js} +8 -8
  259. package/dist/{register.onboard-BzZPizJ0.js → register.onboard-CMusJAzJ.js} +1 -1
  260. package/dist/{register.onboard-IPqLR5Zb.js → register.onboard-Ngaw9ikW.js} +1 -1
  261. package/dist/{register.setup-DLzSctB1.js → register.setup-aKi_hurQ.js} +4 -4
  262. package/dist/{register.setup-BX8Ya9qY.js → register.setup-xpiPRct8.js} +4 -4
  263. package/dist/{register.status-health-sessions-CXIHidz6.js → register.status-health-sessions-B87H-g0g.js} +6 -6
  264. package/dist/{register.status-health-sessions-DnNAMB3T.js → register.status-health-sessions-D2rMUW_t.js} +4 -4
  265. package/dist/{register.subclis-DAt5WEzu.js → register.subclis-DB0kFld6.js} +30 -30
  266. package/dist/{reply-D_uwJ_hb.js → reply-CNJWciSj.js} +442 -52
  267. package/dist/{reply-payloads-BBHotu7W.js → reply-payloads-BS889lPA.js} +2 -2
  268. package/dist/{reply-payloads-CikGrhVL.js → reply-payloads-Dk-zLmJC.js} +2 -2
  269. package/dist/{reply-prefix-eSF5kXs5.js → reply-prefix-CfrIMbCM.js} +1 -1
  270. package/dist/{reply-prefix-CYbvVBOV.js → reply-prefix-D9MQ_veY.js} +1 -1
  271. package/dist/{resolve-route-FLi7kFo1.js → resolve-route-0arQsERr.js} +1 -1
  272. package/dist/{resolve-route-DiiBj8NL.js → resolve-route-DwDSX3mI.js} +2 -2
  273. package/dist/{routes-DFLRIpty.js → routes-DubNFADQ.js} +4 -4
  274. package/dist/{routes-CagC77kh.js → routes-hcdbDZ60.js} +4 -4
  275. package/dist/{rpc-DxdMMngu.js → rpc-CpEGWO4f.js} +1 -1
  276. package/dist/{rpc-dZcSayi6.js → rpc-DShIx1il.js} +1 -1
  277. package/dist/{run-main-Cw7JO4bk.js → run-main-CgrHeBpO.js} +20 -20
  278. package/dist/{sandbox-DX1DKAJb.js → sandbox-BYK6Qgnd.js} +9 -8
  279. package/dist/{sandbox-pZvVQZ-a.js → sandbox-CDGF9AVA.js} +9 -8
  280. package/dist/{sandbox-cli-DsFqky0Y.js → sandbox-cli-3v8NFyXC.js} +4 -4
  281. package/dist/{sandbox-cli--NZU5yHm.js → sandbox-cli-DmXP8NkD.js} +4 -4
  282. package/dist/{security-cli-B9rFqAom.js → security-cli-B23Rjmu8.js} +3 -3
  283. package/dist/{security-cli-DUGFqvJc.js → security-cli-C7jxF7EW.js} +3 -3
  284. package/dist/{send-OcwoynpB.js → send-B3EXtlyb.js} +2 -2
  285. package/dist/{send-BUUHmWJ3.js → send-Boe93Q4V.js} +2 -2
  286. package/dist/{send-Czh3Yz38.js → send-Br1IcpxR.js} +2 -2
  287. package/dist/{send-mztwgKny.js → send-BrvRGJ0_.js} +3 -3
  288. package/dist/{send-CRNffLsb.js → send-BuiJlYF8.js} +2 -2
  289. package/dist/{send-DTQ_lSWv.js → send-DPURnZWZ.js} +2 -2
  290. package/dist/{send-Bh69NFd_.js → send-DT-x-IFQ.js} +3 -3
  291. package/dist/{send-CuFw68zk.js → send-D_PQuZ3x.js} +2 -2
  292. package/dist/{send-Ckq83rOO.js → send-DhuPDKRX.js} +2 -2
  293. package/dist/{server-context-D-VUH9Bz.js → server-context-BRKaxwJB.js} +6 -6
  294. package/dist/{server-context-BlUcP_zF.js → server-context-CvEQbenq.js} +6 -6
  295. package/dist/{server-context-BNI2cc_e.js → server-context-nyYhGUmI.js} +5 -5
  296. package/dist/{server-node-events-DQqHB_8B.js → server-node-events-B6rUT0PE.js} +8 -8
  297. package/dist/{server-node-events-BqG45BMs.js → server-node-events-D90DAPI1.js} +10 -10
  298. package/dist/{session-status-tool-CN-Juxjq.js → session-status-tool-BIN4ooy0.js} +6 -6
  299. package/dist/{session-status-tool-DnD354sJ.js → session-status-tool-CtbF1-VI.js} +7 -7
  300. package/dist/{session-utils-0BYkk3f_.js → session-utils-DDCd8HC9.js} +4 -4
  301. package/dist/{sessions-CismtNoo.js → sessions-ByNQiqr2.js} +1 -1
  302. package/dist/{sessions-D_b2UXud.js → sessions-C0Qs0Flz.js} +3 -3
  303. package/dist/{sessions-0d-dBE8D.js → sessions-CPoA3oJo.js} +4 -4
  304. package/dist/{sessions-Z8JCL_sa.js → sessions-CW4tzKA-.js} +3 -3
  305. package/dist/{sessions-helpers-Crh_NTSX.js → sessions-helpers-DdqQiSR6.js} +3 -3
  306. package/dist/{sessions-helpers-JsbUTHcP.js → sessions-helpers-vwVJ1Vy4.js} +3 -3
  307. package/dist/{sessions-helpers-uZ0Taeh3.js → sessions-helpers-xH-u6Byb.js} +3 -3
  308. package/dist/{sessions-history-tool-6VYdT_kc.js → sessions-history-tool-BO81rMTT.js} +5 -5
  309. package/dist/{sessions-history-tool-6WMcHpxy.js → sessions-history-tool-DKXNjv5X.js} +5 -5
  310. package/dist/{sessions-list-tool-CwTLRwGc.js → sessions-list-tool-6DJtypdD.js} +5 -5
  311. package/dist/{sessions-list-tool-CwGp-l3S.js → sessions-list-tool-s_y-_4Uv.js} +5 -5
  312. package/dist/{sessions-send-tool-BKNgicV5.js → sessions-send-tool-C3ggqtMe.js} +5 -5
  313. package/dist/{sessions-send-tool-Dl4HKGgL.js → sessions-send-tool-roh-kyNw.js} +5 -5
  314. package/dist/{sessions-spawn-tool-DqfoPFrK.js → sessions-spawn-tool-BgkkNWMg.js} +1 -1
  315. package/dist/{sessions-spawn-tool-Bguo3O1I.js → sessions-spawn-tool-UAd65WIb.js} +1 -1
  316. package/dist/{shared-Cr0N9iap.js → shared-BysrBqEi.js} +2 -2
  317. package/dist/{shared-B7QVxDsn.js → shared-CjEFJgna.js} +2 -2
  318. package/dist/{skills-DkeUrhAT.js → skills-Bf4ZPGHe.js} +1 -1
  319. package/dist/{skills-DMPRReoe.js → skills-DDhWBAii.js} +1 -1
  320. package/dist/{skills-cli--8zG3UQk.js → skills-cli-DnO1g2oN.js} +6 -6
  321. package/dist/{skills-cli-D334Q0dM.js → skills-cli-DxFMRja6.js} +6 -6
  322. package/dist/{skills-install-DAphGXoj.js → skills-install-Bo9PwVmT.js} +2 -2
  323. package/dist/{skills-install-BNR2Nfa3.js → skills-install-DkZHLCih.js} +2 -2
  324. package/dist/{skills-status-D54inzOP.js → skills-status-8p-KrlIF.js} +2 -2
  325. package/dist/{skills-status-DDzkv-Rj.js → skills-status-CBTT87BN.js} +2 -2
  326. package/dist/{status-BIvJQtxV.js → status-BpgCPxM4.js} +3 -3
  327. package/dist/{status-JJ8BdlhI.js → status-Db6PPdwI.js} +3 -3
  328. package/dist/{status-DosDYGut.js → status-DyQwrglF.js} +12 -12
  329. package/dist/{status-gWt5DmvD.js → status-Dz_-4ATW.js} +13 -13
  330. package/dist/{status.update-BnYycijV.js → status.update-BBLk_Q3P.js} +1 -1
  331. package/dist/{status.update-D0KmfrNX.js → status.update-OhQ3FS7R.js} +1 -1
  332. package/dist/{subagent-registry-0zv9UyYz.js → subagent-registry-C_UHFYRY.js} +443 -53
  333. package/dist/{subagents-tool-usr_WpP2.js → subagents-tool-BdWYv7Mb.js} +6 -6
  334. package/dist/{subagents-tool-m92Kjy1x.js → subagents-tool-DjPwvSat.js} +6 -6
  335. package/dist/{system-cli-t4Qk2mcC.js → system-cli-BQJK1EiV.js} +1 -1
  336. package/dist/{system-cli-BxYnYU05.js → system-cli-Cj6oDS1q.js} +1 -1
  337. package/dist/{systemd-hints-JlNoKkcf.js → systemd-hints-BKM-UvY_.js} +1 -1
  338. package/dist/{systemd-hints-C21GmUrX.js → systemd-hints-BdVIEvO3.js} +1 -1
  339. package/dist/{targets-BWPxk4rU.js → targets-BpZ7t54u.js} +1 -1
  340. package/dist/{tools-F4g3knJE.js → tools-D3fRPoa3.js} +421 -38
  341. package/dist/{tools-cli-Cmg7InJT.js → tools-cli-CjniP2oD.js} +3 -3
  342. package/dist/{tools-cli-BPV7GpBg.js → tools-cli-DLPn3_f-.js} +3 -3
  343. package/dist/{tts-CC3WSaW9.js → tts-BhWpmVdG.js} +1 -1
  344. package/dist/{tts-CRpGlsYO.js → tts-DrFhyLnB.js} +1 -1
  345. package/dist/{tts-OJZ7iSKo.js → tts-DyQvwyVi.js} +1 -1
  346. package/dist/{tts-tool-DsLN8-ZT.js → tts-tool-CdaKVWBM.js} +3 -3
  347. package/dist/{tts-tool-B73xs8Vs.js → tts-tool-CfEs7ebD.js} +3 -3
  348. package/dist/{tui-BRdOjXJy.js → tui-CNuz7tKz.js} +5 -5
  349. package/dist/{tui-PSDwA6SF.js → tui-DJvjN1xV.js} +5 -5
  350. package/dist/{tui-cli-DMD7clw2.js → tui-cli-CLoyYSXd.js} +1 -1
  351. package/dist/{tui-cli-DHWrleUP.js → tui-cli-DhhA87TG.js} +1 -1
  352. package/dist/{update-cli-DlxYgSAN.js → update-cli-0lBEnFj5.js} +8 -8
  353. package/dist/{update-cli-Du5BbYfl.js → update-cli-Cc4jgBsG.js} +8 -8
  354. package/dist/{validation-CG8Ui8_v.js → validation-B-XaORq2.js} +5 -1
  355. package/dist/{validation-T0CNq_JP.js → validation-DuFmPzCB.js} +5 -1
  356. package/dist/web-BUkj8HIz.js +2 -0
  357. package/dist/{web-CtwxKIvO.js → web-BY79LufL.js} +8 -8
  358. package/dist/{web-search-B5d6ODyB.js → web-search-CCeGZMBD.js} +4 -4
  359. package/dist/{web-search-CV42wG57.js → web-search-D1pX-Tuc.js} +4 -4
  360. package/dist/{webhooks-cli-tSv_Pzzq.js → webhooks-cli-B3LP9UKY.js} +5 -5
  361. package/dist/{webhooks-cli-BeHnKv6z.js → webhooks-cli-C5xR4Wu5.js} +5 -5
  362. package/dist/{workspace-Dov1_dCF.js → workspace-BwzunhL2.js} +49 -3
  363. package/dist/{workspace-CSGZ3DZ_.js → workspace-CVAkpBJa.js} +48 -2
  364. package/dist/{workspace-CSBTFAxh.js → workspace-D5-DoTNR.js} +48 -2
  365. package/dist/{workspace-dirs-Yo4RZm7s.js → workspace-dirs-CJDJUlno.js} +3 -3
  366. package/docs/superpowers/plans/2026-06-10-phase1-quick-wins.md +1260 -0
  367. package/docs/superpowers/specs/2026-06-10-recon-quick-wins-and-silent-agent-design.md +151 -0
  368. package/extensions/alert-watcher/index.js +47 -1
  369. package/extensions/bluebubbles/index.js +5 -1
  370. package/extensions/feishu/index.js +5 -1
  371. package/extensions/flows/index.js +52 -2
  372. package/extensions/gmail-calendar/index.js +47 -1
  373. package/extensions/googlechat/index.js +5 -1
  374. package/extensions/irc/index.js +5 -1
  375. package/extensions/llm-task/index.js +47 -1
  376. package/extensions/matrix/{credentials-B1q3x-N0.mjs → credentials-BtiLgiNR.mjs} +5 -1
  377. package/extensions/matrix/index.js +3 -3
  378. package/extensions/matrix/{matrix-B9amoffh.mjs → matrix-CWlUSNSh.mjs} +2 -2
  379. package/extensions/matrix/{resolve-targets-Dw7tv-7K.mjs → resolve-targets-ml4iU4Bd.mjs} +2 -2
  380. package/extensions/mattermost/index.js +5 -1
  381. package/extensions/nextcloud-talk/index.js +5 -1
  382. package/extensions/tlon/index.js +47 -1
  383. package/extensions/wati/index.js +5 -1
  384. package/extensions/weixin/index.js +5 -1
  385. package/extensions/zalo/index.js +5 -1
  386. package/extensions/zalouser/index.js +5 -1
  387. package/package.json +3 -2
  388. package/dist/config-guard-BfdkKYAa.js +0 -2
  389. package/dist/daemon-install-helpers-4gMthp-_.js +0 -2
  390. package/dist/daemon-install-helpers-BLXYJ3C5.js +0 -2
  391. package/dist/doctor-completion-DKJRw1m1.js +0 -2
  392. package/dist/doctor-completion-DMcJXsi0.js +0 -2
  393. package/dist/web-Dj8nR4rt.js +0 -2
@@ -1,4 +1,4 @@
1
- import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, m as __exportAll, n as extractAssistantThinking, o as inferToolMetaFromArgs, p as resolveToolDisplay, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText } from "./pi-embedded-utils-C6MaVLHj.js";
1
+ import { a as formatReasoningMessage, c as promoteThinkingTagsToBlocks, f as extractTextFromChatContent, i as extractThinkingFromTaggedText, l as stripDowngradedToolCallText, m as __exportAll, n as extractAssistantThinking, o as inferToolMetaFromArgs, p as resolveToolDisplay, r as extractThinkingFromTaggedStream, s as isAssistantMessage, t as extractAssistantText } from "./pi-embedded-utils-BlNfBen_.js";
2
2
  import { C as clampInt, D as formatTerminalLink, E as escapeRegExp, F as shortenHomeInString, G as shouldLogVerbose, H as logVerbose, I as shortenHomePath, J as isRich, L as sleep, N as resolveUserPath, O as isPlainObject, Q as normalizeLogLevel, R as sliceUtf16Safe, S as CONFIG_DIR, W as setVerbose, X as getChildLogger, Y as theme, Z as getLogger, _ as createPluginRegistry, a as unregisterActiveProgressLine, b as listPluginCommands, et as createInternalHookEvent, f as getActivePluginRegistry, g as setActivePluginRuntime, h as setActivePluginRegistryConfig, i as registerActiveProgressLine, k as isRecord, l as normalizeAnyChannelId, m as setActivePluginRegistry, mt as expandHomePrefix, n as defaultRuntime, nt as registerMcpTool, q as colorize, r as clearActiveProgressLine, s as CHAT_CHANNEL_ORDER, t as createSubsystemLogger, tt as triggerInternalHook, u as normalizeChannelId, ut as resolveStateDir, v as clearPluginCommands, x as matchPluginCommand, y as executePluginCommand, z as truncateUtf16Safe } from "./subsystem-Bz8lTz2g.js";
3
3
  import { A as DEFAULT_AGENT_ID, C as ensureAgentWorkspace, D as resolveMinionPackageRoot, E as loadWorkspaceBootstrapFiles, F as normalizeAccountId, G as parseAgentSessionKey, I as normalizeAgentId, K as resolveThreadParentSessionKey, L as normalizeMainKey, P as classifySessionKeyShape, R as resolveAgentIdFromSessionKey, S as DEFAULT_WORKSHOP_FILENAME, T as isWorkspaceOnboardingCompleted, U as isCronSessionKey, V as getSubagentDepth, W as isSubagentSessionKey, _ as DEFAULT_HEARTBEAT_FILENAME, b as DEFAULT_TOOLS_FILENAME, c as resolveAgentWorkspaceDir, d as resolveSessionAgentIds, g as DEFAULT_FOCUS_FILENAME, i as resolveAgentModelFallbacksOverride, l as resolveDefaultAgentId, m as DEFAULT_AGENT_WORKSPACE_DIR, n as resolveAgentConfig, o as resolveAgentSkillsDenyFilter, r as resolveAgentDir, s as resolveAgentSkillsFilter, t as listAgentIds, u as resolveSessionAgentId, w as filterBootstrapFilesForSession } from "./agent-scope-G3FqXqqy.js";
4
4
  import { a as logError, i as logDebug, n as runExec, o as logInfo, r as spawnWithFallback, s as logWarn, t as runCommandWithTimeout } from "./exec-DWwKe_AW.js";
@@ -6,14 +6,14 @@ import { $ as resolveOpenClawAgentDir, A as resolveShellEnvFallbackTimeoutMs, B
6
6
  import { t as emitEvent } from "./emitter-DgCKoBMW.js";
7
7
  import "./sqlite-TEJFfaDd.js";
8
8
  import { n as recallMemories, r as recordMemories } from "./memory-sink-Cai9LXP2.js";
9
- import { r as emitMemoryRead, t as KnowledgeGraphSession } from "./knowledge-graph-Dd0rSl0Q.js";
10
- import { A as ALL_SCOPES, C as VERSION, D as resolveMemorySlotDecision, E as resolveEnableState, O as isMemorySlotPlugin, S as emptyPluginConfigSchema, T as normalizePluginsConfig, _ as parseDurationMs, a as writeConfigFile, c as validateJsonSchemaValue, d as setConfigOverride, f as unsetConfigOverride, g as unsetConfigValueAtPath, h as setConfigValueAtPath, k as AGENT_TYPE_SCOPES, l as getConfigOverrides, m as parseConfigPath, n as loadConfig, o as validateConfigObjectWithPlugins, p as getConfigValueAtPath, r as readConfigFileSnapshot, u as resetConfigOverrides, v as loadPluginManifestRegistry, w as applyTestPluginDefaults, y as discoverOpenClawPlugins } from "./config-BBoAK0dA.js";
11
- import { $ as normalizeVerboseLevel, A as matchesAnyGlobPattern, B as parseImageSizeError, C as ensureSandboxWorkspaceForSession, D as resolveSkillEnvMapFromSnapshot, E as resolveSkillEnvMap, F as isContextOverflowError, G as sanitizeGoogleTurnOrdering, H as ensureSessionHeader, I as isLikelyContextOverflowError, J as listThinkingLevels, K as formatThinkingLevels, L as isTimeoutErrorMessage, M as isRawApiErrorPayload, N as isCloudCodeAssistFormatError, O as resolveSandboxConfigForAgent, P as isCompactionFailureError, Q as normalizeUsageDisplay, R as isTransientHttpError, S as sanitizeUserFacingText, T as resolveSandboxRuntimeStatus, U as resolveBootstrapMaxChars, V as buildBootstrapContextFiles, W as resolveBootstrapTotalMaxChars, X as normalizeReasoningLevel, Y as normalizeElevatedLevel, Z as normalizeThinkLevel, _ as isFailoverErrorMessage, a as isMessagingToolDuplicateNormalized, at as collectExplicitAllowlist, b as formatBillingErrorMessage, c as extractToolCallsFromAssistant, ct as mergeAlsoAllowPolicy, d as isAntigravityClaude, dt as stripPluginOnlyAllowlist, et as resolveResponseUsageMode, f as isGoogleModelApi, g as isFailoverAssistantError, h as isBillingAssistantError, it as buildPluginToolGroups, j as getApiErrorPayloadFingerprint, k as compileGlobPatterns, l as extractToolResultId, lt as normalizeToolName, m as isAuthAssistantError, n as validateGeminiTurns, nt as TOOL_GROUPS, o as normalizeTextForComparison, ot as expandPolicyWithPluginGroups, p as classifyFailoverReason, q as formatXHighModelHint, r as pickFallbackThinkingLevel, rt as applyOwnerOnlyToolPolicy, s as sanitizeSessionMessagesImages, st as expandToolGroups, t as validateAnthropicTurns, tt as supportsXHighThinking, u as downgradeOpenAIReasoningBlocks, ut as resolveToolProfilePolicy, v as isRateLimitAssistantError, w as resolveSandboxContext, x as formatRawAssistantErrorForUi, y as formatAssistantErrorText, z as parseImageDimensionError } from "./pi-embedded-helpers-BbHYim54.js";
9
+ import { r as emitMemoryRead, t as KnowledgeGraphSession } from "./knowledge-graph-BFnL_feN.js";
10
+ import { A as ALL_SCOPES, C as VERSION, D as resolveMemorySlotDecision, E as resolveEnableState, O as isMemorySlotPlugin, S as emptyPluginConfigSchema, T as normalizePluginsConfig, _ as parseDurationMs, a as writeConfigFile, c as validateJsonSchemaValue, d as setConfigOverride, f as unsetConfigOverride, g as unsetConfigValueAtPath, h as setConfigValueAtPath, k as AGENT_TYPE_SCOPES, l as getConfigOverrides, m as parseConfigPath, n as loadConfig, o as validateConfigObjectWithPlugins, p as getConfigValueAtPath, r as readConfigFileSnapshot, u as resetConfigOverrides, v as loadPluginManifestRegistry, w as applyTestPluginDefaults, y as discoverOpenClawPlugins } from "./config-CkMQunWU.js";
11
+ import { $ as normalizeVerboseLevel, A as matchesAnyGlobPattern, B as parseImageSizeError, C as ensureSandboxWorkspaceForSession, D as resolveSkillEnvMapFromSnapshot, E as resolveSkillEnvMap, F as isContextOverflowError, G as sanitizeGoogleTurnOrdering, H as ensureSessionHeader, I as isLikelyContextOverflowError, J as listThinkingLevels, K as formatThinkingLevels, L as isTimeoutErrorMessage, M as isRawApiErrorPayload, N as isCloudCodeAssistFormatError, O as resolveSandboxConfigForAgent, P as isCompactionFailureError, Q as normalizeUsageDisplay, R as isTransientHttpError, S as sanitizeUserFacingText, T as resolveSandboxRuntimeStatus, U as resolveBootstrapMaxChars, V as buildBootstrapContextFiles, W as resolveBootstrapTotalMaxChars, X as normalizeReasoningLevel, Y as normalizeElevatedLevel, Z as normalizeThinkLevel, _ as isFailoverErrorMessage, a as isMessagingToolDuplicateNormalized, at as collectExplicitAllowlist, b as formatBillingErrorMessage, c as extractToolCallsFromAssistant, ct as mergeAlsoAllowPolicy, d as isAntigravityClaude, dt as stripPluginOnlyAllowlist, et as resolveResponseUsageMode, f as isGoogleModelApi, g as isFailoverAssistantError, h as isBillingAssistantError, it as buildPluginToolGroups, j as getApiErrorPayloadFingerprint, k as compileGlobPatterns, l as extractToolResultId, lt as normalizeToolName, m as isAuthAssistantError, n as validateGeminiTurns, nt as TOOL_GROUPS, o as normalizeTextForComparison, ot as expandPolicyWithPluginGroups, p as classifyFailoverReason, q as formatXHighModelHint, r as pickFallbackThinkingLevel, rt as applyOwnerOnlyToolPolicy, s as sanitizeSessionMessagesImages, st as expandToolGroups, t as validateAnthropicTurns, tt as supportsXHighThinking, u as downgradeOpenAIReasoningBlocks, ut as resolveToolProfilePolicy, v as isRateLimitAssistantError, w as resolveSandboxContext, x as formatRawAssistantErrorForUi, y as formatAssistantErrorText, z as parseImageDimensionError } from "./pi-embedded-helpers-CUfPWD_N.js";
12
12
  import { n as traceChatEvent, r as traceGatewayEvent, t as deriveTraceId } from "./chat-trace-BHrz-R_x.js";
13
13
  import { a as startSentrySpan, i as addSentryBreadcrumb, n as trackSkillExecution, o as withSentryIsolationScope, r as trackToolExecution, t as emitReliabilityEvent } from "./reliability-Ci95cCmv.js";
14
- import { A as isSafeFenceBreak, C as chunkMarkdownText, D as resolveChunkMode, E as chunkTextWithMode, M as getGlobalHookRunner, N as initializeGlobalHookRunner, O as resolveTextChunkLimit, T as chunkText, _ as parseReplyDirectives, a as applyReplyTagsToPayload, b as parseInlineDirectives$1, c as filterMessagingToolMediaDuplicates, d as createReplyToModeFilterForChannel, f as resolveReplyToMode, g as normalizeTargetForProvider, i as resolveMarkdownTableMode, j as parseFenceSpans, k as findFenceSpanAt, l as isRenderablePayload, o as applyReplyThreading, p as resolveFetch, r as markdownToIRWithMeta, s as filterMessagingToolDuplicates, u as shouldSuppressMessagingToolReplies, v as MEDIA_TOKEN_RE, w as chunkMarkdownTextWithMode, x as chunkByNewline, y as splitMediaFromOutput } from "./ir-CP9ltYx0.js";
14
+ import { A as isSafeFenceBreak, C as chunkMarkdownText, D as resolveChunkMode, E as chunkTextWithMode, M as getGlobalHookRunner, N as initializeGlobalHookRunner, O as resolveTextChunkLimit, T as chunkText, _ as parseReplyDirectives, a as applyReplyTagsToPayload, b as parseInlineDirectives$1, c as filterMessagingToolMediaDuplicates, d as createReplyToModeFilterForChannel, f as resolveReplyToMode, g as normalizeTargetForProvider, i as resolveMarkdownTableMode, j as parseFenceSpans, k as findFenceSpanAt, l as isRenderablePayload, o as applyReplyThreading, p as resolveFetch, r as markdownToIRWithMeta, s as filterMessagingToolDuplicates, u as shouldSuppressMessagingToolReplies, v as MEDIA_TOKEN_RE, w as chunkMarkdownTextWithMode, x as chunkByNewline, y as splitMediaFromOutput } from "./ir-D0vxg3iM.js";
15
15
  import { t as wrapToolWithTracking } from "./tool-tracking-BfpUmfBM.js";
16
- import { a as resolveMemorySearchConfig, i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-DeR0znMP.js";
16
+ import { a as resolveMemorySearchConfig, i as executeWithApiKeyRotation, n as parseGeminiAuth, r as collectProviderApiKeysForExecution } from "./manager-DvUEsXx3.js";
17
17
  import { n as formatErrorMessage } from "./errors-DInjg6Ku.js";
18
18
  import { n as normalizeSecretInput } from "./normalize-secret-input-Ct6H42vX.js";
19
19
  import { d as normalizeExtraMemoryPaths, h as runTasksWithConcurrency, u as listMemoryFiles } from "./session-files-CSGnJtRe.js";
@@ -23,24 +23,24 @@ import { _ as kindFromMime, c as getImageMetadata, d as resizeToJpeg, f as detec
23
23
  import { a as readNumberParam, i as jsonResult, s as readStringParam } from "./common-mPQVYX41.js";
24
24
  import { a as INTERNAL_MESSAGE_CHANNEL, c as isMarkdownCapableMessageChannel, d as resolveGatewayMessageChannel, f as resolveMessageChannel, h as GATEWAY_CLIENT_NAMES, i as normalizeInputProvenance, l as listDeliverableMessageChannels, m as GATEWAY_CLIENT_MODES, n as applyInputProvenanceToUserMessage, o as isDeliverableMessageChannel, r as hasInterSessionUserProvenance, s as isInternalMessageChannel, u as normalizeMessageChannel } from "./input-provenance-BUf7opno.js";
25
25
  import { d as normalizeChatType, f as resolveDiscordAccount, l as resolveSlackAccount, n as listChannelPlugins, o as resolveWhatsAppAccount, p as normalizeDiscordToken, r as normalizeChannelId$1, s as resolveTelegramAccount, t as getChannelPlugin } from "./plugins-7HkLtO7B.js";
26
- import { A as canonicalizeMainSessionAlias, B as normalizeAtHashSlug, C as evaluateSessionFreshness, D as resolveThreadFlag, E as resolveSessionResetType, F as resolveGroupSessionKey, G as resolveSignalAccount, H as resolveChannelGroupPolicy, I as acquireSessionWriteLock, K as resolveIMessageAccount, L as resolveSessionLockMaxHoldFromTimeout, M as resolveMainSessionKey, N as deriveSessionMetaPatch, O as DEFAULT_RESET_TRIGGERS, P as resolveConversationLabel, R as getChannelDock, S as resolveSessionKey, T as resolveSessionResetPolicy, U as resolveChannelGroupRequireMention, W as resolveChannelGroupToolsPolicy, _ as normalizeSessionDeliveryFields, a as readSessionUpdatedAt, b as countToolResults, c as updateLastRoute, d as isCacheEnabled, f as resolveCacheTtlMs, g as normalizeDeliveryContext, h as mergeDeliveryContext, i as loadSessionStore, k as resolveFreshSessionTotalTokens, l as updateSessionStore, m as deliveryContextKey, o as recordSessionMetaFromInbound, p as deliveryContextFromSession, u as updateSessionStoreEntry, v as archiveSessionTranscripts, w as resolveChannelResetConfig, x as extractToolCallNames, z as listChannelDocks } from "./sessions-CismtNoo.js";
26
+ import { A as canonicalizeMainSessionAlias, B as normalizeAtHashSlug, C as evaluateSessionFreshness, D as resolveThreadFlag, E as resolveSessionResetType, F as resolveGroupSessionKey, G as resolveSignalAccount, H as resolveChannelGroupPolicy, I as acquireSessionWriteLock, K as resolveIMessageAccount, L as resolveSessionLockMaxHoldFromTimeout, M as resolveMainSessionKey, N as deriveSessionMetaPatch, O as DEFAULT_RESET_TRIGGERS, P as resolveConversationLabel, R as getChannelDock, S as resolveSessionKey, T as resolveSessionResetPolicy, U as resolveChannelGroupRequireMention, W as resolveChannelGroupToolsPolicy, _ as normalizeSessionDeliveryFields, a as readSessionUpdatedAt, b as countToolResults, c as updateLastRoute, d as isCacheEnabled, f as resolveCacheTtlMs, g as normalizeDeliveryContext, h as mergeDeliveryContext, i as loadSessionStore, k as resolveFreshSessionTotalTokens, l as updateSessionStore, m as deliveryContextKey, o as recordSessionMetaFromInbound, p as deliveryContextFromSession, u as updateSessionStoreEntry, v as archiveSessionTranscripts, w as resolveChannelResetConfig, x as extractToolCallNames, z as listChannelDocks } from "./sessions-ByNQiqr2.js";
27
27
  import { n as SILENT_REPLY_TOKEN, r as isSilentReplyText } from "./tokens-Dxroopzl.js";
28
28
  import { i as stripHeartbeatToken, n as AGENT_LANE_SUBAGENT, r as resolveHeartbeatPrompt } from "./lanes-BR5o5mOf.js";
29
- import { _ as listChannelSupportedActions, c as readChannelAllowFromStore, d as listPairingChannels, f as createSlackWebClient, g as listChannelAgentTools, h as isPersonalAgentId, i as resolveSessionDeliveryTarget, l as removeChannelAllowFromStoreEntry, m as fetchDiscord, n as resolveAgentRoute, p as normalizeDiscordSlug, s as addChannelAllowFromStoreEntry, u as upsertChannelPairingRequest, v as resolveChannelMessageToolHints, y as resolveTelegramInlineButtonsScope } from "./resolve-route-DiiBj8NL.js";
30
- import { a as logMessageProcessed, c as emitDiagnosticEvent, i as logLaneEnqueue, l as isDiagnosticsEnabled, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-Bzd3eHBU.js";
31
- import { n as getDiagnosticSessionState } from "./diagnostic-session-state-C8e7GxAm.js";
32
- import { S as isVoiceCompatibleAudio, _ as setTtsMaxLength, a as isSummarizationEnabled, b as textToSpeech, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setTtsEnabled, h as setSummarizationEnabled, i as getTtsProvider, l as normalizeTtsAutoMode, m as setLastTtsAttempt, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsProvider, x as textToSpeechTelephony, y as stripTtsDirectivesFromText } from "./tts-OJZ7iSKo.js";
33
- import { d as resolveSandboxInputPath, i as resolveSkillsPromptForRun, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as assertSandboxPath } from "./workspace-Dov1_dCF.js";
34
- import { a as getMediaDir, o as saveMediaBuffer } from "./server-context-BNI2cc_e.js";
29
+ import { _ as listChannelSupportedActions, c as readChannelAllowFromStore, d as listPairingChannels, f as createSlackWebClient, g as listChannelAgentTools, h as isPersonalAgentId, i as resolveSessionDeliveryTarget, l as removeChannelAllowFromStoreEntry, m as fetchDiscord, n as resolveAgentRoute, p as normalizeDiscordSlug, s as addChannelAllowFromStoreEntry, u as upsertChannelPairingRequest, v as resolveChannelMessageToolHints, y as resolveTelegramInlineButtonsScope } from "./resolve-route-DwDSX3mI.js";
30
+ import { a as logMessageProcessed, c as emitDiagnosticEvent, i as logLaneEnqueue, l as isDiagnosticsEnabled, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-CVAiT8Yi.js";
31
+ import { n as getDiagnosticSessionState } from "./diagnostic-session-state-Cj5nMvNL.js";
32
+ import { S as isVoiceCompatibleAudio, _ as setTtsMaxLength, a as isSummarizationEnabled, b as textToSpeech, c as maybeApplyTtsToPayload, d as resolveTtsAutoMode, f as resolveTtsConfig, g as setTtsEnabled, h as setSummarizationEnabled, i as getTtsProvider, l as normalizeTtsAutoMode, m as setLastTtsAttempt, n as getLastTtsAttempt, o as isTtsEnabled, p as resolveTtsPrefsPath, r as getTtsMaxLength, s as isTtsProviderConfigured, t as buildTtsSystemPromptHint, u as resolveTtsApiKey, v as setTtsProvider, x as textToSpeechTelephony, y as stripTtsDirectivesFromText } from "./tts-DyQvwyVi.js";
33
+ import { d as resolveSandboxInputPath, i as resolveSkillsPromptForRun, n as buildWorkspaceSkillSnapshot, o as resolvePluginSkillDirs, r as loadWorkspaceSkillEntries, t as buildWorkspaceSkillCommandSpecs, u as assertSandboxPath } from "./workspace-BwzunhL2.js";
34
+ import { a as getMediaDir, o as saveMediaBuffer } from "./server-context-nyYhGUmI.js";
35
35
  import { a as isPrivateIpAddress, i as isBlockedHostname } from "./ssrf-DWqM0QRy.js";
36
- import { c as FailoverError, d as resolveFailoverStatus, h as ensureOpenClawModelsJson, l as isTimeoutError, m as ensureMinionModelsJson, n as runWithModelFallback, p as resolveWorkspaceRoot, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as resolveFailoverReasonFromError } from "./model-fallback-Dwkt7imi.js";
37
- import { t as callGateway } from "./call-BKa0221r.js";
38
- import { t as callGatewayTool } from "./gateway-0sVK3Rjy.js";
39
- import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-BRFzmJmB.js";
36
+ import { c as FailoverError, d as resolveFailoverStatus, h as ensureOpenClawModelsJson, l as isTimeoutError, m as ensureMinionModelsJson, n as runWithModelFallback, p as resolveWorkspaceRoot, r as coerceImageAssistantText, s as minimaxUnderstandImage, u as resolveFailoverReasonFromError } from "./model-fallback-GSMox3YK.js";
37
+ import { t as callGateway } from "./call-QNmBuec5.js";
38
+ import { t as callGatewayTool } from "./gateway-q_fM0u-m.js";
39
+ import { r as resolveNodeIdFromList, t as listNodes } from "./nodes-utils-CVaBTJ5V.js";
40
40
  import { n as bindAbortRelay, r as fetchWithTimeout, t as fetchWithSsrFGuard } from "./fetch-guard-6r0F3dD_.js";
41
- import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-Ot_Q_yYa.js";
41
+ import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BV73T1am.js";
42
42
  import { a as fetchRemoteMedia, i as MediaFetchError, n as loadWebMedia, o as readResponseWithLimit } from "./load-DKwJGFTz.js";
43
- import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText$1 } from "./sessions-helpers-Crh_NTSX.js";
43
+ import { a as stripToolMessages, d as resolveDisplaySessionKey, f as resolveInternalSessionKey, i as sanitizeTextContent, p as resolveMainSessionAlias, r as extractAssistantText$1 } from "./sessions-helpers-DdqQiSR6.js";
44
44
  import { t as detectSuspiciousPatterns } from "./external-content-BeJGOgQK.js";
45
45
  import { n as triggerMinionRestart, t as scheduleGatewaySigusr1Restart } from "./restart-DTw1wkyF.js";
46
46
  import { createRequire } from "node:module";
@@ -62,6 +62,7 @@ import chokidar from "chokidar";
62
62
  import { CURRENT_SESSION_VERSION, SessionManager, SettingsManager, createAgentSession, createCodingTools, createEditTool, createReadTool, createWriteTool, estimateTokens } from "@earendil-works/pi-coding-agent";
63
63
  import "yaml";
64
64
  import { Buffer as Buffer$1 } from "node:buffer";
65
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
65
66
  import { EventEmitter } from "node:events";
66
67
  import { spinner } from "@clack/prompts";
67
68
  import { createOscProgressController, supportsOscProgress } from "osc-progress";
@@ -912,7 +913,7 @@ async function getMemorySearchManager(params) {
912
913
  const wrapper = new FallbackMemoryManager({
913
914
  primary,
914
915
  fallbackFactory: async () => {
915
- const { MemoryIndexManager } = await import("./manager-DeR0znMP.js").then((n) => n.t);
916
+ const { MemoryIndexManager } = await import("./manager-DvUEsXx3.js").then((n) => n.t);
916
917
  return await MemoryIndexManager.get(params);
917
918
  }
918
919
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -925,7 +926,7 @@ async function getMemorySearchManager(params) {
925
926
  }
926
927
  }
927
928
  try {
928
- const { MemoryIndexManager } = await import("./manager-DeR0znMP.js").then((n) => n.t);
929
+ const { MemoryIndexManager } = await import("./manager-DvUEsXx3.js").then((n) => n.t);
929
930
  return { manager: await MemoryIndexManager.get(params) };
930
931
  } catch (err) {
931
932
  return {
@@ -4553,6 +4554,189 @@ function buildLandlockSandboxEnv(workdir) {
4553
4554
  };
4554
4555
  }
4555
4556
  //#endregion
4557
+ //#region src/agents/sandbox/tier0/router.ts
4558
+ /**
4559
+ * Tier-0 routing + interpreter-limitation heuristics.
4560
+ *
4561
+ * `shouldTryTier0` decides — cheaply, before running anything — whether a command
4562
+ * is a candidate for the in-process virtual sandbox. It is CONSERVATIVE: anything
4563
+ * that needs the network, a real runtime/toolchain, a privileged syscall, or an
4564
+ * external binary that lives outside the virtual command set escalates straight
4565
+ * to Docker. When tier-0 is tried and just-bash can't serve it, the exec result
4566
+ * is flagged `unsupported` (see isInterpreterLimitation) and the caller escalates.
4567
+ */
4568
+ const ESCALATE_PATTERNS = [
4569
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
4570
+ /\b(python3?|pip3?|node|npm|pnpm|yarn|bun|deno|ruby|perl|php|cargo|rustc|go|gcc|g\+\+|cc|clang|make|cmake|java|javac|dotnet)\b/,
4571
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
4572
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
4573
+ /(^|\s|=)\/(dev|proc|sys)\//,
4574
+ /<\(|>\(/
4575
+ ];
4576
+ function shouldTryTier0(command) {
4577
+ const cmd = command.trim();
4578
+ if (!cmd) return false;
4579
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
4580
+ return true;
4581
+ }
4582
+ /**
4583
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
4584
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
4585
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
4586
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
4587
+ */
4588
+ function isInterpreterLimitation(stderr) {
4589
+ if (!stderr) return false;
4590
+ return /security violation/i.test(stderr) || /indicates a bug in just-bash/i.test(stderr) || /\bcommand not found\b/i.test(stderr) || /not (yet )?(supported|implemented)/i.test(stderr) || /unknown command/i.test(stderr);
4591
+ }
4592
+ //#endregion
4593
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
4594
+ /**
4595
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
4596
+ *
4597
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
4598
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
4599
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
4600
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
4601
+ *
4602
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
4603
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
4604
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
4605
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
4606
+ *
4607
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
4608
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
4609
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
4610
+ */
4611
+ var Tier0VirtualSandbox = class {
4612
+ constructor() {
4613
+ this.instances = /* @__PURE__ */ new Map();
4614
+ }
4615
+ getInstance(req) {
4616
+ const existing = this.instances.get(req.scopeKey);
4617
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
4618
+ existing.lastUsed = Date.now();
4619
+ return existing.bash;
4620
+ }
4621
+ const fs = new MountableFs({ base: new InMemoryFs() });
4622
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
4623
+ const bash = new Bash({
4624
+ fs,
4625
+ cwd: req.workdir,
4626
+ env: {
4627
+ LANG: "C.UTF-8",
4628
+ ...req.env
4629
+ },
4630
+ executionLimits: {
4631
+ maxCommandCount: 1e4,
4632
+ maxLoopIterations: 1e6
4633
+ }
4634
+ });
4635
+ const inst = {
4636
+ bash,
4637
+ workspaceHostDir: req.workspaceHostDir,
4638
+ workdir: req.workdir,
4639
+ lastUsed: Date.now()
4640
+ };
4641
+ this.instances.set(req.scopeKey, inst);
4642
+ return bash;
4643
+ }
4644
+ async exec(req) {
4645
+ const startedAt = Date.now();
4646
+ let bash;
4647
+ try {
4648
+ bash = this.getInstance(req);
4649
+ } catch {
4650
+ return {
4651
+ status: "failed",
4652
+ exitCode: null,
4653
+ durationMs: Date.now() - startedAt,
4654
+ aggregated: "",
4655
+ timedOut: false,
4656
+ unsupported: true
4657
+ };
4658
+ }
4659
+ try {
4660
+ const result = await withTimeout$3(bash.exec(req.command, {
4661
+ cwd: req.workdir,
4662
+ env: req.env
4663
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
4664
+ const durationMs = Date.now() - startedAt;
4665
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
4666
+ if (result.exitCode === 0) return {
4667
+ status: "completed",
4668
+ exitCode: 0,
4669
+ durationMs,
4670
+ aggregated: combined,
4671
+ timedOut: false,
4672
+ unsupported: false
4673
+ };
4674
+ return {
4675
+ status: "failed",
4676
+ exitCode: result.exitCode,
4677
+ durationMs,
4678
+ aggregated: combined,
4679
+ timedOut: false,
4680
+ unsupported: isInterpreterLimitation(result.stderr)
4681
+ };
4682
+ } catch (err) {
4683
+ const timedOut = err instanceof TimeoutError;
4684
+ return {
4685
+ status: "failed",
4686
+ exitCode: null,
4687
+ durationMs: Date.now() - startedAt,
4688
+ aggregated: "",
4689
+ timedOut,
4690
+ unsupported: !timedOut
4691
+ };
4692
+ }
4693
+ }
4694
+ dispose(scopeKey) {
4695
+ if (scopeKey) this.instances.delete(scopeKey);
4696
+ else this.instances.clear();
4697
+ }
4698
+ /** test/inspection helper */
4699
+ get liveInstances() {
4700
+ return this.instances.size;
4701
+ }
4702
+ };
4703
+ var TimeoutError = class extends Error {};
4704
+ function withTimeout$3(p, ms) {
4705
+ if (!ms) return p;
4706
+ return new Promise((resolve, reject) => {
4707
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
4708
+ p.then((value) => {
4709
+ clearTimeout(timer);
4710
+ resolve(value);
4711
+ }, (error) => {
4712
+ clearTimeout(timer);
4713
+ reject(error);
4714
+ });
4715
+ });
4716
+ }
4717
+ //#endregion
4718
+ //#region src/agents/sandbox/tier0/registry.ts
4719
+ let singleton$1;
4720
+ function getTier0Sandbox() {
4721
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
4722
+ return singleton$1;
4723
+ }
4724
+ /**
4725
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
4726
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
4727
+ * Docker container too), so tier-0 sees the same files.
4728
+ */
4729
+ function resolveTier0Binding(params) {
4730
+ if (!params.workspaceHostDir) return;
4731
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
4732
+ if (!sandboxCfg.tier0.enabled) return;
4733
+ if (sandboxCfg.workspaceAccess === "ro") return;
4734
+ return {
4735
+ backend: getTier0Sandbox(),
4736
+ workspaceHostDir: params.workspaceHostDir
4737
+ };
4738
+ }
4739
+ //#endregion
4556
4740
  //#region src/agents/sessions/session-slug.ts
4557
4741
  const SLUG_ADJECTIVES = [
4558
4742
  "amber",
@@ -6066,10 +6250,112 @@ function emitExecSystemEvent(text, opts) {
6066
6250
  });
6067
6251
  requestHeartbeatNow({ reason: "exec-event" });
6068
6252
  }
6253
+ /**
6254
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
6255
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
6256
+ * the command (so the caller escalates to Docker). Output is sanitized and a
6257
+ * ProcessSession is registered exactly like the normal path, so downstream
6258
+ * session listing / tailing is unaffected.
6259
+ */
6260
+ async function tryTier0Exec(args) {
6261
+ const { opts, sessionId, startedAt, execCommand } = args;
6262
+ const tier0 = opts.tier0;
6263
+ const sandbox = opts.sandbox;
6264
+ if (!tier0 || !sandbox) return null;
6265
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
6266
+ let outcome;
6267
+ try {
6268
+ outcome = await tier0.backend.exec({
6269
+ command: execCommand,
6270
+ workdir,
6271
+ workspaceHostDir: tier0.workspaceHostDir,
6272
+ env: opts.env,
6273
+ scopeKey: sandbox.containerName,
6274
+ timeoutSec: opts.timeoutSec
6275
+ });
6276
+ } catch {
6277
+ return null;
6278
+ }
6279
+ if (outcome.unsupported) return null;
6280
+ const session = {
6281
+ id: sessionId,
6282
+ command: opts.command,
6283
+ scopeKey: opts.scopeKey,
6284
+ sessionKey: opts.sessionKey,
6285
+ notifyOnExit: opts.notifyOnExit,
6286
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
6287
+ exitNotified: false,
6288
+ child: void 0,
6289
+ stdin: void 0,
6290
+ pid: void 0,
6291
+ startedAt,
6292
+ cwd: opts.workdir,
6293
+ maxOutputChars: opts.maxOutput,
6294
+ pendingMaxOutputChars: opts.pendingMaxOutput,
6295
+ totalOutputChars: 0,
6296
+ pendingStdout: [],
6297
+ pendingStderr: [],
6298
+ pendingStdoutChars: 0,
6299
+ pendingStderrChars: 0,
6300
+ aggregated: "",
6301
+ tail: "",
6302
+ exited: false,
6303
+ exitCode: void 0,
6304
+ exitSignal: void 0,
6305
+ truncated: false,
6306
+ backgrounded: false
6307
+ };
6308
+ addSession(session);
6309
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
6310
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
6311
+ const status = outcome.status === "completed" ? "completed" : "failed";
6312
+ markExited(session, outcome.exitCode ?? 0, null, status);
6313
+ const durationMs = Date.now() - startedAt;
6314
+ const aggregated = session.aggregated.trim();
6315
+ let result;
6316
+ if (status === "completed") {
6317
+ const exitCode = outcome.exitCode ?? 0;
6318
+ result = {
6319
+ status: "completed",
6320
+ exitCode,
6321
+ exitSignal: null,
6322
+ durationMs,
6323
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
6324
+ timedOut: false
6325
+ };
6326
+ } else {
6327
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
6328
+ result = {
6329
+ status: "failed",
6330
+ exitCode: outcome.exitCode,
6331
+ exitSignal: null,
6332
+ durationMs,
6333
+ aggregated,
6334
+ timedOut: outcome.timedOut,
6335
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
6336
+ };
6337
+ }
6338
+ return {
6339
+ session,
6340
+ startedAt,
6341
+ pid: void 0,
6342
+ promise: Promise.resolve(result),
6343
+ kill: () => {}
6344
+ };
6345
+ }
6069
6346
  async function runExecProcess(opts) {
6070
6347
  const startedAt = Date.now();
6071
6348
  const sessionId = createSessionSlug();
6072
6349
  const execCommand = opts.execCommand ?? opts.command;
6350
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
6351
+ const tier0Handle = await tryTier0Exec({
6352
+ opts,
6353
+ sessionId,
6354
+ startedAt,
6355
+ execCommand
6356
+ });
6357
+ if (tier0Handle) return tier0Handle;
6358
+ }
6073
6359
  const supervisor = getProcessSupervisor();
6074
6360
  const session = {
6075
6361
  id: sessionId,
@@ -6849,7 +7135,11 @@ function createExecTool(defaults) {
6849
7135
  scopeKey: defaults?.scopeKey,
6850
7136
  sessionKey: notifySessionKey,
6851
7137
  timeoutSec: effectiveTimeout,
6852
- onUpdate
7138
+ onUpdate,
7139
+ tier0: sandbox ? resolveTier0Binding({
7140
+ agentId,
7141
+ workspaceHostDir: sandbox.workspaceDir
7142
+ }) : void 0
6853
7143
  });
6854
7144
  let yielded = false;
6855
7145
  let yieldTimer = null;
@@ -7943,7 +8233,7 @@ const TOOL_REGISTRY = {
7943
8233
  multi: true,
7944
8234
  modulePath: "../../../memory/knowledge-graph.js"
7945
8235
  },
7946
- load: () => import("./knowledge-graph-Dd0rSl0Q.js").then((n) => n.i)
8236
+ load: () => import("./knowledge-graph-BFnL_feN.js").then((n) => n.i)
7947
8237
  },
7948
8238
  "summarize": {
7949
8239
  meta: {
@@ -10800,7 +11090,7 @@ function shouldEmitLoopWarning(state, warningKey, count) {
10800
11090
  async function recordLoopOutcome(args) {
10801
11091
  if (!args.ctx?.sessionKey) return;
10802
11092
  try {
10803
- const { getDiagnosticSessionState } = await import("./diagnostic-session-state-C8e7GxAm.js").then((n) => n.t);
11093
+ const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Cj5nMvNL.js").then((n) => n.t);
10804
11094
  const { recordToolCallOutcome } = await import("./tool-loop-detection-DLKwnZY5.js");
10805
11095
  recordToolCallOutcome(getDiagnosticSessionState({
10806
11096
  sessionKey: args.ctx.sessionKey,
@@ -10848,8 +11138,8 @@ async function runBeforeToolCallHook(args) {
10848
11138
  const toolName = normalizeToolName(args.toolName || "tool");
10849
11139
  const params = args.params;
10850
11140
  if (args.ctx?.sessionKey) {
10851
- const { getDiagnosticSessionState } = await import("./diagnostic-session-state-C8e7GxAm.js").then((n) => n.t);
10852
- const { logToolLoopAction } = await import("./diagnostic-Bzd3eHBU.js").then((n) => n.n);
11141
+ const { getDiagnosticSessionState } = await import("./diagnostic-session-state-Cj5nMvNL.js").then((n) => n.t);
11142
+ const { logToolLoopAction } = await import("./diagnostic-CVAiT8Yi.js").then((n) => n.n);
10853
11143
  const { detectToolCallLoop, recordToolCall } = await import("./tool-loop-detection-DLKwnZY5.js");
10854
11144
  const sessionState = getDiagnosticSessionState({
10855
11145
  sessionKey: args.ctx.sessionKey,
@@ -14032,11 +14322,12 @@ const AGENT_TYPE_SECTIONS = [
14032
14322
  if (!trimmed) return [];
14033
14323
  return [
14034
14324
  "## Skills (mandatory)",
14035
- "Before replying: scan <available_skills> <description> entries.",
14036
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
14037
- "- If multiple could apply: choose the most specific one, then read/follow it.",
14038
- "- If none clearly apply: do not read any SKILL.md.",
14039
- "Constraints: never read more than one skill up front; only read after selecting.",
14325
+ "Before replying: scan the <available_skills> entries.",
14326
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
14327
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
14328
+ "- If none clearly apply: do not load any skill.",
14329
+ `To load a skill's full instructions: if they aren't already shown, call the \`skill_view\` tool with the skill name; otherwise read its SKILL.md at <location> with \`${ctx.readToolName}\`.`,
14330
+ "Constraints: never load more than one skill up front; only load after selecting.",
14040
14331
  trimmed,
14041
14332
  ""
14042
14333
  ];
@@ -14181,6 +14472,40 @@ const AGENT_TYPE_SECTIONS = [
14181
14472
  }
14182
14473
  ];
14183
14474
  //#endregion
14475
+ //#region src/agents/sections/behaviour.ts
14476
+ /**
14477
+ * Identity-layer section that injects the agent's self-maintained operating
14478
+ * rules. The rules live at `<workspaceDir>/prompts/behaviour.md` and are
14479
+ * written by the `update_behaviour` tool. There is intentionally no global
14480
+ * fallback file — the section renders nothing unless the agent has authored
14481
+ * its own behaviour.md.
14482
+ */
14483
+ const BEHAVIOUR_SECTIONS = [{
14484
+ id: "behaviour",
14485
+ layer: "identity",
14486
+ order: 2200,
14487
+ modes: ["full", "minimal"],
14488
+ cacheable: false,
14489
+ header: "## Operating Rules (self-maintained)",
14490
+ source: "file",
14491
+ render: (ctx) => {
14492
+ const workspaceDir = ctx.params.workspaceDir;
14493
+ if (!workspaceDir) return [];
14494
+ const content = resolveProse({
14495
+ layer: "identity",
14496
+ id: "behaviour",
14497
+ agentWorkspaceDir: workspaceDir
14498
+ })?.content.trim();
14499
+ if (!content) return [];
14500
+ return [
14501
+ "## Operating Rules (self-maintained)",
14502
+ "",
14503
+ content,
14504
+ ""
14505
+ ];
14506
+ }
14507
+ }];
14508
+ //#endregion
14184
14509
  //#region src/agents/sections/identity.ts
14185
14510
  /** Identity-layer section definitions (3 sections). */
14186
14511
  const IDENTITY_SECTIONS = [
@@ -15178,6 +15503,7 @@ function getBuiltinRegistry() {
15178
15503
  _registry.registerAll(PLATFORM_SECTIONS);
15179
15504
  _registry.registerAll(AGENT_TYPE_SECTIONS);
15180
15505
  _registry.registerAll(IDENTITY_SECTIONS);
15506
+ _registry.registerAll(BEHAVIOUR_SECTIONS);
15181
15507
  _registry.registerAll(USER_SECTIONS);
15182
15508
  _registry.registerAll(SESSION_SECTIONS);
15183
15509
  return _registry;
@@ -20046,7 +20372,7 @@ queueMicrotask(() => {
20046
20372
  await ensureOpenClawModelsJson(cfg);
20047
20373
  } catch {}
20048
20374
  try {
20049
- const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-Ot_Q_yYa.js").then((n) => n.r);
20375
+ const { discoverAuthStorage, discoverModels } = await import("./pi-model-discovery-BV73T1am.js").then((n) => n.r);
20050
20376
  const agentDir = resolveOpenClawAgentDir();
20051
20377
  const modelRegistry = discoverModels(discoverAuthStorage(agentDir), agentDir);
20052
20378
  applyDiscoveredContextWindows({
@@ -20996,6 +21322,35 @@ async function prepareSessionManagerForRun(params) {
20996
21322
  }
20997
21323
  }
20998
21324
  //#endregion
21325
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
21326
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
21327
+ function reduceToolOutputText(text, opts) {
21328
+ let lines = text.split("\n");
21329
+ if (opts.collapseRuns) {
21330
+ const collapsed = [];
21331
+ let i = 0;
21332
+ while (i < lines.length) {
21333
+ let j = i + 1;
21334
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
21335
+ const run = j - i;
21336
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
21337
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
21338
+ i = j;
21339
+ }
21340
+ lines = collapsed;
21341
+ }
21342
+ if (lines.length <= opts.maxLines) return lines.join("\n");
21343
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
21344
+ const head = lines.slice(0, opts.headLines);
21345
+ const tail = lines.slice(lines.length - opts.tailLines);
21346
+ const elided = lines.length - head.length - tail.length;
21347
+ return [
21348
+ ...head,
21349
+ `… ${elided} lines elided …`,
21350
+ ...tail
21351
+ ].join("\n");
21352
+ }
21353
+ //#endregion
20999
21354
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
21000
21355
  const CHARS_PER_TOKEN_ESTIMATE = 4;
21001
21356
  const CONTEXT_INPUT_HEADROOM_RATIO = .75;
@@ -21138,8 +21493,31 @@ function applyMessageMutationInPlace(target, source) {
21138
21493
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
21139
21494
  Object.assign(targetRecord, sourceRecord);
21140
21495
  }
21496
+ const REDUCE_MAX_LINES = 200;
21497
+ const REDUCE_HEAD_LINES = 40;
21498
+ const REDUCE_TAIL_LINES = 40;
21499
+ /**
21500
+ * Run the pure line-reducer over each tool-result message's text content,
21501
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
21502
+ */
21503
+ function reduceToolResultOutputsInPlace(messages) {
21504
+ for (const message of messages) {
21505
+ if (!isToolResultMessage(message)) continue;
21506
+ const rawText = getToolResultText(message);
21507
+ if (!rawText) continue;
21508
+ const reduced = reduceToolOutputText(rawText, {
21509
+ maxLines: REDUCE_MAX_LINES,
21510
+ headLines: REDUCE_HEAD_LINES,
21511
+ tailLines: REDUCE_TAIL_LINES,
21512
+ collapseRuns: true
21513
+ });
21514
+ if (reduced === rawText) continue;
21515
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
21516
+ }
21517
+ }
21141
21518
  function enforceToolResultContextBudgetInPlace(params) {
21142
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
21519
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
21520
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
21143
21521
  for (const message of messages) {
21144
21522
  if (!isToolResultMessage(message)) continue;
21145
21523
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -21161,6 +21539,7 @@ function enforceToolResultContextBudgetInPlace(params) {
21161
21539
  * @returns An async function suitable for use as Agent's transformContext callback.
21162
21540
  */
21163
21541
  function createToolResultContextGuardTransform(params) {
21542
+ const reduceOutput = params.reduceOutput !== false;
21164
21543
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
21165
21544
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
21166
21545
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -21171,7 +21550,8 @@ function createToolResultContextGuardTransform(params) {
21171
21550
  enforceToolResultContextBudgetInPlace({
21172
21551
  messages: contextMessages,
21173
21552
  contextBudgetChars,
21174
- maxSingleToolResultChars
21553
+ maxSingleToolResultChars,
21554
+ reduceOutput
21175
21555
  });
21176
21556
  return contextMessages;
21177
21557
  };
@@ -21267,7 +21647,10 @@ async function createRunSession(params, env) {
21267
21647
  applySystemPromptOverrideToSession(session, env.systemPromptText);
21268
21648
  if (!session) throw new Error("Embedded agent session missing");
21269
21649
  const activeSession = session;
21270
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
21650
+ const contextGuardTransform = createToolResultContextGuardTransform({
21651
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
21652
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
21653
+ });
21271
21654
  activeSession.agent.transformContext = contextGuardTransform;
21272
21655
  const cacheTrace = createCacheTrace({
21273
21656
  cfg: params.config,
@@ -24286,7 +24669,7 @@ async function routeReply(params) {
24286
24669
  const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
24287
24670
  const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
24288
24671
  try {
24289
- const { deliverOutboundPayloads } = await import("./deliver-C5vVViLg.js").then((n) => n.n);
24672
+ const { deliverOutboundPayloads } = await import("./deliver-DiDYkpmh.js").then((n) => n.n);
24290
24673
  return {
24291
24674
  ok: true,
24292
24675
  messageId: (await deliverOutboundPayloads({
@@ -28125,7 +28508,7 @@ function formatAudioTranscripts(outputs) {
28125
28508
  const log$6 = createSubsystemLogger("models/model-catalog");
28126
28509
  let modelCatalogPromise = null;
28127
28510
  let hasLoggedModelCatalogError = false;
28128
- const defaultImportPiSdk = () => import("./pi-model-discovery-Ot_Q_yYa.js").then((n) => n.r);
28511
+ const defaultImportPiSdk = () => import("./pi-model-discovery-BV73T1am.js").then((n) => n.r);
28129
28512
  let importPiSdk = defaultImportPiSdk;
28130
28513
  const CODEX_PROVIDER = "openai-codex";
28131
28514
  const OPENAI_CODEX_GPT53_MODEL_ID = "gpt-5.3-codex";
@@ -43847,7 +44230,7 @@ async function deliverSessionMaintenanceWarning(params) {
43847
44230
  return;
43848
44231
  }
43849
44232
  try {
43850
- const { deliverOutboundPayloads } = await import("./deliver-C5vVViLg.js").then((n) => n.n);
44233
+ const { deliverOutboundPayloads } = await import("./deliver-DiDYkpmh.js").then((n) => n.n);
43851
44234
  await deliverOutboundPayloads({
43852
44235
  cfg: params.cfg,
43853
44236
  channel,
@@ -1,8 +1,8 @@
1
1
  import { l as normalizeAgentId } from "./session-key-BcXqsG0l.js";
2
2
  import { n as runExec, t as runCommandWithTimeout } from "./exec-ByW9LeFK.js";
3
- import { i as loadConfig, l as writeConfigFile, s as readConfigFileSnapshotForWrite } from "./io-oiyyZuuG.js";
4
- import "./config-BgqD6SVw.js";
5
- import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-BGgh3mTl.js";
3
+ import { i as loadConfig, l as writeConfigFile, s as readConfigFileSnapshotForWrite } from "./io-CpUiX-Lv.js";
4
+ import "./config-DJTLRK5S.js";
5
+ import { n as callGatewayFromCli, t as addGatewayClientOptions } from "./gateway-rpc-Ed0F1N_m.js";
6
6
  import { existsSync, writeFileSync } from "node:fs";
7
7
  import { resolve } from "node:path";
8
8
  //#region src/cli/tools-cli.install.ts