@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
@@ -47,6 +47,7 @@ import { Type as Type$1 } from "@sinclair/typebox";
47
47
  import { spinner } from "@clack/prompts";
48
48
  import { createOscProgressController, supportsOscProgress } from "osc-progress";
49
49
  import MarkdownIt from "markdown-it";
50
+ import { Bash, InMemoryFs, MountableFs, ReadWriteFs } from "just-bash";
50
51
  import fs$2 from "fs/promises";
51
52
  import os$1 from "os";
52
53
  import path$1 from "path";
@@ -67,7 +68,7 @@ var __exportAll = (all, no_symbols) => {
67
68
  };
68
69
  //#endregion
69
70
  //#region src/shared/with-timeout.ts
70
- function withTimeout$4(promise, timeoutMs) {
71
+ function withTimeout$5(promise, timeoutMs) {
71
72
  if (!timeoutMs || timeoutMs <= 0) return promise;
72
73
  let timer = null;
73
74
  const timeout = new Promise((_, reject) => {
@@ -86,7 +87,7 @@ async function probeLineBot(channelAccessToken, timeoutMs = 5e3) {
86
87
  };
87
88
  const client = new messagingApi.MessagingApiClient({ channelAccessToken: channelAccessToken.trim() });
88
89
  try {
89
- const profile = await withTimeout$4(client.getBotInfo(), timeoutMs);
90
+ const profile = await withTimeout$5(client.getBotInfo(), timeoutMs);
90
91
  return {
91
92
  ok: true,
92
93
  bot: {
@@ -413,7 +414,7 @@ function notifyMcpToolsChanged() {
413
414
  }
414
415
  }
415
416
  var tools$1, sseSubscribers, EMPTY_OBJECT_SCHEMA;
416
- var init_registry$6 = __esmMin((() => {
417
+ var init_registry$7 = __esmMin((() => {
417
418
  tools$1 = /* @__PURE__ */ new Map();
418
419
  sseSubscribers = /* @__PURE__ */ new Set();
419
420
  EMPTY_OBJECT_SCHEMA = {
@@ -1346,7 +1347,7 @@ function createSubsystemLogger(subsystem) {
1346
1347
  }
1347
1348
  var SUBSYSTEM_COLORS, SUBSYSTEM_COLOR_OVERRIDES, SUBSYSTEM_PREFIXES_TO_DROP, SUBSYSTEM_MAX_SEGMENTS, CHANNEL_SUBSYSTEM_PREFIXES;
1348
1349
  var init_subsystem = __esmMin((() => {
1349
- init_registry$4();
1350
+ init_registry$5();
1350
1351
  init_globals();
1351
1352
  init_runtime$3();
1352
1353
  init_progress_line();
@@ -2280,9 +2281,9 @@ function createPluginRegistry(registryParams) {
2280
2281
  registerTypedHook
2281
2282
  };
2282
2283
  }
2283
- var init_registry$5 = __esmMin((() => {
2284
+ var init_registry$6 = __esmMin((() => {
2284
2285
  init_instant_commands();
2285
- init_registry$6();
2286
+ init_registry$7();
2286
2287
  init_internal_hooks();
2287
2288
  init_utils$2();
2288
2289
  init_channel_link_runtime();
@@ -2316,7 +2317,7 @@ function setActivePluginRuntime(runtime) {
2316
2317
  }
2317
2318
  var REGISTRY_STATE, CONFIG_STATE, RUNTIME_STATE, state$3, configState, runtimeState$1;
2318
2319
  var init_runtime$2 = __esmMin((() => {
2319
- init_registry$5();
2320
+ init_registry$6();
2320
2321
  REGISTRY_STATE = Symbol.for("minion.pluginRegistryState");
2321
2322
  CONFIG_STATE = Symbol.for("minion.pluginRegistryConfig");
2322
2323
  RUNTIME_STATE = Symbol.for("minion.activePluginRuntime");
@@ -2363,7 +2364,7 @@ function normalizeAnyChannelId(raw) {
2363
2364
  })?.plugin.id ?? null;
2364
2365
  }
2365
2366
  var CHAT_CHANNEL_ORDER, CHANNEL_IDS, CHAT_CHANNEL_META, CHAT_CHANNEL_ALIASES, normalizeChannelKey;
2366
- var init_registry$4 = __esmMin((() => {
2367
+ var init_registry$5 = __esmMin((() => {
2367
2368
  init_runtime$2();
2368
2369
  CHAT_CHANNEL_ORDER = [
2369
2370
  "telegram",
@@ -2536,7 +2537,7 @@ function isMarkdownCapableMessageChannel(raw) {
2536
2537
  }
2537
2538
  var INTERNAL_MESSAGE_CHANNEL, MARKDOWN_CAPABLE_CHANNELS, listPluginChannelIds, listDeliverableMessageChannels, listGatewayMessageChannels;
2538
2539
  var init_message_channel = __esmMin((() => {
2539
- init_registry$4();
2540
+ init_registry$5();
2540
2541
  init_client_info();
2541
2542
  init_runtime$2();
2542
2543
  INTERNAL_MESSAGE_CHANNEL = "webchat";
@@ -4260,7 +4261,7 @@ function resolveDefaultAgentBoundAccountId(cfg, channelId) {
4260
4261
  }
4261
4262
  var init_bindings = __esmMin((() => {
4262
4263
  init_agent_scope();
4263
- init_registry$4();
4264
+ init_registry$5();
4264
4265
  init_session_key$1();
4265
4266
  }));
4266
4267
  //#endregion
@@ -5106,7 +5107,7 @@ var init_dock = __esmMin((() => {
5106
5107
  init_utils$2();
5107
5108
  init_group_mentions();
5108
5109
  init_signal$1();
5109
- init_registry$4();
5110
+ init_registry$5();
5110
5111
  formatLower = (allowFrom) => allowFrom.map((entry) => String(entry).trim()).filter(Boolean).map((entry) => entry.toLowerCase());
5111
5112
  formatDiscordAllowFrom = (allowFrom) => allowFrom.map((entry) => String(entry).trim().replace(/^<@!?/, "").replace(/>$/, "").replace(/^discord:/i, "").replace(/^user:/i, "").replace(/^pk:/i, "").trim().toLowerCase()).filter(Boolean);
5112
5113
  DOCKS = {
@@ -5531,7 +5532,7 @@ function normalizeChannelId(raw) {
5531
5532
  }
5532
5533
  var init_plugins = __esmMin((() => {
5533
5534
  init_runtime$2();
5534
- init_registry$4();
5535
+ init_registry$5();
5535
5536
  init_directory_config();
5536
5537
  }));
5537
5538
  //#endregion
@@ -6427,6 +6428,7 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
6427
6428
  ]).optional(),
6428
6429
  perSession: z.boolean().optional(),
6429
6430
  workspaceRoot: z.string().optional(),
6431
+ tier0: z.object({ enabled: z.boolean().optional() }).strict().optional(),
6430
6432
  docker: SandboxDockerSchema,
6431
6433
  browser: SandboxBrowserSchema,
6432
6434
  prune: SandboxPruneSchema
@@ -6628,7 +6630,8 @@ var init_zod_schema_agent_runtime = __esmMin((() => {
6628
6630
  exec: ToolExecSchema,
6629
6631
  fs: ToolFsSchema,
6630
6632
  subagents: z.object({ tools: ToolPolicySchema }).strict().optional(),
6631
- sandbox: z.object({ tools: ToolPolicySchema }).strict().optional()
6633
+ sandbox: z.object({ tools: ToolPolicySchema }).strict().optional(),
6634
+ outputReduce: z.object({ enabled: z.boolean().optional() }).strict().optional()
6632
6635
  }).strict().superRefine((value, ctx) => {
6633
6636
  addAllowAlsoAllowConflictIssue(value, ctx, "tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)");
6634
6637
  }).optional();
@@ -7124,7 +7127,7 @@ var init_shell_env = __esmMin((() => {
7124
7127
  //#region src/version.ts
7125
7128
  var VERSION;
7126
7129
  var init_version$1 = __esmMin((() => {
7127
- VERSION = "2026.6.14-dev.20260616061802";
7130
+ VERSION = "2026.6.16-dev";
7128
7131
  }));
7129
7132
  //#endregion
7130
7133
  //#region src/config/agent-dirs.ts
@@ -16847,6 +16850,7 @@ var init_zod_schema = __esmMin((() => {
16847
16850
  importContacts: z.boolean().optional()
16848
16851
  }).strict().optional(),
16849
16852
  memorySync: z.object({ enabled: z.boolean().optional() }).strict().optional(),
16853
+ trajectory: z.object({ enabled: z.boolean().optional() }).strict().optional(),
16850
16854
  personalAgentObservations: z.object({
16851
16855
  enabled: z.boolean().optional(),
16852
16856
  dbPath: z.string().optional()
@@ -16959,6 +16963,7 @@ var init_zod_schema = __esmMin((() => {
16959
16963
  memory: MemorySchema,
16960
16964
  skills: z.object({
16961
16965
  allowBundled: z.array(z.string()).optional(),
16966
+ progressiveDisclosure: z.boolean().optional(),
16962
16967
  load: z.object({
16963
16968
  extraDirs: z.array(z.string()).optional(),
16964
16969
  watch: z.boolean().optional(),
@@ -17334,7 +17339,7 @@ function validateConfigObjectWithPluginsBase(raw, opts) {
17334
17339
  var AVATAR_SCHEME_RE, AVATAR_DATA_RE, AVATAR_HTTP_RE, WINDOWS_ABS_RE;
17335
17340
  var init_validation = __esmMin((() => {
17336
17341
  init_agent_scope();
17337
- init_registry$4();
17342
+ init_registry$5();
17338
17343
  init_config_state();
17339
17344
  init_manifest_registry();
17340
17345
  init_schema_validator();
@@ -22919,6 +22924,24 @@ var init_bundled_dir = __esmMin((() => {
22919
22924
  init_minion_root();
22920
22925
  }));
22921
22926
  //#endregion
22927
+ //#region src/agents/skills/compact-prompt.ts
22928
+ /**
22929
+ * Render a compact, name+description-only skills listing for progressive
22930
+ * disclosure. The full SKILL.md body is deliberately omitted; the agent is
22931
+ * instructed to load it on demand via the `skill_view` tool. This keeps the
22932
+ * system prompt small when many skills are available.
22933
+ */
22934
+ function formatSkillsCompact(skills) {
22935
+ if (skills.length === 0) return "";
22936
+ return [
22937
+ "<available_skills>",
22938
+ ...skills.map((s) => `- **${s.name}** — ${s.description.trim()}`),
22939
+ "</available_skills>",
22940
+ "Call the `skill_view` tool with a skill name to load its full instructions before using it."
22941
+ ].join("\n");
22942
+ }
22943
+ var init_compact_prompt = __esmMin((() => {}));
22944
+ //#endregion
22922
22945
  //#region src/shared/config-eval.ts
22923
22946
  function isTruthyValue(value) {
22924
22947
  if (value === void 0 || value === null) return false;
@@ -23669,6 +23692,35 @@ function applySkillsPromptLimits(params) {
23669
23692
  truncatedReason
23670
23693
  };
23671
23694
  }
23695
+ /**
23696
+ * Resolve whether progressive disclosure is enabled. Default is ON; only an
23697
+ * explicit `false` disables it (inlining full skill bodies in the prompt).
23698
+ */
23699
+ function resolveProgressiveDisclosure(config, override) {
23700
+ if (override !== void 0) return override;
23701
+ return config?.skills?.progressiveDisclosure !== false;
23702
+ }
23703
+ /**
23704
+ * Map prompt-eligible skill entries to compact `{ name, description, body }`
23705
+ * records. The body is the full SKILL.md text, read from disk on demand; if the
23706
+ * file can't be read we fall back to an empty body (compact mode omits bodies
23707
+ * from the prompt anyway, so this only affects callers that inspect `body`).
23708
+ */
23709
+ function toCompactSkills(skills) {
23710
+ return skills.map((skill) => {
23711
+ let body = "";
23712
+ try {
23713
+ body = fs.readFileSync(skill.filePath, "utf-8");
23714
+ } catch {
23715
+ body = "";
23716
+ }
23717
+ return {
23718
+ name: skill.name,
23719
+ description: skill.description ?? "",
23720
+ body
23721
+ };
23722
+ });
23723
+ }
23672
23724
  function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
23673
23725
  const eligible = filterSkillEntries(opts?.entries ?? loadSkillEntries(workspaceDir, opts), opts?.config, opts?.skillFilter, opts?.eligibility, opts?.denyFilter);
23674
23726
  const resolvedSkills = eligible.filter((entry) => entry.invocation?.disableModelInvocation !== true).map((entry) => entry.skill);
@@ -23680,7 +23732,7 @@ function buildWorkspaceSkillSnapshot(workspaceDir, opts) {
23680
23732
  const prompt = [
23681
23733
  remoteNote,
23682
23734
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
23683
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23735
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23684
23736
  ].filter(Boolean).join("\n");
23685
23737
  const skillFilter = normalizeSkillFilter(opts?.skillFilter);
23686
23738
  const denyFilter = normalizeSkillFilter(opts?.denyFilter);
@@ -23707,7 +23759,7 @@ function buildWorkspaceSkillsPrompt(workspaceDir, opts) {
23707
23759
  return [
23708
23760
  remoteNote,
23709
23761
  truncated ? `⚠️ Skills truncated: included ${skillsForPrompt.length} of ${resolvedSkills.length}. Run \`openclaw skills check\` to audit.` : "",
23710
- formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23762
+ resolveProgressiveDisclosure(opts?.config, opts?.progressive) ? formatSkillsCompact(toCompactSkills(skillsForPrompt)) : formatSkillsForPrompt(compactSkillPaths(skillsForPrompt))
23711
23763
  ].filter(Boolean).join("\n");
23712
23764
  }
23713
23765
  function resolveSkillsPromptForRun(params) {
@@ -23860,6 +23912,7 @@ var init_workspace$1 = __esmMin((() => {
23860
23912
  init_utils$2();
23861
23913
  init_sandbox_paths();
23862
23914
  init_bundled_dir();
23915
+ init_compact_prompt();
23863
23916
  init_config$3();
23864
23917
  init_filter();
23865
23918
  init_frontmatter();
@@ -28032,7 +28085,7 @@ var init_parse$2 = __esmMin((() => {
28032
28085
  ERROR_PAYLOAD_PREFIX_RE = /^(?:error|api\s*error|apierror|openai\s*error|anthropic\s*error|gateway\s*error)[:\s-]+/i;
28033
28086
  })), DEFAULT_SANDBOX_WORKSPACE_ROOT, DEFAULT_SANDBOX_IMAGE, DEFAULT_TOOL_ALLOW, DEFAULT_TOOL_DENY, SANDBOX_AGENT_WORKSPACE_MOUNT, SANDBOX_STATE_DIR, SANDBOX_REGISTRY_PATH, SANDBOX_BROWSER_REGISTRY_PATH;
28034
28087
  var init_constants$2 = __esmMin((() => {
28035
- init_registry$4();
28088
+ init_registry$5();
28036
28089
  init_config$4();
28037
28090
  DEFAULT_SANDBOX_WORKSPACE_ROOT = path.join(STATE_DIR, "sandboxes");
28038
28091
  DEFAULT_SANDBOX_IMAGE = "minion-sandbox:bookworm-slim";
@@ -28537,6 +28590,7 @@ function resolveSandboxConfigForAgent(cfg, agentId) {
28537
28590
  scope,
28538
28591
  workspaceAccess: agentSandbox?.workspaceAccess ?? agent?.workspaceAccess ?? "none",
28539
28592
  workspaceRoot: agentSandbox?.workspaceRoot ?? agent?.workspaceRoot ?? DEFAULT_SANDBOX_WORKSPACE_ROOT,
28593
+ tier0: { enabled: agentSandbox?.tier0?.enabled ?? agent?.tier0?.enabled ?? false },
28540
28594
  docker: resolveSandboxDockerConfig({
28541
28595
  scope,
28542
28596
  globalDocker: agent?.docker,
@@ -36508,7 +36562,7 @@ async function removeBrowserRegistryEntry(containerName) {
36508
36562
  return next;
36509
36563
  });
36510
36564
  }
36511
- var init_registry$3 = __esmMin((() => {
36565
+ var init_registry$4 = __esmMin((() => {
36512
36566
  init_session_write_lock();
36513
36567
  init_constants$2();
36514
36568
  }));
@@ -36969,7 +37023,7 @@ var init_docker = __esmMin((() => {
36969
37023
  init_runtime$3();
36970
37024
  init_config_hash();
36971
37025
  init_constants$2();
36972
- init_registry$3();
37026
+ init_registry$4();
36973
37027
  init_shared$1();
36974
37028
  init_validate_sandbox_security();
36975
37029
  log$44 = createSubsystemLogger("sandbox/docker");
@@ -37195,7 +37249,7 @@ var init_browser = __esmMin((() => {
37195
37249
  init_config$2();
37196
37250
  init_constants$2();
37197
37251
  init_docker();
37198
- init_registry$3();
37252
+ init_registry$4();
37199
37253
  init_shared$1();
37200
37254
  init_tool_policy();
37201
37255
  HOT_BROWSER_WINDOW_MS = 300 * 1e3;
@@ -37561,7 +37615,7 @@ var init_prune = __esmMin((() => {
37561
37615
  init_runtime$3();
37562
37616
  init_browser_bridges();
37563
37617
  init_docker();
37564
- init_registry$3();
37618
+ init_registry$4();
37565
37619
  lastPruneAtMs = 0;
37566
37620
  }));
37567
37621
  //#endregion
@@ -37867,7 +37921,7 @@ var init_manage = __esmMin((() => {
37867
37921
  init_config$4();
37868
37922
  init_config$2();
37869
37923
  init_docker();
37870
- init_registry$3();
37924
+ init_registry$4();
37871
37925
  init_shared$1();
37872
37926
  }));
37873
37927
  //#endregion
@@ -42694,7 +42748,7 @@ function resolveCommandAuthorization(params) {
42694
42748
  }
42695
42749
  var init_command_auth = __esmMin((() => {
42696
42750
  init_dock();
42697
- init_registry$4();
42751
+ init_registry$5();
42698
42752
  init_message_channel();
42699
42753
  }));
42700
42754
  //#endregion
@@ -44997,7 +45051,7 @@ var loggedListActionErrors;
44997
45051
  var init_channel_tools = __esmMin((() => {
44998
45052
  init_dock();
44999
45053
  init_plugins();
45000
- init_registry$4();
45054
+ init_registry$5();
45001
45055
  init_runtime$3();
45002
45056
  loggedListActionErrors = /* @__PURE__ */ new Set();
45003
45057
  }));
@@ -61418,7 +61472,7 @@ function loadOpenClawPlugins(options = {}) {
61418
61472
  }
61419
61473
  var registryCache, defaultLogger, resolvePluginSdkAliasFile, resolvePluginSdkAlias;
61420
61474
  var init_loader = __esmMin((() => {
61421
- init_registry$6();
61475
+ init_registry$7();
61422
61476
  init_subsystem();
61423
61477
  init_utils$2();
61424
61478
  init_version$1();
@@ -61429,7 +61483,7 @@ var init_loader = __esmMin((() => {
61429
61483
  init_config_state();
61430
61484
  init_discovery();
61431
61485
  init_manifest_registry();
61432
- init_registry$5();
61486
+ init_registry$6();
61433
61487
  init_runtime$2();
61434
61488
  init_runtime$1();
61435
61489
  init_schema_validator();
@@ -62902,6 +62956,198 @@ var init_landlock = __esmMin((() => {
62902
62956
  _caps = null;
62903
62957
  }));
62904
62958
  //#endregion
62959
+ //#region src/agents/sandbox/tier0/router.ts
62960
+ function shouldTryTier0(command) {
62961
+ const cmd = command.trim();
62962
+ if (!cmd) return false;
62963
+ for (const re of ESCALATE_PATTERNS) if (re.test(cmd)) return false;
62964
+ return true;
62965
+ }
62966
+ /**
62967
+ * Distinguish "just-bash can't do this" from "the user's command legitimately
62968
+ * failed". Known limitations in just-bash@3.0.1 include `$(( ))` arithmetic
62969
+ * expansion (trips its own defense-in-depth `node:module` guard) and any
62970
+ * unimplemented builtin. These must escalate to Docker, not surface as failures.
62971
+ */
62972
+ function isInterpreterLimitation(stderr) {
62973
+ if (!stderr) return false;
62974
+ 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);
62975
+ }
62976
+ var ESCALATE_PATTERNS;
62977
+ var init_router = __esmMin((() => {
62978
+ ESCALATE_PATTERNS = [
62979
+ /\b(curl|wget|nc|ncat|netcat|ssh|scp|sftp|rsync|ping|dig|nslookup|host)\b/,
62980
+ /\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/,
62981
+ /\b(apt|apt-get|dpkg|yum|dnf|apk|brew|sudo|su|systemctl|service|mount|umount|chroot|insmod|modprobe|iptables)\b/,
62982
+ /\b(docker|kubectl|helm|git|gh|aws|gcloud|az|terraform|ffmpeg|convert|magick|pandoc)\b/,
62983
+ /(^|\s|=)\/(dev|proc|sys)\//,
62984
+ /<\(|>\(/
62985
+ ];
62986
+ }));
62987
+ //#endregion
62988
+ //#region src/agents/sandbox/tier0/virtual-sandbox.ts
62989
+ /**
62990
+ * Tier-0 virtual sandbox — an in-process bash backend powered by just-bash.
62991
+ *
62992
+ * This is the cheap/fast tier in front of the Docker sandbox. For the high-volume
62993
+ * "safe" majority of agent shell calls (string munging, fs reads/writes in the
62994
+ * workspace, grep/sed/jq-style pipelines) it runs the command in-process against
62995
+ * an in-memory shell with the real workspace dir mounted — no container spawn.
62996
+ *
62997
+ * Correctness: the agent's real workspace dir is mounted (read-write, symlink-
62998
+ * blocked, root-jailed via just-bash's ReadWriteFs) at the container workdir, so
62999
+ * file visibility is identical to the Docker path. `/tmp` etc. live on an
63000
+ * InMemoryFs base. Network and python are OFF by default (just-bash defaults).
63001
+ *
63002
+ * Anything just-bash can't serve (an unimplemented builtin, an internal error)
63003
+ * sets `unsupported: true`; callers MUST escalate those to the Docker backend.
63004
+ * See ./router.ts for the routing + interpreter-limitation heuristics.
63005
+ */
63006
+ function withTimeout$4(p, ms) {
63007
+ if (!ms) return p;
63008
+ return new Promise((resolve, reject) => {
63009
+ const timer = setTimeout(() => reject(new TimeoutError()), ms);
63010
+ p.then((value) => {
63011
+ clearTimeout(timer);
63012
+ resolve(value);
63013
+ }, (error) => {
63014
+ clearTimeout(timer);
63015
+ reject(error);
63016
+ });
63017
+ });
63018
+ }
63019
+ var Tier0VirtualSandbox, TimeoutError;
63020
+ var init_virtual_sandbox = __esmMin((() => {
63021
+ init_router();
63022
+ Tier0VirtualSandbox = class {
63023
+ constructor() {
63024
+ this.instances = /* @__PURE__ */ new Map();
63025
+ }
63026
+ getInstance(req) {
63027
+ const existing = this.instances.get(req.scopeKey);
63028
+ if (existing && existing.workspaceHostDir === req.workspaceHostDir && existing.workdir === req.workdir) {
63029
+ existing.lastUsed = Date.now();
63030
+ return existing.bash;
63031
+ }
63032
+ const fs = new MountableFs({ base: new InMemoryFs() });
63033
+ fs.mount(req.workdir, new ReadWriteFs({ root: req.workspaceHostDir }));
63034
+ const bash = new Bash({
63035
+ fs,
63036
+ cwd: req.workdir,
63037
+ env: {
63038
+ LANG: "C.UTF-8",
63039
+ ...req.env
63040
+ },
63041
+ executionLimits: {
63042
+ maxCommandCount: 1e4,
63043
+ maxLoopIterations: 1e6
63044
+ }
63045
+ });
63046
+ const inst = {
63047
+ bash,
63048
+ workspaceHostDir: req.workspaceHostDir,
63049
+ workdir: req.workdir,
63050
+ lastUsed: Date.now()
63051
+ };
63052
+ this.instances.set(req.scopeKey, inst);
63053
+ return bash;
63054
+ }
63055
+ async exec(req) {
63056
+ const startedAt = Date.now();
63057
+ let bash;
63058
+ try {
63059
+ bash = this.getInstance(req);
63060
+ } catch {
63061
+ return {
63062
+ status: "failed",
63063
+ exitCode: null,
63064
+ durationMs: Date.now() - startedAt,
63065
+ aggregated: "",
63066
+ timedOut: false,
63067
+ unsupported: true
63068
+ };
63069
+ }
63070
+ try {
63071
+ const result = await withTimeout$4(bash.exec(req.command, {
63072
+ cwd: req.workdir,
63073
+ env: req.env
63074
+ }), req.timeoutSec ? req.timeoutSec * 1e3 : void 0);
63075
+ const durationMs = Date.now() - startedAt;
63076
+ const combined = [result.stdout, result.stderr].filter(Boolean).join("").trim();
63077
+ if (result.exitCode === 0) return {
63078
+ status: "completed",
63079
+ exitCode: 0,
63080
+ durationMs,
63081
+ aggregated: combined,
63082
+ timedOut: false,
63083
+ unsupported: false
63084
+ };
63085
+ return {
63086
+ status: "failed",
63087
+ exitCode: result.exitCode,
63088
+ durationMs,
63089
+ aggregated: combined,
63090
+ timedOut: false,
63091
+ unsupported: isInterpreterLimitation(result.stderr)
63092
+ };
63093
+ } catch (err) {
63094
+ const timedOut = err instanceof TimeoutError;
63095
+ return {
63096
+ status: "failed",
63097
+ exitCode: null,
63098
+ durationMs: Date.now() - startedAt,
63099
+ aggregated: "",
63100
+ timedOut,
63101
+ unsupported: !timedOut
63102
+ };
63103
+ }
63104
+ }
63105
+ dispose(scopeKey) {
63106
+ if (scopeKey) this.instances.delete(scopeKey);
63107
+ else this.instances.clear();
63108
+ }
63109
+ /** test/inspection helper */
63110
+ get liveInstances() {
63111
+ return this.instances.size;
63112
+ }
63113
+ };
63114
+ TimeoutError = class extends Error {};
63115
+ }));
63116
+ //#endregion
63117
+ //#region src/agents/sandbox/tier0/registry.ts
63118
+ function getTier0Sandbox() {
63119
+ if (!singleton$1) singleton$1 = new Tier0VirtualSandbox();
63120
+ return singleton$1;
63121
+ }
63122
+ /**
63123
+ * Resolve the tier-0 binding for an exec, or undefined to use the Docker/host
63124
+ * path. `workspaceHostDir` is the real sandbox workspace dir (mounted into the
63125
+ * Docker container too), so tier-0 sees the same files.
63126
+ */
63127
+ function resolveTier0Binding(params) {
63128
+ if (!params.workspaceHostDir) return;
63129
+ const sandboxCfg = resolveSandboxConfigForAgent(params.config ?? loadConfig(), params.agentId);
63130
+ if (!sandboxCfg.tier0.enabled) return;
63131
+ if (sandboxCfg.workspaceAccess === "ro") return;
63132
+ return {
63133
+ backend: getTier0Sandbox(),
63134
+ workspaceHostDir: params.workspaceHostDir
63135
+ };
63136
+ }
63137
+ var singleton$1;
63138
+ var init_registry$3 = __esmMin((() => {
63139
+ init_config$4();
63140
+ init_config$2();
63141
+ init_virtual_sandbox();
63142
+ }));
63143
+ //#endregion
63144
+ //#region src/agents/sandbox/tier0/index.ts
63145
+ var init_tier0 = __esmMin((() => {
63146
+ init_router();
63147
+ init_registry$3();
63148
+ init_virtual_sandbox();
63149
+ }));
63150
+ //#endregion
62905
63151
  //#region src/agents/tools/automation/gateway.ts
62906
63152
  function readGatewayCallOptions(params) {
62907
63153
  return {
@@ -64584,10 +64830,112 @@ function emitExecSystemEvent(text, opts) {
64584
64830
  });
64585
64831
  requestHeartbeatNow({ reason: "exec-event" });
64586
64832
  }
64833
+ /**
64834
+ * Tier-0 fast path: run `execCommand` in the in-process virtual sandbox. Returns
64835
+ * a completed ExecProcessHandle on success, or null when just-bash can't serve
64836
+ * the command (so the caller escalates to Docker). Output is sanitized and a
64837
+ * ProcessSession is registered exactly like the normal path, so downstream
64838
+ * session listing / tailing is unaffected.
64839
+ */
64840
+ async function tryTier0Exec(args) {
64841
+ const { opts, sessionId, startedAt, execCommand } = args;
64842
+ const tier0 = opts.tier0;
64843
+ const sandbox = opts.sandbox;
64844
+ if (!tier0 || !sandbox) return null;
64845
+ const workdir = opts.containerWorkdir ?? sandbox.containerWorkdir;
64846
+ let outcome;
64847
+ try {
64848
+ outcome = await tier0.backend.exec({
64849
+ command: execCommand,
64850
+ workdir,
64851
+ workspaceHostDir: tier0.workspaceHostDir,
64852
+ env: opts.env,
64853
+ scopeKey: sandbox.containerName,
64854
+ timeoutSec: opts.timeoutSec
64855
+ });
64856
+ } catch {
64857
+ return null;
64858
+ }
64859
+ if (outcome.unsupported) return null;
64860
+ const session = {
64861
+ id: sessionId,
64862
+ command: opts.command,
64863
+ scopeKey: opts.scopeKey,
64864
+ sessionKey: opts.sessionKey,
64865
+ notifyOnExit: opts.notifyOnExit,
64866
+ notifyOnExitEmptySuccess: opts.notifyOnExitEmptySuccess === true,
64867
+ exitNotified: false,
64868
+ child: void 0,
64869
+ stdin: void 0,
64870
+ pid: void 0,
64871
+ startedAt,
64872
+ cwd: opts.workdir,
64873
+ maxOutputChars: opts.maxOutput,
64874
+ pendingMaxOutputChars: opts.pendingMaxOutput,
64875
+ totalOutputChars: 0,
64876
+ pendingStdout: [],
64877
+ pendingStderr: [],
64878
+ pendingStdoutChars: 0,
64879
+ pendingStderrChars: 0,
64880
+ aggregated: "",
64881
+ tail: "",
64882
+ exited: false,
64883
+ exitCode: void 0,
64884
+ exitSignal: void 0,
64885
+ truncated: false,
64886
+ backgrounded: false
64887
+ };
64888
+ addSession(session);
64889
+ const sanitized = stripAnsi(sanitizeBinaryOutput(outcome.aggregated));
64890
+ for (const chunk of chunkString(sanitized)) appendOutput(session, "stdout", chunk);
64891
+ const status = outcome.status === "completed" ? "completed" : "failed";
64892
+ markExited(session, outcome.exitCode ?? 0, null, status);
64893
+ const durationMs = Date.now() - startedAt;
64894
+ const aggregated = session.aggregated.trim();
64895
+ let result;
64896
+ if (status === "completed") {
64897
+ const exitCode = outcome.exitCode ?? 0;
64898
+ result = {
64899
+ status: "completed",
64900
+ exitCode,
64901
+ exitSignal: null,
64902
+ durationMs,
64903
+ aggregated: aggregated + (exitCode !== 0 ? `\n\n(Command exited with code ${exitCode})` : ""),
64904
+ timedOut: false
64905
+ };
64906
+ } else {
64907
+ const reason = outcome.timedOut ? `Command timed out after ${opts.timeoutSec} seconds` : `Command exited with code ${outcome.exitCode ?? 1}`;
64908
+ result = {
64909
+ status: "failed",
64910
+ exitCode: outcome.exitCode,
64911
+ exitSignal: null,
64912
+ durationMs,
64913
+ aggregated,
64914
+ timedOut: outcome.timedOut,
64915
+ reason: aggregated ? `${aggregated}\n\n${reason}` : reason
64916
+ };
64917
+ }
64918
+ return {
64919
+ session,
64920
+ startedAt,
64921
+ pid: void 0,
64922
+ promise: Promise.resolve(result),
64923
+ kill: () => {}
64924
+ };
64925
+ }
64587
64926
  async function runExecProcess(opts) {
64588
64927
  const startedAt = Date.now();
64589
64928
  const sessionId = createSessionSlug();
64590
64929
  const execCommand = opts.execCommand ?? opts.command;
64930
+ if (opts.tier0 && opts.sandbox && !opts.usePty && shouldTryTier0(execCommand)) {
64931
+ const tier0Handle = await tryTier0Exec({
64932
+ opts,
64933
+ sessionId,
64934
+ startedAt,
64935
+ execCommand
64936
+ });
64937
+ if (tier0Handle) return tier0Handle;
64938
+ }
64591
64939
  const supervisor = getProcessSupervisor();
64592
64940
  const session = {
64593
64941
  id: sessionId,
@@ -64818,6 +65166,7 @@ var init_bash_tools_exec_runtime = __esmMin((() => {
64818
65166
  init_supervisor();
64819
65167
  init_pty_dsr();
64820
65168
  init_shell_utils();
65169
+ init_tier0();
64821
65170
  init_bash_process_registry();
64822
65171
  init_bash_tools_shared();
64823
65172
  DANGEROUS_HOST_ENV_VARS = new Set([
@@ -65421,7 +65770,11 @@ function createExecTool(defaults) {
65421
65770
  scopeKey: defaults?.scopeKey,
65422
65771
  sessionKey: notifySessionKey,
65423
65772
  timeoutSec: effectiveTimeout,
65424
- onUpdate
65773
+ onUpdate,
65774
+ tier0: sandbox ? resolveTier0Binding({
65775
+ agentId,
65776
+ workspaceHostDir: sandbox.workspaceDir
65777
+ }) : void 0
65425
65778
  });
65426
65779
  let yielded = false;
65427
65780
  let yieldTimer = null;
@@ -65496,6 +65849,7 @@ var init_bash_tools_exec = __esmMin((() => {
65496
65849
  init_logger$2();
65497
65850
  init_session_key$1();
65498
65851
  init_landlock();
65852
+ init_tier0();
65499
65853
  init_gateway();
65500
65854
  init_nodes_utils();
65501
65855
  init_bash_process_registry();
@@ -79158,7 +79512,7 @@ function resolvePingPongTurns(cfg) {
79158
79512
  var ANNOUNCE_SKIP_TOKEN, REPLY_SKIP_TOKEN, DEFAULT_PING_PONG_TURNS, MAX_PING_PONG_TURNS;
79159
79513
  var init_sessions_send_helpers = __esmMin((() => {
79160
79514
  init_plugins();
79161
- init_registry$4();
79515
+ init_registry$5();
79162
79516
  ANNOUNCE_SKIP_TOKEN = "ANNOUNCE_SKIP";
79163
79517
  REPLY_SKIP_TOKEN = "REPLY_SKIP";
79164
79518
  DEFAULT_PING_PONG_TURNS = 5;
@@ -91633,11 +91987,12 @@ var init_agent_type = __esmMin((() => {
91633
91987
  if (!trimmed) return [];
91634
91988
  return [
91635
91989
  "## Skills (mandatory)",
91636
- "Before replying: scan <available_skills> <description> entries.",
91637
- `- If exactly one skill clearly applies: read its SKILL.md at <location> with \`${ctx.readToolName}\`, then follow it.`,
91638
- "- If multiple could apply: choose the most specific one, then read/follow it.",
91639
- "- If none clearly apply: do not read any SKILL.md.",
91640
- "Constraints: never read more than one skill up front; only read after selecting.",
91990
+ "Before replying: scan the <available_skills> entries.",
91991
+ "- If exactly one skill clearly applies: load its full instructions, then follow it.",
91992
+ "- If multiple could apply: choose the most specific one, then load/follow it.",
91993
+ "- If none clearly apply: do not load any skill.",
91994
+ `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}\`.`,
91995
+ "Constraints: never load more than one skill up front; only load after selecting.",
91641
91996
  trimmed,
91642
91997
  ""
91643
91998
  ];
@@ -91783,6 +92138,37 @@ var init_agent_type = __esmMin((() => {
91783
92138
  ];
91784
92139
  }));
91785
92140
  //#endregion
92141
+ //#region src/agents/sections/behaviour.ts
92142
+ var BEHAVIOUR_SECTIONS;
92143
+ var init_behaviour = __esmMin((() => {
92144
+ init_prose_loader();
92145
+ BEHAVIOUR_SECTIONS = [{
92146
+ id: "behaviour",
92147
+ layer: "identity",
92148
+ order: 2200,
92149
+ modes: ["full", "minimal"],
92150
+ cacheable: false,
92151
+ header: "## Operating Rules (self-maintained)",
92152
+ source: "file",
92153
+ render: (ctx) => {
92154
+ const workspaceDir = ctx.params.workspaceDir;
92155
+ if (!workspaceDir) return [];
92156
+ const content = resolveProse({
92157
+ layer: "identity",
92158
+ id: "behaviour",
92159
+ agentWorkspaceDir: workspaceDir
92160
+ })?.content.trim();
92161
+ if (!content) return [];
92162
+ return [
92163
+ "## Operating Rules (self-maintained)",
92164
+ "",
92165
+ content,
92166
+ ""
92167
+ ];
92168
+ }
92169
+ }];
92170
+ }));
92171
+ //#endregion
91786
92172
  //#region src/agents/sections/identity.ts
91787
92173
  var IDENTITY_SECTIONS;
91788
92174
  var init_identity = __esmMin((() => {
@@ -92751,6 +93137,7 @@ function getBuiltinRegistry() {
92751
93137
  _registry.registerAll(PLATFORM_SECTIONS);
92752
93138
  _registry.registerAll(AGENT_TYPE_SECTIONS);
92753
93139
  _registry.registerAll(IDENTITY_SECTIONS);
93140
+ _registry.registerAll(BEHAVIOUR_SECTIONS);
92754
93141
  _registry.registerAll(USER_SECTIONS);
92755
93142
  _registry.registerAll(SESSION_SECTIONS);
92756
93143
  return _registry;
@@ -92769,6 +93156,7 @@ function assembleAgentSystemPrompt(params) {
92769
93156
  var _registry;
92770
93157
  var init_assemble = __esmMin((() => {
92771
93158
  init_agent_type();
93159
+ init_behaviour();
92772
93160
  init_identity();
92773
93161
  init_platform();
92774
93162
  init_registry$1();
@@ -98491,6 +98879,36 @@ async function prepareSessionManagerForRun(params) {
98491
98879
  }
98492
98880
  var init_session_manager_init = __esmMin((() => {}));
98493
98881
  //#endregion
98882
+ //#region src/agents/pi-embedded-runner/tool-result-reduce.ts
98883
+ /** Pure text reducer for oversized/repetitive tool output. Never throws. */
98884
+ function reduceToolOutputText(text, opts) {
98885
+ let lines = text.split("\n");
98886
+ if (opts.collapseRuns) {
98887
+ const collapsed = [];
98888
+ let i = 0;
98889
+ while (i < lines.length) {
98890
+ let j = i + 1;
98891
+ while (j < lines.length && lines[j] === lines[i]) j += 1;
98892
+ const run = j - i;
98893
+ if (run >= 5) collapsed.push(`${lines[i]} (repeated ${run}×)`);
98894
+ else for (let k = i; k < j; k++) collapsed.push(lines[k]);
98895
+ i = j;
98896
+ }
98897
+ lines = collapsed;
98898
+ }
98899
+ if (lines.length <= opts.maxLines) return lines.join("\n");
98900
+ if (opts.headLines + opts.tailLines >= lines.length) return lines.join("\n");
98901
+ const head = lines.slice(0, opts.headLines);
98902
+ const tail = lines.slice(lines.length - opts.tailLines);
98903
+ const elided = lines.length - head.length - tail.length;
98904
+ return [
98905
+ ...head,
98906
+ `… ${elided} lines elided …`,
98907
+ ...tail
98908
+ ].join("\n");
98909
+ }
98910
+ var init_tool_result_reduce = __esmMin((() => {}));
98911
+ //#endregion
98494
98912
  //#region src/agents/pi-embedded-runner/tool-result-context-guard.ts
98495
98913
  function isTextBlock(block) {
98496
98914
  return !!block && typeof block === "object" && block.type === "text";
@@ -98625,8 +99043,28 @@ function applyMessageMutationInPlace(target, source) {
98625
99043
  for (const key of Object.keys(targetRecord)) if (!(key in sourceRecord)) delete targetRecord[key];
98626
99044
  Object.assign(targetRecord, sourceRecord);
98627
99045
  }
99046
+ /**
99047
+ * Run the pure line-reducer over each tool-result message's text content,
99048
+ * mutating messages in place. Skips reductions that wouldn't shrink the text.
99049
+ */
99050
+ function reduceToolResultOutputsInPlace(messages) {
99051
+ for (const message of messages) {
99052
+ if (!isToolResultMessage(message)) continue;
99053
+ const rawText = getToolResultText(message);
99054
+ if (!rawText) continue;
99055
+ const reduced = reduceToolOutputText(rawText, {
99056
+ maxLines: REDUCE_MAX_LINES,
99057
+ headLines: REDUCE_HEAD_LINES,
99058
+ tailLines: REDUCE_TAIL_LINES,
99059
+ collapseRuns: true
99060
+ });
99061
+ if (reduced === rawText) continue;
99062
+ applyMessageMutationInPlace(message, replaceToolResultText(message, reduced));
99063
+ }
99064
+ }
98628
99065
  function enforceToolResultContextBudgetInPlace(params) {
98629
- const { messages, contextBudgetChars, maxSingleToolResultChars } = params;
99066
+ const { messages, contextBudgetChars, maxSingleToolResultChars, reduceOutput } = params;
99067
+ if (reduceOutput) reduceToolResultOutputsInPlace(messages);
98630
99068
  for (const message of messages) {
98631
99069
  if (!isToolResultMessage(message)) continue;
98632
99070
  applyMessageMutationInPlace(message, truncateToolResultToChars(message, maxSingleToolResultChars));
@@ -98648,6 +99086,7 @@ function enforceToolResultContextBudgetInPlace(params) {
98648
99086
  * @returns An async function suitable for use as Agent's transformContext callback.
98649
99087
  */
98650
99088
  function createToolResultContextGuardTransform(params) {
99089
+ const reduceOutput = params.reduceOutput !== false;
98651
99090
  const contextWindowTokens = Math.max(1, Math.floor(params.contextWindowTokens));
98652
99091
  const contextBudgetChars = Math.max(1024, Math.floor(contextWindowTokens * CHARS_PER_TOKEN_ESTIMATE * CONTEXT_INPUT_HEADROOM_RATIO));
98653
99092
  const maxSingleToolResultChars = Math.max(1024, Math.floor(contextWindowTokens * TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE * SINGLE_TOOL_RESULT_CONTEXT_SHARE));
@@ -98658,13 +99097,15 @@ function createToolResultContextGuardTransform(params) {
98658
99097
  enforceToolResultContextBudgetInPlace({
98659
99098
  messages: contextMessages,
98660
99099
  contextBudgetChars,
98661
- maxSingleToolResultChars
99100
+ maxSingleToolResultChars,
99101
+ reduceOutput
98662
99102
  });
98663
99103
  return contextMessages;
98664
99104
  };
98665
99105
  }
98666
- var CHARS_PER_TOKEN_ESTIMATE, CONTEXT_INPUT_HEADROOM_RATIO, SINGLE_TOOL_RESULT_CONTEXT_SHARE, TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE, IMAGE_CHAR_ESTIMATE, CONTEXT_LIMIT_TRUNCATION_NOTICE, CONTEXT_LIMIT_TRUNCATION_SUFFIX, PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER;
99106
+ var CHARS_PER_TOKEN_ESTIMATE, CONTEXT_INPUT_HEADROOM_RATIO, SINGLE_TOOL_RESULT_CONTEXT_SHARE, TOOL_RESULT_CHARS_PER_TOKEN_ESTIMATE, IMAGE_CHAR_ESTIMATE, CONTEXT_LIMIT_TRUNCATION_NOTICE, CONTEXT_LIMIT_TRUNCATION_SUFFIX, PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER, REDUCE_MAX_LINES, REDUCE_HEAD_LINES, REDUCE_TAIL_LINES;
98667
99107
  var init_tool_result_context_guard = __esmMin((() => {
99108
+ init_tool_result_reduce();
98668
99109
  CHARS_PER_TOKEN_ESTIMATE = 4;
98669
99110
  CONTEXT_INPUT_HEADROOM_RATIO = .75;
98670
99111
  SINGLE_TOOL_RESULT_CONTEXT_SHARE = .5;
@@ -98673,6 +99114,9 @@ var init_tool_result_context_guard = __esmMin((() => {
98673
99114
  CONTEXT_LIMIT_TRUNCATION_NOTICE = "[truncated: output exceeded context limit]";
98674
99115
  CONTEXT_LIMIT_TRUNCATION_SUFFIX = `\n${CONTEXT_LIMIT_TRUNCATION_NOTICE}`;
98675
99116
  PREEMPTIVE_TOOL_RESULT_COMPACTION_PLACEHOLDER = "[compacted: tool output removed to free context]";
99117
+ REDUCE_MAX_LINES = 200;
99118
+ REDUCE_HEAD_LINES = 40;
99119
+ REDUCE_TAIL_LINES = 40;
98676
99120
  }));
98677
99121
  //#endregion
98678
99122
  //#region src/agents/pi-embedded-runner/run/attempt-session.ts
@@ -98765,7 +99209,10 @@ async function createRunSession(params, env) {
98765
99209
  applySystemPromptOverrideToSession(session, env.systemPromptText);
98766
99210
  if (!session) throw new Error("Embedded agent session missing");
98767
99211
  const activeSession = session;
98768
- const contextGuardTransform = createToolResultContextGuardTransform({ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)) });
99212
+ const contextGuardTransform = createToolResultContextGuardTransform({
99213
+ contextWindowTokens: Math.max(1, Math.floor(params.model.contextWindow ?? params.model.maxTokens ?? 2e5)),
99214
+ reduceOutput: params.config?.tools?.outputReduce?.enabled !== false
99215
+ });
98769
99216
  activeSession.agent.transformContext = contextGuardTransform;
98770
99217
  const cacheTrace = createCacheTrace({
98771
99218
  cfg: params.config,
@@ -103057,7 +103504,7 @@ var init_commands_allowlist = __esmMin((() => {
103057
103504
  init_resolve_users();
103058
103505
  init_config_writes();
103059
103506
  init_pairing();
103060
- init_registry$4();
103507
+ init_registry$5();
103061
103508
  init_accounts$1();
103062
103509
  init_accounts();
103063
103510
  init_config$4();
@@ -104397,7 +104844,7 @@ var init_debug_commands = __esmMin((() => {
104397
104844
  var handleConfigCommand, handleDebugCommand;
104398
104845
  var init_commands_config = __esmMin((() => {
104399
104846
  init_config_writes();
104400
- init_registry$4();
104847
+ init_registry$5();
104401
104848
  init_config_paths();
104402
104849
  init_config$4();
104403
104850
  init_runtime_overrides();
@@ -108578,7 +109025,7 @@ var init_reply_elevated = __esmMin((() => {
108578
109025
  init_agent_scope();
108579
109026
  init_dock();
108580
109027
  init_plugins();
108581
- init_registry$4();
109028
+ init_registry$5();
108582
109029
  init_message_channel();
108583
109030
  init_string_normalization();
108584
109031
  init_elevated_unavailable();
@@ -110179,7 +110626,7 @@ var BUN_FETCH_SOCKET_ERROR_RE, isBunFetchSocketError, formatBunFetchSocketError,
110179
110626
  var init_agent_runner_utils = __esmMin((() => {
110180
110627
  init_agent_scope();
110181
110628
  init_dock();
110182
- init_registry$4();
110629
+ init_registry$5();
110183
110630
  init_sessions$1();
110184
110631
  init_provider_utils();
110185
110632
  init_usage_format();