@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
@@ -1,3 +1,7 @@
1
+ import { parseWorkerContextSeed } from "../../worker/context-seed.js";
2
+ import { WORKER_STDIN_FRAME_MAX_BYTES } from "../../worker/protocol.js";
3
+ import { WORKER_CONTEXT_PREAMBLE } from "../context/worker/select.js";
4
+ import { persistWorkerContextSeed } from "../context/worker/store.js";
1
5
  /**
2
6
  * Dispatch domain wire-up (post-W5).
3
7
  *
@@ -29,7 +33,7 @@ import {
29
33
  } from "../../core/response-schema.js";
30
34
  import { isSkillActivation, type SkillActivation } from "../../core/skill-activation.js";
31
35
  import { rawDurationMs } from "../../core/timers.js";
32
- import { isBuiltinToolName, type ToolName, ToolNames } from "../../core/tool-names.js";
36
+ import { isBuiltinToolName, isHarnessExtensionToolName, type ToolName, ToolNames } from "../../core/tool-names.js";
33
37
  import {
34
38
  type AcpDelegationRunHandle,
35
39
  type AcpDelegationRunInput,
@@ -72,6 +76,7 @@ import {
72
76
  } from "../agents/spec.js";
73
77
  import type { ConfigContract } from "../config/contract.js";
74
78
  import type { ContextContract, ProjectPromptContext, ProjectStructuredContext } from "../context/contract.js";
79
+ import { enabledHarnessExtensionToolNames } from "../extensions/command-tools.js";
75
80
  import type { MiddlewareContract } from "../middleware/contract.js";
76
81
  import { workerSafetyOneLiner } from "../prompts/compiler.js";
77
82
  import type { PromptsContract } from "../prompts/contract.js";
@@ -706,6 +711,7 @@ function reportDispatchDiagnostic(scope: string, error: unknown): void {
706
711
  }
707
712
 
708
713
  const OUTCOME_CODE_SPECIFICITY: ReadonlyArray<RunOutcomeCode> = [
714
+ "worker_context_exhausted",
709
715
  "result_contract_exhausted",
710
716
  "loop_guard_tools_disabled_exhausted",
711
717
  "worker_tool_call_cap_exhausted",
@@ -1181,6 +1187,24 @@ export function buildDynamicPromptMessages(
1181
1187
  dynamicContext: WorkerDynamicContext = {},
1182
1188
  ): WorkerPromptMessage[] {
1183
1189
  const messages: WorkerPromptMessage[] = [];
1190
+ if (req.contextSeed) {
1191
+ const seed = parseWorkerContextSeed(req.contextSeed);
1192
+ const body =
1193
+ seed.provenance.mode === "fork"
1194
+ ? WORKER_CONTEXT_PREAMBLE
1195
+ : seed.messages
1196
+ .map((message) => {
1197
+ if (message.role !== "user") throw new Error("worker context: invalid portable packet");
1198
+ return typeof message.content === "string"
1199
+ ? message.content
1200
+ : message.content
1201
+ .filter((block) => block.type === "text")
1202
+ .map((block) => block.text)
1203
+ .join("\n");
1204
+ })
1205
+ .join("\n\n");
1206
+ messages.push({ id: "dispatch-worker-context", body, contentHash: sha256(body) });
1207
+ }
1184
1208
  if (dynamicContext.workspace) {
1185
1209
  const body = renderWorkerWorkspaceContext(dynamicContext.workspace);
1186
1210
  messages.push({ id: "dispatch-workspace", body, contentHash: sha256(body) });
@@ -1259,6 +1283,19 @@ export function buildDynamicPromptMessages(
1259
1283
  return messages;
1260
1284
  }
1261
1285
 
1286
+ function assertWorkerContextRequest(req: DispatchRequest, native: boolean): void {
1287
+ const mode = req.context?.mode ?? "isolated";
1288
+ if (mode === "isolated") {
1289
+ if (req.contextSeed !== undefined) throw new Error("worker context: isolated request cannot inherit a seed");
1290
+ return;
1291
+ }
1292
+ if (!req.contextSeed) throw new Error("worker context: inheritance requires a host-captured seed");
1293
+ const seed = parseWorkerContextSeed(req.contextSeed);
1294
+ if (seed.provenance.mode !== mode) throw new Error("worker context: seed mode differs from admitted request");
1295
+ if (mode === "fork" && !native)
1296
+ throw new Error("worker context: fork requires a native Pi runtime; use splice for external agents");
1297
+ }
1298
+
1262
1299
  interface ResolvedTarget {
1263
1300
  target: TargetDescriptor;
1264
1301
  runtime: RuntimeDescriptor;
@@ -1601,6 +1638,7 @@ function effectiveToolNames(
1601
1638
  * here rather than leaving the model to spend budget finding that out.
1602
1639
  */
1603
1640
  denied: ReadonlySet<string> = new Set(),
1641
+ cwd = process.cwd(),
1604
1642
  ): ReadonlyArray<ToolName> {
1605
1643
  if (!targetToolCapability(target)) return [];
1606
1644
  // A hermetic process registers no network plane, so the worker's registry
@@ -1609,9 +1647,13 @@ function effectiveToolNames(
1609
1647
  // attests; otherwise the run is refused for a mismatch instead of simply
1610
1648
  // running without network.
1611
1649
  const networkStripped = networkToolsDisabled();
1650
+ const harnessTools =
1651
+ target.runtime.kind === "http" && !writeConfined && allowedTools.some(isHarnessExtensionToolName)
1652
+ ? enabledHarnessExtensionToolNames(cwd)
1653
+ : new Set<string>();
1612
1654
  const names = allowedTools.filter(
1613
1655
  (tool): tool is ToolName =>
1614
- isBuiltinToolName(tool) &&
1656
+ (isBuiltinToolName(tool) || harnessTools.has(tool)) &&
1615
1657
  tool !== ToolNames.AskUser &&
1616
1658
  !(networkStripped && tool === ToolNames.WebFetch) &&
1617
1659
  !denied.has(tool) &&
@@ -1995,6 +2037,10 @@ function buildDispatchWorkerSpec(input: DispatchWorkerSpecInput, config?: Config
1995
2037
  // autonomy can only narrow (reviewer/judge runs pin read-only); a worker
1996
2038
  // never exceeds the orchestrator's authority.
1997
2039
  spec.autonomy = input.effectiveAutonomy;
2040
+ if (input.req.contextSeed && input.target.runtime.kind === "http")
2041
+ spec.contextSeed = parseWorkerContextSeed(input.req.contextSeed);
2042
+ if (Buffer.byteLength(JSON.stringify(spec), "utf8") + 1 > WORKER_STDIN_FRAME_MAX_BYTES)
2043
+ throw new Error("worker context: complete WorkerSpec exceeds the stdin frame budget; use a smaller splice");
1998
2044
  return spec;
1999
2045
  }
2000
2046
 
@@ -3572,6 +3618,7 @@ export function createDispatchBundle(
3572
3618
  providers,
3573
3619
  );
3574
3620
  let target = resolveTarget();
3621
+ assertWorkerContextRequest(req, target.runtime.kind === "http");
3575
3622
  const identity = (resolved: ResolvedTarget): string =>
3576
3623
  JSON.stringify([
3577
3624
  resolved.target.id,
@@ -3591,7 +3638,13 @@ export function createDispatchBundle(
3591
3638
  const sessionAutonomy = settings?.safety.autonomy ?? "auto-edit";
3592
3639
  const effectiveAutonomy = effectiveWorkerAutonomy(sessionAutonomy, req.autonomy, spec.capabilityClass);
3593
3640
  const effectiveTools = withLedgerToolNarrowing(
3594
- effectiveToolNames(admission.allowedTools, target, pathScope.writeBoundaries.length > 0, deniedToolNames(req)),
3641
+ effectiveToolNames(
3642
+ admission.allowedTools,
3643
+ target,
3644
+ pathScope.writeBoundaries.length > 0,
3645
+ deniedToolNames(req),
3646
+ req.cwd ?? process.cwd(),
3647
+ ),
3595
3648
  req,
3596
3649
  );
3597
3650
  assertPostRuntimeToolCompatibility(req.agentId, spec, effectiveTools, target);
@@ -3652,7 +3705,11 @@ export function createDispatchBundle(
3652
3705
  });
3653
3706
  const projectContextProvenance = projectContextProvenanceFor(tier, dynamicPromptMessages);
3654
3707
  const dynamicText = dynamicPromptMessages.map((message) => message.body).join("\n\n");
3655
- const compiledPromptHash = promptCompositionHash([systemPrompt, dynamicText]);
3708
+ const compiledPromptHash = promptCompositionHash([
3709
+ systemPrompt,
3710
+ dynamicText,
3711
+ ...(req.contextSeed ? [req.contextSeed.provenance.contentHash] : []),
3712
+ ]);
3656
3713
  const staticCompositionHash = promptHash(systemPrompt);
3657
3714
  const sessionShellHash = staticCompositionHash;
3658
3715
  const dynamicHash = dynamicPromptMessages.length > 0 ? sha256(dynamicText) : sha256("");
@@ -3724,6 +3781,7 @@ export function createDispatchBundle(
3724
3781
  // before the external agent is started.
3725
3782
  dispatchResultContract(req, spec);
3726
3783
  }
3784
+ assertWorkerContextRequest(req, false);
3727
3785
  if (!settings) throw new Error("dispatch: effective settings required for ACP delegation");
3728
3786
  const configured = settings.integrations.externalAgents.entries.find((entry) => entry.id === agentId);
3729
3787
  if (!configured) throw new Error(`dispatch: ACP delegation agent '${agentId}' not configured`);
@@ -3765,7 +3823,11 @@ export function createDispatchBundle(
3765
3823
  });
3766
3824
  const projectContextProvenance = projectContextProvenanceFor(tier, dynamicPromptMessages);
3767
3825
  const dynamicText = dynamicPromptMessages.map((message) => message.body).join("\n\n");
3768
- const compiledPromptHash = promptCompositionHash([systemPrompt, dynamicText]);
3826
+ const compiledPromptHash = promptCompositionHash([
3827
+ systemPrompt,
3828
+ dynamicText,
3829
+ ...(req.contextSeed ? [req.contextSeed.provenance.contentHash] : []),
3830
+ ]);
3769
3831
  const staticCompositionHash = promptHash(systemPrompt);
3770
3832
  const sessionShellHash = staticCompositionHash;
3771
3833
  const dynamicHash = dynamicPromptMessages.length > 0 ? sha256(dynamicText) : sha256("");
@@ -3829,6 +3891,7 @@ export function createDispatchBundle(
3829
3891
  const wireModelId = lifecycle.agentConfig.id;
3830
3892
  assertTargetNotCoolingDown(req, targetId, runtimeId, wireModelId);
3831
3893
 
3894
+ if (req.contextSeed) persistWorkerContextSeed(req.contextSeed);
3832
3895
  assertBudgetAdmitsRoute(req, { rates: null, provenance: "unknown" }, settings);
3833
3896
 
3834
3897
  const queuedIdentity =
@@ -4084,6 +4147,7 @@ export function createDispatchBundle(
4084
4147
  node: LOCAL_RUN_NODE,
4085
4148
  ...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
4086
4149
  ...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
4150
+ ...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
4087
4151
  ...(req.gate !== undefined ? { gate: req.gate } : {}),
4088
4152
  ...(req.council !== undefined ? { council: req.council } : {}),
4089
4153
  ...(req.plan !== undefined ? { plan: req.plan } : {}),
@@ -4255,6 +4319,7 @@ export function createDispatchBundle(
4255
4319
  node: LOCAL_RUN_NODE,
4256
4320
  ...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
4257
4321
  ...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
4322
+ ...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
4258
4323
  ...(req.gate !== undefined ? { gate: req.gate } : {}),
4259
4324
  ...(req.council !== undefined ? { council: req.council } : {}),
4260
4325
  ...(req.plan !== undefined ? { plan: req.plan } : {}),
@@ -4720,6 +4785,7 @@ export function createDispatchBundle(
4720
4785
  shadow: () => observeShadowRoute(req, placed, settings),
4721
4786
  });
4722
4787
 
4788
+ if (req.contextSeed) persistWorkerContextSeed(req.contextSeed);
4723
4789
  const queuedIdentity =
4724
4790
  req.lineage === undefined && req.runIdHint !== undefined
4725
4791
  ? {
@@ -4776,27 +4842,34 @@ export function createDispatchBundle(
4776
4842
  const safetyDecisionCounts = { allowed: 0, blocked: 0, permissionRequested: 0 };
4777
4843
  const escalationCounts = { requested: 0, approved: 0, denied: 0, timedOut: 0 };
4778
4844
  const blockedAttempts: SafetyBlockedAttempt[] = [];
4779
- const spec = buildDispatchWorkerSpec(
4780
- {
4781
- req,
4782
- pathScope: lifecycle.pathScope,
4783
- target: lifecycle.target,
4784
- admission: lifecycle.admission,
4785
- recipe: lifecycle.recipe,
4786
- systemPrompt: lifecycle.systemPrompt,
4787
- dynamicPromptMessages: lifecycle.dynamicPromptMessages,
4788
- promptSignature: lifecycle.promptSignature,
4789
- toolSignature: lifecycle.toolSignature,
4790
- dynamicHash: lifecycle.dynamicHash,
4791
- middlewareSnapshot: middleware.snapshot(),
4792
- protectedArtifactState,
4793
- apiKey: lifecycle.apiKey,
4794
- effectiveAutonomy: lifecycle.effectiveAutonomy,
4795
- budget: lifecycle.budget,
4796
- ...(lifecycle.settings ? { settings: lifecycle.settings } : {}),
4797
- },
4798
- config ?? undefined,
4799
- );
4845
+ let spec: WorkerSpec;
4846
+ try {
4847
+ spec = buildDispatchWorkerSpec(
4848
+ {
4849
+ req,
4850
+ pathScope: lifecycle.pathScope,
4851
+ target: lifecycle.target,
4852
+ admission: lifecycle.admission,
4853
+ recipe: lifecycle.recipe,
4854
+ systemPrompt: lifecycle.systemPrompt,
4855
+ dynamicPromptMessages: lifecycle.dynamicPromptMessages,
4856
+ promptSignature: lifecycle.promptSignature,
4857
+ toolSignature: lifecycle.toolSignature,
4858
+ dynamicHash: lifecycle.dynamicHash,
4859
+ middlewareSnapshot: middleware.snapshot(),
4860
+ protectedArtifactState,
4861
+ apiKey: lifecycle.apiKey,
4862
+ effectiveAutonomy: lifecycle.effectiveAutonomy,
4863
+ budget: lifecycle.budget,
4864
+ ...(lifecycle.settings ? { settings: lifecycle.settings } : {}),
4865
+ },
4866
+ config ?? undefined,
4867
+ );
4868
+ } catch (error) {
4869
+ leaseSlot.release();
4870
+ if (req.lineage === undefined) await failQueuedAssignment(capacityLease.assignmentId);
4871
+ throw error;
4872
+ }
4800
4873
  // The agent ledger is orchestrator-owned. The worker sends a body and
4801
4874
  // nothing else; every attribution field below is stamped from this
4802
4875
  // process's own admission record, so no worker-supplied value can reach
@@ -5205,6 +5278,7 @@ export function createDispatchBundle(
5205
5278
  : {}),
5206
5279
  ...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
5207
5280
  ...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
5281
+ ...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
5208
5282
  ...(req.gate !== undefined ? { gate: req.gate } : {}),
5209
5283
  ...(req.council !== undefined ? { council: req.council } : {}),
5210
5284
  ...(req.plan !== undefined ? { plan: req.plan } : {}),
@@ -5445,6 +5519,7 @@ export function createDispatchBundle(
5445
5519
  : {}),
5446
5520
  ...(lifecycle.pipeline ? { pipeline: lifecycle.pipeline } : {}),
5447
5521
  ...(lifecycle.briefing ? { briefing: lifecycle.briefing } : {}),
5522
+ ...(req.contextSeed ? { workerContext: structuredClone(req.contextSeed.provenance) } : {}),
5448
5523
  ...(steering.length > 0 ? { steering: steering.map((entry) => ({ ...entry })) } : {}),
5449
5524
  ...(req.gate !== undefined ? { gate: req.gate } : {}),
5450
5525
  ...(req.council !== undefined ? { council: req.council } : {}),
@@ -6125,9 +6200,16 @@ export function createDispatchBundle(
6125
6200
  targets.targetOrder,
6126
6201
  providers,
6127
6202
  );
6203
+ assertWorkerContextRequest(req, target.runtime.kind === "http");
6128
6204
  enforceCapabilityGate(target.target.id, target.modelCapabilities, req.requiredCapabilities);
6129
6205
  const effectiveTools = withLedgerToolNarrowing(
6130
- effectiveToolNames(admission.allowedTools, target, pathScope.writeBoundaries.length > 0, deniedToolNames(req)),
6206
+ effectiveToolNames(
6207
+ admission.allowedTools,
6208
+ target,
6209
+ pathScope.writeBoundaries.length > 0,
6210
+ deniedToolNames(req),
6211
+ req.cwd ?? process.cwd(),
6212
+ ),
6131
6213
  req,
6132
6214
  );
6133
6215
  assertPostRuntimeToolCompatibility(req.agentId, agentSpec, effectiveTools, target);
@@ -1,3 +1,4 @@
1
+ import { type FleetCommandRegistry, resolveFleetCommandArgs } from "../agents/fleet-commands.js";
1
2
  /**
2
3
  * Fleet contract to execution plan.
3
4
  *
@@ -19,9 +20,11 @@ import {
19
20
  type FleetContract,
20
21
  type FleetContractStep,
21
22
  type FleetStepScope,
23
+ fleetCodeSteps,
22
24
  fleetLoopCheckStepId,
23
25
  fleetLoopRepairStepId,
24
26
  fleetStepWriteBoundary,
27
+ validateFleetCommands,
25
28
  } from "../agents/fleet-contract.js";
26
29
  import type { ResultContract } from "../agents/result-contract.js";
27
30
  import type { AgentAutomationAuthority } from "../agents/spec.js";
@@ -58,6 +61,8 @@ export interface FleetPlanAgentResolution {
58
61
  }
59
62
 
60
63
  export interface CompileFleetPlanInput {
64
+ commands?: FleetCommandRegistry | null;
65
+ vars?: Readonly<Record<string, string>>;
61
66
  contract: FleetContract;
62
67
  /**
63
68
  * Rendered prompt body. It describes the whole chain, so every agent node
@@ -117,6 +122,9 @@ function declaredLoops(steps: ReadonlyArray<FleetContractStep>): Map<string, Exe
117
122
 
118
123
  export function compileFleetExecutionPlan(input: CompileFleetPlanInput): ExecutionPlan {
119
124
  const { contract, task, resolveAgent } = input;
125
+ if (input.commands !== undefined) validateFleetCommands(contract, input.commands, input.vars ?? {});
126
+ else if (fleetCodeSteps(contract).some((step) => (step.args?.length ?? 0) > 0))
127
+ throw new Error("fleet code args: admission requires the operator command registry");
120
128
  const loops = declaredLoops(contract.steps);
121
129
  const steps: ExecutionPlanStepInput[] = [];
122
130
 
@@ -206,6 +214,7 @@ export function compileFleetExecutionPlan(input: CompileFleetPlanInput): Executi
206
214
  kind: "code",
207
215
  id: step.id,
208
216
  commandId: step.command,
217
+ ...(step.args ? { args: resolveFleetCommandArgs(step.args, input.vars) } : {}),
209
218
  scope: step.scope,
210
219
  dependencies,
211
220
  ...boundary(step.scope, step.writes),
@@ -225,6 +234,7 @@ export function compileFleetExecutionPlan(input: CompileFleetPlanInput): Executi
225
234
  kind: "code",
226
235
  id: checkId,
227
236
  commandId: step.check.command,
237
+ ...(step.check.args ? { args: resolveFleetCommandArgs(step.check.args, input.vars) } : {}),
228
238
  scope: step.check.scope,
229
239
  dependencies: checkDependencies,
230
240
  ...boundary(step.check.scope, step.check.writes),
@@ -689,6 +689,7 @@ export async function executeFleetRun(input: ExecuteFleetRunInput): Promise<Flee
689
689
  }
690
690
  const originalMessage = isCommit ? commitMessageFor(step, priorResults) : null;
691
691
  const outcome = await runCodeStep({
692
+ ...(step.args ? { args: step.args } : {}),
692
693
  stepId: step.id,
693
694
  command,
694
695
  workspaceRoot,
@@ -58,6 +58,7 @@ function envelopeFromReceipt(receipt: RunReceipt, status: RunStatus, receiptPath
58
58
  task: receipt.task,
59
59
  ...(receipt.budget !== undefined ? { budget: receipt.budget } : {}),
60
60
  ...(receipt.briefing !== undefined ? { briefing: receipt.briefing } : {}),
61
+ ...(receipt.workerContext !== undefined ? { workerContext: receipt.workerContext } : {}),
61
62
  ...(receipt.steering !== undefined ? { steering: receipt.steering } : {}),
62
63
  targetId: receipt.targetId,
63
64
  wireModelId: receipt.wireModelId,
@@ -155,6 +155,7 @@ export const RECEIPT_INTEGRITY_FIELD_COVERAGE = {
155
155
  ledgerContribution: true,
156
156
  sessionId: true,
157
157
  briefing: true,
158
+ workerContext: true,
158
159
  outcomeCode: true,
159
160
  steering: true,
160
161
  routeDecision: true,
@@ -232,6 +233,7 @@ function ledgerDigestFields(envelope: RunEnvelope): Record<string, unknown> {
232
233
  promptSignature: envelope.promptSignature ?? null,
233
234
  toolSignature: envelope.toolSignature ?? null,
234
235
  briefing: envelope.briefing ?? null,
236
+ ...(envelope.workerContext !== undefined ? { workerContext: envelope.workerContext } : {}),
235
237
  outcomeCode: envelope.outcomeCode ?? null,
236
238
  steering: envelope.steering ?? null,
237
239
  };
@@ -379,6 +381,8 @@ function firstLedgerMismatch(receipt: RunReceipt, envelope: RunEnvelope): string
379
381
  if (!Object.is(receiptValue, ledgerValue)) return field;
380
382
  }
381
383
  if (canonicalJson(receipt.briefing ?? null) !== canonicalJson(envelope.briefing ?? null)) return "briefing";
384
+ if (canonicalJson(receipt.workerContext ?? null) !== canonicalJson(envelope.workerContext ?? null))
385
+ return "workerContext";
382
386
  if (canonicalJson(receipt.budget ?? null) !== canonicalJson(envelope.budget ?? null)) return "budget";
383
387
  if (canonicalJson(receipt.steering ?? null) !== canonicalJson(envelope.steering ?? null)) return "steering";
384
388
  return null;
@@ -262,6 +262,7 @@ export function openLedger(opts?: LedgerOptions): Ledger {
262
262
  task: input.task,
263
263
  ...(input.budget !== undefined ? { budget: structuredClone(input.budget) } : {}),
264
264
  ...(input.briefing !== undefined ? { briefing: structuredClone(input.briefing) } : {}),
265
+ ...(input.workerContext !== undefined ? { workerContext: structuredClone(input.workerContext) } : {}),
265
266
  ...(input.steering !== undefined ? { steering: structuredClone(input.steering) } : {}),
266
267
  targetId: input.targetId,
267
268
  wireModelId: input.wireModelId,
@@ -1,3 +1,4 @@
1
+ import type { WorkerContextProvenance } from "../context/worker/contract.js";
1
2
  /**
2
3
  * Shared run + receipt types for the dispatch domain (Phase 6 slice 2).
3
4
  *
@@ -43,6 +44,7 @@ export type RunOutcome =
43
44
  export type RunOutcomeCode =
44
45
  | "vram_capacity_fit_failure"
45
46
  | "worker_tool_call_cap_exhausted"
47
+ | "worker_context_exhausted"
46
48
  | "loop_guard_tools_disabled_exhausted"
47
49
  | "result_contract_exhausted"
48
50
  | "worker_final_output_missing"
@@ -52,6 +54,7 @@ export function isRunOutcomeCode(value: unknown): value is RunOutcomeCode {
52
54
  return (
53
55
  value === "vram_capacity_fit_failure" ||
54
56
  value === "worker_tool_call_cap_exhausted" ||
57
+ value === "worker_context_exhausted" ||
55
58
  value === "loop_guard_tools_disabled_exhausted" ||
56
59
  value === "result_contract_exhausted" ||
57
60
  value === "worker_final_output_missing" ||
@@ -455,6 +458,7 @@ export interface RunEnvelope {
455
458
  budget?: RunToolBudgetEnvelope;
456
459
  /** Present only when a bounded parent briefing was sent as dynamic task data. */
457
460
  briefing?: RunBriefingProvenance;
461
+ workerContext?: WorkerContextProvenance;
458
462
  /** Sent steering provenance in stable per-run sequence order; prose is never persisted. */
459
463
  steering?: ReadonlyArray<RunSteeringProvenance>;
460
464
  targetId: string;
@@ -801,6 +805,7 @@ export interface RunReceipt {
801
805
  budget?: RunToolBudgetEnvelope;
802
806
  /** Proof of briefing content without copying its prose into the receipt. */
803
807
  briefing?: RunBriefingProvenance;
808
+ workerContext?: WorkerContextProvenance;
804
809
  /** Sent steering provenance in stable per-run sequence order; prose is never persisted. */
805
810
  steering?: ReadonlyArray<RunSteeringProvenance>;
806
811
  targetId: string;
@@ -1,3 +1,4 @@
1
+ import { parseWorkerContextPolicy, type WorkerContextPolicy } from "../context/worker/contract.js";
1
2
  /**
2
3
  * Validate a dispatch job spec before it enters the queue. Pure function, no
3
4
  * I/O. Accepts unknown input so callers can hand it raw JSON or CLI args
@@ -74,6 +75,7 @@ export interface JobSpec {
74
75
  task: string;
75
76
  /** Bounded parent-composed context delivered as untrusted dynamic task data. */
76
77
  briefing?: string;
78
+ context?: WorkerContextPolicy;
77
79
  workerProfile?: string;
78
80
  workerRuntime?: string;
79
81
  delegationAgentId?: string;
@@ -188,6 +190,7 @@ const KNOWN_KEYS = new Set([
188
190
  "executionRole",
189
191
  "task",
190
192
  "briefing",
193
+ "context",
191
194
  "workerProfile",
192
195
  "workerRuntime",
193
196
  "delegationAgentId",
@@ -264,6 +267,14 @@ export function validateJobSpec(spec: unknown): Validated {
264
267
  errors.push("executionRole must be a known execution role");
265
268
  }
266
269
 
270
+ let context: WorkerContextPolicy | undefined;
271
+ if (spec.context !== undefined) {
272
+ try {
273
+ context = parseWorkerContextPolicy(spec.context);
274
+ } catch (error) {
275
+ errors.push(error instanceof Error ? error.message : String(error));
276
+ }
277
+ }
267
278
  let briefing: string | undefined;
268
279
  if ("briefing" in spec && spec.briefing !== undefined) {
269
280
  if (typeof spec.briefing !== "string") {
@@ -560,6 +571,7 @@ export function validateJobSpec(spec: unknown): Validated {
560
571
  task: task as string,
561
572
  };
562
573
  if (briefing !== undefined) out.briefing = briefing;
574
+ if (context !== undefined) out.context = context;
563
575
  if (typeof spec.workerProfile === "string") out.workerProfile = spec.workerProfile;
564
576
  if (typeof spec.workerRuntime === "string") out.workerRuntime = spec.workerRuntime;
565
577
  if (typeof spec.delegationAgentId === "string") out.delegationAgentId = spec.delegationAgentId;
@@ -14,7 +14,7 @@ export function workspaceCheckpointRef(kind: "loop" | "compete", identity: strin
14
14
  * The immutable ref makes retries idempotent and keeps the object alive across GC. */
15
15
  export function captureWorkspaceCheckpoint(cwd: string, ref: string, message: string): string {
16
16
  if (!/^refs\/clio-coder\/(loop|compete)\/[a-f0-9]{64}$/.test(ref)) throw new Error("invalid workspace checkpoint ref");
17
- const directory = mkdtempSync(join(tmpdir(), "clio-checkpoint-index-"));
17
+ const directory = mkdtempSync(join(tmpdir(), "clio-coder-checkpoint-index-"));
18
18
  const env = buildSafeToolEnv({
19
19
  GIT_INDEX_FILE: join(directory, "index"),
20
20
  GIT_AUTHOR_NAME: "Clio checkpoint",
@@ -18,6 +18,7 @@ export interface EvidenceFailureFacts {
18
18
  * model, harness, or environment by guesswork.
19
19
  */
20
20
  export function attributeEvidenceFailure(facts: EvidenceFailureFacts): EvidenceTag {
21
+ if (facts.outcomeCode === "worker_context_exhausted") return "context-overflow";
21
22
  if (
22
23
  facts.outcomeCode === "worker_tool_call_cap_exhausted" ||
23
24
  facts.outcomeCode === "loop_guard_tools_disabled_exhausted"
@@ -1,3 +1,4 @@
1
+ import { parseWorkerContextProvenance } from "../../worker/context-seed.js";
1
2
  import type { GateDecisionArtifact, GateDecisionVerification } from "../dispatch/gate-decisions.js";
2
3
  import { RUN_RECEIPT_INTEGRITY_VERSION, verifyReceiptIntegrity } from "../dispatch/receipt-integrity.js";
3
4
  import type {
@@ -72,6 +73,7 @@ export type TrustArtifactKind =
72
73
  | "gate_decision"
73
74
  | "briefing"
74
75
  | "project_context"
76
+ | "worker_context"
75
77
  | "autonomy_policy"
76
78
  | "finish_contract_evidence"
77
79
  | "evidence_bundle"
@@ -206,6 +208,7 @@ const ARTIFACT_KINDS: ReadonlySet<string> = new Set([
206
208
  "gate_decision",
207
209
  "briefing",
208
210
  "project_context",
211
+ "worker_context",
209
212
  "autonomy_policy",
210
213
  "finish_contract_evidence",
211
214
  "evidence_bundle",
@@ -423,6 +426,7 @@ export type PersistedRunReceiptTrustFacts = Pick<RunReceipt, "runId"> &
423
426
  | "validationGrounding"
424
427
  | "briefing"
425
428
  | "projectContext"
429
+ | "workerContext"
426
430
  | "autonomyEnforcement"
427
431
  >
428
432
  >;
@@ -693,8 +697,21 @@ function recordedProjectContextHash(context: RunProjectContextProvenance | undef
693
697
  return validNoneTierProjectContext(context) ? context.contentHash : undefined;
694
698
  }
695
699
 
700
+ function validWorkerContext(value: unknown): boolean {
701
+ try {
702
+ parseWorkerContextProvenance(value);
703
+ return true;
704
+ } catch {
705
+ return false;
706
+ }
707
+ }
708
+
696
709
  function contextArtifacts(receipt: PersistedRunReceiptTrustFacts): TrustArtifactReference[] {
697
710
  const artifacts = [receiptReference(receipt)];
711
+ if (receipt.workerContext !== undefined && validWorkerContext(receipt.workerContext))
712
+ artifacts.push(
713
+ sha256Reference("worker_context", `${receipt.runId}:worker-context`, receipt.workerContext.contentHash),
714
+ );
698
715
  if (receipt.briefing !== undefined && validBriefing(receipt.briefing)) {
699
716
  artifacts.push(sha256Reference("briefing", `${receipt.runId}:briefing`, receipt.briefing.contentHash));
700
717
  }
@@ -713,10 +730,12 @@ export function adaptRunReceiptContextStatus(
713
730
  const artifacts = contextArtifacts(receipt);
714
731
  const source = receiptSource(receipt);
715
732
  const briefingInvalid = receipt.briefing !== undefined && !validBriefing(receipt.briefing);
716
- if (briefingInvalid) return attributed("invalid", source, DISPATCH_AUTHORITY, artifacts);
733
+ if (briefingInvalid || (receipt.workerContext !== undefined && !validWorkerContext(receipt.workerContext)))
734
+ return attributed("invalid", source, DISPATCH_AUTHORITY, artifacts);
717
735
  const context = receipt.projectContext;
718
736
  if (context === undefined) {
719
- if (receipt.briefing !== undefined) return attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
737
+ if (receipt.briefing !== undefined || receipt.workerContext !== undefined)
738
+ return attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
720
739
  return attributed("unknown", compatibilitySource(receipt, "projectContext"), COMPATIBILITY_AUTHORITY, artifacts);
721
740
  }
722
741
  if (context.tier === "none") {
@@ -724,7 +743,7 @@ export function adaptRunReceiptContextStatus(
724
743
  if (bare) {
725
744
  // Nothing structured was sent: the axis does not apply unless a
726
745
  // briefing was recorded, which is context of its own.
727
- return receipt.briefing === undefined
746
+ return receipt.briefing === undefined && receipt.workerContext === undefined
728
747
  ? attributed("not_applicable", source, DISPATCH_AUTHORITY, artifacts)
729
748
  : attributed("recorded", source, DISPATCH_AUTHORITY, artifacts);
730
749
  }