@iowarp/clio-coder 0.3.9 → 0.4.0

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 (416) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/NOTICE +33 -0
  3. package/README.md +7 -2
  4. package/dist/{acp-7LOELQFP.js → acp-G5WJBNCT.js} +13 -12
  5. package/dist/{agents-FIBG2SHA.js → agents-FMV2Q5G4.js} +39 -36
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-OI4LIH2I.js → auth-3IDSJEIK.js} +16 -15
  8. package/dist/{builtins-AD25UL3C.js → builtins-XCZWXSC7.js} +3 -3
  9. package/dist/{chunk-IFBNV6H6.js → chunk-2ANTL7MR.js} +3 -3
  10. package/dist/{chunk-56KB5IJP.js → chunk-2OQE55CK.js} +3 -3
  11. package/dist/{chunk-N3PBVRTZ.js → chunk-32KWKNSF.js} +9 -7
  12. package/dist/{chunk-VKBMFOYV.js → chunk-36EJLSQQ.js} +23 -27
  13. package/dist/{chunk-465CC7FK.js → chunk-3BT2XMV4.js} +16 -13
  14. package/dist/{chunk-NQ6UCCOD.js → chunk-3URVFKWK.js} +7 -7
  15. package/dist/{chunk-WIE7ZOSW.js → chunk-3XML7CDN.js} +2 -2
  16. package/dist/chunk-42FMPA75.js +101 -0
  17. package/dist/{chunk-A2NJGIB3.js → chunk-5LXZXPKX.js} +2 -2
  18. package/dist/{chunk-HAY4ZE2P.js → chunk-5PSMVOLM.js} +2 -2
  19. package/dist/{chunk-JEQQR47K.js → chunk-6DB53AJS.js} +168 -9
  20. package/dist/{chunk-KV2AOLDF.js → chunk-76ONBSIA.js} +5 -25
  21. package/dist/{chunk-FALJGAWU.js → chunk-7MCTRUCE.js} +2 -2
  22. package/dist/{chunk-5T7RBWN2.js → chunk-AB44T6BB.js} +5 -5
  23. package/dist/chunk-B7OBL7PK.js +1405 -0
  24. package/dist/{chunk-B5CSFE7B.js → chunk-BBVJUZHB.js} +2 -2
  25. package/dist/{chunk-EQ63NRB7.js → chunk-BBVYXMFO.js} +2 -2
  26. package/dist/{chunk-O6I4CIEU.js → chunk-BKFJHQCA.js} +6 -6
  27. package/dist/chunk-BKFM6EJV.js +462 -0
  28. package/dist/chunk-BMS5RKQY.js +27 -0
  29. package/dist/{chunk-MV2VUEJC.js → chunk-BPKCPIL7.js} +2 -2
  30. package/dist/{chunk-TEO2TLVN.js → chunk-BUMFYQFY.js} +964 -1120
  31. package/dist/{chunk-BNAZZHFG.js → chunk-BYP5D4HI.js} +1 -1
  32. package/dist/chunk-C2LTL2W6.js +2447 -0
  33. package/dist/{chunk-EBOC7MT3.js → chunk-CODPRO7Q.js} +8 -8
  34. package/dist/{chunk-HPCTNZM2.js → chunk-CTJ4RNAA.js} +4 -4
  35. package/dist/{chunk-ODFEOB4F.js → chunk-CY6FY24N.js} +26 -8
  36. package/dist/{chunk-MIX5N5AC.js → chunk-DQITNCXG.js} +394 -154
  37. package/dist/{chunk-S4COXYBG.js → chunk-DYJP44XW.js} +129 -106
  38. package/dist/{chunk-N5XKWMDW.js → chunk-F4CKPOEQ.js} +6 -6
  39. package/dist/{chunk-AMKHQW3C.js → chunk-FEFIFZTL.js} +3 -3
  40. package/dist/{chunk-MV3K5QF2.js → chunk-GCSMB2KY.js} +2 -2
  41. package/dist/{chunk-7C6RYZGQ.js → chunk-GKF55TAZ.js} +3 -3
  42. package/dist/{chunk-B5XRQOLB.js → chunk-GR5G2PVF.js} +9 -8
  43. package/dist/{chunk-XDOQXGFO.js → chunk-GXNLGKAB.js} +64 -8
  44. package/dist/chunk-HHV2GANA.js +88 -0
  45. package/dist/{chunk-774ILSRL.js → chunk-HI63TFOG.js} +4 -3
  46. package/dist/{chunk-R7LNVMCS.js → chunk-HJJTYUHX.js} +64 -72
  47. package/dist/{chunk-RKRLDWD3.js → chunk-HLW2MRKE.js} +1 -1
  48. package/dist/{chunk-CA42X6KT.js → chunk-HWHKMHUA.js} +6 -6
  49. package/dist/chunk-HZHHCK24.js +1631 -0
  50. package/dist/{chunk-HJB5IUKP.js → chunk-I5VEOC6I.js} +12 -12
  51. package/dist/chunk-IBEBSCYA.js +564 -0
  52. package/dist/chunk-IQ7KR472.js +362 -0
  53. package/dist/{chunk-4H6ULJ3H.js → chunk-J4W7KFM7.js} +921 -990
  54. package/dist/{chunk-4LJX2PUC.js → chunk-JDG2WCRO.js} +5 -5
  55. package/dist/{chunk-NZU6YDNV.js → chunk-K5C3NCBD.js} +4 -4
  56. package/dist/{chunk-CGKSTWHD.js → chunk-K6BSR66V.js} +2 -1
  57. package/dist/{chunk-NNNWO6F2.js → chunk-KFZI4NIL.js} +93 -3
  58. package/dist/chunk-KMVISBZR.js +132 -0
  59. package/dist/{chunk-BVDVID7E.js → chunk-LDQ2ZF2M.js} +2 -2
  60. package/dist/{chunk-OEDBCISO.js → chunk-LQ3DZAMX.js} +2 -2
  61. package/dist/{chunk-PZ4I4JE2.js → chunk-LY4S7GJC.js} +124 -116
  62. package/dist/{chunk-3DUR4WUA.js → chunk-MLKNTWH2.js} +19 -19
  63. package/dist/chunk-NEKRRTYW.js +56 -0
  64. package/dist/{chunk-5DQRIYDZ.js → chunk-NHCZP4K7.js} +2 -2
  65. package/dist/chunk-NHLBIGRH.js +1506 -0
  66. package/dist/chunk-NQQH3YT7.js +302 -0
  67. package/dist/chunk-NYS75XW5.js +15 -0
  68. package/dist/{chunk-TD7UE2L5.js → chunk-O4XIVISU.js} +7 -7
  69. package/dist/{chunk-WXCJ7VME.js → chunk-O6TL7WWY.js} +6 -6
  70. package/dist/chunk-OQBA45DZ.js +97 -0
  71. package/dist/{chunk-LU7P4LHA.js → chunk-P3FOHJT4.js} +2 -2
  72. package/dist/chunk-PMZCIOCJ.js +25 -0
  73. package/dist/{chunk-I4HZDVNP.js → chunk-PQEFIJ36.js} +2 -2
  74. package/dist/{chunk-HKO36JWF.js → chunk-QBJA7R7N.js} +31 -3
  75. package/dist/chunk-QDC3K2U3.js +262 -0
  76. package/dist/{chunk-5HFBWUMU.js → chunk-QLFS5GO2.js} +4 -4
  77. package/dist/{chunk-GAYUJ7LE.js → chunk-QLL7ILRG.js} +41 -32
  78. package/dist/{chunk-LXPJXFM5.js → chunk-QREDIESB.js} +7 -7
  79. package/dist/chunk-QSNYB6ZV.js +195 -0
  80. package/dist/chunk-R346GLFC.js +31 -0
  81. package/dist/{chunk-VPTUJU4P.js → chunk-SJ5ZKQ4S.js} +2 -2
  82. package/dist/{chunk-QQ7EKM72.js → chunk-SP2RXXYO.js} +6 -54
  83. package/dist/chunk-SUCTJL45.js +45 -0
  84. package/dist/{chunk-5QKCQQ3E.js → chunk-SUW5DORT.js} +2 -2
  85. package/dist/chunk-T56WDKA5.js +183 -0
  86. package/dist/chunk-TVHHYFHE.js +255 -0
  87. package/dist/{chunk-IHKBWSXF.js → chunk-TZ3SGWZZ.js} +2 -2
  88. package/dist/{chunk-ECUO3KDP.js → chunk-U77AMWDL.js} +47 -7
  89. package/dist/{chunk-3UUY7R3Z.js → chunk-ULC6OTWO.js} +7 -7
  90. package/dist/{chunk-AEYBF3TB.js → chunk-UM7N4G5A.js} +2 -2
  91. package/dist/{chunk-3V5AYSEQ.js → chunk-UXMFQ54G.js} +43 -36
  92. package/dist/{chunk-YW7UVM5V.js → chunk-V5DHCITQ.js} +34 -1
  93. package/dist/{chunk-47CMYGET.js → chunk-VAZSBTKF.js} +2 -2
  94. package/dist/{chunk-3MRC2YSQ.js → chunk-VEO4AP2K.js} +2 -2
  95. package/dist/{chunk-PNY46YEY.js → chunk-VFA6GDY5.js} +47 -3
  96. package/dist/chunk-VO67MWHC.js +75 -0
  97. package/dist/{chunk-XK56QHLX.js → chunk-VPKWYKEY.js} +19 -5
  98. package/dist/{chunk-AD7Y7STJ.js → chunk-VYMXRQI6.js} +36 -22
  99. package/dist/{chunk-T3Z6VAAF.js → chunk-W5VSYASO.js} +19 -17
  100. package/dist/{chunk-5PVQ4SRS.js → chunk-WZR7K7ZX.js} +7 -123
  101. package/dist/{chunk-DG4M6ZUE.js → chunk-X3YGUTOB.js} +4 -4
  102. package/dist/chunk-X75E3D2N.js +686 -0
  103. package/dist/{chunk-P3JGPQFL.js → chunk-YDFRH54B.js} +4 -4
  104. package/dist/chunk-YJX4SHTD.js +40 -0
  105. package/dist/{chunk-ZI647VB5.js → chunk-YPI3QQCF.js} +2 -2
  106. package/dist/{chunk-YSEHGPCT.js → chunk-Z2RR6MAK.js} +3 -3
  107. package/dist/{chunk-HCBCAYZU.js → chunk-Z4TXYIEG.js} +5 -5
  108. package/dist/cli/index.js +47 -36
  109. package/dist/{clio-LT5V7SSZ.js → clio-2JXHBBY5.js} +7 -7
  110. package/dist/{code-nav-LMW275PA.js → code-nav-3YYRMYNF.js} +6 -6
  111. package/dist/{compile-cache-CVJMMODC.js → compile-cache-7FPE6PS3.js} +3 -3
  112. package/dist/{components-ZFA3SAER.js → components-RYZV4JGP.js} +5 -5
  113. package/dist/{config-RXS5T3JT.js → config-QZPCMYSO.js} +58 -50
  114. package/dist/{configure-2WYWSCSD.js → configure-TEGEBYCA.js} +21 -19
  115. package/dist/{context-I3BTOTCS.js → context-AV7OEZ4D.js} +11 -11
  116. package/dist/{context-MVOORGMF.js → context-E6H5RNMC.js} +49 -41
  117. package/dist/{context-PALKKQYL.js → context-GSXUE4CT.js} +25 -23
  118. package/dist/{context-clear-N2WOYZ2K.js → context-clear-SHIBYK6T.js} +48 -40
  119. package/dist/{context-working-set-MIEVECVZ.js → context-working-set-5ZGKPGZQ.js} +11 -10
  120. package/dist/{dispatch-runner-VVA4SRRH.js → dispatch-runner-EFMJT4LD.js} +88 -60
  121. package/dist/{docs-7LQ23DLM.js → docs-23KQS3XK.js} +5 -5
  122. package/dist/doctor-QOA5FNY5.js +313 -0
  123. package/dist/{eval-IJ5VEZDJ.js → eval-TFBYQH4H.js} +66 -64
  124. package/dist/eval-inventory-SXH7PDKX.js +316 -0
  125. package/dist/{evidence-L5APPXNV.js → evidence-ERGESKGN.js} +198 -44
  126. package/dist/{evolve-RGNKFJ52.js → evolve-VDXTSYCJ.js} +46 -38
  127. package/dist/{extensions-7WYWUX5A.js → extensions-7BGBHN57.js} +6 -6
  128. package/dist/{fleet-6CNVBZZP.js → fleet-2RRVDF2V.js} +189 -101
  129. package/dist/{fleet-commands-L2SXSYEI.js → fleet-commands-VJ726XIA.js} +10 -10
  130. package/dist/fleet-decisions-EPAPM3XJ.js +157 -0
  131. package/dist/{fleet-graph-2J3OOIPO.js → fleet-graph-JF5QOATM.js} +16 -15
  132. package/dist/fleet-inspect-VLY4S7QM.js +442 -0
  133. package/dist/{fleet-preflight-CZRJ4JP5.js → fleet-preflight-AIZUEJOY.js} +6 -5
  134. package/dist/{fleet-validate-C5RI6DP7.js → fleet-validate-AJRPDMDV.js} +20 -18
  135. package/dist/fleet-verify-JFEL2L3H.js +175 -0
  136. package/dist/fleet-view-ZCON35AG.js +102 -0
  137. package/dist/{init-VBN2ACVA.js → init-DN2WWLFE.js} +64 -56
  138. package/dist/install-XGLBQY5E.js +13 -0
  139. package/dist/interop-OZBKXAYL.js +114 -0
  140. package/dist/{library-JHGUMLY2.js → library-YWZG7IMW.js} +19 -18
  141. package/dist/{memory-K4OQIYWG.js → memory-I4C4HMLW.js} +48 -40
  142. package/dist/{models-2NCZUWDD.js → models-CEYXJBO6.js} +30 -28
  143. package/dist/{monitor-MMVTJABD.js → monitor-NZ6GCI3P.js} +53 -47
  144. package/dist/{orchestrator-ZKBPCHW6.js → orchestrator-GCGQ4N5I.js} +6311 -7145
  145. package/dist/panes-HMABYVO4.js +58 -0
  146. package/dist/panes-KY6W3V2E.js +103 -0
  147. package/dist/{paths-DBXMZMDU.js → paths-II4K7DNR.js} +5 -5
  148. package/dist/{reset-DD5JGOY3.js → reset-DQ6FGCSH.js} +13 -11
  149. package/dist/resources-BB3MVJMD.js +111 -0
  150. package/dist/{run-QEGNX7FL.js → run-H2GQDUER.js} +113 -82
  151. package/dist/{share-JKD3BQMW.js → share-GTJN6A5O.js} +18 -17
  152. package/dist/{skills-LMQIKDOZ.js → skills-L55TEW6R.js} +31 -24
  153. package/dist/{skills-eval-I7X2774U.js → skills-eval-XVXPH2JI.js} +61 -52
  154. package/dist/skills-inventory-S4MXPJFV.js +126 -0
  155. package/dist/slash-commands-ZSGASKJC.js +77 -0
  156. package/dist/{steer-CF5TDANS.js → steer-RZGSCY4R.js} +3 -3
  157. package/dist/{support-I7LOJLIF.js → support-PKEUNNQL.js} +4 -4
  158. package/dist/{targets-RUSR6B5Z.js → targets-NCPZ644J.js} +31 -29
  159. package/dist/{terminal-lease-QYVORFR4.js → terminal-lease-44SV3YCN.js} +4 -4
  160. package/dist/tools-DAF3DI3C.js +27 -0
  161. package/dist/{trace-ODOQIVIW.js → trace-FYVW2MQA.js} +149 -7
  162. package/dist/tui-primitives-2AKXQNZK.js +13 -0
  163. package/dist/{uninstall-ZJF5H5ZN.js → uninstall-DW2PNOIC.js} +5 -5
  164. package/dist/{upgrade-XANW3FXB.js → upgrade-3XPP6OQL.js} +26 -24
  165. package/dist/{usage-4H7ZRXQT.js → usage-3NLHGTU2.js} +57 -49
  166. package/dist/{verifiers-UZXNBZEB.js → verifiers-SSQONKRT.js} +171 -12
  167. package/dist/{verify-BVKWTNDL.js → verify-3U6J7FZI.js} +9 -9
  168. package/dist/{web-fetch-2YHJ3KTG.js → web-fetch-S7RR6GZ7.js} +3 -3
  169. package/dist/{wiki-generate-MY7WV2QI.js → wiki-generate-CEHYGPGQ.js} +67 -59
  170. package/dist/with-panes-MKB46MPQ.js +782 -0
  171. package/dist/worker/entry.js +101 -66
  172. package/docs/README.md +3 -2
  173. package/docs/acp.md +24 -3
  174. package/docs/alcf-provider.md +1 -1
  175. package/docs/architecture.md +2 -2
  176. package/docs/artifact-versions.md +4 -1
  177. package/docs/built-in-agents.md +1 -1
  178. package/docs/capacity-and-scheduling.md +43 -5
  179. package/docs/commands-and-modes.md +31 -2
  180. package/docs/configuration-and-targets.md +40 -10
  181. package/docs/context-engine.md +1 -1
  182. package/docs/development-pipeline.md +19 -0
  183. package/docs/dispatch-typed-intent.md +385 -0
  184. package/docs/documentation-coverage.md +2 -2
  185. package/docs/documentation-guide.md +1 -1
  186. package/docs/environment-variables.md +1 -0
  187. package/docs/eval-runner.md +1 -1
  188. package/docs/evals-internal.md +1 -1
  189. package/docs/evidence-and-memory.md +2 -2
  190. package/docs/evolution.md +1 -1
  191. package/docs/exit-codes-and-output.md +1 -1
  192. package/docs/extensions-and-sharing.md +25 -1
  193. package/docs/fleet-dispatch.md +22 -1
  194. package/docs/installation-and-lifecycle.md +15 -2
  195. package/docs/middleware-and-components.md +1 -1
  196. package/docs/model-catalog.md +10 -1
  197. package/docs/observability.md +3 -3
  198. package/docs/proactive-memory.md +1 -1
  199. package/docs/prompt-envelope-and-tools.md +1 -1
  200. package/docs/provider-adapter-cookbook.md +1 -1
  201. package/docs/safety-model.md +2 -2
  202. package/docs/scientific-validation.md +3 -3
  203. package/docs/session-lifecycle.md +1 -1
  204. package/docs/skills-marketplace.md +1 -1
  205. package/docs/tool-usage.md +18 -8
  206. package/docs/trace-store.md +1 -1
  207. package/docs/troubleshooting.md +1 -1
  208. package/docs/tui-design.md +1 -1
  209. package/docs/worker-dispatch-mechanics.md +1 -1
  210. package/package.json +4 -2
  211. package/src/cli/acp.ts +6 -2
  212. package/src/cli/argv.ts +25 -0
  213. package/src/cli/configure.ts +23 -21
  214. package/src/cli/doctor-panes.ts +124 -0
  215. package/src/cli/doctor-toolchain.ts +57 -0
  216. package/src/cli/doctor.ts +20 -1
  217. package/src/cli/eval-inventory.ts +436 -0
  218. package/src/cli/eval.ts +13 -0
  219. package/src/cli/evidence-detail.ts +88 -0
  220. package/src/cli/evidence-inventory.ts +183 -0
  221. package/src/cli/evidence.ts +30 -5
  222. package/src/cli/fleet-decisions.ts +69 -0
  223. package/src/cli/fleet-inspect.ts +334 -0
  224. package/src/cli/fleet-verify.ts +133 -0
  225. package/src/cli/fleet-view.ts +810 -0
  226. package/src/cli/fleet.ts +148 -37
  227. package/src/cli/index.ts +14 -2
  228. package/src/cli/interop-inspect.ts +128 -0
  229. package/src/cli/interop.ts +34 -0
  230. package/src/cli/panes.ts +35 -0
  231. package/src/cli/reset.ts +5 -2
  232. package/src/cli/run.ts +58 -0
  233. package/src/cli/skills-inventory.ts +185 -0
  234. package/src/cli/skills.ts +16 -13
  235. package/src/cli/tools.ts +321 -0
  236. package/src/cli/trace-inspect.ts +252 -0
  237. package/src/cli/trace.ts +23 -2
  238. package/src/cli/verifiers-inspect.ts +347 -0
  239. package/src/cli/verifiers.ts +9 -0
  240. package/src/core/bus-events.ts +4 -0
  241. package/src/core/config.ts +49 -0
  242. package/src/core/defaults.ts +93 -7
  243. package/src/core/response-schema.ts +44 -4
  244. package/src/core/theme-token-hex.ts +43 -0
  245. package/src/core/tool-names.ts +2 -1
  246. package/src/core/xdg.ts +1 -1
  247. package/src/domains/agents/fleets/build-review.md +0 -3
  248. package/src/domains/agents/fleets/build-test.md +0 -3
  249. package/src/domains/agents/result-contract-filesystem.ts +32 -0
  250. package/src/domains/agents/result-contract.ts +164 -35
  251. package/src/domains/config/classify.ts +3 -0
  252. package/src/domains/dispatch/admission-error.ts +9 -0
  253. package/src/domains/dispatch/admission.ts +22 -21
  254. package/src/domains/dispatch/capacity-lease.ts +21 -1
  255. package/src/domains/dispatch/council-topology.ts +398 -0
  256. package/src/domains/dispatch/extension.ts +222 -50
  257. package/src/domains/dispatch/fleet-node-prompt.ts +62 -0
  258. package/src/domains/dispatch/fleet-plan.ts +7 -2
  259. package/src/domains/dispatch/fleet-run.ts +64 -1
  260. package/src/domains/dispatch/gate-decisions.ts +11 -1
  261. package/src/domains/dispatch/gate-role-prompts.ts +9 -0
  262. package/src/domains/dispatch/gate-topology.ts +289 -0
  263. package/src/domains/dispatch/index.ts +19 -0
  264. package/src/domains/dispatch/intent-compatibility.ts +330 -0
  265. package/src/domains/dispatch/intent.ts +85 -1
  266. package/src/domains/dispatch/reservation-store.ts +24 -4
  267. package/src/domains/dispatch/run-event-journal-bridge.ts +149 -0
  268. package/src/domains/dispatch/run-event-journal.ts +598 -0
  269. package/src/domains/dispatch/state.ts +45 -1
  270. package/src/domains/dispatch/types.ts +13 -0
  271. package/src/domains/dispatch/validation.ts +33 -8
  272. package/src/domains/eval/compare/compare.ts +3 -16
  273. package/src/domains/eval/inventory.ts +113 -0
  274. package/src/domains/eval/schema/serving.ts +31 -0
  275. package/src/domains/evidence/store.ts +6 -0
  276. package/src/domains/memory/index.ts +0 -1
  277. package/src/domains/memory/task-memory-policy.ts +6 -10
  278. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  279. package/src/domains/middleware/memory-intervention.ts +33 -21
  280. package/src/domains/mux/contract.ts +434 -0
  281. package/src/domains/mux/detect.ts +158 -0
  282. package/src/domains/mux/extension.ts +47 -0
  283. package/src/domains/mux/index.ts +96 -0
  284. package/src/domains/mux/manifest.ts +6 -0
  285. package/src/domains/mux/operations.ts +164 -0
  286. package/src/domains/mux/pane-registry.ts +90 -0
  287. package/src/domains/mux/protocol.ts +49 -0
  288. package/src/domains/mux/socket-client.ts +816 -0
  289. package/src/domains/mux/types.ts +222 -0
  290. package/src/domains/mux/viewer-command.ts +59 -0
  291. package/src/domains/mux/yazi/assets/init.lua +2 -0
  292. package/src/domains/mux/yazi/assets/plugins/git.yazi/LICENSE +21 -0
  293. package/src/domains/mux/yazi/assets/plugins/git.yazi/README.md +78 -0
  294. package/src/domains/mux/yazi/assets/plugins/git.yazi/main.lua +255 -0
  295. package/src/domains/mux/yazi/assets/plugins/git.yazi/types.lua +12 -0
  296. package/src/domains/mux/yazi/assets/yazi.toml +17 -0
  297. package/src/domains/mux/yazi/event-stream.ts +180 -0
  298. package/src/domains/mux/yazi/profile.ts +299 -0
  299. package/src/domains/mux/yazi/session.ts +228 -0
  300. package/src/domains/mux/yazi/theme.ts +30 -0
  301. package/src/domains/observability/cost.ts +21 -0
  302. package/src/domains/observability/index.ts +2 -0
  303. package/src/domains/observability/trace-store.ts +42 -0
  304. package/src/domains/providers/endpoint-capacity.ts +154 -22
  305. package/src/domains/providers/endpoint-slots-store.ts +189 -0
  306. package/src/domains/providers/extension.ts +20 -3
  307. package/src/domains/providers/index.ts +22 -0
  308. package/src/domains/providers/model-runtime-capabilities.ts +32 -0
  309. package/src/domains/providers/runtimes/boot-manifest.ts +1 -0
  310. package/src/domains/providers/runtimes/builtins.ts +2 -0
  311. package/src/domains/providers/runtimes/protocol/litellm.ts +375 -0
  312. package/src/domains/providers/support.ts +1 -0
  313. package/src/domains/providers/target-model-cache.ts +124 -0
  314. package/src/domains/resources/index.ts +3 -0
  315. package/src/domains/resources/skills/loader.ts +33 -0
  316. package/src/domains/safety/action-classifier.ts +6 -0
  317. package/src/domains/toolchain/archive.ts +175 -0
  318. package/src/domains/toolchain/contract.ts +28 -0
  319. package/src/domains/toolchain/extension.ts +47 -0
  320. package/src/domains/toolchain/index.ts +39 -0
  321. package/src/domains/toolchain/install.ts +327 -0
  322. package/src/domains/toolchain/manifest.ts +8 -0
  323. package/src/domains/toolchain/paths.ts +34 -0
  324. package/src/domains/toolchain/registry.ts +265 -0
  325. package/src/domains/toolchain/remove.ts +218 -0
  326. package/src/domains/toolchain/resolve.ts +182 -0
  327. package/src/domains/toolchain/types.ts +113 -0
  328. package/src/domains/toolchain/version.ts +88 -0
  329. package/src/engine/acp/server.ts +413 -70
  330. package/src/engine/acp/types.ts +19 -1
  331. package/src/engine/claude/sdk-module.ts +98 -0
  332. package/src/engine/claude/sdk-runtime.ts +19 -11
  333. package/src/engine/tui-primitives.ts +21 -0
  334. package/src/engine/tui.ts +1 -0
  335. package/src/engine/worker-runtime.ts +2 -13
  336. package/src/entry/boot-options.ts +2 -0
  337. package/src/entry/orchestrator.ts +103 -5
  338. package/src/entry/panes-activation.ts +31 -0
  339. package/src/entry/with-panes.ts +20 -0
  340. package/src/interactive/context-overlay.ts +1 -0
  341. package/src/interactive/cost-overlay.ts +2 -0
  342. package/src/interactive/council-grid.ts +1 -3
  343. package/src/interactive/council.ts +11 -0
  344. package/src/interactive/dispatch-board.ts +26 -16
  345. package/src/interactive/interactive-application.ts +153 -6
  346. package/src/interactive/interactive-input-runtime.ts +7 -0
  347. package/src/interactive/interactive-slash-runtime.ts +36 -6
  348. package/src/interactive/memory-overlay.ts +1 -0
  349. package/src/interactive/modal-marker.ts +170 -0
  350. package/src/interactive/mux-bridge.ts +214 -0
  351. package/src/interactive/overlay-frame.ts +58 -2
  352. package/src/interactive/overlay-general-openers.ts +1 -0
  353. package/src/interactive/overlay-key-routing.ts +14 -3
  354. package/src/interactive/overlay-lifecycle.ts +19 -3
  355. package/src/interactive/overlay-model-selectors.ts +40 -3
  356. package/src/interactive/overlay-permission-lifecycle.ts +90 -22
  357. package/src/interactive/overlay-transitions.ts +18 -4
  358. package/src/interactive/overlays/agents.ts +1 -0
  359. package/src/interactive/overlays/ask-user.ts +136 -30
  360. package/src/interactive/overlays/auth-dialog.ts +1 -0
  361. package/src/interactive/overlays/context-reset.ts +1 -0
  362. package/src/interactive/overlays/cwd-fallback.ts +1 -0
  363. package/src/interactive/overlays/decisions.ts +11 -11
  364. package/src/interactive/overlays/extensions.ts +1 -0
  365. package/src/interactive/overlays/fleet-run-approval.ts +1 -0
  366. package/src/interactive/overlays/handoff-review.ts +1 -0
  367. package/src/interactive/overlays/help-reference.ts +2 -0
  368. package/src/interactive/overlays/interop.ts +1 -0
  369. package/src/interactive/overlays/library-install-confirm.ts +1 -0
  370. package/src/interactive/overlays/library-tabs.ts +28 -0
  371. package/src/interactive/overlays/list-overlay.ts +10 -1
  372. package/src/interactive/overlays/message-picker.ts +1 -0
  373. package/src/interactive/overlays/model-scope.ts +86 -0
  374. package/src/interactive/overlays/model-selector.ts +1 -0
  375. package/src/interactive/overlays/prompts.ts +1 -0
  376. package/src/interactive/overlays/session-selector.ts +1 -0
  377. package/src/interactive/overlays/settings-sections.ts +30 -0
  378. package/src/interactive/overlays/settings.ts +579 -44
  379. package/src/interactive/overlays/side-question.ts +1 -0
  380. package/src/interactive/overlays/skills-hub.ts +3 -11
  381. package/src/interactive/overlays/tree-selector.ts +1 -0
  382. package/src/interactive/pane-policy.ts +46 -0
  383. package/src/interactive/panes-runtime.ts +292 -0
  384. package/src/interactive/renderers/compaction-summary.ts +29 -0
  385. package/src/interactive/renderers/worker-entry.ts +122 -14
  386. package/src/interactive/slash-commands.ts +251 -15
  387. package/src/interactive/tasks-overlay.ts +1 -0
  388. package/src/interactive/theme/tokens.ts +3 -14
  389. package/src/interactive/turn-context.ts +47 -2
  390. package/src/interactive/view/artifacts.ts +109 -1
  391. package/src/interactive/view/view-overlay.ts +1 -0
  392. package/src/interactive/watch-pane.ts +152 -0
  393. package/src/interactive/worker-progress.ts +7 -1
  394. package/src/interactive/worker-receipts.ts +19 -1
  395. package/src/interactive/worker-stream.ts +5 -0
  396. package/src/interactive/yazi-bridge.ts +444 -0
  397. package/src/tools/bootstrap.ts +26 -2
  398. package/src/tools/builtin-tool-catalog.ts +15 -0
  399. package/src/tools/compete-worktrees.ts +83 -2
  400. package/src/tools/core-bootstrap.ts +2 -1
  401. package/src/tools/dispatch-admission.ts +14 -3
  402. package/src/tools/dispatch-arguments.ts +20 -20
  403. package/src/tools/dispatch-run-events.ts +134 -19
  404. package/src/tools/dispatch-runner.ts +29 -7
  405. package/src/tools/dispatch-types.ts +15 -3
  406. package/src/tools/dispatch.ts +1 -1
  407. package/src/tools/executables.ts +17 -14
  408. package/src/tools/observation.ts +54 -4
  409. package/src/tools/panes-surface.ts +38 -0
  410. package/src/tools/panes.ts +112 -0
  411. package/src/tools/policy.ts +10 -1
  412. package/src/tools/presentation.ts +1 -0
  413. package/dist/chunk-D73KXYPF.js +0 -37
  414. package/dist/chunk-MLOK6ZOS.js +0 -2888
  415. package/dist/chunk-YKOFT37S.js +0 -279
  416. package/dist/doctor-TWBWFK5V.js +0 -165
@@ -0,0 +1,31 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/core/safe-id.ts
7
+ init_esm_shims();
8
+ var InvalidIdError = class extends Error {
9
+ constructor(message) {
10
+ super(message);
11
+ this.name = "InvalidIdError";
12
+ }
13
+ };
14
+ function isSafeId(id) {
15
+ if (id.length === 0) return false;
16
+ if (id.includes("/") || id.includes("\\")) return false;
17
+ if (id.includes("\0")) return false;
18
+ if (id === "." || id === "..") return false;
19
+ return true;
20
+ }
21
+ function assertSafeId(id, kind) {
22
+ if (!isSafeId(id)) {
23
+ throw new InvalidIdError(`invalid ${kind} id '${id}': must not contain path separators or path segments`);
24
+ }
25
+ }
26
+
27
+ export {
28
+ InvalidIdError,
29
+ assertSafeId
30
+ };
31
+ //# sourceMappingURL=chunk-R346GLFC.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-H7IXIC72.js";
6
6
  import {
7
7
  isAgentCapabilityClass
8
- } from "./chunk-S4COXYBG.js";
8
+ } from "./chunk-DYJP44XW.js";
9
9
  import {
10
10
  init_esm_shims
11
11
  } from "./chunk-3R73A4XB.js";
@@ -995,4 +995,4 @@ export {
995
995
  routingIntentRejection,
996
996
  explainRouteDecision
997
997
  };
998
- //# sourceMappingURL=chunk-VPTUJU4P.js.map
998
+ //# sourceMappingURL=chunk-SJ5ZKQ4S.js.map
@@ -3,13 +3,13 @@ import {
3
3
  INTEROP_AGENT_KINDS,
4
4
  interopAgentKind
5
5
  } from "./chunk-IHXBNWMM.js";
6
- import {
7
- runCommandVector
8
- } from "./chunk-B5CSFE7B.js";
9
6
  import {
10
7
  readSettings,
11
8
  updateSettings
12
- } from "./chunk-PNY46YEY.js";
9
+ } from "./chunk-VFA6GDY5.js";
10
+ import {
11
+ runCommandVector
12
+ } from "./chunk-BBVJUZHB.js";
13
13
  import {
14
14
  withStateFileLockSync
15
15
  } from "./chunk-IKCO5N3L.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-APJ265NV.js";
19
19
  import {
20
20
  clioStateDir
21
- } from "./chunk-BNAZZHFG.js";
21
+ } from "./chunk-BYP5D4HI.js";
22
22
  import {
23
23
  safeResourceWrite
24
24
  } from "./chunk-WEPFGWHJ.js";
@@ -27,53 +27,6 @@ import {
27
27
  init_esm_shims
28
28
  } from "./chunk-3R73A4XB.js";
29
29
 
30
- // src/domains/providers/probe/fingerprint.ts
31
- init_esm_shims();
32
- async function fetchWithTimeout(url, timeoutMs) {
33
- const controller = new AbortController();
34
- const timer = setTimeout(() => controller.abort(), timeoutMs);
35
- try {
36
- return await fetch(url, { signal: controller.signal });
37
- } catch {
38
- return null;
39
- } finally {
40
- clearTimeout(timer);
41
- }
42
- }
43
- async function fingerprintNativeRuntime(baseUrl) {
44
- const normalized = baseUrl.replace(/^ws:/u, "http:").replace(/^wss:/u, "https:");
45
- const trimmed = normalized.endsWith("/") ? normalized.slice(0, -1) : normalized;
46
- const greeting = await fetchWithTimeout(`${trimmed}/lmstudio-greeting`, 750);
47
- if (greeting?.ok) {
48
- try {
49
- const data = await greeting.json();
50
- if (data.lmstudio === true) return { runtimeId: "lmstudio", displayName: "LM Studio" };
51
- } catch {
52
- }
53
- }
54
- const lmStudioV0 = await fetchWithTimeout(`${trimmed}/api/v0/models`, 750);
55
- if (lmStudioV0?.ok) {
56
- try {
57
- const data = await lmStudioV0.json();
58
- if (Array.isArray(data.data) && data.data.some((entry) => typeof entry === "object" && entry !== null && "compatibility_type" in entry)) {
59
- return { runtimeId: "lmstudio", displayName: "LM Studio" };
60
- }
61
- } catch {
62
- }
63
- }
64
- const ollama = await fetchWithTimeout(`${trimmed}/api/version`, 750);
65
- if (ollama?.ok) {
66
- try {
67
- const data = await ollama.json();
68
- if (typeof data.version === "string") {
69
- return { runtimeId: "ollama-native", displayName: "Ollama" };
70
- }
71
- } catch {
72
- }
73
- }
74
- return null;
75
- }
76
-
77
30
  // src/domains/interop/index.ts
78
31
  init_esm_shims();
79
32
 
@@ -467,7 +420,6 @@ var InteropDomainModule = {
467
420
  };
468
421
 
469
422
  export {
470
- fingerprintNativeRuntime,
471
423
  INHERITED_PROJECT_CONTEXT,
472
424
  delegationEntryForKind,
473
425
  interopProposals,
@@ -478,4 +430,4 @@ export {
478
430
  detectInteropAgents,
479
431
  InteropDomainModule
480
432
  };
481
- //# sourceMappingURL=chunk-QQ7EKM72.js.map
433
+ //# sourceMappingURL=chunk-SP2RXXYO.js.map
@@ -0,0 +1,45 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ PANES_PRESET_IDS
4
+ } from "./chunk-YJX4SHTD.js";
5
+ import {
6
+ typebox_exports
7
+ } from "./chunk-5B2AEOW5.js";
8
+ import {
9
+ ToolNames
10
+ } from "./chunk-K6BSR66V.js";
11
+ import {
12
+ StringEnum
13
+ } from "./chunk-UOSL25KY.js";
14
+ import {
15
+ init_esm_shims
16
+ } from "./chunk-3R73A4XB.js";
17
+
18
+ // src/tools/panes-surface.ts
19
+ init_esm_shims();
20
+ var panesToolSurface = {
21
+ name: ToolNames.Panes,
22
+ description: `Look at, focus, and manage the terminal panes Clio owns beside this session. Use show to bring a dispatched run's live viewer pane to the front when the operator asks to see an agent ("show me the tester"). open starts one of the fixed utility presets; there is no way to run an arbitrary command. close removes a pane Clio created. list reports the current inventory and the pane layer's health.`,
23
+ parameters: typebox_exports.Object({
24
+ action: StringEnum(["show", "open", "close", "list"], {
25
+ description: "show focuses a run's viewer pane; open starts a preset utility pane; close removes a Clio-owned pane; list reports the inventory."
26
+ }),
27
+ target: typebox_exports.Optional(
28
+ typebox_exports.String({
29
+ description: 'action=show: an agent id or run id prefix, most recent match wins. action=close: a pane id, a pane label, an agent id, or "all".'
30
+ })
31
+ ),
32
+ preset: typebox_exports.Optional(
33
+ StringEnum([...PANES_PRESET_IDS], {
34
+ description: "action=open: which fixed utility pane to start."
35
+ })
36
+ )
37
+ }),
38
+ baseActionClass: "read",
39
+ executionMode: "sequential"
40
+ };
41
+
42
+ export {
43
+ panesToolSurface
44
+ };
45
+ //# sourceMappingURL=chunk-SUCTJL45.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-APJ265NV.js";
8
8
  import {
9
9
  clioConfigDir
10
- } from "./chunk-BNAZZHFG.js";
10
+ } from "./chunk-BYP5D4HI.js";
11
11
  import {
12
12
  safeResourceWrite
13
13
  } from "./chunk-WEPFGWHJ.js";
@@ -816,4 +816,4 @@ export {
816
816
  enabledExtensionResourceRoots,
817
817
  ExtensionsDomainModule
818
818
  };
819
- //# sourceMappingURL=chunk-5QKCQQ3E.js.map
819
+ //# sourceMappingURL=chunk-SUW5DORT.js.map
@@ -0,0 +1,183 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ truncateUtf8
4
+ } from "./chunk-6XLNIQDB.js";
5
+ import {
6
+ init_esm_shims
7
+ } from "./chunk-3R73A4XB.js";
8
+
9
+ // src/domains/dispatch/event-pump.ts
10
+ init_esm_shims();
11
+ var EVENT_TEE_LIMIT = 1024;
12
+ function startDispatchEventPump(source, fold, options = {}) {
13
+ const limit = options.limit ?? EVENT_TEE_LIMIT;
14
+ const pending = [...options.prelude ?? []];
15
+ const waiters = [];
16
+ let finished = false;
17
+ let abandoned = false;
18
+ let dropped = 0;
19
+ const push = (value) => {
20
+ if (abandoned) return;
21
+ const waiter = waiters.shift();
22
+ if (waiter) {
23
+ waiter({ value, done: false });
24
+ return;
25
+ }
26
+ pending.push(value);
27
+ while (pending.length > limit) {
28
+ pending.shift();
29
+ dropped += 1;
30
+ }
31
+ };
32
+ const end = () => {
33
+ finished = true;
34
+ while (waiters.length > 0) {
35
+ waiters.shift()?.({ value: void 0, done: true });
36
+ }
37
+ };
38
+ const notify = (event) => {
39
+ try {
40
+ options.onEvent?.(event);
41
+ } catch (error) {
42
+ options.onError?.(error);
43
+ }
44
+ };
45
+ const done = (async () => {
46
+ try {
47
+ for (const event of options.prelude ?? []) notify(event);
48
+ for await (const event of source) {
49
+ try {
50
+ fold(event);
51
+ } catch (error) {
52
+ options.onError?.(error);
53
+ }
54
+ notify(event);
55
+ push(event);
56
+ }
57
+ } catch (error) {
58
+ options.onError?.(error);
59
+ } finally {
60
+ end();
61
+ }
62
+ })();
63
+ const events = {
64
+ next() {
65
+ if (pending.length > 0) {
66
+ return Promise.resolve({ value: pending.shift(), done: false });
67
+ }
68
+ if (finished || abandoned) return Promise.resolve({ value: void 0, done: true });
69
+ return new Promise((resolve) => {
70
+ waiters.push(resolve);
71
+ });
72
+ },
73
+ return() {
74
+ abandoned = true;
75
+ pending.length = 0;
76
+ while (waiters.length > 0) {
77
+ waiters.shift()?.({ value: void 0, done: true });
78
+ }
79
+ return Promise.resolve({ value: void 0, done: true });
80
+ },
81
+ [Symbol.asyncIterator]() {
82
+ return this;
83
+ }
84
+ };
85
+ return { events, done, droppedEvents: () => dropped };
86
+ }
87
+ var WORKER_OUTPUT_MAX_BYTES = 8192;
88
+ var WORKER_OUTPUT_TRUNCATION_MARKER = "\n[worker output truncated]";
89
+ function isRecord(value) {
90
+ return typeof value === "object" && value !== null && !Array.isArray(value);
91
+ }
92
+ function assistantTextFromContent(content) {
93
+ if (typeof content === "string") return content;
94
+ if (!Array.isArray(content)) return "";
95
+ return content.map((block) => {
96
+ if (typeof block === "string") return block;
97
+ if (!isRecord(block)) return "";
98
+ return typeof block.text === "string" ? block.text : "";
99
+ }).join("");
100
+ }
101
+ function isDurableAssistantMessage(message) {
102
+ const stopReason = message.stopReason;
103
+ if (stopReason === "toolUse" || stopReason === "error" || stopReason === "aborted" || stopReason === "cancelled") {
104
+ return false;
105
+ }
106
+ if (!Array.isArray(message.content)) return true;
107
+ return !message.content.some((block) => isRecord(block) && block.type === "toolCall");
108
+ }
109
+ function durableAssistantTextFromEvent(event) {
110
+ if (!isRecord(event) || event.type !== "message_end" || !isRecord(event.message)) return "";
111
+ if (event.message.role !== "assistant" || !isDurableAssistantMessage(event.message)) return "";
112
+ return assistantTextFromContent(event.message.content);
113
+ }
114
+ function boundedOutput(state, text) {
115
+ const bytes = Buffer.byteLength(text, "utf8");
116
+ const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
117
+ return { state, text: bounded, bytes, truncated: bounded !== text };
118
+ }
119
+ function createWorkerOutputCapture() {
120
+ let finalText = null;
121
+ let partialText = "";
122
+ let partialBytes = 0;
123
+ let partialStored = 0;
124
+ return {
125
+ observe(event) {
126
+ if (!isRecord(event)) return;
127
+ if (event.type === "message_end") {
128
+ const message = isRecord(event.message) ? event.message : null;
129
+ partialText = "";
130
+ partialBytes = 0;
131
+ partialStored = 0;
132
+ if (message === null || message.role !== "assistant") return;
133
+ if (!isDurableAssistantMessage(message)) return;
134
+ const text = assistantTextFromContent(message.content).trim();
135
+ if (text.length > 0) finalText = text;
136
+ return;
137
+ }
138
+ if (event.type !== "message_update") return;
139
+ const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
140
+ if (assistantEvent === null || assistantEvent.type !== "text_delta") return;
141
+ const delta = assistantEvent.delta;
142
+ if (typeof delta !== "string" || delta.length === 0) return;
143
+ partialBytes += Buffer.byteLength(delta, "utf8");
144
+ if (partialStored < WORKER_OUTPUT_MAX_BYTES) {
145
+ partialText += delta;
146
+ partialStored += Buffer.byteLength(delta, "utf8");
147
+ }
148
+ },
149
+ snapshot() {
150
+ if (partialBytes > 0 && partialText.trim().length > 0) {
151
+ const bounded = truncateUtf8(partialText.trim(), WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
152
+ return {
153
+ state: "partial",
154
+ text: bounded,
155
+ bytes: partialBytes,
156
+ truncated: bounded !== partialText.trim() || partialBytes > partialStored
157
+ };
158
+ }
159
+ if (finalText !== null) return boundedOutput("final", finalText);
160
+ return void 0;
161
+ }
162
+ };
163
+ }
164
+
165
+ // src/domains/dispatch/admission-error.ts
166
+ init_esm_shims();
167
+ var AdmissionCanceledError = class extends Error {
168
+ code = "admission_canceled";
169
+ constructor(message = "dispatch: admission canceled before a capacity slot opened") {
170
+ super(message);
171
+ this.name = "AdmissionCanceledError";
172
+ }
173
+ };
174
+
175
+ export {
176
+ EVENT_TEE_LIMIT,
177
+ startDispatchEventPump,
178
+ WORKER_OUTPUT_MAX_BYTES,
179
+ durableAssistantTextFromEvent,
180
+ createWorkerOutputCapture,
181
+ AdmissionCanceledError
182
+ };
183
+ //# sourceMappingURL=chunk-T56WDKA5.js.map
@@ -0,0 +1,255 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/domains/safety/call-target.ts
7
+ init_esm_shims();
8
+
9
+ // src/domains/safety/redaction.ts
10
+ init_esm_shims();
11
+ function isPlainObject(value) {
12
+ return value !== null && typeof value === "object" && !Array.isArray(value);
13
+ }
14
+ var SECRET_KEY_RE = /(?:api[-_]?key|access[-_]?key|auth(?:orization)?|credential|password|private[-_]?key|secret|token)/iu;
15
+ var ENV_KEY_RE = /^env(?:ironment)?$/iu;
16
+ var SECRET_STRING_RE = /(https?:\/\/[^\s/@]+:)[^\s/@]+@/giu;
17
+ var SECRET_URL_PARAM_RE = /([?&](?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[^=\s]*=)[^&#\s]+/giu;
18
+ var SECRET_ASSIGNMENT_RE = /(?<![A-Z0-9_])((?:[A-Z0-9_]*(?:ACCESS|API|AUTH|CREDENTIAL|KEY|PASS(?:WORD)?|PRIVATE|SECRET|TOKEN)[A-Z0-9_]*)=)[^\s;&|]+/giu;
19
+ var SECRET_FLAG_RE = /(--?(?:[a-z0-9-]*(?:api[-_]?key|access[-_]?token|auth(?:orization)?|credential|password|secret|token)[a-z0-9-]*))(=|\s+)([^\s;&|]+)/giu;
20
+ function redactSecretString(value) {
21
+ return value.replace(SECRET_STRING_RE, "$1[redacted]@").replace(SECRET_URL_PARAM_RE, "$1[redacted]").replace(SECRET_ASSIGNMENT_RE, "$1[redacted]").replace(SECRET_FLAG_RE, "$1$2[redacted]");
22
+ }
23
+ function isSecretArgKey(key) {
24
+ return SECRET_KEY_RE.test(key);
25
+ }
26
+ function isEnvironmentArgKey(key) {
27
+ return ENV_KEY_RE.test(key);
28
+ }
29
+ function redactEnvironmentValue(value, depth) {
30
+ if (depth > 8) return "[redacted nested values]";
31
+ if (typeof value === "string") return "[redacted]";
32
+ if (Array.isArray(value)) return value.map((item) => redactEnvironmentValue(item, depth + 1));
33
+ if (!isPlainObject(value)) return value;
34
+ const out = {};
35
+ for (const [childKey, childValue] of Object.entries(value)) {
36
+ out[childKey] = redactEnvironmentValue(childValue, depth + 1);
37
+ }
38
+ return out;
39
+ }
40
+ function redactToolArgs(value, key = "", depth = 0) {
41
+ if (isSecretArgKey(key)) return "[redacted]";
42
+ if (isEnvironmentArgKey(key)) return redactEnvironmentValue(value, depth);
43
+ if (typeof value === "string") return redactSecretString(value);
44
+ if (depth > 8) return "[redacted nested values]";
45
+ if (Array.isArray(value)) return value.map((item) => redactToolArgs(item, key, depth + 1));
46
+ if (!isPlainObject(value)) return value;
47
+ const out = {};
48
+ for (const [childKey, childValue] of Object.entries(value)) {
49
+ out[childKey] = redactToolArgs(childValue, childKey, depth + 1);
50
+ }
51
+ return out;
52
+ }
53
+
54
+ // src/domains/safety/call-target.ts
55
+ var ESC_CHAR = String.fromCharCode(27);
56
+ var BEL_CHAR = String.fromCharCode(7);
57
+ var OSC_PATTERN = new RegExp(`${ESC_CHAR}\\][\\s\\S]*?(?:${BEL_CHAR}|${ESC_CHAR}\\\\|$)`, "g");
58
+ var CSI_PATTERN = new RegExp(`${ESC_CHAR}\\[[0-9;?]*[0-9A-Za-z]`, "g");
59
+ function sanitizeForDisplay(value) {
60
+ const stripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
61
+ let out = "";
62
+ for (const ch of stripped) {
63
+ const code = ch.codePointAt(0) ?? 0;
64
+ out += code < 32 || code === 127 ? " " : ch;
65
+ }
66
+ return out;
67
+ }
68
+ function oneLine(value) {
69
+ return value.replace(/\s+/g, " ").trim();
70
+ }
71
+ var DISPLAY_TAB_WIDTH = 4;
72
+ var CONTROL_BYTE_PLACEHOLDER = "\xB7";
73
+ function sanitizeMultilineDisplayText(value) {
74
+ const escapesStripped = value.replace(OSC_PATTERN, "").replace(CSI_PATTERN, "");
75
+ let neutralized = escapesStripped.length !== value.length;
76
+ const stripped = escapesStripped.replace(/\r\n/g, "\n");
77
+ let tabsExpanded = false;
78
+ let out = "";
79
+ for (const ch of stripped) {
80
+ if (ch === "\n") {
81
+ out += ch;
82
+ continue;
83
+ }
84
+ if (ch === " ") {
85
+ out += " ".repeat(DISPLAY_TAB_WIDTH);
86
+ tabsExpanded = true;
87
+ continue;
88
+ }
89
+ const code = ch.codePointAt(0) ?? 0;
90
+ if (code < 32 || code === 127) {
91
+ out += CONTROL_BYTE_PLACEHOLDER;
92
+ neutralized = true;
93
+ continue;
94
+ }
95
+ out += ch;
96
+ }
97
+ return { text: out, neutralized, tabsExpanded };
98
+ }
99
+ function sanitizeCallTargetText(value) {
100
+ return oneLine(sanitizeForDisplay(value));
101
+ }
102
+ var CALL_ACTION_OBJECT_MAX_CHARS = 64;
103
+ var CALL_TARGET_MAX_CHARS = 120;
104
+ var CALL_ACTION_VOCABULARY = {
105
+ read: { verb: "reading", field: "path" },
106
+ edit: { verb: "editing", field: "path" },
107
+ write: { verb: "writing", field: "path" },
108
+ ls: { verb: "listing", field: "path" },
109
+ bash: { verb: "running", field: "command" },
110
+ grep: { verb: "searching", field: "pattern" },
111
+ find: { verb: "finding", field: "pattern" },
112
+ web_fetch: { verb: "fetching", field: "url" },
113
+ git: { verb: "git", field: "op" },
114
+ verify: { verb: "verifying", field: "check" },
115
+ code_nav: { verb: "navigating", field: "query" },
116
+ context: { verb: "context", field: "scope" },
117
+ artifact: { verb: "writing", field: "kind" },
118
+ monitor: { verb: "monitoring", field: "run_id" },
119
+ steer: { verb: "steering", field: "run_id" },
120
+ tasks: { verb: "tasks", field: "action" },
121
+ dispatch: { verb: "dispatching", field: "agent" },
122
+ // ACP tool kinds. A peer names its own argument fields, so these rely on
123
+ // the shared allowlist below rather than on a field this side can predict.
124
+ execute: { verb: "running", field: "command" },
125
+ search: { verb: "searching", field: "query" },
126
+ fetch: { verb: "fetching", field: "url" },
127
+ delete: { verb: "deleting", field: "path" },
128
+ move: { verb: "moving", field: "path" },
129
+ think: { verb: "thinking", field: "" }
130
+ };
131
+ var CALL_ACTION_OBJECT_FIELDS = ["path", "file_path", "command", "pattern", "query", "url"];
132
+ var CALL_TARGET_FIELDS = {
133
+ read: ["path", "offset", "limit", "tail"],
134
+ grep: ["pattern", "path", "mode", "glob", "ignore_case", "literal", "context", "limit", "include_ignored"],
135
+ find: ["pattern", "path", "order", "limit", "include_ignored"],
136
+ ls: ["path", "limit"],
137
+ code_nav: ["mode", "query", "limit"],
138
+ context: ["scope", "query", "name", "limit", "ref", "include_tree"],
139
+ credential_present: ["name", "source", "file"],
140
+ write: ["path"],
141
+ edit: ["path"],
142
+ bash: ["command", "cwd", "timeout_ms", "output_policy"],
143
+ git: ["op", "path", "cached", "stat", "name_only", "limit", "cwd", "timeout_ms", "max_output_bytes"],
144
+ verify: ["check", "path", "browser", "cwd", "timeout_ms", "max_output_bytes"],
145
+ dispatch: [
146
+ "list",
147
+ "mode",
148
+ "agent",
149
+ "target",
150
+ "model",
151
+ "node",
152
+ "autonomy",
153
+ "tool_profile",
154
+ "thinking_level",
155
+ "detach",
156
+ "timeout_ms"
157
+ ],
158
+ monitor: ["run_id", "mode"],
159
+ steer: ["run_id", "action"],
160
+ tasks: ["action", "id"],
161
+ ledger: ["action", "kind", "path", "line", "target", "passed", "since"],
162
+ web_fetch: ["url", "method", "timeout_ms", "max_bytes", "format"],
163
+ ask_user: ["action", "mode", "max_rounds", "exposure"],
164
+ artifact: ["kind", "path", "title"],
165
+ // ACP tool kinds use only fields whose meaning the protocol defines.
166
+ execute: ["command", "cwd"],
167
+ search: ["query", "path"],
168
+ fetch: ["url", "method"],
169
+ delete: ["path"],
170
+ move: ["path", "target"]
171
+ };
172
+ function boundActionObject(value) {
173
+ if (typeof value !== "string") return null;
174
+ const clean = sanitizeCallTargetText(redactSecretString(value));
175
+ if (clean.length === 0) return null;
176
+ if (clean.length <= CALL_ACTION_OBJECT_MAX_CHARS) return { object: clean, truncated: false };
177
+ return { object: clean.slice(0, CALL_ACTION_OBJECT_MAX_CHARS), truncated: true };
178
+ }
179
+ function describeCallAction(tool, args) {
180
+ const known = CALL_ACTION_VOCABULARY[tool];
181
+ const candidates = known?.field ? [known.field, ...CALL_ACTION_OBJECT_FIELDS] : [...CALL_ACTION_OBJECT_FIELDS];
182
+ let bounded = null;
183
+ if (args) {
184
+ for (const field of candidates) {
185
+ if (isSecretArgKey(field)) continue;
186
+ bounded = boundActionObject(args[field]);
187
+ if (bounded !== null) break;
188
+ }
189
+ }
190
+ if (known === void 0 && bounded === null) return null;
191
+ const verb = known?.verb ?? "calling";
192
+ if (bounded === null) return { verb };
193
+ return { verb, object: bounded.object, ...bounded.truncated ? { truncated: true } : {} };
194
+ }
195
+ function renderAllowedTargetValue(value) {
196
+ if (typeof value === "string") {
197
+ const rendered = sanitizeCallTargetText(redactSecretString(value));
198
+ return rendered.length > 0 ? rendered : null;
199
+ }
200
+ if (typeof value === "number" && Number.isFinite(value)) return String(value);
201
+ if (typeof value === "boolean") return String(value);
202
+ return null;
203
+ }
204
+ function countLabel(count, singular, plural) {
205
+ return `${count} ${count === 1 ? singular : plural}`;
206
+ }
207
+ function summarizeUnlistedTargetValue(value) {
208
+ if (typeof value === "string") {
209
+ return `<string ${countLabel(Buffer.byteLength(value, "utf8"), "byte", "bytes")}>`;
210
+ }
211
+ if (Array.isArray(value)) return `<array ${countLabel(value.length, "item", "items")}>`;
212
+ if (value !== null && typeof value === "object") {
213
+ return `<object ${countLabel(Object.keys(value).length, "field", "fields")}>`;
214
+ }
215
+ if (value === null) return "<null 0 values>";
216
+ if (typeof value === "undefined") return "<undefined 0 values>";
217
+ return `<${typeof value} 1 value>`;
218
+ }
219
+ function targetFieldName(value) {
220
+ return sanitizeCallTargetText(value).slice(0, 32) || "field";
221
+ }
222
+ function describeCallTarget(tool, args) {
223
+ if (!args) return "";
224
+ const allowedFields = CALL_TARGET_FIELDS[tool] ?? [];
225
+ const allowed = new Set(allowedFields);
226
+ const parts = [];
227
+ for (const field of allowedFields) {
228
+ if (!(field in args)) continue;
229
+ if (isSecretArgKey(field)) {
230
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
231
+ continue;
232
+ }
233
+ const rendered = renderAllowedTargetValue(args[field]);
234
+ if (rendered === null) {
235
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(args[field])}`);
236
+ continue;
237
+ }
238
+ parts.push(parts.length === 0 ? rendered : `${targetFieldName(field)}=${rendered}`);
239
+ }
240
+ for (const [field, value] of Object.entries(args)) {
241
+ if (allowed.has(field)) continue;
242
+ parts.push(`${targetFieldName(field)}=${summarizeUnlistedTargetValue(value)}`);
243
+ }
244
+ return sanitizeCallTargetText(parts.join(" \xB7 ")).slice(0, CALL_TARGET_MAX_CHARS);
245
+ }
246
+
247
+ export {
248
+ redactSecretString,
249
+ redactToolArgs,
250
+ sanitizeMultilineDisplayText,
251
+ sanitizeCallTargetText,
252
+ describeCallAction,
253
+ describeCallTarget
254
+ };
255
+ //# sourceMappingURL=chunk-TVHHYFHE.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-5B2AEOW5.js";
5
5
  import {
6
6
  ToolNames
7
- } from "./chunk-CGKSTWHD.js";
7
+ } from "./chunk-K6BSR66V.js";
8
8
  import {
9
9
  StringEnum
10
10
  } from "./chunk-UOSL25KY.js";
@@ -45,4 +45,4 @@ var monitorToolSurface = {
45
45
  export {
46
46
  monitorToolSurface
47
47
  };
48
- //# sourceMappingURL=chunk-IHKBWSXF.js.map
48
+ //# sourceMappingURL=chunk-TZ3SGWZZ.js.map