@iowarp/clio-coder 0.4.5 → 0.4.7

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 (700) hide show
  1. package/.claude-plugin/marketplace.json +283 -0
  2. package/CHANGELOG.md +74 -0
  3. package/CONTRIBUTING.md +116 -38
  4. package/NOTICE +24 -0
  5. package/README.md +341 -682
  6. package/dist/{acp-H3CU2HBQ.js → acp-W3Y3TRHD.js} +12 -12
  7. package/dist/{agents-IXQQZ7BD.js → agents-J4ICNLQ3.js} +57 -56
  8. package/dist/assets/codewiki.json +1 -1
  9. package/dist/assets/tui-notices/get-east-asian-width-LICENSE +9 -0
  10. package/dist/assets/tui-notices/marked-LICENSE +44 -0
  11. package/dist/assets/tui-notices/pi-tui-LICENSE +21 -0
  12. package/dist/{auth-R7KYF7N3.js → auth-X2UJUMOC.js} +25 -25
  13. package/dist/{builtins-CRFDQUVP.js → builtins-XLXWWSRF.js} +6 -6
  14. package/dist/{chunk-DZK63TZJ.js → chunk-24S3DN22.js} +336 -612
  15. package/dist/{chunk-NTK3WTHM.js → chunk-24TOGHPO.js} +2 -2
  16. package/dist/{chunk-M6TAYK66.js → chunk-2O2LVQQK.js} +11 -4
  17. package/dist/{chunk-OQM5IVJY.js → chunk-34XHRVKG.js} +3 -3
  18. package/dist/{chunk-LY4N4TTL.js → chunk-3LXJOICS.js} +2 -2
  19. package/dist/{chunk-SE4ZKILO.js → chunk-3XE4NRLF.js} +30 -9
  20. package/dist/{chunk-YYB3MC65.js → chunk-4MFBBY2Z.js} +3 -3
  21. package/dist/{chunk-5VTJP36Q.js → chunk-4N2RZ4TO.js} +2 -2
  22. package/dist/{chunk-FKIOX6DS.js → chunk-4QKAITQT.js} +10 -5
  23. package/dist/chunk-4UHVS5T7.js +207 -0
  24. package/dist/{chunk-VLPTKCKT.js → chunk-5AJPUR72.js} +6 -6
  25. package/dist/{chunk-5CY4Q6QI.js → chunk-5EQO5NWP.js} +105 -3
  26. package/dist/{chunk-RXIOCVBZ.js → chunk-65BGHOUR.js} +8 -5
  27. package/dist/{chunk-T53XI6I7.js → chunk-6CA2BHOR.js} +2 -2
  28. package/dist/{chunk-HL26ADLH.js → chunk-6CB2IL4N.js} +2 -1
  29. package/dist/{chunk-HR3HPQ76.js → chunk-6LRLOJHQ.js} +3 -3
  30. package/dist/{chunk-HXHFDHB6.js → chunk-6TAATXXH.js} +6 -6
  31. package/dist/{chunk-WFKDPU7U.js → chunk-6YHPAAZR.js} +3 -3
  32. package/dist/{chunk-ZMZQEBKI.js → chunk-7EEGBKV4.js} +11 -11
  33. package/dist/{chunk-BS4GAMUB.js → chunk-A67NR5AT.js} +2 -2
  34. package/dist/{chunk-WJIMKGD6.js → chunk-BAU36233.js} +8 -8
  35. package/dist/{chunk-MDU3C27C.js → chunk-BO4XV5VX.js} +8 -8
  36. package/dist/{chunk-KF6GFW6O.js → chunk-BQQ5MXUC.js} +11 -11
  37. package/dist/{chunk-K6RDB7IA.js → chunk-C3G5PNUO.js} +23 -23
  38. package/dist/{chunk-SRZOW5L2.js → chunk-C6GEXX4L.js} +1 -1
  39. package/dist/{chunk-U2JOLB7O.js → chunk-CE64C5K5.js} +227 -72
  40. package/dist/chunk-CP3HIR5H.js +2119 -0
  41. package/dist/{chunk-BBV5TKE6.js → chunk-CPXGJI2A.js} +2 -2
  42. package/dist/{chunk-5DDOTTG4.js → chunk-CULVKYTK.js} +5 -5
  43. package/dist/{chunk-F34AR6O3.js → chunk-D2T66PDV.js} +6 -6
  44. package/dist/{chunk-NF3BK5WR.js → chunk-DACXIVVF.js} +5 -5
  45. package/dist/{chunk-4SVIVOMC.js → chunk-DLIYANB7.js} +20 -15
  46. package/dist/{chunk-E3BQTQUP.js → chunk-DO7M3LSX.js} +9 -9
  47. package/dist/{chunk-2QPI3TR3.js → chunk-DVJL77SO.js} +2 -2
  48. package/dist/chunk-EM2WNQS2.js +93 -0
  49. package/dist/{chunk-ODUTYZIU.js → chunk-EUEXGXXR.js} +5 -5
  50. package/dist/{chunk-UL36QJX6.js → chunk-EUZRMP4Y.js} +18 -16
  51. package/dist/{chunk-R6MAYTMS.js → chunk-G4LGUTOE.js} +4 -4
  52. package/dist/{chunk-CBSKDFWL.js → chunk-GEVQNST4.js} +2 -2
  53. package/dist/{chunk-XXBQKW32.js → chunk-GFQ7P2UF.js} +7 -7
  54. package/dist/{chunk-SBZX6ARC.js → chunk-GI5RRMAH.js} +14 -14
  55. package/dist/{chunk-KDWLXVMN.js → chunk-GVZFCJHE.js} +343 -113
  56. package/dist/{chunk-633EXGZA.js → chunk-GXIWHXDB.js} +3 -3
  57. package/dist/{chunk-LUL5Z66S.js → chunk-HOX4YZ2K.js} +6 -5
  58. package/dist/chunk-HRAKUPIH.js +57 -0
  59. package/dist/{chunk-KYKNBD4Y.js → chunk-IJMW64DX.js} +978 -258
  60. package/dist/{chunk-DIMRLNIC.js → chunk-IMOD2YPV.js} +16 -9
  61. package/dist/{chunk-6CDNRHWH.js → chunk-IQCNVLO6.js} +28 -8
  62. package/dist/{chunk-UTUNT5QL.js → chunk-ISNCCX42.js} +9 -9
  63. package/dist/{chunk-RLTT5GVY.js → chunk-IZYTT3CD.js} +9 -5
  64. package/dist/{chunk-5ZMXGW7P.js → chunk-KAFMW7WM.js} +4 -85
  65. package/dist/chunk-KKEYGFX4.js +915 -0
  66. package/dist/{chunk-HHVJNVUJ.js → chunk-KS7ETA3P.js} +2 -2
  67. package/dist/{chunk-UXAC2FX4.js → chunk-L3Z5ANCV.js} +7 -7
  68. package/dist/{chunk-EHCPSZJF.js → chunk-LBFQMYS3.js} +2 -2
  69. package/dist/{chunk-QEQISF75.js → chunk-LK2FN5JY.js} +1 -1
  70. package/dist/{chunk-URBGEOH3.js → chunk-M6Z2V6YU.js} +5 -5
  71. package/dist/{chunk-DRD2A54W.js → chunk-MBJO5VNZ.js} +18 -18
  72. package/dist/chunk-MNQN3X6Y.js +595 -0
  73. package/dist/{chunk-GXCCHKN6.js → chunk-MZHXENL7.js} +7 -7
  74. package/dist/chunk-MZNWZUJM.js +1801 -0
  75. package/dist/{chunk-7YJWEF2L.js → chunk-N37QC5FV.js} +5 -5
  76. package/dist/{chunk-WLMSOT73.js → chunk-NCCQ6DVS.js} +7 -7
  77. package/dist/{chunk-TZ7MFRG4.js → chunk-NO7J45X6.js} +170 -53
  78. package/dist/chunk-OH3YYA3B.js +15 -0
  79. package/dist/{chunk-22PQ4TX4.js → chunk-P4DL2LM5.js} +16 -77
  80. package/dist/{chunk-R6MICQYU.js → chunk-PFLOULP3.js} +4 -4
  81. package/dist/{chunk-MC3JSVR6.js → chunk-QJMRYTCX.js} +7 -7
  82. package/dist/{chunk-ILJ7DWGE.js → chunk-QKWL7SYE.js} +12 -12
  83. package/dist/chunk-R2CT5YDO.js +66 -0
  84. package/dist/chunk-RFCKPS2V.js +26 -0
  85. package/dist/{chunk-ONRTXOZY.js → chunk-RTLNFZMD.js} +12 -4
  86. package/dist/{chunk-U7H5WRG5.js → chunk-RXFPB32E.js} +8 -6
  87. package/dist/{chunk-S32UQ5GL.js → chunk-SEDI5K5B.js} +18 -18
  88. package/dist/{chunk-ICO4TQ2F.js → chunk-SELG4SUR.js} +41 -25
  89. package/dist/{chunk-YEJIG7LN.js → chunk-SER7RRAE.js} +27 -832
  90. package/dist/{chunk-K2HL3GBL.js → chunk-T4TY5GG3.js} +165 -15
  91. package/dist/chunk-T7QQBNLH.js +691 -0
  92. package/dist/{chunk-HGSLRG33.js → chunk-TLTGZTXI.js} +3 -3
  93. package/dist/chunk-TZ6UVP2H.js +637 -0
  94. package/dist/{chunk-EWD5P3GK.js → chunk-TZHN5ITX.js} +13 -41
  95. package/dist/{chunk-7TKWWPD7.js → chunk-U3TPUXOQ.js} +398 -253
  96. package/dist/{chunk-GNQRWTMY.js → chunk-UA3W4FGC.js} +6 -6
  97. package/dist/{chunk-O2RQ7LCK.js → chunk-UA6W4XFJ.js} +2 -2
  98. package/dist/chunk-UWD3JD5X.js +709 -0
  99. package/dist/chunk-V4ZKOKRB.js +13433 -0
  100. package/dist/{chunk-NC4KV7EL.js → chunk-VCRVEDUC.js} +5 -5
  101. package/dist/{chunk-I7VLWRK2.js → chunk-VMATUZB6.js} +12 -10
  102. package/dist/{chunk-J2FYEQ5L.js → chunk-VTYHHQ57.js} +2 -2
  103. package/dist/chunk-WB7POC6M.js +891 -0
  104. package/dist/{chunk-GVYWZNRK.js → chunk-WBVKKTUT.js} +2 -2
  105. package/dist/{chunk-EHOSNVVM.js → chunk-WLHX3MM5.js} +6 -2
  106. package/dist/{chunk-SDWNDICN.js → chunk-WN552PKN.js} +573 -316
  107. package/dist/{chunk-TEG3RYVZ.js → chunk-WT5TRMO4.js} +51 -26
  108. package/dist/{chunk-NY6IWDVU.js → chunk-WURGVOZJ.js} +56 -12
  109. package/dist/{chunk-7WUZEB2M.js → chunk-XR3XJN2M.js} +2 -2
  110. package/dist/chunk-XW2UZICE.js +372 -0
  111. package/dist/{chunk-FSTIBAGM.js → chunk-XZ6UFQ52.js} +11 -11
  112. package/dist/chunk-Y3JU5RPK.js +8 -0
  113. package/dist/chunk-YKRJTYNP.js +1143 -0
  114. package/dist/{chunk-7HBHHVCK.js → chunk-YPRSNUTC.js} +2 -2
  115. package/dist/{chunk-PWWSIB2A.js → chunk-ZGIGW4ZG.js} +5 -5
  116. package/dist/cli/index.js +34 -36
  117. package/dist/{clio-5I2IBFYL.js → clio-L2P7S2R2.js} +9 -9
  118. package/dist/{code-nav-YXIAEZVS.js → code-nav-B5LNX4KU.js} +25 -25
  119. package/dist/{components-TNIKXCBH.js → components-63MMQKUT.js} +6 -6
  120. package/dist/{config-Y2JDJ3JJ.js → config-YXARKGTX.js} +81 -77
  121. package/dist/configure-LMVQJ46J.js +85 -0
  122. package/dist/{context-QQ53HSGJ.js → context-7HJEWTTP.js} +92 -48
  123. package/dist/{context-S2EEC3EJ.js → context-XSZKKFBW.js} +14 -14
  124. package/dist/{context-P5YSEO55.js → context-YG2LZDYZ.js} +67 -64
  125. package/dist/{context-clear-TMEQCOTH.js → context-clear-AC5NXHM2.js} +64 -61
  126. package/dist/{context-index-HP2JFUWA.js → context-index-KKTPRV5G.js} +3 -3
  127. package/dist/{context-map-INTXD54D.js → context-map-T7ROR5D5.js} +4 -4
  128. package/dist/{context-working-set-CNLSQN5K.js → context-working-set-F4Q4J3NS.js} +15 -12
  129. package/dist/{detail-5572VLBO.js → detail-H73BEF2N.js} +65 -62
  130. package/dist/{dispatch-runner-FRHD6P2O.js → dispatch-runner-3RY5FSJC.js} +83 -80
  131. package/dist/{doctor-N3LCM2LG.js → doctor-EQYJOGUG.js} +47 -32
  132. package/dist/{eval-BUU3ZOUZ.js → eval-4P7O6CCE.js} +114 -50
  133. package/dist/{evidence-DTGEN456.js → evidence-D6GUSYJW.js} +64 -61
  134. package/dist/{evidence-SQ5DNFEN.js → evidence-O76QF7TZ.js} +69 -65
  135. package/dist/{evolve-IJNUFZDS.js → evolve-H47BCETS.js} +65 -62
  136. package/dist/{extensions-YVRHX6ZI.js → extensions-NNL3ZOCU.js} +98 -20
  137. package/dist/{fleet-ZNNVSYFO.js → fleet-KMNS6NOM.js} +115 -107
  138. package/dist/{fleet-commands-5YE7NPJL.js → fleet-commands-DOWSYCBX.js} +15 -15
  139. package/dist/{fleet-decisions-3SBSCTCW.js → fleet-decisions-S3PTZV2D.js} +9 -9
  140. package/dist/{fleet-graph-6HHPWF5T.js → fleet-graph-F2DE2TME.js} +26 -24
  141. package/dist/{fleet-inspect-JEYMGCGC.js → fleet-inspect-EN2Q6IVB.js} +67 -63
  142. package/dist/{fleet-preflight-QRSHIIDE.js → fleet-preflight-FRLETDD3.js} +3 -3
  143. package/dist/{fleet-validate-4PM4GDDL.js → fleet-validate-B2XDLS57.js} +28 -29
  144. package/dist/{fleet-verify-NJDTHTO3.js → fleet-verify-4JKUWGJ7.js} +64 -61
  145. package/dist/{fleet-view-UP2BWQQY.js → fleet-view-BHJFW26B.js} +67 -63
  146. package/dist/{init-S3GZQ5ZF.js → init-XAT5N5YM.js} +86 -80
  147. package/dist/interop-FVECHFKG.js +246 -0
  148. package/dist/{inventory-K2OZ36YJ.js → inventory-7KFQGLCV.js} +67 -63
  149. package/dist/library-NY2XOT75.js +492 -0
  150. package/dist/library-QAPAO23R.js +306 -0
  151. package/dist/library-import-5Y6MAS3R.js +183 -0
  152. package/dist/library-inventory-JT6HWITQ.js +56 -0
  153. package/dist/library-validation-EQUH25DC.js +42 -0
  154. package/dist/{memory-OQOXQGYD.js → memory-DYVTTCP6.js} +65 -62
  155. package/dist/{models-3IK2Y5WE.js → models-MASFJ6Y2.js} +51 -38
  156. package/dist/{monitor-FTJLTKCQ.js → monitor-YMP4NXJJ.js} +73 -69
  157. package/dist/{orchestrator-N47O7SFD.js → orchestrator-AFQRRTEI.js} +4255 -2845
  158. package/dist/{panes-7BTYH3XQ.js → panes-D3Y2KFG5.js} +4 -4
  159. package/dist/{panes-WPOMEMRH.js → panes-NICTHQCV.js} +7 -7
  160. package/dist/{paths-J3KN7UAO.js → paths-PSFAUIGO.js} +5 -5
  161. package/dist/{preload-65U34NG6.js → preload-5Q7VXRFJ.js} +64 -61
  162. package/dist/{reset-MUVQDLNL.js → reset-7NKZK7JN.js} +11 -9
  163. package/dist/{resources-LM76COAO.js → resources-NILSIZAT.js} +94 -38
  164. package/dist/{run-3VFZQ33N.js → run-BPZGEBZV.js} +131 -114
  165. package/dist/{share-4JUB4BL7.js → share-EZ6ERBMH.js} +31 -28
  166. package/dist/skills-BTVVNYVM.js +100 -0
  167. package/dist/{skills-eval-G6T57L7M.js → skills-eval-UY34MNK7.js} +117 -78
  168. package/dist/{skills-inventory-WLM46PJH.js → skills-inventory-JDHSIA7I.js} +30 -25
  169. package/dist/{slash-commands-GBARG3Y7.js → slash-commands-K4FNQ2AT.js} +53 -49
  170. package/dist/{steer-S7D7IKPU.js → steer-2B3EQGFH.js} +4 -4
  171. package/dist/{support-5VAEC32W.js → support-L2SOL3IE.js} +7 -7
  172. package/dist/{targets-N5REUETU.js → targets-44VKGFLN.js} +69 -47
  173. package/dist/{tasks-6BVY5YZF.js → tasks-3KODKFU7.js} +14 -14
  174. package/dist/{terminal-lease-57UEOJKS.js → terminal-lease-LXA7MMPO.js} +32 -19
  175. package/dist/{tools-6OCQ6SVB.js → tools-3UB7TEVR.js} +7 -7
  176. package/dist/{trace-JHLXWUMN.js → trace-TAMIU4OJ.js} +5 -4
  177. package/dist/{tui-primitives-RCY2HN7G.js → tui-primitives-A6MUW32V.js} +3 -2
  178. package/dist/{uninstall-FXYMFFRT.js → uninstall-QYVRPEM4.js} +9 -9
  179. package/dist/{upgrade-4HD5HAIV.js → upgrade-7PMKM2JH.js} +17 -18
  180. package/dist/{usage-4GWM2WWP.js → usage-6EQV7EQK.js} +77 -73
  181. package/dist/{verifiers-GSKWKWVG.js → verifiers-JLITWSHU.js} +16 -16
  182. package/dist/{verify-3AS3ULCY.js → verify-T7NAEVIG.js} +13 -13
  183. package/dist/{web-fetch-MQN4FH3X.js → web-fetch-W4TNW4Q7.js} +4 -4
  184. package/dist/{wiki-generate-7BV7XWIY.js → wiki-generate-T2TJQJUA.js} +90 -84
  185. package/dist/{with-panes-OFTNAR4Y.js → with-panes-CHFC7HGI.js} +4 -4
  186. package/dist/worker/entry.js +297 -88
  187. package/docs/README.md +43 -0
  188. package/docs/architecture/architecture.md +8 -7
  189. package/docs/architecture/artifact-versions.md +3 -3
  190. package/docs/architecture/context-engine.md +36 -2
  191. package/docs/architecture/library.md +32 -0
  192. package/docs/architecture/middleware-and-components.md +1 -1
  193. package/docs/architecture/model-catalog.md +21 -1
  194. package/docs/architecture/pi-boundary.md +18 -0
  195. package/docs/architecture/prompt-envelope-and-tools.md +5 -5
  196. package/docs/architecture/safety-model.md +21 -2
  197. package/docs/architecture/session-lifecycle.md +12 -1
  198. package/docs/architecture/tui-design.md +153 -39
  199. package/docs/architecture/worker-context.md +106 -0
  200. package/docs/guide/authoring-plugins.md +160 -0
  201. package/docs/guide/built-in-agents.md +5 -5
  202. package/docs/guide/commands-and-modes.md +186 -80
  203. package/docs/guide/configuration-and-targets.md +123 -28
  204. package/docs/guide/configuration-reference.md +36 -38
  205. package/docs/guide/environment-variables.md +2 -2
  206. package/docs/guide/exit-codes-and-output.md +1 -1
  207. package/docs/guide/extensions-and-sharing.md +93 -53
  208. package/docs/guide/fleet-dispatch.md +32 -10
  209. package/docs/guide/glossary.md +2 -2
  210. package/docs/guide/harness-extensions.md +291 -0
  211. package/docs/guide/installation-and-lifecycle.md +53 -20
  212. package/docs/guide/interop.md +243 -0
  213. package/docs/guide/panes-and-files.md +3 -3
  214. package/docs/guide/plugins.md +80 -0
  215. package/docs/guide/resource-library.md +111 -45
  216. package/docs/guide/skills-marketplace.md +35 -72
  217. package/docs/guide/tool-usage.md +19 -7
  218. package/docs/guide/troubleshooting.md +1 -1
  219. package/docs/process/development-pipeline.md +15 -15
  220. package/docs/process/documentation-coverage.md +29 -2
  221. package/docs/process/documentation-guide.md +15 -7
  222. package/docs/process/eval-runner.md +8 -3
  223. package/docs/process/performance-methodology.md +1 -1
  224. package/docs/process/release-cut-checklist.md +22 -6
  225. package/docs/process/scientific-validation.md +23 -0
  226. package/evals/scalar-decision-machinery.ts +1 -1
  227. package/examples/extensions/README.md +67 -0
  228. package/examples/extensions/lab-status/clio-coder-extension.json +14 -0
  229. package/examples/extensions/lab-status/extension.mjs +68 -0
  230. package/examples/extensions/lab-status/jobs.synthetic.json +9 -0
  231. package/examples/extensions/measurements/clio-coder-extension.json +28 -0
  232. package/examples/extensions/measurements/summarize.cjs +23 -0
  233. package/library/README.md +109 -0
  234. package/library/_authoring/templates/agent/README.md +28 -0
  235. package/library/_authoring/templates/agent/agents/benchmark-scout.md +30 -0
  236. package/library/_authoring/templates/agent/plugin.json +23 -0
  237. package/library/_authoring/templates/fleet/README.md +29 -0
  238. package/library/_authoring/templates/fleet/fleets/pipeline-review.md +31 -0
  239. package/library/_authoring/templates/fleet/plugin.json +23 -0
  240. package/library/_authoring/templates/plugin/README.md +37 -0
  241. package/library/_authoring/templates/plugin/agents/data-curator.md +31 -0
  242. package/library/_authoring/templates/plugin/assets/curation-guide.md +22 -0
  243. package/library/_authoring/templates/plugin/plugin.json +42 -0
  244. package/library/_authoring/templates/plugin/prompts/inspect-dataset.md +15 -0
  245. package/library/_authoring/templates/plugin/skills/dataset-curation/SKILL.md +36 -0
  246. package/library/_authoring/templates/plugin/skills/dataset-curation/evals.md +17 -0
  247. package/library/_authoring/templates/prompt/README.md +28 -0
  248. package/library/_authoring/templates/prompt/plugin.json +23 -0
  249. package/library/_authoring/templates/prompt/prompts/paper-summary.md +26 -0
  250. package/library/_authoring/templates/skill/README.md +24 -0
  251. package/library/_authoring/templates/skill/SKILL.md +39 -0
  252. package/library/_authoring/templates/skill/evals.md +30 -0
  253. package/library/_authoring/templates/skill/plugin.json +23 -0
  254. package/library/agents/README.md +7 -0
  255. package/library/fleets/README.md +7 -0
  256. package/library/plugins/materio/README.md +137 -0
  257. package/library/plugins/materio/ai.iowarp.clio/agents/materio-lab-definer.md +208 -0
  258. package/library/plugins/materio/ai.iowarp.clio/agents/materio-literature-reviewer.md +308 -0
  259. package/library/plugins/materio/ai.iowarp.clio/agents/materio-research-explorer.md +249 -0
  260. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-executor.md +416 -0
  261. package/library/plugins/materio/ai.iowarp.clio/agents/materio-task-verifier.md +60 -0
  262. package/library/plugins/materio/ai.iowarp.clio/agents/materio-workflow-planner.md +238 -0
  263. package/library/plugins/materio/ai.iowarp.clio/fleets/materio-execute-task.md +50 -0
  264. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/add-task.md +66 -0
  265. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/archive-task.md +65 -0
  266. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/checkpoint.md +26 -0
  267. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-research-tasks.md +230 -0
  268. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/define-virtual-lab.md +181 -0
  269. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/execute-task.md +292 -0
  270. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/help.md +129 -0
  271. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/identify-research.md +206 -0
  272. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/literature-review.md +201 -0
  273. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/pause-research.md +12 -0
  274. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/progress.md +105 -0
  275. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/remove-task.md +63 -0
  276. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/resume-research.md +64 -0
  277. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/settings.md +16 -0
  278. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/status.md +92 -0
  279. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/upload-data.md +104 -0
  280. package/library/plugins/materio/ai.iowarp.clio/prompts/materio/wtfp.md +145 -0
  281. package/library/plugins/materio/ai.iowarp.clio/references/execution.md +56 -0
  282. package/library/plugins/materio/ai.iowarp.portability/provenance.json +9 -0
  283. package/library/plugins/materio/assets/actions/add-task.md +86 -0
  284. package/library/plugins/materio/assets/actions/archive-task.md +84 -0
  285. package/library/plugins/materio/assets/actions/checkpoint.md +47 -0
  286. package/library/plugins/materio/assets/actions/define-research-tasks.md +228 -0
  287. package/library/plugins/materio/assets/actions/define-virtual-lab.md +179 -0
  288. package/library/plugins/materio/assets/actions/execute-task.md +290 -0
  289. package/library/plugins/materio/assets/actions/help.md +140 -0
  290. package/library/plugins/materio/assets/actions/identify-research.md +204 -0
  291. package/library/plugins/materio/assets/actions/literature-review.md +199 -0
  292. package/library/plugins/materio/assets/actions/pause-research.md +34 -0
  293. package/library/plugins/materio/assets/actions/progress.md +125 -0
  294. package/library/plugins/materio/assets/actions/remove-task.md +82 -0
  295. package/library/plugins/materio/assets/actions/resume-research.md +84 -0
  296. package/library/plugins/materio/assets/actions/settings.md +38 -0
  297. package/library/plugins/materio/assets/actions/status.md +112 -0
  298. package/library/plugins/materio/assets/actions/upload-data.md +123 -0
  299. package/library/plugins/materio/assets/actions/wtfp.md +179 -0
  300. package/library/plugins/materio/assets/references/research-domains.md +134 -0
  301. package/library/plugins/materio/assets/references/research-policy.md +77 -0
  302. package/library/plugins/materio/assets/references/traditional-workflows.md +146 -0
  303. package/library/plugins/materio/assets/scripts/check_physics.py +271 -0
  304. package/library/plugins/materio/assets/scripts/check_scripts.py +248 -0
  305. package/library/plugins/materio/assets/scripts/project_plugin.py +165 -0
  306. package/library/plugins/materio/assets/scripts/research_state.py +400 -0
  307. package/library/plugins/materio/assets/scripts/verify_citations.py +616 -0
  308. package/library/plugins/materio/assets/templates/RESEARCH.md +39 -0
  309. package/library/plugins/materio/assets/templates/VIRTUAL-LAB.md +120 -0
  310. package/library/plugins/materio/assets/templates/WORKFLOW.md +42 -0
  311. package/library/plugins/materio/assets/templates/config.json +5 -0
  312. package/library/plugins/materio/evals/scripts.yaml +29 -0
  313. package/library/plugins/materio/plugin.json +530 -0
  314. package/library/plugins/materio/skills/materio-lab-definer/SKILL.md +74 -0
  315. package/library/plugins/materio/skills/materio-literature-reviewer/SKILL.md +64 -0
  316. package/library/plugins/materio/skills/materio-research-explorer/SKILL.md +74 -0
  317. package/library/plugins/materio/skills/materio-task-executor/SKILL.md +214 -0
  318. package/library/plugins/materio/skills/materio-task-verifier/SKILL.md +46 -0
  319. package/library/plugins/materio/skills/materio-workflow-planner/SKILL.md +79 -0
  320. package/library/plugins/materio/tests/test_check_physics.py +139 -0
  321. package/library/plugins/materio/tests/test_check_scripts.py +140 -0
  322. package/library/plugins/materio/tests/test_research_state.py +291 -0
  323. package/library/plugins/materio/tests/test_verify_citations.py +337 -0
  324. package/library/prompts/README.md +7 -0
  325. package/library/registry.yaml +921 -0
  326. package/library/skills/README.md +120 -0
  327. package/{skills → library/skills}/coding/ast-grep/SKILL.md +1 -1
  328. package/{skills → library/skills}/coding/ast-grep/evals.md +1 -1
  329. package/library/skills/coding/ast-grep/plugin.json +23 -0
  330. package/{skills → library/skills}/coding/coding-standards/SKILL.md +1 -1
  331. package/{skills → library/skills}/coding/coding-standards/evals.md +1 -1
  332. package/library/skills/coding/coding-standards/plugin.json +23 -0
  333. package/{skills → library/skills}/coding/prototype/SKILL.md +1 -1
  334. package/{skills → library/skills}/coding/prototype/evals.md +1 -1
  335. package/library/skills/coding/prototype/plugin.json +23 -0
  336. package/{skills → library/skills}/coding/tdd/SKILL.md +1 -1
  337. package/{skills → library/skills}/coding/tdd/evals.md +1 -1
  338. package/library/skills/coding/tdd/plugin.json +23 -0
  339. package/{skills → library/skills}/context/context-handoff/SKILL.md +1 -1
  340. package/{skills → library/skills}/context/context-handoff/evals.md +1 -1
  341. package/library/skills/context/context-handoff/plugin.json +23 -0
  342. package/{skills → library/skills}/context/context-prime/SKILL.md +1 -1
  343. package/{skills → library/skills}/context/context-prime/evals.md +1 -1
  344. package/library/skills/context/context-prime/plugin.json +23 -0
  345. package/{skills → library/skills}/git/branch-closeout/SKILL.md +1 -1
  346. package/library/skills/git/branch-closeout/plugin.json +23 -0
  347. package/{skills → library/skills}/git/file-ticket/SKILL.md +1 -1
  348. package/library/skills/git/file-ticket/plugin.json +23 -0
  349. package/{skills → library/skills}/git/fix-issue/SKILL.md +1 -1
  350. package/library/skills/git/fix-issue/plugin.json +23 -0
  351. package/{skills → library/skills}/git/resolve-merge-conflicts/SKILL.md +1 -1
  352. package/{skills → library/skills}/git/resolve-merge-conflicts/evals.md +1 -1
  353. package/library/skills/git/resolve-merge-conflicts/plugin.json +23 -0
  354. package/{skills → library/skills}/git/ship/SKILL.md +1 -1
  355. package/library/skills/git/ship/plugin.json +23 -0
  356. package/{skills → library/skills}/git/worktree-create/SKILL.md +1 -1
  357. package/library/skills/git/worktree-create/plugin.json +23 -0
  358. package/{skills → library/skills}/git/worktree-merge/SKILL.md +1 -1
  359. package/library/skills/git/worktree-merge/plugin.json +23 -0
  360. package/{skills → library/skills}/meta/clio-coder-dev/SKILL.md +1 -1
  361. package/{skills → library/skills}/meta/clio-coder-dev/evals.md +1 -1
  362. package/library/skills/meta/clio-coder-dev/plugin.json +23 -0
  363. package/{skills → library/skills}/meta/clio-coder-test/SKILL.md +1 -1
  364. package/{skills → library/skills}/meta/clio-coder-test/evals.md +1 -1
  365. package/library/skills/meta/clio-coder-test/plugin.json +23 -0
  366. package/{skills → library/skills}/meta/credentials/SKILL.md +1 -1
  367. package/{skills → library/skills}/meta/credentials/evals.md +1 -1
  368. package/library/skills/meta/credentials/plugin.json +23 -0
  369. package/library/skills/meta/find-skills/SKILL.md +85 -0
  370. package/library/skills/meta/find-skills/evals.md +65 -0
  371. package/library/skills/meta/find-skills/plugin.json +23 -0
  372. package/{skills → library/skills}/meta/herdr/SKILL.md +1 -1
  373. package/{skills → library/skills}/meta/herdr/evals.md +1 -1
  374. package/library/skills/meta/herdr/plugin.json +23 -0
  375. package/{skills → library/skills}/meta/skill-craft/SKILL.md +23 -9
  376. package/{skills → library/skills}/meta/skill-craft/evals.md +11 -3
  377. package/library/skills/meta/skill-craft/plugin.json +23 -0
  378. package/{skills → library/skills}/planning/archify/SKILL.md +13 -13
  379. package/library/skills/planning/archify/plugin.json +23 -0
  380. package/{skills → library/skills}/planning/architecture/SKILL.md +1 -1
  381. package/{skills → library/skills}/planning/architecture/evals.md +1 -1
  382. package/library/skills/planning/architecture/plugin.json +23 -0
  383. package/{skills → library/skills}/planning/backlog/SKILL.md +1 -1
  384. package/{skills → library/skills}/planning/backlog/evals.md +1 -1
  385. package/library/skills/planning/backlog/plugin.json +23 -0
  386. package/{skills → library/skills}/planning/prd/SKILL.md +1 -1
  387. package/{skills → library/skills}/planning/prd/evals.md +1 -1
  388. package/library/skills/planning/prd/plugin.json +23 -0
  389. package/{skills → library/skills}/planning/product-intent/SKILL.md +1 -1
  390. package/{skills → library/skills}/planning/product-intent/evals.md +1 -1
  391. package/library/skills/planning/product-intent/plugin.json +23 -0
  392. package/{skills → library/skills}/planning/tech-spec/SKILL.md +1 -1
  393. package/{skills → library/skills}/planning/tech-spec/evals.md +1 -1
  394. package/library/skills/planning/tech-spec/plugin.json +23 -0
  395. package/{skills → library/skills}/registry.yaml +7 -7
  396. package/{skills → library/skills}/remote.yaml +1 -1
  397. package/{skills → library/skills}/research/arxiv-literature/SKILL.md +1 -1
  398. package/{skills → library/skills}/research/arxiv-literature/evals.md +1 -1
  399. package/library/skills/research/arxiv-literature/plugin.json +23 -0
  400. package/{skills → library/skills}/research/experiment-protocol/SKILL.md +1 -1
  401. package/{skills → library/skills}/research/experiment-protocol/evals.md +1 -1
  402. package/library/skills/research/experiment-protocol/plugin.json +23 -0
  403. package/{skills → library/skills}/research/scientific-debugging/SKILL.md +1 -1
  404. package/{skills → library/skills}/research/scientific-debugging/evals.md +1 -1
  405. package/library/skills/research/scientific-debugging/plugin.json +23 -0
  406. package/{skills → library/skills}/research/scientific-modernization/SKILL.md +1 -1
  407. package/{skills → library/skills}/research/scientific-modernization/evals.md +1 -1
  408. package/library/skills/research/scientific-modernization/plugin.json +23 -0
  409. package/{skills → library/skills}/skill-marketplace.json +37 -37
  410. package/{skills → library/skills}/workflow/cut-it/SKILL.md +1 -1
  411. package/{skills → library/skills}/workflow/cut-it/evals.md +1 -1
  412. package/library/skills/workflow/cut-it/plugin.json +23 -0
  413. package/{skills → library/skills}/workflow/design-council/SKILL.md +1 -1
  414. package/{skills → library/skills}/workflow/design-council/evals.md +1 -1
  415. package/library/skills/workflow/design-council/plugin.json +23 -0
  416. package/{skills → library/skills}/workflow/grill-me/SKILL.md +1 -1
  417. package/{skills → library/skills}/workflow/grill-me/evals.md +1 -1
  418. package/library/skills/workflow/grill-me/plugin.json +23 -0
  419. package/{skills → library/skills}/workflow/workflow-distiller/SKILL.md +14 -11
  420. package/{skills → library/skills}/workflow/workflow-distiller/evals.md +14 -6
  421. package/library/skills/workflow/workflow-distiller/plugin.json +23 -0
  422. package/package.json +12 -5
  423. package/src/cli/agents.ts +1 -1
  424. package/src/cli/ask.ts +10 -10
  425. package/src/cli/config-inspect.ts +1 -1
  426. package/src/cli/configure-editor.ts +51 -0
  427. package/src/cli/configure-interop.ts +1 -1
  428. package/src/cli/configure-oauth.ts +1 -1
  429. package/src/cli/configure-onboarding.ts +232 -96
  430. package/src/cli/configure-prompts.ts +76 -0
  431. package/src/cli/configure-quick.ts +274 -0
  432. package/src/cli/configure-target.ts +14 -2
  433. package/src/cli/configure.ts +415 -176
  434. package/src/cli/eval.ts +40 -6
  435. package/src/cli/extensions.ts +74 -8
  436. package/src/cli/fleet-preflight.ts +2 -0
  437. package/src/cli/fleet.ts +2 -0
  438. package/src/cli/index.ts +1 -3
  439. package/src/cli/interop-inspect.ts +61 -33
  440. package/src/cli/interop.ts +79 -9
  441. package/src/cli/library-import.ts +139 -0
  442. package/src/cli/library.ts +418 -120
  443. package/src/cli/oauth-manual-input.ts +1 -1
  444. package/src/cli/reset.ts +2 -0
  445. package/src/cli/run.ts +26 -9
  446. package/src/cli/select.ts +35 -4
  447. package/src/cli/skills-eval.ts +43 -6
  448. package/src/cli/skills-inventory.ts +6 -2
  449. package/src/cli/skills.ts +44 -491
  450. package/src/cli/upgrade.ts +2 -2
  451. package/src/core/bus-events.ts +5 -0
  452. package/src/core/config.ts +6 -1
  453. package/src/core/defaults.ts +34 -12
  454. package/src/{interactive → core}/external-editor.ts +4 -4
  455. package/src/core/recent-models.ts +2 -2
  456. package/src/core/session-routing.ts +3 -3
  457. package/src/core/state-file-lock.ts +1 -1
  458. package/src/core/tool-names.ts +5 -0
  459. package/src/domains/agents/extension.ts +42 -6
  460. package/src/domains/agents/fleet-commands.ts +92 -1
  461. package/src/domains/agents/fleet-contract.ts +87 -19
  462. package/src/domains/agents/recipe.ts +5 -4
  463. package/src/domains/agents/registry.ts +80 -24
  464. package/src/domains/config/classify.ts +1 -1
  465. package/src/domains/config/keybindings.ts +156 -124
  466. package/src/domains/context/worker/contract.ts +91 -0
  467. package/src/domains/context/worker/pressure.ts +120 -0
  468. package/src/domains/context/worker/recall.ts +62 -0
  469. package/src/domains/context/worker/select.ts +164 -0
  470. package/src/domains/context/worker/snapshot.ts +35 -0
  471. package/src/domains/context/worker/store.ts +16 -0
  472. package/src/domains/context/working-set/replay/synthetic.ts +2 -1
  473. package/src/domains/dispatch/active-route-planner.ts +2 -0
  474. package/src/domains/dispatch/backoff.ts +1 -0
  475. package/src/domains/dispatch/code-step.ts +12 -2
  476. package/src/domains/dispatch/contract.ts +3 -0
  477. package/src/domains/dispatch/execution-plan.ts +2 -0
  478. package/src/domains/dispatch/extension.ts +109 -27
  479. package/src/domains/dispatch/fleet-plan.ts +10 -0
  480. package/src/domains/dispatch/fleet-run.ts +1 -0
  481. package/src/domains/dispatch/orphan-recovery.ts +1 -0
  482. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  483. package/src/domains/dispatch/state.ts +1 -0
  484. package/src/domains/dispatch/types.ts +5 -0
  485. package/src/domains/dispatch/validation.ts +12 -0
  486. package/src/domains/dispatch/workspace-checkpoint.ts +1 -1
  487. package/src/domains/evidence/failure-attribution.ts +1 -0
  488. package/src/domains/evidence/trust-status.ts +22 -3
  489. package/src/domains/extensions/command-schema.ts +145 -0
  490. package/src/domains/extensions/command-tools.ts +15 -0
  491. package/src/domains/extensions/compatibility.ts +7 -0
  492. package/src/domains/extensions/contract.ts +0 -4
  493. package/src/domains/extensions/discovery.ts +69 -205
  494. package/src/domains/extensions/extension.ts +0 -4
  495. package/src/domains/extensions/index.ts +1 -5
  496. package/src/domains/extensions/manager.ts +1 -6
  497. package/src/domains/extensions/operator-commands.ts +29 -0
  498. package/src/domains/extensions/operator-runtime.ts +483 -0
  499. package/src/domains/extensions/public-api.ts +53 -0
  500. package/src/domains/extensions/runtime-child.mjs +114 -0
  501. package/src/domains/extensions/runtime-process.ts +306 -0
  502. package/src/domains/extensions/runtime-schema.ts +146 -0
  503. package/src/domains/extensions/{resources.ts → snapshot-access.ts} +1 -17
  504. package/src/domains/extensions/snapshot.ts +4 -32
  505. package/src/domains/extensions/state.ts +5 -83
  506. package/src/domains/extensions/types.ts +33 -34
  507. package/src/domains/interop/adopt.ts +546 -0
  508. package/src/domains/interop/detect.ts +50 -12
  509. package/src/domains/interop/foreign.ts +554 -0
  510. package/src/domains/interop/import.ts +277 -0
  511. package/src/domains/interop/index.ts +24 -0
  512. package/src/domains/interop/install.ts +6 -0
  513. package/src/domains/interop/inventory.ts +351 -0
  514. package/src/domains/interop/projection.ts +360 -0
  515. package/src/domains/interop/registry.ts +106 -3
  516. package/src/domains/interop/types.ts +51 -0
  517. package/src/domains/lifecycle/migrations/index.ts +0 -2
  518. package/src/domains/lifecycle/naming-resources.ts +1 -1
  519. package/src/domains/middleware/marketplace-offer.ts +1 -1
  520. package/src/domains/mux/contract.ts +1 -1
  521. package/src/domains/plugins/catalog.ts +204 -0
  522. package/src/domains/plugins/contract.ts +24 -0
  523. package/src/domains/plugins/discovery.ts +316 -0
  524. package/src/domains/plugins/extension.ts +40 -0
  525. package/src/domains/plugins/index.ts +77 -0
  526. package/src/domains/plugins/integrity.ts +6 -0
  527. package/src/domains/plugins/manifest.ts +3 -0
  528. package/src/domains/plugins/resources.ts +102 -0
  529. package/src/domains/plugins/state.ts +753 -0
  530. package/src/domains/plugins/types.ts +217 -0
  531. package/src/domains/prompts/extension.ts +9 -2
  532. package/src/domains/prompts/fragments/operating/skills.md +10 -10
  533. package/src/domains/providers/probe/fingerprint.ts +13 -6
  534. package/src/domains/providers/probe/reasoning.ts +2 -0
  535. package/src/domains/providers/runtimes/common/probe-helpers.ts +23 -7
  536. package/src/domains/providers/runtimes/protocol/anthropic-compat.ts +7 -2
  537. package/src/domains/providers/runtimes/protocol/openai-compat.ts +10 -4
  538. package/src/domains/resources/common-loader.ts +9 -6
  539. package/src/domains/resources/index.ts +67 -0
  540. package/src/domains/resources/library-actions.ts +836 -0
  541. package/src/domains/resources/library-evals.ts +38 -0
  542. package/src/domains/resources/library-inventory.ts +1048 -0
  543. package/src/domains/resources/library-types.ts +50 -0
  544. package/src/domains/resources/library-validation.ts +634 -0
  545. package/src/domains/resources/library.ts +437 -156
  546. package/src/domains/resources/package-references.ts +66 -0
  547. package/src/domains/resources/prompts/loader.ts +75 -41
  548. package/src/domains/resources/skills/install.ts +2 -2
  549. package/src/domains/resources/skills/loader.ts +77 -22
  550. package/src/domains/resources/skills/marketplace.ts +48 -57
  551. package/src/domains/resources/skills/promotion.ts +2 -2
  552. package/src/domains/resources/skills/provenance-pin.ts +17 -4
  553. package/src/domains/safety/action-classifier.ts +2 -2
  554. package/src/domains/safety/default-path-policy.ts +3 -1
  555. package/src/domains/safety/policy-engine.ts +1 -1
  556. package/src/domains/safety/protected-artifacts.ts +21 -5
  557. package/src/domains/safety/skill-authority.ts +5 -2
  558. package/src/domains/share/archive.ts +1 -1
  559. package/src/engine/apis/openai-completions.ts +52 -2
  560. package/src/engine/notices/pi-tui-LICENSE +21 -0
  561. package/src/engine/tui.ts +3 -0
  562. package/src/engine/worker-runtime.ts +58 -14
  563. package/src/engine/worker-tools.ts +5 -0
  564. package/src/entry/orchestrator.ts +26 -5
  565. package/src/entry/plugin-reload.ts +18 -0
  566. package/src/interactive/application-controller.ts +68 -52
  567. package/src/interactive/chat-loop.ts +32 -5
  568. package/src/interactive/chat-panel.ts +168 -638
  569. package/src/interactive/chat-renderer.ts +13 -30
  570. package/src/interactive/clio-editor.ts +53 -21
  571. package/src/interactive/command-output.ts +56 -1
  572. package/src/interactive/dispatch-board.ts +1 -3
  573. package/src/interactive/editor-submit.ts +73 -59
  574. package/src/interactive/fleet-run-preview.ts +2 -0
  575. package/src/interactive/follow-up-queue-panel.ts +3 -3
  576. package/src/interactive/footer/dashboard.ts +12 -4
  577. package/src/interactive/footer/notifications.ts +2 -2
  578. package/src/interactive/footer/widgets.ts +52 -93
  579. package/src/interactive/interactive-application.ts +225 -63
  580. package/src/interactive/interactive-event-projection.ts +2 -44
  581. package/src/interactive/interactive-input-runtime.ts +257 -35
  582. package/src/interactive/interactive-presentation.ts +71 -21
  583. package/src/interactive/interactive-slash-runtime.ts +40 -48
  584. package/src/interactive/keybinding-manager.ts +156 -79
  585. package/src/interactive/keyboard-owner.ts +37 -0
  586. package/src/interactive/layout.ts +29 -4
  587. package/src/interactive/leader-key.ts +49 -102
  588. package/src/interactive/leader-menu.ts +45 -0
  589. package/src/interactive/overlay-ask-user-lifecycle.ts +9 -1
  590. package/src/interactive/overlay-frame.ts +15 -0
  591. package/src/interactive/overlay-general-openers.ts +2 -0
  592. package/src/interactive/overlay-key-routing.ts +46 -47
  593. package/src/interactive/overlay-lifecycle.ts +31 -15
  594. package/src/interactive/overlay-resource-openers.ts +56 -46
  595. package/src/interactive/overlay-session-lifecycle.ts +1 -1
  596. package/src/interactive/overlays/ask-user.ts +630 -556
  597. package/src/interactive/overlays/extension-panel.ts +70 -0
  598. package/src/interactive/overlays/extensions.ts +28 -5
  599. package/src/interactive/overlays/fleet-run-approval.ts +7 -3
  600. package/src/interactive/overlays/help-reference.ts +89 -40
  601. package/src/interactive/overlays/interop.ts +122 -3
  602. package/src/interactive/overlays/keybinding-detail.ts +2 -2
  603. package/src/interactive/overlays/library-lifecycle.ts +90 -0
  604. package/src/interactive/overlays/library-model.ts +574 -0
  605. package/src/interactive/overlays/library-review.ts +557 -0
  606. package/src/interactive/overlays/library-tabs.ts +3 -15
  607. package/src/interactive/overlays/library.ts +602 -0
  608. package/src/interactive/overlays/list-overlay.ts +218 -39
  609. package/src/interactive/overlays/model-selector.ts +28 -25
  610. package/src/interactive/overlays/session-selector.ts +9 -3
  611. package/src/interactive/overlays/settings.ts +34 -26
  612. package/src/interactive/overlays/tree-selector.ts +16 -11
  613. package/src/interactive/permission-hint.ts +13 -0
  614. package/src/interactive/permission-overlay.ts +77 -28
  615. package/src/interactive/prompt-source-label.ts +21 -0
  616. package/src/interactive/renderers/preview.ts +16 -0
  617. package/src/interactive/renderers/reference-card.ts +35 -0
  618. package/src/interactive/renderers/tool-execution.ts +67 -160
  619. package/src/interactive/renderers/worker-entry.ts +90 -42
  620. package/src/interactive/slash-autocomplete.ts +100 -7
  621. package/src/interactive/slash-commands.ts +396 -105
  622. package/src/interactive/slash-spec.ts +0 -1
  623. package/src/interactive/status/controller.ts +0 -5
  624. package/src/interactive/status/state-machine.ts +44 -26
  625. package/src/interactive/status/types.ts +3 -0
  626. package/src/interactive/status/verbs.ts +13 -12
  627. package/src/interactive/terminal-lease.ts +44 -12
  628. package/src/interactive/transcript-detail.ts +50 -112
  629. package/src/interactive/turn-queues.ts +8 -7
  630. package/src/interactive/turn-runtime.ts +1 -1
  631. package/src/interactive/view/artifacts.ts +4 -0
  632. package/src/interactive/view/view-overlay.ts +58 -43
  633. package/src/interactive/welcome-dashboard.ts +525 -408
  634. package/src/tools/bootstrap.ts +8 -0
  635. package/src/tools/builtin-tool-catalog.ts +7 -2
  636. package/src/tools/context/index.ts +58 -5
  637. package/src/tools/context/library.ts +465 -0
  638. package/src/tools/context/surface.ts +20 -6
  639. package/src/tools/core-bootstrap.ts +3 -0
  640. package/src/tools/dispatch-admission.ts +24 -1
  641. package/src/tools/dispatch-arguments.ts +8 -0
  642. package/src/tools/dispatch-plan.ts +32 -0
  643. package/src/tools/dispatch-schema.ts +31 -1
  644. package/src/tools/dispatch-types.ts +3 -0
  645. package/src/tools/dispatch.ts +1 -1
  646. package/src/tools/harness-extensions.ts +169 -0
  647. package/src/tools/observation.ts +4 -0
  648. package/src/tools/policy.ts +7 -1
  649. package/src/tools/presentation.ts +1 -1
  650. package/src/tools/registry.ts +20 -2
  651. package/src/tools/verify/numeric.ts +4 -4
  652. package/src/tools/worker-evidence.ts +5 -0
  653. package/src/worker/context-seed.ts +192 -0
  654. package/src/worker/entry.ts +1 -0
  655. package/src/worker/spec-contract.ts +8 -1
  656. package/dist/chunk-3UW3KU4A.js +0 -21
  657. package/dist/chunk-6SYEGZI3.js +0 -433
  658. package/dist/chunk-CXQ37WJH.js +0 -45
  659. package/dist/chunk-EQEJJ53P.js +0 -399
  660. package/dist/chunk-KTFSFCVN.js +0 -46
  661. package/dist/chunk-QRFXEO6Y.js +0 -17
  662. package/dist/chunk-T7FDXNRU.js +0 -1257
  663. package/dist/chunk-U7VQ4NI4.js +0 -911
  664. package/dist/configure-SML6UBZ5.js +0 -55
  665. package/dist/interop-YOTGXFJM.js +0 -115
  666. package/dist/library-GJI6W6OK.js +0 -226
  667. package/dist/skills-S36AAJHU.js +0 -510
  668. package/skills/README.md +0 -418
  669. package/skills/meta/find-skills/SKILL.md +0 -78
  670. package/skills/meta/find-skills/evals.md +0 -47
  671. package/src/domains/extensions/resource-path.ts +0 -27
  672. package/src/domains/lifecycle/migrations/2026-09-01-extension-install-digests.ts +0 -27
  673. package/src/interactive/overlays/agents.ts +0 -70
  674. package/src/interactive/overlays/library-install-confirm.ts +0 -152
  675. package/src/interactive/overlays/prompts.ts +0 -89
  676. package/src/interactive/overlays/skills-hub.ts +0 -615
  677. /package/{skills → library/skills}/coding/ast-grep/references/rule_reference.md +0 -0
  678. /package/{skills → library/skills}/coding/prototype/references/LOGIC.md +0 -0
  679. /package/{skills → library/skills}/coding/prototype/references/UI.md +0 -0
  680. /package/{skills → library/skills}/coding/tdd/references/mocking.md +0 -0
  681. /package/{skills → library/skills}/coding/tdd/references/tests.md +0 -0
  682. /package/{skills → library/skills}/context/context-handoff/scripts/new-handoff.sh +0 -0
  683. /package/{skills → library/skills}/git/branch-closeout/evals.md +0 -0
  684. /package/{skills → library/skills}/git/branch-closeout/references/closeout-checklist.md +0 -0
  685. /package/{skills → library/skills}/git/file-ticket/assets/issue-template.md +0 -0
  686. /package/{skills → library/skills}/git/file-ticket/evals.md +0 -0
  687. /package/{skills → library/skills}/git/file-ticket/references/issue-discovery.md +0 -0
  688. /package/{skills → library/skills}/git/fix-issue/evals.md +0 -0
  689. /package/{skills → library/skills}/git/fix-issue/references/diagnosis-and-rca.md +0 -0
  690. /package/{skills → library/skills}/git/resolve-merge-conflicts/references/conflict-matrix.md +0 -0
  691. /package/{skills → library/skills}/git/ship/assets/pr-template.md +0 -0
  692. /package/{skills → library/skills}/git/ship/evals.md +0 -0
  693. /package/{skills → library/skills}/git/ship/references/remote-and-branch-policy.md +0 -0
  694. /package/{skills → library/skills}/git/worktree-create/evals.md +0 -0
  695. /package/{skills → library/skills}/git/worktree-create/references/worktree-setup.md +0 -0
  696. /package/{skills → library/skills}/git/worktree-merge/evals.md +0 -0
  697. /package/{skills → library/skills}/git/worktree-merge/references/merge-strategies.md +0 -0
  698. /package/{skills → library/skills}/meta/clio-coder-test/references/harness.md +0 -0
  699. /package/{skills → library/skills}/meta/clio-coder-test/references/test-map.md +0 -0
  700. /package/{skills → library/skills}/planning/archify/evals.md +0 -0
@@ -0,0 +1,915 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ enabledPluginResourceRoots,
4
+ parseFrontmatter,
5
+ resolvePackagePathReference,
6
+ resolvePackageReferences
7
+ } from "./chunk-YKRJTYNP.js";
8
+ import {
9
+ value_exports
10
+ } from "./chunk-SER7RRAE.js";
11
+ import {
12
+ typebox_exports
13
+ } from "./chunk-GH5ZR6JP.js";
14
+ import {
15
+ PATH_BOUNDARY_MAX_ENTRIES,
16
+ normalizePathBoundary,
17
+ normalizePathBoundaryEntry,
18
+ pathBoundaryCovers
19
+ } from "./chunk-R2P2U3ZS.js";
20
+ import {
21
+ resolvePackageRoot
22
+ } from "./chunk-E3LEPLQ2.js";
23
+ import {
24
+ require_dist
25
+ } from "./chunk-B5GGDIHT.js";
26
+ import {
27
+ clioConfigDir
28
+ } from "./chunk-CTTI7G3T.js";
29
+ import {
30
+ __toESM,
31
+ init_esm_shims
32
+ } from "./chunk-ECBHH7LU.js";
33
+
34
+ // src/domains/agents/fleet-commands.ts
35
+ init_esm_shims();
36
+ import { existsSync, readFileSync } from "node:fs";
37
+ import { isAbsolute, join, normalize } from "node:path";
38
+ var import_yaml = __toESM(require_dist(), 1);
39
+ var FLEET_COMMAND_MAX_TIMEOUT_MS = 36e5;
40
+ var FLEET_COMMAND_MIN_TIMEOUT_MS = 1e3;
41
+ var FLEET_COMMAND_DEFAULT_TIMEOUT_MS = 6e5;
42
+ var FLEET_COMMAND_BASE_ENV = ["PATH", "HOME", "LANG", "LC_ALL", "TZ", "TMPDIR"];
43
+ var CommandSchema = typebox_exports.Object(
44
+ {
45
+ argv: typebox_exports.Array(typebox_exports.String({ minLength: 1 }), { minItems: 1 }),
46
+ argumentSlots: typebox_exports.Optional(
47
+ typebox_exports.Array(
48
+ typebox_exports.Object(
49
+ {
50
+ name: typebox_exports.String({ pattern: "^[A-Za-z][A-Za-z0-9_-]{0,63}$" }),
51
+ maxLength: typebox_exports.Integer({ minimum: 1, maximum: 8192 })
52
+ },
53
+ { additionalProperties: false }
54
+ ),
55
+ { minItems: 1, maxItems: 64 }
56
+ )
57
+ ),
58
+ cwd: typebox_exports.Optional(typebox_exports.String({ minLength: 1 })),
59
+ timeoutMs: typebox_exports.Optional(
60
+ typebox_exports.Integer({ minimum: FLEET_COMMAND_MIN_TIMEOUT_MS, maximum: FLEET_COMMAND_MAX_TIMEOUT_MS })
61
+ ),
62
+ env: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String({ minLength: 1 }))),
63
+ description: typebox_exports.Optional(typebox_exports.String())
64
+ },
65
+ { additionalProperties: false }
66
+ );
67
+ var RegistrySchema = typebox_exports.Object(
68
+ {
69
+ version: typebox_exports.Literal(1),
70
+ commands: typebox_exports.Record(typebox_exports.String({ minLength: 1 }), CommandSchema, { minProperties: 1 })
71
+ },
72
+ { additionalProperties: false }
73
+ );
74
+ var COMMAND_ID_RE = /^[a-z0-9][a-z0-9._-]{0,63}$/u;
75
+ var ENV_NAME_RE = /^[A-Z_][A-Z0-9_]*$/u;
76
+ function fleetCommandsPath(cwd) {
77
+ return join(cwd, ".clio-coder", "fleets", "commands.yaml");
78
+ }
79
+ function firstSchemaError(value) {
80
+ if (value_exports.Check(RegistrySchema, value)) return null;
81
+ const first = [...value_exports.Errors(RegistrySchema, value)][0];
82
+ return first ? `${first.instancePath || "(root)"}: ${first.message}` : "command registry failed validation";
83
+ }
84
+ function checkCwd(id, value, sourcePath) {
85
+ if (isAbsolute(value)) {
86
+ throw new Error(`fleet commands ${sourcePath}: command '${id}' cwd must be workspace-relative`);
87
+ }
88
+ const normalized = normalize(value);
89
+ if (normalized === ".." || normalized.startsWith(`..${"/"}`) || normalized.split(/[\\/]/u).includes("..")) {
90
+ throw new Error(`fleet commands ${sourcePath}: command '${id}' cwd escapes the workspace`);
91
+ }
92
+ return normalized === "." ? "" : normalized;
93
+ }
94
+ function parseFleetCommands(raw, sourcePath) {
95
+ let parsed;
96
+ try {
97
+ parsed = import_yaml.default.parse(raw);
98
+ } catch (err) {
99
+ const reason = err instanceof Error ? err.message : String(err);
100
+ throw new Error(`fleet commands ${sourcePath}: invalid YAML (${reason})`);
101
+ }
102
+ const schemaError = firstSchemaError(parsed);
103
+ if (schemaError !== null) throw new Error(`fleet commands ${sourcePath}: ${schemaError}`);
104
+ const registry = parsed;
105
+ const commands = /* @__PURE__ */ new Map();
106
+ for (const [id, entry] of Object.entries(registry.commands)) {
107
+ if (!COMMAND_ID_RE.test(id)) {
108
+ throw new Error(`fleet commands ${sourcePath}: command id '${id}' must match ${COMMAND_ID_RE.source}`);
109
+ }
110
+ const executable = entry.argv[0] ?? "";
111
+ if (executable.trim().length === 0) {
112
+ throw new Error(`fleet commands ${sourcePath}: command '${id}' has an empty executable`);
113
+ }
114
+ for (const name of entry.env ?? []) {
115
+ if (!ENV_NAME_RE.test(name)) {
116
+ throw new Error(`fleet commands ${sourcePath}: command '${id}' env name '${name}' is not a variable name`);
117
+ }
118
+ }
119
+ if (entry.argumentSlots)
120
+ validateFleetCommandArgs(
121
+ { id, argv: entry.argv, cwd: "", timeoutMs: 1e3, env: [], description: "", argumentSlots: entry.argumentSlots },
122
+ entry.argumentSlots.map(() => "{{slot}}"),
123
+ { allowTemplates: true }
124
+ );
125
+ commands.set(id, {
126
+ id,
127
+ argv: [...entry.argv],
128
+ ...entry.argumentSlots ? { argumentSlots: entry.argumentSlots.map((slot) => ({ ...slot })) } : {},
129
+ cwd: entry.cwd === void 0 ? "" : checkCwd(id, entry.cwd, sourcePath),
130
+ timeoutMs: entry.timeoutMs ?? FLEET_COMMAND_DEFAULT_TIMEOUT_MS,
131
+ env: [...entry.env ?? []],
132
+ description: entry.description ?? ""
133
+ });
134
+ }
135
+ return { version: 1, commands, path: sourcePath };
136
+ }
137
+ function loadFleetCommands(cwd) {
138
+ const path = fleetCommandsPath(cwd);
139
+ if (!existsSync(path)) return null;
140
+ return parseFleetCommands(readFileSync(path, "utf8"), path);
141
+ }
142
+ function resolveFleetCommandArgs(args, vars = {}) {
143
+ if (args.length > 64) throw new Error("fleet code args: at most 64 arguments are allowed");
144
+ return args.map((token) => {
145
+ const match = /^\{\{\s*([A-Za-z_][A-Za-z0-9_-]*)\s*\}\}$/u.exec(token);
146
+ if (!match && token.includes("{{")) throw new Error("fleet code args: placeholders must occupy a whole argument");
147
+ const value = match ? vars[match[1] ?? ""] : token;
148
+ if (value === void 0) throw new Error(`fleet code args: missing variable ${match?.[1]} (pass --var name=value)`);
149
+ if (value.includes("\0") || value.length > 8192)
150
+ throw new Error("fleet code args: invalid NUL or oversized argument");
151
+ return value;
152
+ });
153
+ }
154
+ function validateFleetCommandArgs(command, args, options = {}) {
155
+ const slots = command.argumentSlots ?? [];
156
+ if (slots.length > 64 || new Set(slots.map((slot) => slot.name)).size !== slots.length || slots.some(
157
+ (slot) => !/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u.test(slot.name) || !Number.isInteger(slot.maxLength) || slot.maxLength < 1 || slot.maxLength > 8192
158
+ )) {
159
+ throw new Error(`fleet command '${command.id}': invalid argumentSlots declaration`);
160
+ }
161
+ if (args.length !== slots.length) {
162
+ throw new Error(
163
+ `fleet command '${command.id}': expected ${slots.length} declared argument slots, got ${args.length}; the operator must declare argumentSlots in commands.yaml`
164
+ );
165
+ }
166
+ for (let index = 0; index < slots.length; index++) {
167
+ const slot = slots[index];
168
+ const value = args[index];
169
+ if (!slot || typeof value !== "string") throw new Error(`fleet command '${command.id}': invalid argument`);
170
+ if (options.allowTemplates && /^\{\{\s*([A-Za-z_][A-Za-z0-9_-]*)\s*\}\}$/u.test(value)) continue;
171
+ if (value.length === 0 || value.length > slot.maxLength || value.includes("\0") || value.startsWith("-")) {
172
+ throw new Error(
173
+ `fleet command '${command.id}': argument '${slot.name}' must be nonempty data of at most ${slot.maxLength} characters, without NUL or a leading dash; fixed flags belong in argv`
174
+ );
175
+ }
176
+ }
177
+ }
178
+
179
+ // src/domains/agents/fleet-contract.ts
180
+ init_esm_shims();
181
+ import { existsSync as existsSync2, readdirSync, readFileSync as readFileSync2 } from "node:fs";
182
+ import { basename, join as join2 } from "node:path";
183
+
184
+ // src/domains/agents/write-boundary.ts
185
+ init_esm_shims();
186
+ var WRITE_BOUNDARY_MAX_ENTRIES = PATH_BOUNDARY_MAX_ENTRIES;
187
+ function normalizeWriteBoundaryEntry(entry) {
188
+ return normalizePathBoundaryEntry(entry);
189
+ }
190
+ function normalizeWriteBoundary(entries) {
191
+ return normalizePathBoundary(entries);
192
+ }
193
+ function writeBoundaryCovers(boundary, path) {
194
+ return pathBoundaryCovers(boundary, path);
195
+ }
196
+ function describeWriteBoundary(boundary) {
197
+ return boundary.length === 0 ? "(nothing: readonly)" : boundary.join(", ");
198
+ }
199
+
200
+ // src/domains/agents/fleet-contract.ts
201
+ var FLEET_WRITE_BOUNDARY_VERSION = 4;
202
+ var FLEET_DYNAMIC_STEP_VERSION = 5;
203
+ var FLEET_LOOP_MAX_ATTEMPTS = 5;
204
+ var FleetScopeSchema = typebox_exports.Union([typebox_exports.Literal("readonly"), typebox_exports.Literal("workspace")]);
205
+ function writesSchema(version) {
206
+ return version >= FLEET_WRITE_BOUNDARY_VERSION ? { writes: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String({ minLength: 1 }), { maxItems: WRITE_BOUNDARY_MAX_ENTRIES })) } : {};
207
+ }
208
+ function routeSchema(version) {
209
+ return version >= FLEET_DYNAMIC_STEP_VERSION ? { target: typebox_exports.Optional(typebox_exports.String({ minLength: 1 })), profile: typebox_exports.Optional(typebox_exports.String({ minLength: 1 })) } : {};
210
+ }
211
+ function agentStepSchema(version) {
212
+ return typebox_exports.Object(
213
+ {
214
+ kind: typebox_exports.Optional(typebox_exports.Literal("agent")),
215
+ id: typebox_exports.String({ minLength: 1 }),
216
+ agent: typebox_exports.String({ minLength: 1 }),
217
+ scope: FleetScopeSchema,
218
+ dependencies: typebox_exports.Array(typebox_exports.String({ minLength: 1 })),
219
+ ...writesSchema(version),
220
+ ...routeSchema(version)
221
+ },
222
+ { additionalProperties: false }
223
+ );
224
+ }
225
+ function gateStepSchema() {
226
+ return typebox_exports.Object(
227
+ {
228
+ kind: typebox_exports.Literal("gate"),
229
+ id: typebox_exports.String({ minLength: 1 }),
230
+ agent: typebox_exports.String({ minLength: 1 }),
231
+ path: typebox_exports.String({ minLength: 1 }),
232
+ run: typebox_exports.String({ minLength: 1 }),
233
+ scope: typebox_exports.Optional(typebox_exports.Literal("workspace")),
234
+ dependencies: typebox_exports.Array(typebox_exports.String({ minLength: 1 })),
235
+ ...routeSchema(5)
236
+ },
237
+ { additionalProperties: false }
238
+ );
239
+ }
240
+ function planStepSchema() {
241
+ return typebox_exports.Object(
242
+ {
243
+ kind: typebox_exports.Literal("plan"),
244
+ id: typebox_exports.String({ minLength: 1 }),
245
+ agent: typebox_exports.Optional(typebox_exports.String({ minLength: 1 })),
246
+ roster: typebox_exports.Array(typebox_exports.String({ minLength: 1 }), { minItems: 1, maxItems: 16 }),
247
+ maxTasks: typebox_exports.Integer({ minimum: 1, maximum: 16 }),
248
+ proposals: typebox_exports.Optional(typebox_exports.Boolean()),
249
+ scope: FleetScopeSchema,
250
+ dependencies: typebox_exports.Array(typebox_exports.String({ minLength: 1 })),
251
+ ...writesSchema(5),
252
+ ...routeSchema(5)
253
+ },
254
+ { additionalProperties: false }
255
+ );
256
+ }
257
+ function codeStepSchema(version) {
258
+ return typebox_exports.Object(
259
+ {
260
+ kind: typebox_exports.Literal("code"),
261
+ id: typebox_exports.String({ minLength: 1 }),
262
+ command: typebox_exports.String({ minLength: 1 }),
263
+ args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String({ maxLength: 8192, pattern: "^[^\\u0000]*$" }), { maxItems: 64 })),
264
+ scope: FleetScopeSchema,
265
+ dependencies: typebox_exports.Array(typebox_exports.String({ minLength: 1 })),
266
+ ...version >= 3 ? { commitFrom: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String({ minLength: 1 }), { minItems: 1 })) } : {},
267
+ ...writesSchema(version)
268
+ },
269
+ { additionalProperties: false }
270
+ );
271
+ }
272
+ function loopStepSchema(version) {
273
+ return typebox_exports.Object(
274
+ {
275
+ kind: typebox_exports.Literal("loop"),
276
+ id: typebox_exports.String({ minLength: 1 }),
277
+ // Required and finite: this is the whole point of the construct.
278
+ maxAttempts: typebox_exports.Integer({ minimum: 1, maximum: FLEET_LOOP_MAX_ATTEMPTS }),
279
+ dependencies: typebox_exports.Array(typebox_exports.String({ minLength: 1 })),
280
+ check: typebox_exports.Union([
281
+ typebox_exports.Object(
282
+ {
283
+ kind: typebox_exports.Literal("code"),
284
+ command: typebox_exports.String({ minLength: 1 }),
285
+ args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String({ maxLength: 8192, pattern: "^[^\\u0000]*$" }), { maxItems: 64 })),
286
+ scope: FleetScopeSchema,
287
+ ...writesSchema(version)
288
+ },
289
+ { additionalProperties: false }
290
+ ),
291
+ ...version >= FLEET_DYNAMIC_STEP_VERSION ? [
292
+ typebox_exports.Object(
293
+ { kind: typebox_exports.Literal("gate"), gate: typebox_exports.String({ minLength: 1 }) },
294
+ { additionalProperties: false }
295
+ )
296
+ ] : [],
297
+ typebox_exports.Object(
298
+ {
299
+ kind: typebox_exports.Literal("agent"),
300
+ agent: typebox_exports.String({ minLength: 1 }),
301
+ scope: FleetScopeSchema,
302
+ ...writesSchema(version),
303
+ ...routeSchema(version)
304
+ },
305
+ { additionalProperties: false }
306
+ )
307
+ ]),
308
+ repair: typebox_exports.Object(
309
+ {
310
+ kind: typebox_exports.Optional(typebox_exports.Literal("agent")),
311
+ agent: typebox_exports.String({ minLength: 1 }),
312
+ scope: FleetScopeSchema,
313
+ ...writesSchema(version),
314
+ ...routeSchema(version)
315
+ },
316
+ { additionalProperties: false }
317
+ )
318
+ },
319
+ { additionalProperties: false }
320
+ );
321
+ }
322
+ function stepSchema(version) {
323
+ if (version === 1) return agentStepSchema(1);
324
+ if (version === 2) return typebox_exports.Union([agentStepSchema(2), codeStepSchema(2)]);
325
+ if (version === 5) {
326
+ return typebox_exports.Union([
327
+ agentStepSchema(version),
328
+ codeStepSchema(version),
329
+ loopStepSchema(version),
330
+ gateStepSchema(),
331
+ planStepSchema()
332
+ ]);
333
+ }
334
+ return typebox_exports.Union([agentStepSchema(version), codeStepSchema(version), loopStepSchema(version)]);
335
+ }
336
+ function frontmatterSchema(version) {
337
+ return typebox_exports.Object(
338
+ {
339
+ version: typebox_exports.Literal(version),
340
+ name: typebox_exports.String({ minLength: 1 }),
341
+ description: typebox_exports.Optional(typebox_exports.String()),
342
+ steps: typebox_exports.Array(stepSchema(version), { minItems: 1 }),
343
+ maxWorkers: typebox_exports.Integer({ minimum: 1 }),
344
+ budgetUsd: typebox_exports.Optional(typebox_exports.Number()),
345
+ onFailure: typebox_exports.Union([typebox_exports.Literal("stop"), typebox_exports.Literal("continue")]),
346
+ ...version >= FLEET_DYNAMIC_STEP_VERSION ? { writers: typebox_exports.Optional(typebox_exports.Literal(1)) } : {}
347
+ },
348
+ { additionalProperties: false }
349
+ );
350
+ }
351
+ var SCHEMAS = {
352
+ 1: frontmatterSchema(1),
353
+ 2: frontmatterSchema(2),
354
+ 3: frontmatterSchema(3),
355
+ 4: frontmatterSchema(4),
356
+ 5: frontmatterSchema(5)
357
+ };
358
+ function contractVersion(frontmatter) {
359
+ const value = frontmatter.version;
360
+ return value === 1 || value === 2 || value === 3 || value === 4 || value === 5 ? value : null;
361
+ }
362
+ function firstSchemaError2(frontmatter, version) {
363
+ const schema = SCHEMAS[version];
364
+ if (value_exports.Check(schema, frontmatter)) return null;
365
+ const first = [...value_exports.Errors(schema, frontmatter)][0];
366
+ return first ? `${first.instancePath || "(root)"}: ${first.message}` : "front matter failed validation";
367
+ }
368
+ function fleetsDir(cwd) {
369
+ return join2(cwd, ".clio-coder", "fleets");
370
+ }
371
+ function normalizedWrites(writes) {
372
+ return writes === void 0 ? {} : { writes: normalizeWriteBoundary(writes) };
373
+ }
374
+ function normalizeStep(step) {
375
+ const route = (value) => ({
376
+ ...value.target !== void 0 ? { target: value.target } : {},
377
+ ...value.profile !== void 0 ? { profile: value.profile } : {}
378
+ });
379
+ if (step.kind === "gate") {
380
+ return {
381
+ kind: "gate",
382
+ id: step.id,
383
+ agent: step.agent ?? "",
384
+ path: step.path ?? "",
385
+ run: step.run ?? "",
386
+ scope: "workspace",
387
+ dependencies: [...step.dependencies],
388
+ ...route(step)
389
+ };
390
+ }
391
+ if (step.kind === "plan") {
392
+ return {
393
+ kind: "plan",
394
+ id: step.id,
395
+ agent: step.agent ?? "architect",
396
+ roster: [...step.roster ?? []],
397
+ maxTasks: step.maxTasks ?? 0,
398
+ proposals: step.proposals ?? false,
399
+ scope: step.scope,
400
+ dependencies: [...step.dependencies],
401
+ ...normalizedWrites(step.writes),
402
+ ...route(step)
403
+ };
404
+ }
405
+ if (step.kind === "loop") {
406
+ const check = step.check;
407
+ const repair = step.repair;
408
+ return {
409
+ kind: "loop",
410
+ id: step.id,
411
+ maxAttempts: step.maxAttempts ?? 0,
412
+ dependencies: [...step.dependencies],
413
+ check: check.kind === "code" ? {
414
+ kind: "code",
415
+ command: check.command ?? "",
416
+ ...check.args ? { args: [...check.args] } : {},
417
+ scope: check.scope,
418
+ ...normalizedWrites(check.writes)
419
+ } : check.kind === "gate" ? { kind: "gate", gate: check.gate ?? "" } : {
420
+ kind: "agent",
421
+ agent: check.agent ?? "",
422
+ scope: check.scope,
423
+ ...normalizedWrites(check.writes),
424
+ ...route(check)
425
+ },
426
+ repair: {
427
+ kind: "agent",
428
+ agent: repair.agent,
429
+ scope: repair.scope,
430
+ ...normalizedWrites(repair.writes),
431
+ ...route(repair)
432
+ }
433
+ };
434
+ }
435
+ if (step.kind === "code") {
436
+ return {
437
+ kind: "code",
438
+ id: step.id,
439
+ command: step.command ?? "",
440
+ ...step.args ? { args: [...step.args] } : {},
441
+ scope: step.scope,
442
+ dependencies: [...step.dependencies],
443
+ ...step.commitFrom !== void 0 ? { commitFrom: [...step.commitFrom] } : {},
444
+ ...normalizedWrites(step.writes)
445
+ };
446
+ }
447
+ return {
448
+ kind: "agent",
449
+ id: step.id,
450
+ agent: step.agent ?? "",
451
+ scope: step.scope,
452
+ dependencies: [...step.dependencies],
453
+ ...normalizedWrites(step.writes),
454
+ ...route(step)
455
+ };
456
+ }
457
+ function fleetLoopCheckStepId(loopId, attempt) {
458
+ return `${loopId}.check.${attempt}`;
459
+ }
460
+ function fleetLoopRepairStepId(loopId, attempt) {
461
+ return `${loopId}.repair.${attempt}`;
462
+ }
463
+ function occupiedIds(contract) {
464
+ const owners = /* @__PURE__ */ new Map();
465
+ for (const step of contract.steps) {
466
+ owners.set(step.id, step.id);
467
+ if (step.kind !== "loop") continue;
468
+ for (let attempt = 1; attempt <= step.maxAttempts; attempt++) {
469
+ owners.set(fleetLoopCheckStepId(step.id, attempt), step.id);
470
+ if (attempt < step.maxAttempts) owners.set(fleetLoopRepairStepId(step.id, attempt), step.id);
471
+ }
472
+ }
473
+ return owners;
474
+ }
475
+ function validateFleetGraph(contract) {
476
+ const declared = /* @__PURE__ */ new Set();
477
+ for (const step of contract.steps) {
478
+ if (declared.has(step.id)) throw new Error(`fleet contract ${contract.path}: duplicate step id '${step.id}'`);
479
+ declared.add(step.id);
480
+ }
481
+ const owners = /* @__PURE__ */ new Map();
482
+ for (const step of contract.steps) {
483
+ if (step.kind !== "loop") continue;
484
+ for (const [generated, owner] of occupiedIds({ steps: [step] })) {
485
+ if (generated === step.id) continue;
486
+ if (declared.has(generated)) {
487
+ throw new Error(
488
+ `fleet contract ${contract.path}: step id '${generated}' collides with an id loop '${owner}' generates`
489
+ );
490
+ }
491
+ owners.set(generated, owner);
492
+ }
493
+ }
494
+ for (const step of contract.steps) {
495
+ if (step.kind === "loop" && step.check.kind === "gate") {
496
+ const gateId = step.check.gate;
497
+ const gate = contract.steps.find((candidate) => candidate.id === gateId);
498
+ if (gate?.kind !== "gate") {
499
+ throw new Error(`fleet contract ${contract.path}: loop '${step.id}' names unknown gate '${gateId}'`);
500
+ }
501
+ }
502
+ for (const dependency of step.dependencies) {
503
+ if (dependency === step.id) throw new Error(`fleet contract ${contract.path}: step '${step.id}' depends on itself`);
504
+ if (!declared.has(dependency)) {
505
+ throw new Error(`fleet contract ${contract.path}: step '${step.id}' has unknown dependency '${dependency}'`);
506
+ }
507
+ }
508
+ }
509
+ const remaining = new Set(declared);
510
+ const settled = /* @__PURE__ */ new Set();
511
+ while (remaining.size > 0) {
512
+ const ready = contract.steps.filter(
513
+ (step) => remaining.has(step.id) && step.dependencies.every((dependency) => settled.has(dependency))
514
+ );
515
+ if (ready.length === 0) {
516
+ throw new Error(`fleet contract ${contract.path}: dependency cycle among steps ${[...remaining].sort().join(", ")}`);
517
+ }
518
+ for (const step of ready) {
519
+ remaining.delete(step.id);
520
+ settled.add(step.id);
521
+ }
522
+ }
523
+ const ancestors = fleetStepAncestors(contract.steps);
524
+ for (const step of contract.steps) {
525
+ if (step.kind !== "code" || step.commitFrom === void 0) continue;
526
+ for (const source of step.commitFrom) {
527
+ const target = contract.steps.find((candidate) => candidate.id === source);
528
+ if (target === void 0) {
529
+ throw new Error(`fleet contract ${contract.path}: commit step '${step.id}' names unknown source '${source}'`);
530
+ }
531
+ if (target.kind === "code") {
532
+ throw new Error(
533
+ `fleet contract ${contract.path}: commit step '${step.id}' source '${source}' is a code step and authors no commit message`
534
+ );
535
+ }
536
+ if (!(ancestors.get(step.id)?.has(source) ?? false)) {
537
+ throw new Error(
538
+ `fleet contract ${contract.path}: commit step '${step.id}' must depend on its message source '${source}'`
539
+ );
540
+ }
541
+ }
542
+ }
543
+ }
544
+ function fleetStepWriteBoundary(version, scope, writes) {
545
+ if (version < FLEET_WRITE_BOUNDARY_VERSION) return void 0;
546
+ return scope === "readonly" ? [] : [...writes ?? []];
547
+ }
548
+ function fleetStepBoundaries(contract) {
549
+ const boundaries = [];
550
+ const add = (id, scope, writes) => {
551
+ boundaries.push({ id, scope, writes: fleetStepWriteBoundary(contract.version, scope, writes) });
552
+ };
553
+ for (const step of contract.steps) {
554
+ if (step.kind === "loop") {
555
+ if (step.check.kind === "gate") {
556
+ const gateId = step.check.gate;
557
+ const gate = contract.steps.find((candidate) => candidate.id === gateId);
558
+ if (gate?.kind === "gate") add(`${step.id}.check`, "workspace", [gate.path]);
559
+ } else add(`${step.id}.check`, step.check.scope, step.check.writes);
560
+ add(`${step.id}.repair`, step.repair.scope, step.repair.writes);
561
+ continue;
562
+ }
563
+ if (step.kind === "gate") {
564
+ add(step.id, "workspace", [step.path]);
565
+ continue;
566
+ }
567
+ add(step.id, step.scope, step.writes);
568
+ }
569
+ return boundaries;
570
+ }
571
+ function validateWriteBoundaries(contract) {
572
+ if (contract.version < FLEET_WRITE_BOUNDARY_VERSION) return;
573
+ for (const position of fleetStepBoundaries(contract)) {
574
+ if (position.scope === "workspace" && (position.writes?.length ?? 0) === 0) {
575
+ throw new Error(
576
+ `fleet contract ${contract.path}: step '${position.id}' has scope 'workspace' and must declare a non-empty 'writes' allowlist at version ${FLEET_WRITE_BOUNDARY_VERSION}`
577
+ );
578
+ }
579
+ }
580
+ for (const step of contract.steps) {
581
+ const declared = step.kind === "loop" ? [
582
+ ...step.check.kind === "gate" ? [] : [{ id: `${step.id}.check`, scope: step.check.scope, writes: step.check.writes }],
583
+ { id: `${step.id}.repair`, scope: step.repair.scope, writes: step.repair.writes }
584
+ ] : step.kind === "gate" ? [] : [{ id: step.id, scope: step.scope, writes: step.writes }];
585
+ for (const position of declared) {
586
+ if (position.scope === "readonly" && position.writes !== void 0) {
587
+ throw new Error(
588
+ `fleet contract ${contract.path}: step '${position.id}' is 'readonly', which is the empty allowlist; remove its 'writes' or give it scope 'workspace'`
589
+ );
590
+ }
591
+ }
592
+ }
593
+ }
594
+ function fleetStepAncestors(steps) {
595
+ const direct = new Map(steps.map((step) => [step.id, step.dependencies]));
596
+ const closure = /* @__PURE__ */ new Map();
597
+ const resolve = (id, seen) => {
598
+ const cached = closure.get(id);
599
+ if (cached !== void 0) return cached;
600
+ const result = /* @__PURE__ */ new Set();
601
+ if (seen.has(id)) return result;
602
+ seen.add(id);
603
+ for (const dependency of direct.get(id) ?? []) {
604
+ result.add(dependency);
605
+ for (const inherited of resolve(dependency, seen)) result.add(inherited);
606
+ }
607
+ closure.set(id, result);
608
+ return result;
609
+ };
610
+ for (const step of steps) resolve(step.id, /* @__PURE__ */ new Set());
611
+ return closure;
612
+ }
613
+ function parseFleetContract(raw, sourcePath) {
614
+ const { frontmatter, body } = parseFrontmatter(raw, sourcePath);
615
+ const version = contractVersion(frontmatter);
616
+ if (version === null) {
617
+ throw new Error(`fleet contract ${sourcePath}: version must be 1, 2, 3, 4, or 5`);
618
+ }
619
+ if (version < FLEET_WRITE_BOUNDARY_VERSION) assertNoWritesBefore(frontmatter, sourcePath, version);
620
+ if (version < FLEET_DYNAMIC_STEP_VERSION) assertNoV5FieldsBefore(frontmatter, sourcePath, version);
621
+ if (version >= FLEET_DYNAMIC_STEP_VERSION) assertNoGateWrites(frontmatter, sourcePath);
622
+ const schemaError = firstSchemaError2(frontmatter, version);
623
+ if (schemaError !== null) {
624
+ throw new Error(`fleet contract ${sourcePath}: ${schemaError}`);
625
+ }
626
+ const fm = frontmatter;
627
+ if (fm.budgetUsd !== void 0 && !(fm.budgetUsd > 0)) {
628
+ throw new Error(`fleet contract ${sourcePath}: budgetUsd must be a positive number`);
629
+ }
630
+ const trimmedBody = body.trim();
631
+ if (trimmedBody.length === 0) {
632
+ throw new Error(`fleet contract ${sourcePath}: prompt body is empty`);
633
+ }
634
+ const contract = {
635
+ version,
636
+ name: fm.name,
637
+ description: fm.description ?? "",
638
+ steps: fm.steps.map(normalizeStep),
639
+ maxWorkers: fm.maxWorkers,
640
+ budgetUsd: fm.budgetUsd ?? null,
641
+ onFailure: fm.onFailure,
642
+ ...fm.writers === 1 ? { writers: 1 } : {},
643
+ body: trimmedBody,
644
+ path: sourcePath
645
+ };
646
+ validateFleetGraph(contract);
647
+ validateWriteBoundaries(contract);
648
+ validateV5Declarations(contract);
649
+ return contract;
650
+ }
651
+ function validateV5Declarations(contract) {
652
+ if (contract.version < FLEET_DYNAMIC_STEP_VERSION) return;
653
+ const route = (id, value) => {
654
+ if (value.target !== void 0 && value.profile !== void 0) {
655
+ throw new Error(`fleet contract ${contract.path}: step '${id}' may declare target or profile, never both`);
656
+ }
657
+ };
658
+ for (const step of contract.steps) {
659
+ if (step.kind === "agent" || step.kind === "plan" || step.kind === "gate") route(step.id, step);
660
+ if (step.kind === "plan" && new Set(step.roster).size !== step.roster.length) {
661
+ throw new Error(`fleet contract ${contract.path}: plan step '${step.id}' roster contains duplicate agents`);
662
+ }
663
+ if (step.kind === "gate") {
664
+ let normalized;
665
+ try {
666
+ normalized = normalizeWriteBoundary([step.path]);
667
+ } catch (error) {
668
+ throw new Error(
669
+ `fleet contract ${contract.path}: gate '${step.id}' path is invalid: ${error instanceof Error ? error.message : String(error)}`
670
+ );
671
+ }
672
+ if (normalized[0] !== step.path.replaceAll("\\", "/")) {
673
+ throw new Error(
674
+ `fleet contract ${contract.path}: gate '${step.id}' path must be normalized and repository-relative`
675
+ );
676
+ }
677
+ }
678
+ if (step.kind !== "loop") continue;
679
+ if (step.check.kind === "agent") route(`${step.id}.check`, step.check);
680
+ route(`${step.id}.repair`, step.repair);
681
+ }
682
+ }
683
+ function assertNoWritesBefore(frontmatter, sourcePath, version) {
684
+ const steps = Array.isArray(frontmatter.steps) ? frontmatter.steps : [];
685
+ const declaresWrites = (value) => typeof value === "object" && value !== null && "writes" in value;
686
+ for (const step of steps) {
687
+ const raw = step;
688
+ if (declaresWrites(raw) || declaresWrites(raw.check) || declaresWrites(raw.repair)) {
689
+ throw new Error(
690
+ `fleet contract ${sourcePath}: 'writes' requires contract version ${FLEET_WRITE_BOUNDARY_VERSION}; this contract declares version ${version}, where the declaration would not be enforced`
691
+ );
692
+ }
693
+ }
694
+ }
695
+ function assertNoGateWrites(frontmatter, sourcePath) {
696
+ for (const value of Array.isArray(frontmatter.steps) ? frontmatter.steps : []) {
697
+ if (typeof value !== "object" || value === null) continue;
698
+ const step = value;
699
+ if (step.kind !== "gate" || typeof step.id !== "string" || step.id.length === 0 || !("writes" in step)) continue;
700
+ throw new Error(
701
+ `fleet contract ${sourcePath}: gate step '${step.id}' must not declare 'writes'; its write boundary is derived from 'path'`
702
+ );
703
+ }
704
+ }
705
+ function assertNoV5FieldsBefore(frontmatter, sourcePath, version) {
706
+ const forbidden = ["target", "profile"];
707
+ if ("writers" in frontmatter) {
708
+ throw new Error(
709
+ `fleet contract ${sourcePath}: 'writers' requires contract version ${FLEET_DYNAMIC_STEP_VERSION}; this contract declares version ${version}`
710
+ );
711
+ }
712
+ for (const value of Array.isArray(frontmatter.steps) ? frontmatter.steps : []) {
713
+ if (typeof value !== "object" || value === null) continue;
714
+ const step = value;
715
+ if (step.kind === "plan" || step.kind === "gate") {
716
+ throw new Error(
717
+ `fleet contract ${sourcePath}: kind '${String(step.kind)}' requires contract version ${FLEET_DYNAMIC_STEP_VERSION}; this contract declares version ${version}`
718
+ );
719
+ }
720
+ for (const candidate of [step, step.check, step.repair]) {
721
+ if (typeof candidate !== "object" || candidate === null) continue;
722
+ for (const field of forbidden) {
723
+ if (field in candidate) {
724
+ throw new Error(
725
+ `fleet contract ${sourcePath}: '${field}' requires contract version ${FLEET_DYNAMIC_STEP_VERSION}; this contract declares version ${version}`
726
+ );
727
+ }
728
+ }
729
+ }
730
+ }
731
+ }
732
+ function fleetCodeSteps(contract) {
733
+ const steps = [];
734
+ for (const step of contract.steps) {
735
+ if (step.kind === "code")
736
+ steps.push({ id: step.id, command: step.command, ...step.args ? { args: step.args } : {} });
737
+ else if (step.kind === "gate") steps.push({ id: step.id, command: step.run });
738
+ else if (step.kind === "loop" && step.check.kind === "code") {
739
+ steps.push({
740
+ id: fleetLoopCheckStepId(step.id, 1),
741
+ command: step.check.command,
742
+ ...step.check.args ? { args: step.check.args } : {}
743
+ });
744
+ }
745
+ }
746
+ return steps;
747
+ }
748
+ var FLEET_COMMANDS_REPO_PATH = ".clio-coder/fleets/commands.yaml";
749
+ var FLEET_COMMANDS_REMEDY = "declare each id there under `commands:` with an `argv` list; `clio-coder docs fleet_dispatch` has the schema";
750
+ var FleetCommandRegistryMissingError = class extends Error {
751
+ constructor(contractPath, commands) {
752
+ super(
753
+ `fleet contract ${contractPath}: code steps require a command registry at ${FLEET_COMMANDS_REPO_PATH} declaring ${commands.join(", ")}`
754
+ );
755
+ this.contractPath = contractPath;
756
+ this.commands = commands;
757
+ this.name = "FleetCommandRegistryMissingError";
758
+ }
759
+ contractPath;
760
+ commands;
761
+ };
762
+ function validateFleetCommands(contract, registry, vars) {
763
+ const codeSteps = fleetCodeSteps(contract);
764
+ if (codeSteps.length === 0) return;
765
+ if (registry === null) {
766
+ throw new FleetCommandRegistryMissingError(contract.path, [...new Set(codeSteps.map((step) => step.command))].sort());
767
+ }
768
+ for (const step of codeSteps) {
769
+ const command = registry.commands.get(step.command);
770
+ if (!command) {
771
+ const known = [...registry.commands.keys()].sort().join(", ");
772
+ throw new Error(
773
+ `fleet contract ${contract.path}: step '${step.id}' names unknown command '${step.command}' (registered: ${known || "none"})`
774
+ );
775
+ }
776
+ const args = vars === void 0 ? step.args ?? [] : resolveFleetCommandArgs(step.args ?? [], vars);
777
+ validateFleetCommandArgs(command, args, { allowTemplates: vars === void 0 });
778
+ }
779
+ }
780
+ function builtinFleetsDir() {
781
+ return join2(resolvePackageRoot(), "src", "domains", "agents", "fleets");
782
+ }
783
+ function resolveFleetReferences(contract, source) {
784
+ if (!source.rootPath) return contract;
785
+ const context = { rootPath: source.rootPath, plugin: source.source === "plugin" };
786
+ return {
787
+ ...contract,
788
+ body: resolvePackageReferences(contract.body, context),
789
+ steps: contract.steps.map((step) => {
790
+ if (step.kind === "code" && step.args)
791
+ return { ...step, args: step.args.map((arg) => resolvePackagePathReference(arg, context)) };
792
+ if (step.kind === "loop" && step.check.kind === "code" && step.check.args)
793
+ return {
794
+ ...step,
795
+ check: { ...step.check, args: step.check.args.map((arg) => resolvePackagePathReference(arg, context)) }
796
+ };
797
+ return step;
798
+ })
799
+ };
800
+ }
801
+ function fleetSources(cwd) {
802
+ return [
803
+ { dir: builtinFleetsDir(), source: "builtin" },
804
+ ...enabledPluginResourceRoots("fleets", cwd).sort((left, right) => left.source.localeCompare(right.source)).map((root) => ({ dir: root.path, rootPath: root.rootPath, source: "plugin" })),
805
+ { dir: join2(clioConfigDir(), "fleets"), source: "user" },
806
+ { dir: fleetsDir(cwd), source: "project" }
807
+ ];
808
+ }
809
+ function fleetContractPath(cwd, name) {
810
+ for (const source of [...fleetSources(cwd)].reverse()) {
811
+ const candidate = join2(source.dir, `${name}.md`);
812
+ if (existsSync2(candidate))
813
+ return { path: candidate, source: source.source, ...source.rootPath ? { rootPath: source.rootPath } : {} };
814
+ }
815
+ return null;
816
+ }
817
+ function loadFleetContract(cwd, name) {
818
+ const located = fleetContractPath(cwd, name);
819
+ if (located === null) {
820
+ throw new Error(`fleet contract not found: ${join2(fleetsDir(cwd), `${name}.md`)} (and no builtin named '${name}')`);
821
+ }
822
+ const contract = resolveFleetReferences(parseFleetContract(readFileSync2(located.path, "utf8"), located.path), located);
823
+ validateFleetCommands(contract, loadFleetCommands(cwd));
824
+ return contract;
825
+ }
826
+ function listDirectory(dir) {
827
+ if (!existsSync2(dir)) return [];
828
+ try {
829
+ return readdirSync(dir).filter((name) => name.endsWith(".md")).sort();
830
+ } catch {
831
+ return [];
832
+ }
833
+ }
834
+ function listFleetContracts(cwd) {
835
+ let registry = null;
836
+ let registryError = null;
837
+ try {
838
+ registry = loadFleetCommands(cwd);
839
+ } catch (err) {
840
+ registryError = err instanceof Error ? err.message : String(err);
841
+ }
842
+ const listings = /* @__PURE__ */ new Map();
843
+ const sources = fleetSources(cwd);
844
+ for (const { dir, source, rootPath } of sources) {
845
+ for (const file of listDirectory(dir)) {
846
+ const path = join2(dir, file);
847
+ const name = basename(file, ".md");
848
+ try {
849
+ const contract = resolveFleetReferences(parseFleetContract(readFileSync2(path, "utf8"), path), {
850
+ source,
851
+ ...rootPath ? { rootPath } : {}
852
+ });
853
+ if (registryError !== null && fleetCodeSteps(contract).length > 0) throw new Error(registryError);
854
+ validateFleetCommands(contract, registry);
855
+ listings.set(name, { name, path, source, contract, error: null, needsCommands: null });
856
+ } catch (err) {
857
+ listings.set(name, {
858
+ name,
859
+ path,
860
+ source,
861
+ contract: null,
862
+ error: err instanceof Error ? err.message : String(err),
863
+ // A registry this repo never wrote is unfinished setup. A registry
864
+ // that exists and does not parse, or one missing an id the contract
865
+ // names, is a real error and stays one.
866
+ needsCommands: err instanceof FleetCommandRegistryMissingError ? err.commands : null
867
+ });
868
+ }
869
+ }
870
+ }
871
+ return [...listings.values()].sort((left, right) => left.name.localeCompare(right.name));
872
+ }
873
+ var PLACEHOLDER_RE = /\{\{\s*([A-Za-z_][A-Za-z0-9_-]*)\s*\}\}/g;
874
+ function renderFleetPrompt(body, vars) {
875
+ const missing = /* @__PURE__ */ new Set();
876
+ const rendered = body.replace(PLACEHOLDER_RE, (_match, name) => {
877
+ const value = vars[name];
878
+ if (value === void 0) {
879
+ missing.add(name);
880
+ return "";
881
+ }
882
+ return value;
883
+ });
884
+ if (missing.size > 0) {
885
+ throw new Error(`fleet prompt: unresolved template variables: ${[...missing].join(", ")} (pass --var name=value)`);
886
+ }
887
+ return rendered;
888
+ }
889
+
890
+ export {
891
+ FLEET_COMMAND_BASE_ENV,
892
+ loadFleetCommands,
893
+ resolveFleetCommandArgs,
894
+ validateFleetCommandArgs,
895
+ normalizeWriteBoundaryEntry,
896
+ normalizeWriteBoundary,
897
+ writeBoundaryCovers,
898
+ describeWriteBoundary,
899
+ fleetLoopCheckStepId,
900
+ fleetLoopRepairStepId,
901
+ validateFleetGraph,
902
+ fleetStepWriteBoundary,
903
+ fleetStepBoundaries,
904
+ parseFleetContract,
905
+ fleetCodeSteps,
906
+ FLEET_COMMANDS_REPO_PATH,
907
+ FLEET_COMMANDS_REMEDY,
908
+ FleetCommandRegistryMissingError,
909
+ validateFleetCommands,
910
+ resolveFleetReferences,
911
+ loadFleetContract,
912
+ listFleetContracts,
913
+ renderFleetPrompt
914
+ };
915
+ //# sourceMappingURL=chunk-KKEYGFX4.js.map