@iowarp/clio-coder 0.4.2 → 0.4.4

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 (523) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/CONTRIBUTING.md +86 -19
  3. package/README.md +35 -6
  4. package/dist/{acp-TMDQZDIG.js → acp-WNAYYF4F.js} +12 -13
  5. package/dist/{agents-5N5NG3XG.js → agents-3OKXHLOI.js} +60 -57
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-Z5CCBXKQ.js → auth-VKNNMGPU.js} +21 -19
  8. package/dist/{builtins-K6TNDT24.js → builtins-WGALA46I.js} +9 -4
  9. package/dist/{chunk-XE3PCIXH.js → chunk-23L32XTI.js} +12 -9
  10. package/dist/{chunk-I64IFBLB.js → chunk-25QBEXRS.js} +18 -11
  11. package/dist/{chunk-CDNVLKUX.js → chunk-26QSH3EJ.js} +13 -7
  12. package/dist/{chunk-QQLGQY2A.js → chunk-2ASED4PZ.js} +22 -22
  13. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  14. package/dist/chunk-2DSOYNFC.js +108 -0
  15. package/dist/{chunk-72GZI5EV.js → chunk-2JH2WHGE.js} +2 -2
  16. package/dist/{chunk-I66EAJFY.js → chunk-2WZ546HR.js} +267 -232
  17. package/dist/{chunk-O3YUNJZ2.js → chunk-2ZSONWVL.js} +82 -25
  18. package/dist/{chunk-2NHR3NAY.js → chunk-36CT5VVL.js} +331 -42
  19. package/dist/{chunk-2X4RYJTJ.js → chunk-3GY4F45V.js} +3 -3
  20. package/dist/{chunk-ZW55JB7N.js → chunk-3ODX73FK.js} +4 -6
  21. package/dist/{chunk-PBP4B7XR.js → chunk-3UNOLWNZ.js} +3 -3
  22. package/dist/{chunk-4JDLP6ZS.js → chunk-3UUXNFEX.js} +14 -10
  23. package/dist/{chunk-RKSR6VSF.js → chunk-4IUZQIJ3.js} +29 -1
  24. package/dist/{chunk-ZW4HH5JJ.js → chunk-4M6Z5QVF.js} +6 -6
  25. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  26. package/dist/{chunk-M2DAX4F6.js → chunk-4WR7VSYB.js} +2 -2
  27. package/dist/{chunk-FSP7CMNU.js → chunk-54X7T7DK.js} +61 -6
  28. package/dist/{chunk-54ODD65L.js → chunk-5636DCO5.js} +4 -4
  29. package/dist/chunk-57XXR6DR.js +3763 -0
  30. package/dist/{chunk-3KIPBMUA.js → chunk-5ICU3EUH.js} +2 -2
  31. package/dist/{chunk-77QIVUZB.js → chunk-5MEZN6CB.js} +4 -4
  32. package/dist/{chunk-O42A54GG.js → chunk-5OIVVPHF.js} +2 -2
  33. package/dist/{chunk-YJISEZKC.js → chunk-5TUB6SLS.js} +6 -6
  34. package/dist/{chunk-IMXMHHMQ.js → chunk-6OSVSQL5.js} +341 -57
  35. package/dist/{chunk-Q4XWMHX6.js → chunk-6PAZTBPA.js} +14 -2
  36. package/dist/{chunk-FVDGR2ZL.js → chunk-6Q3CYFD3.js} +112 -39
  37. package/dist/{chunk-IDNA72AH.js → chunk-6QOTUPRG.js} +155 -36
  38. package/dist/{chunk-X7IARSHT.js → chunk-6UINWWS6.js} +16 -10
  39. package/dist/{chunk-CYZW7JHJ.js → chunk-72YIHOZQ.js} +9 -9
  40. package/dist/{chunk-IKSLQ4XV.js → chunk-75W7L2E2.js} +752 -861
  41. package/dist/{chunk-CRFOIAX3.js → chunk-7UGL4MB5.js} +6 -6
  42. package/dist/{chunk-HIICAHCJ.js → chunk-AUPNRN7C.js} +2 -2
  43. package/dist/{chunk-7BHIY2MW.js → chunk-BJVFZO5U.js} +8 -50
  44. package/dist/{chunk-B74PXLU7.js → chunk-CUSRQKPU.js} +65 -3
  45. package/dist/chunk-DQOVN6KV.js +386 -0
  46. package/dist/{chunk-E7GT7O5N.js → chunk-DT3LWJOB.js} +7 -4
  47. package/dist/chunk-DXKJURES.js +671 -0
  48. package/dist/{chunk-JBCS7CRR.js → chunk-EL24TAU4.js} +10 -10
  49. package/dist/{chunk-TPEQIQIE.js → chunk-ELWDPP3Y.js} +8 -8
  50. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  51. package/dist/chunk-EXLD33WO.js +381 -0
  52. package/dist/chunk-FEAXX7B6.js +101 -0
  53. package/dist/{chunk-RLYRBIYQ.js → chunk-FFUPXJC4.js} +90 -331
  54. package/dist/{chunk-5PFYMY2V.js → chunk-FTMGRKEF.js} +2 -2
  55. package/dist/{chunk-34BHNEE3.js → chunk-GHS5EBTQ.js} +58 -7
  56. package/dist/{chunk-DYHAXKHD.js → chunk-GWZNEVM2.js} +12 -8
  57. package/dist/chunk-GX5WYQO4.js +59 -0
  58. package/dist/chunk-GYV6VZOC.js +26 -0
  59. package/dist/{chunk-MQXIVJ35.js → chunk-HAXOFFRH.js} +5 -5
  60. package/dist/chunk-I2DWJ4GM.js +390 -0
  61. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  62. package/dist/{chunk-WNP7O5WZ.js → chunk-ID64D7PE.js} +4 -4
  63. package/dist/{chunk-XQRY4DTA.js → chunk-IGLP3ODT.js} +10 -10
  64. package/dist/chunk-IRXAATOX.js +539 -0
  65. package/dist/chunk-IXIY2H4R.js +44 -0
  66. package/dist/{chunk-SSEYRH53.js → chunk-IZXGRF7P.js} +92 -147
  67. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  68. package/dist/{chunk-JWJGP5DQ.js → chunk-JEIYHLOR.js} +7 -7
  69. package/dist/{chunk-F2I26BDK.js → chunk-JQLNNIKT.js} +4 -4
  70. package/dist/{chunk-BYMNWQ7O.js → chunk-JSD46VO2.js} +315 -63
  71. package/dist/{chunk-AK5XEFVZ.js → chunk-JT2RFCC5.js} +64 -14
  72. package/dist/{chunk-MCMZMDAC.js → chunk-K6T2ZAMZ.js} +168 -6
  73. package/dist/{chunk-PGF63K6I.js → chunk-KFV5L5SK.js} +73 -4
  74. package/dist/{chunk-IHXBNWMM.js → chunk-KXDSS5WJ.js} +7 -3
  75. package/dist/{chunk-PJX3WQUQ.js → chunk-LLXSDWXS.js} +3 -3
  76. package/dist/{chunk-DZAW46HP.js → chunk-LTIKRKFL.js} +3 -3
  77. package/dist/{chunk-DZEK6CJN.js → chunk-N56KALIC.js} +21 -21
  78. package/dist/{chunk-B7HM5Z7T.js → chunk-NAI6ZFCY.js} +9 -5
  79. package/dist/{chunk-I66ZTYNP.js → chunk-NRO2BJRH.js} +2656 -2213
  80. package/dist/{chunk-ZGNYYXQ6.js → chunk-NXIMQY5W.js} +3 -3
  81. package/dist/{chunk-IKOZFYBN.js → chunk-NXYCB2VD.js} +149 -106
  82. package/dist/{chunk-CWVRRIEI.js → chunk-NZMNUPZZ.js} +2 -2
  83. package/dist/{chunk-462T4EGZ.js → chunk-O5CVSAG5.js} +2 -2
  84. package/dist/chunk-ODGTEFFI.js +50 -0
  85. package/dist/{chunk-3F7VUY77.js → chunk-OEJSLEPW.js} +2 -2
  86. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  87. package/dist/{chunk-5KW52TEP.js → chunk-Q4WO54TA.js} +132 -77
  88. package/dist/{chunk-W6NIE6OW.js → chunk-QUFRYSWI.js} +13 -7
  89. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  90. package/dist/chunk-R6Q67RJH.js +134 -0
  91. package/dist/{chunk-W4YEMFBX.js → chunk-RAY4OVGZ.js} +3 -3
  92. package/dist/{chunk-ZNT2M6TG.js → chunk-RQCKCSRL.js} +17 -17
  93. package/dist/{chunk-LJID3DYZ.js → chunk-RXTN6AKH.js} +3 -3
  94. package/dist/{chunk-P75RZCJW.js → chunk-RZDWV63N.js} +3 -3
  95. package/dist/{chunk-UH632ZYL.js → chunk-S6PYF2XF.js} +2 -2
  96. package/dist/{chunk-HJWWJ6IL.js → chunk-TOIVGRUX.js} +17 -5
  97. package/dist/{chunk-HLAFFSEK.js → chunk-TQAHXW6Y.js} +2 -2
  98. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  99. package/dist/{chunk-2HFQNRV3.js → chunk-UEPWCCTY.js} +12 -12
  100. package/dist/chunk-UOIZ7DA4.js +41 -0
  101. package/dist/{chunk-UH347SHR.js → chunk-USR47QNF.js} +11 -11
  102. package/dist/{chunk-AZ4WMN4W.js → chunk-V6HJFQZE.js} +2 -2
  103. package/dist/chunk-V76WTFTW.js +318 -0
  104. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  105. package/dist/{chunk-KPXDY6QF.js → chunk-XRZT5WY5.js} +2 -2
  106. package/dist/{chunk-UBRFI4HS.js → chunk-XULDXHTN.js} +142 -50
  107. package/dist/chunk-XXYSBZIQ.js +283 -0
  108. package/dist/{chunk-HKMD33FO.js → chunk-Y55JBDO5.js} +405 -122
  109. package/dist/{chunk-XOXV5GKE.js → chunk-YD5GIKET.js} +17 -8
  110. package/dist/{chunk-XGDPUNND.js → chunk-YECAMM3D.js} +2 -2
  111. package/dist/{chunk-BO7Y52RY.js → chunk-YNFKXPEC.js} +7 -7
  112. package/dist/{chunk-VXMFAE2W.js → chunk-YPC6ZR5L.js} +19 -6
  113. package/dist/{chunk-M2WXEHER.js → chunk-ZA4VCIGV.js} +2 -2
  114. package/dist/cli/index.js +42 -40
  115. package/dist/{clio-7VB377CC.js → clio-QLICPCF5.js} +7 -7
  116. package/dist/{code-nav-YVLCYA7V.js → code-nav-IJR2DBPR.js} +9 -9
  117. package/dist/{components-UBWCQSRW.js → components-2TGAI2RC.js} +5 -6
  118. package/dist/{config-4HVOS65E.js → config-IUA6OYNS.js} +88 -81
  119. package/dist/{configure-PIWO7B24.js → configure-VEPX4NMX.js} +26 -25
  120. package/dist/{context-KQYIWPWT.js → context-2DKHWH2T.js} +60 -45
  121. package/dist/{context-IYEHL3WQ.js → context-4MPR7WKB.js} +78 -69
  122. package/dist/{context-N6ZE3LGJ.js → context-BOYF5EJM.js} +15 -11
  123. package/dist/{context-clear-G4OGZJDS.js → context-clear-S4ZJCQUX.js} +73 -65
  124. package/dist/context-map-COB37XXN.js +505 -0
  125. package/dist/{context-working-set-BWLF6LJP.js → context-working-set-3I3FYX6Y.js} +18 -17
  126. package/dist/detail-A7JAVSIG.js +98 -0
  127. package/dist/{dispatch-runner-2QQAITS3.js → dispatch-runner-RJ5I2F2O.js} +99 -75
  128. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  129. package/dist/{doctor-LHBD36VU.js → doctor-DKICC2SN.js} +71 -48
  130. package/dist/{eval-C45FYRJ6.js → eval-OQOQUDHK.js} +308 -146
  131. package/dist/{eval-inventory-6DEJPLBF.js → eval-inventory-Y6QRFOH5.js} +4 -4
  132. package/dist/{evidence-6SHONYAF.js → evidence-4DQ25GUQ.js} +79 -175
  133. package/dist/evidence-4F5USFKH.js +208 -0
  134. package/dist/{evolve-KRKMV72X.js → evolve-GSS52E5J.js} +71 -67
  135. package/dist/{extensions-KPZ2UHBB.js → extensions-G7MFLYHT.js} +8 -9
  136. package/dist/{fleet-IVTCKDHT.js → fleet-Q37YHHAQ.js} +126 -118
  137. package/dist/{fleet-commands-EDWL3IT7.js → fleet-commands-G7E4N7SM.js} +16 -13
  138. package/dist/{fleet-decisions-YP3YEFGK.js → fleet-decisions-O7M6QBA2.js} +9 -8
  139. package/dist/{fleet-graph-ZFWKHY2M.js → fleet-graph-TOUBW6OW.js} +21 -20
  140. package/dist/{fleet-inspect-FVUNCBML.js → fleet-inspect-SW33JJNI.js} +65 -60
  141. package/dist/{fleet-preflight-UN5XED4R.js → fleet-preflight-CV2655TW.js} +4 -5
  142. package/dist/{fleet-validate-XOWC4HSX.js → fleet-validate-KESZX2YH.js} +25 -24
  143. package/dist/{fleet-verify-UN3SODEL.js → fleet-verify-UQPMTVE3.js} +66 -61
  144. package/dist/{fleet-view-TWHJKCN6.js → fleet-view-MN2VG4MR.js} +65 -60
  145. package/dist/{init-T2QORQ3Y.js → init-PXEXQSBF.js} +90 -82
  146. package/dist/{interop-IN5I2A66.js → interop-ZG5T62U3.js} +12 -13
  147. package/dist/inventory-C26CFDRR.js +101 -0
  148. package/dist/{library-LSCATDLZ.js → library-B2W4N74O.js} +29 -29
  149. package/dist/{memory-HYOKAGGJ.js → memory-YCANYS5A.js} +73 -69
  150. package/dist/{models-2GPMFYCM.js → models-GERTU3YI.js} +51 -47
  151. package/dist/{monitor-E4ASVUJH.js → monitor-CPNIUULB.js} +74 -67
  152. package/dist/{orchestrator-DDMPR3PY.js → orchestrator-J4BSH4WQ.js} +1288 -1606
  153. package/dist/{panes-E3RUXOW5.js → panes-BOHAEGYC.js} +4 -4
  154. package/dist/{panes-IXKLOKA2.js → panes-NXSLDQZ2.js} +10 -11
  155. package/dist/{paths-L7LGY6RN.js → paths-VSUWNC22.js} +6 -7
  156. package/dist/reset-TNWTB5LU.js +343 -0
  157. package/dist/{resources-OTRSN34L.js → resources-4PXNMD5G.js} +29 -22
  158. package/dist/{run-5DEYH5QK.js → run-D6XJ34CN.js} +132 -132
  159. package/dist/{share-IHWTLO3M.js → share-2NWMJJEE.js} +27 -27
  160. package/dist/{skills-IYMXMKW4.js → skills-KR7WON5G.js} +40 -33
  161. package/dist/{skills-eval-DROHSJAR.js → skills-eval-O2ZNOLDS.js} +81 -77
  162. package/dist/{skills-inventory-D7X4L4ZX.js → skills-inventory-ZZOUBK7O.js} +23 -22
  163. package/dist/{slash-commands-QBM7UZ3B.js → slash-commands-ZXPJD64J.js} +47 -37
  164. package/dist/{steer-Z5DO23FJ.js → steer-XA25PSCS.js} +4 -4
  165. package/dist/{support-U7QOWY26.js → support-7EMVWYG2.js} +6 -6
  166. package/dist/{targets-P2FUC4IL.js → targets-OMH2XCSN.js} +50 -49
  167. package/dist/tasks-IPAGMEIX.js +36 -0
  168. package/dist/{terminal-lease-YREJ3JX2.js → terminal-lease-C2J3JYRE.js} +4 -4
  169. package/dist/{tools-5B7RO6MV.js → tools-EFFEAIDP.js} +8 -9
  170. package/dist/{trace-YMGMUM6A.js → trace-FXMXUZUF.js} +7 -7
  171. package/dist/uninstall-HALS6BLF.js +407 -0
  172. package/dist/upgrade-MS72RJEP.js +306 -0
  173. package/dist/{usage-ME5MPXGX.js → usage-NHG6MCJM.js} +162 -108
  174. package/dist/{verifiers-BVZ7IWOO.js → verifiers-7AUNVXDY.js} +155 -22
  175. package/dist/{verify-5K7ZKQFC.js → verify-FWYGPKMR.js} +14 -12
  176. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  177. package/dist/{wiki-generate-F5W5QTYY.js → wiki-generate-743CIGJW.js} +99 -90
  178. package/dist/{with-panes-BYOJCLAM.js → with-panes-BDQEWBRT.js} +10 -10
  179. package/dist/worker/entry.js +72 -68
  180. package/docs/README.md +3 -2
  181. package/docs/architecture/acp.md +17 -0
  182. package/docs/architecture/artifact-placement.md +1 -0
  183. package/docs/architecture/artifact-versions.md +2 -2
  184. package/docs/architecture/context-engine.md +4 -0
  185. package/docs/architecture/dispatch-typed-intent.md +1 -1
  186. package/docs/architecture/evidence-and-memory.md +1 -1
  187. package/docs/architecture/middleware-and-components.md +1 -1
  188. package/docs/architecture/model-catalog.md +21 -10
  189. package/docs/architecture/observability.md +19 -2
  190. package/docs/architecture/prompt-envelope-and-tools.md +17 -5
  191. package/docs/architecture/provider-adapter-cookbook.md +63 -0
  192. package/docs/architecture/safety-model.md +25 -22
  193. package/docs/architecture/tui-design.md +1 -1
  194. package/docs/guide/built-in-agents.md +25 -11
  195. package/docs/guide/commands-and-modes.md +18 -3
  196. package/docs/guide/configuration-and-targets.md +100 -10
  197. package/docs/guide/configuration-reference.md +17 -7
  198. package/docs/guide/environment-variables.md +4 -2
  199. package/docs/guide/installation-and-lifecycle.md +37 -4
  200. package/docs/guide/proactive-memory.md +66 -55
  201. package/docs/guide/skills-marketplace.md +18 -0
  202. package/docs/guide/tool-usage.md +78 -3
  203. package/docs/history/config-knobs-audit.md +2 -2
  204. package/docs/process/development-pipeline.md +40 -2
  205. package/docs/process/eval-runner.md +67 -3
  206. package/docs/process/git-commit-provenance.md +15 -0
  207. package/docs/process/release-cut-checklist.md +207 -0
  208. package/docs/process/scientific-validation.md +18 -17
  209. package/evals/behavioral-machinery-support.ts +1 -0
  210. package/evals/behavioral-machinery.yaml +1 -1
  211. package/evals/behavioral-model.yaml +3 -2
  212. package/package.json +2 -2
  213. package/skills/README.md +7 -5
  214. package/skills/coding/ast-grep/SKILL.md +101 -30
  215. package/skills/coding/ast-grep/evals.md +26 -0
  216. package/skills/coding/coding-standards/SKILL.md +47 -2
  217. package/skills/coding/coding-standards/evals.md +23 -0
  218. package/skills/coding/prototype/SKILL.md +87 -28
  219. package/skills/coding/prototype/evals.md +19 -0
  220. package/skills/coding/tdd/SKILL.md +80 -53
  221. package/skills/coding/tdd/evals.md +20 -0
  222. package/skills/context/context-handoff/SKILL.md +43 -2
  223. package/skills/context/context-handoff/evals.md +44 -0
  224. package/skills/context/context-prime/SKILL.md +45 -15
  225. package/skills/context/context-prime/evals.md +45 -0
  226. package/skills/git/branch-closeout/SKILL.md +132 -0
  227. package/skills/git/branch-closeout/evals.md +133 -0
  228. package/skills/git/branch-closeout/references/closeout-checklist.md +81 -0
  229. package/skills/git/file-ticket/SKILL.md +77 -63
  230. package/skills/git/file-ticket/assets/issue-template.md +22 -0
  231. package/skills/git/file-ticket/evals.md +31 -26
  232. package/skills/git/file-ticket/references/issue-discovery.md +49 -0
  233. package/skills/git/fix-issue/SKILL.md +87 -64
  234. package/skills/git/fix-issue/evals.md +35 -31
  235. package/skills/git/fix-issue/references/diagnosis-and-rca.md +46 -0
  236. package/skills/git/resolve-merge-conflicts/SKILL.md +100 -51
  237. package/skills/git/resolve-merge-conflicts/evals.md +52 -25
  238. package/skills/git/resolve-merge-conflicts/references/conflict-matrix.md +126 -0
  239. package/skills/git/ship/SKILL.md +103 -67
  240. package/skills/git/ship/assets/pr-template.md +21 -0
  241. package/skills/git/ship/evals.md +44 -28
  242. package/skills/git/ship/references/remote-and-branch-policy.md +62 -0
  243. package/skills/git/worktree-create/SKILL.md +80 -50
  244. package/skills/git/worktree-create/evals.md +40 -33
  245. package/skills/git/worktree-create/references/worktree-setup.md +62 -66
  246. package/skills/git/worktree-merge/SKILL.md +112 -65
  247. package/skills/git/worktree-merge/evals.md +42 -34
  248. package/skills/git/worktree-merge/references/merge-strategies.md +52 -0
  249. package/skills/planning/archify/SKILL.md +196 -0
  250. package/skills/planning/archify/evals.md +65 -0
  251. package/skills/planning/architecture/SKILL.md +61 -12
  252. package/skills/planning/architecture/evals.md +65 -0
  253. package/skills/planning/backlog/SKILL.md +130 -14
  254. package/skills/planning/backlog/evals.md +142 -0
  255. package/skills/planning/prd/SKILL.md +47 -6
  256. package/skills/planning/prd/evals.md +54 -0
  257. package/skills/planning/product-intent/SKILL.md +57 -2
  258. package/skills/planning/product-intent/evals.md +70 -0
  259. package/skills/planning/tech-spec/SKILL.md +53 -2
  260. package/skills/planning/tech-spec/evals.md +73 -0
  261. package/skills/registry.yaml +58 -50
  262. package/skills/remote.yaml +13 -0
  263. package/skills/research/arxiv-literature/SKILL.md +76 -18
  264. package/skills/research/arxiv-literature/evals.md +50 -0
  265. package/skills/research/experiment-protocol/SKILL.md +20 -1
  266. package/skills/research/experiment-protocol/evals.md +23 -0
  267. package/skills/research/scientific-debugging/SKILL.md +24 -1
  268. package/skills/research/scientific-debugging/evals.md +18 -0
  269. package/skills/research/scientific-modernization/SKILL.md +26 -1
  270. package/skills/research/scientific-modernization/evals.md +27 -0
  271. package/skills/skill-marketplace.json +63 -28
  272. package/skills/workflow/cut-it/SKILL.md +64 -5
  273. package/skills/workflow/cut-it/evals.md +101 -0
  274. package/skills/workflow/design-council/SKILL.md +112 -27
  275. package/skills/workflow/design-council/evals.md +161 -0
  276. package/skills/workflow/grill-me/SKILL.md +85 -10
  277. package/skills/workflow/grill-me/evals.md +153 -0
  278. package/skills/workflow/workflow-distiller/SKILL.md +76 -17
  279. package/skills/workflow/workflow-distiller/evals.md +118 -0
  280. package/src/cli/args.ts +0 -8
  281. package/src/cli/configure-interop.ts +105 -13
  282. package/src/cli/configure-oauth.ts +57 -0
  283. package/src/cli/configure-onboarding.ts +980 -0
  284. package/src/cli/configure-target.ts +594 -0
  285. package/src/cli/configure.ts +1084 -529
  286. package/src/cli/context-map.ts +114 -0
  287. package/src/cli/context.ts +4 -0
  288. package/src/cli/doctor-state-size.ts +1 -12
  289. package/src/cli/doctor-validation-contract.ts +28 -0
  290. package/src/cli/doctor.ts +5 -0
  291. package/src/cli/evidence-detail.ts +1 -75
  292. package/src/cli/evidence-inventory.ts +1 -167
  293. package/src/cli/index.ts +3 -0
  294. package/src/cli/lifecycle-presenter.ts +436 -0
  295. package/src/cli/models.ts +10 -2
  296. package/src/cli/modes/print.ts +5 -1
  297. package/src/cli/reset.ts +228 -106
  298. package/src/cli/run.ts +7 -4
  299. package/src/cli/select.ts +664 -0
  300. package/src/cli/skills.ts +9 -2
  301. package/src/cli/targets.ts +3 -0
  302. package/src/cli/tasks.ts +84 -0
  303. package/src/cli/uninstall.ts +233 -165
  304. package/src/cli/upgrade.ts +210 -150
  305. package/src/cli/usage.ts +92 -27
  306. package/src/cli/validate-model.ts +3 -3
  307. package/src/cli/verifiers.ts +147 -1
  308. package/src/cli/wiki-generate.ts +1 -0
  309. package/src/core/commit-attribution.ts +41 -1
  310. package/src/core/config.ts +56 -0
  311. package/src/core/external-diagnostic.ts +44 -0
  312. package/src/core/gateway-routing.ts +157 -0
  313. package/src/core/git-commit-attribution.ts +46 -3
  314. package/src/core/run-overrides.ts +0 -5
  315. package/src/core/safe-exec.ts +17 -2
  316. package/src/core/skill-activation.ts +92 -2
  317. package/src/core/tool-names.ts +5 -2
  318. package/src/domains/agents/builtins/architect.md +1 -1
  319. package/src/domains/agents/builtins/coder.md +1 -1
  320. package/src/domains/agents/builtins/documenter.md +1 -1
  321. package/src/domains/agents/builtins/git-master.md +1 -1
  322. package/src/domains/agents/builtins/provenance.md +7 -7
  323. package/src/domains/agents/builtins/tester.md +1 -1
  324. package/src/domains/agents/builtins/verifier.md +2 -2
  325. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  326. package/src/domains/agents/builtins/world-knowledge.md +31 -0
  327. package/src/domains/agents/catalog.ts +1 -1
  328. package/src/domains/agents/result-contract.ts +70 -0
  329. package/src/domains/context/extension.ts +31 -7
  330. package/src/domains/context/refresh.ts +3 -0
  331. package/src/domains/context/wiki/frontmatter.ts +5 -2
  332. package/src/domains/context/wiki/generate.ts +6 -0
  333. package/src/domains/context/wiki/map-seed.ts +589 -0
  334. package/src/domains/context/wiki/plan.ts +2 -2
  335. package/src/domains/context/wiki/prompts.ts +43 -0
  336. package/src/domains/dispatch/active-route-planner.ts +4 -0
  337. package/src/domains/dispatch/admission.ts +29 -0
  338. package/src/domains/dispatch/agent-candidates.ts +10 -0
  339. package/src/domains/dispatch/budget-envelope.ts +86 -1
  340. package/src/domains/dispatch/capability-match.ts +1 -0
  341. package/src/domains/dispatch/capacity-lease.ts +17 -0
  342. package/src/domains/dispatch/code-step.ts +11 -4
  343. package/src/domains/dispatch/contract.ts +42 -8
  344. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  345. package/src/domains/dispatch/extension.ts +184 -56
  346. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  347. package/src/domains/dispatch/fleet-run.ts +1 -0
  348. package/src/domains/dispatch/host-verification.ts +114 -13
  349. package/src/domains/dispatch/intent.ts +28 -18
  350. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  351. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  352. package/src/domains/dispatch/reservation-store.ts +5 -3
  353. package/src/domains/dispatch/state.ts +15 -2
  354. package/src/domains/dispatch/types.ts +20 -2
  355. package/src/domains/dispatch/worker-model-metadata.ts +38 -0
  356. package/src/domains/eval/metrics/call-ledger-stream.ts +34 -11
  357. package/src/domains/eval/metrics/token-stream.ts +201 -31
  358. package/src/domains/eval/metrics/tracked.ts +40 -4
  359. package/src/domains/eval/runners/clio-run.ts +17 -11
  360. package/src/domains/eval/runners/context-index.ts +2 -7
  361. package/src/domains/eval/runners/context-init.ts +3 -6
  362. package/src/domains/eval/runners/external-command.ts +29 -11
  363. package/src/domains/eval/schema/suite.ts +28 -0
  364. package/src/domains/eval/schema/verdict.ts +2 -2
  365. package/src/domains/eval/suites/resolve.ts +13 -1
  366. package/src/domains/eval/suites/run.ts +24 -3
  367. package/src/domains/evidence/build.ts +102 -15
  368. package/src/domains/evidence/detail.ts +69 -0
  369. package/src/domains/evidence/eval.ts +13 -1
  370. package/src/domains/evidence/finish-contract-map.ts +5 -1
  371. package/src/domains/evidence/inventory.ts +167 -0
  372. package/src/domains/evidence/store.ts +16 -0
  373. package/src/domains/evidence/types.ts +12 -0
  374. package/src/domains/extensions/resources.ts +7 -0
  375. package/src/domains/interop/registry.ts +6 -2
  376. package/src/domains/interop/types.ts +4 -0
  377. package/src/domains/lifecycle/migrations/index.ts +4 -0
  378. package/src/domains/memory/task-memory-policy.ts +70 -26
  379. package/src/domains/memory/task-memory-telemetry.ts +1 -0
  380. package/src/domains/middleware/index.ts +0 -1
  381. package/src/domains/middleware/marketplace-offer.ts +22 -35
  382. package/src/domains/middleware/memory-intervention.ts +127 -32
  383. package/src/domains/middleware/memory-step-endpoint.ts +3 -2
  384. package/src/domains/middleware/runtime.ts +7 -3
  385. package/src/domains/middleware/skills-reminder.ts +31 -2
  386. package/src/domains/mux/detect.ts +3 -6
  387. package/src/domains/observability/accountability.ts +15 -1
  388. package/src/domains/observability/compaction-usage.ts +118 -0
  389. package/src/domains/observability/contract.ts +52 -7
  390. package/src/domains/observability/cost.ts +1 -1
  391. package/src/domains/observability/evidence-index.ts +10 -0
  392. package/src/domains/observability/extension.ts +15 -6
  393. package/src/domains/observability/out-of-turn-usage.ts +52 -21
  394. package/src/domains/observability/projection.ts +394 -45
  395. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  396. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  397. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  398. package/src/domains/providers/contract.ts +4 -1
  399. package/src/domains/providers/extension.ts +40 -9
  400. package/src/domains/providers/model-capabilities.ts +9 -0
  401. package/src/domains/providers/model-discovery.ts +3 -4
  402. package/src/domains/providers/model-runtime-capabilities.ts +15 -5
  403. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +48 -26
  404. package/src/domains/providers/runtimes/antigravity/antigravity-code.ts +225 -45
  405. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  406. package/src/domains/providers/runtimes/common/lmstudio-http.ts +6 -2
  407. package/src/domains/providers/runtimes/common/local-synth.ts +2 -0
  408. package/src/domains/providers/runtimes/protocol/litellm.ts +119 -29
  409. package/src/domains/providers/support.ts +11 -5
  410. package/src/domains/providers/target-model-cache.ts +25 -2
  411. package/src/domains/providers/types/capability-flags.ts +2 -0
  412. package/src/domains/providers/types/runtime-descriptor.ts +20 -1
  413. package/src/domains/providers/types/target-descriptor.ts +19 -0
  414. package/src/domains/resources/index.ts +3 -0
  415. package/src/domains/resources/skills/install.ts +72 -7
  416. package/src/domains/resources/skills/loader.ts +7 -0
  417. package/src/domains/resources/skills/marketplace.ts +63 -11
  418. package/src/domains/safety/action-classifier.ts +7 -0
  419. package/src/domains/safety/autonomy.ts +15 -0
  420. package/src/domains/safety/default-path-policy.ts +2 -0
  421. package/src/domains/safety/finish-contract-registration.ts +29 -14
  422. package/src/domains/safety/finish-contract.ts +252 -40
  423. package/src/domains/safety/index.ts +21 -1
  424. package/src/domains/safety/path-policy.ts +1 -1
  425. package/src/domains/safety/policy-engine.ts +60 -17
  426. package/src/domains/safety/protected-artifacts.ts +191 -88
  427. package/src/domains/safety/rigor.ts +53 -39
  428. package/src/domains/safety/run-effects.ts +2 -22
  429. package/src/domains/safety/skill-authority.ts +55 -0
  430. package/src/domains/safety/validation-contract.ts +388 -0
  431. package/src/domains/session/archive-readers.ts +10 -1
  432. package/src/domains/session/compaction/compact.ts +72 -22
  433. package/src/domains/session/decision-board.ts +101 -2
  434. package/src/domains/session/entries.ts +50 -7
  435. package/src/domains/session/extension.ts +4 -4
  436. package/src/domains/session/handoff.ts +2 -1
  437. package/src/domains/session/manager.ts +2 -3
  438. package/src/domains/session/task-board.ts +14 -1
  439. package/src/domains/session/tree/fork.ts +1 -2
  440. package/src/domains/session/tree/navigator.ts +1 -1
  441. package/src/domains/session/usage.ts +3 -3
  442. package/src/domains/user-tasks/acceptance.ts +56 -0
  443. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  444. package/src/domains/user-tasks/store.ts +34 -3
  445. package/src/engine/acp/adapter.ts +24 -6
  446. package/src/engine/acp/server.ts +21 -4
  447. package/src/engine/acp/transport.ts +53 -8
  448. package/src/engine/acp/types.ts +4 -0
  449. package/src/engine/agent.ts +13 -3
  450. package/src/engine/ai.ts +26 -8
  451. package/src/engine/antigravity/subprocess-runtime.ts +386 -120
  452. package/src/engine/api-registry.ts +3 -0
  453. package/src/engine/apis/ollama-native.ts +15 -0
  454. package/src/engine/apis/openai-completions.ts +117 -14
  455. package/src/engine/claude/subprocess-runtime.ts +107 -60
  456. package/src/engine/external-subprocess.ts +122 -6
  457. package/src/entry/background-model-metadata.ts +18 -0
  458. package/src/entry/compaction-prompt.ts +57 -0
  459. package/src/entry/orchestrator.ts +416 -218
  460. package/src/entry/task-memory-lifecycle.ts +35 -0
  461. package/src/interactive/chat-loop-messages.ts +13 -4
  462. package/src/interactive/chat-loop.ts +65 -2
  463. package/src/interactive/chat-renderer.ts +1 -0
  464. package/src/interactive/cost-overlay.ts +26 -2
  465. package/src/interactive/dispatch-board.ts +46 -717
  466. package/src/interactive/fleet-run-preview.ts +2 -1
  467. package/src/interactive/interactive-application.ts +3 -2
  468. package/src/interactive/interactive-presentation.ts +55 -12
  469. package/src/interactive/interactive-slash-runtime.ts +4 -2
  470. package/src/interactive/oracle.ts +5 -2
  471. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  472. package/src/interactive/overlays/message-picker.ts +2 -2
  473. package/src/interactive/overlays/settings.ts +2 -2
  474. package/src/interactive/overlays/tree-selector.ts +2 -2
  475. package/src/interactive/renderers/branch-summary.ts +1 -1
  476. package/src/interactive/renderers/worker-entry.ts +32 -0
  477. package/src/interactive/slash-autocomplete.ts +4 -6
  478. package/src/interactive/slash-commands.ts +49 -45
  479. package/src/interactive/slash-spec.ts +28 -0
  480. package/src/interactive/theme/labels.ts +19 -13
  481. package/src/interactive/turn-context.ts +9 -5
  482. package/src/interactive/turn-recovery.ts +8 -0
  483. package/src/interactive/turn-runtime.ts +27 -11
  484. package/src/interactive/turn-state.ts +7 -0
  485. package/src/interactive/view/artifacts.ts +2 -0
  486. package/src/interactive/worker-receipts.ts +1 -0
  487. package/src/interactive/worker-stream.ts +13 -4
  488. package/src/tools/bootstrap.ts +4 -0
  489. package/src/tools/builtin-tool-catalog.ts +31 -0
  490. package/src/tools/compete-worktrees.ts +7 -1
  491. package/src/tools/context/index.ts +30 -9
  492. package/src/tools/core-bootstrap.ts +16 -0
  493. package/src/tools/decide.ts +136 -0
  494. package/src/tools/dispatch-admission.ts +21 -0
  495. package/src/tools/dispatch-arguments.ts +1 -0
  496. package/src/tools/dispatch-event-text.ts +10 -0
  497. package/src/tools/dispatch-plan.ts +6 -2
  498. package/src/tools/dispatch-runner.ts +27 -1
  499. package/src/tools/dispatch-types.ts +6 -0
  500. package/src/tools/evidence.ts +96 -0
  501. package/src/tools/limitation.ts +76 -0
  502. package/src/tools/policy.ts +9 -0
  503. package/src/tools/presentation.ts +3 -0
  504. package/src/tools/registry.ts +11 -5
  505. package/src/tools/result-shaping.ts +17 -5
  506. package/src/tools/task-worktree.ts +13 -3
  507. package/src/tools/tasks.ts +10 -1
  508. package/src/tools/verify/authoring.ts +170 -83
  509. package/src/tools/verify/catalog.ts +122 -5
  510. package/src/tools/verify/index.ts +2 -1
  511. package/src/tools/verify/numeric.ts +298 -0
  512. package/src/tools/verify/perf.ts +143 -0
  513. package/src/tools/verify/scripts.ts +229 -2
  514. package/src/tools/worker-evidence.ts +3 -1
  515. package/src/worker/spec-contract.ts +4 -0
  516. package/dist/chunk-2Z2IKEXI.js +0 -1554
  517. package/dist/chunk-RVG5JXAL.js +0 -41
  518. package/dist/chunk-T56WDKA5.js +0 -183
  519. package/dist/chunk-VN3SHNBN.js +0 -313
  520. package/dist/chunk-VPKWYKEY.js +0 -169
  521. package/dist/reset-OAQP3W4O.js +0 -230
  522. package/dist/uninstall-N34PCTGJ.js +0 -331
  523. package/dist/upgrade-PXK3S2YM.js +0 -325
@@ -0,0 +1,114 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { mkdirSync, writeFileSync } from "node:fs";
3
+ import path from "node:path";
4
+ import { CLIO_ARTIFACT_DIR } from "../core/artifact-paths.js";
5
+ import { readCodewiki } from "../domains/context/codewiki/artifact.js";
6
+ import { buildArchitectureSeed, serializeArchitectureSeed } from "../domains/context/wiki/map-seed.js";
7
+
8
+ const HELP = `Usage:
9
+ clio-coder context map [--out <path>] [--json]
10
+
11
+ Write an archify architecture seed for the current repository from the codewiki
12
+ index, without model calls. The seed is the starting spec for the archify skill:
13
+ components are the largest directory areas, connections are collapsed import
14
+ edges, and sources point at indexed files and lines.
15
+
16
+ Options:
17
+ --out <path> where to write the seed (default: ${CLIO_ARTIFACT_DIR}/maps/<repo>.architecture.json)
18
+ --json print machine-readable details about the written seed
19
+ `;
20
+
21
+ /** Where the seed lands when the operator names no path: a human-transient map artifact. */
22
+ function defaultMapSeedPath(cwd: string): string {
23
+ return path.join(cwd, CLIO_ARTIFACT_DIR, "maps", `${path.basename(cwd)}.architecture.json`);
24
+ }
25
+
26
+ function gitValue(cwd: string, args: string[]): string | null {
27
+ try {
28
+ const out = execFileSync("git", args, { cwd, timeout: 5000, stdio: ["ignore", "pipe", "ignore"] })
29
+ .toString("utf8")
30
+ .trim();
31
+ return out.length > 0 ? out : null;
32
+ } catch {
33
+ return null;
34
+ }
35
+ }
36
+
37
+ /** The origin remote as an https URL and HEAD as a full sha, when git can say. */
38
+ function repositoryFacts(cwd: string): { url: string; revision: string } | undefined {
39
+ const remote = gitValue(cwd, ["remote", "get-url", "origin"]);
40
+ const revision = gitValue(cwd, ["rev-parse", "--verify", "HEAD"]);
41
+ if (!remote || !revision) return undefined;
42
+ let url = remote.endsWith(".git") ? remote.slice(0, -4) : remote;
43
+ const ssh = /^git@([^:]+):(.+)$/.exec(url);
44
+ if (ssh) url = `https://${ssh[1]}/${ssh[2]}`;
45
+ return { url, revision };
46
+ }
47
+
48
+ export async function runContextMapCommand(args: string[]): Promise<number> {
49
+ if (args.includes("--help") || args.includes("-h")) {
50
+ process.stdout.write(HELP);
51
+ return 0;
52
+ }
53
+ let out: string | null = null;
54
+ let json = false;
55
+ for (let index = 0; index < args.length; index += 1) {
56
+ const arg = args[index] as string;
57
+ if (arg === "--json") {
58
+ json = true;
59
+ continue;
60
+ }
61
+ if (arg === "--out") {
62
+ const value = args[index + 1];
63
+ if (!value || value.startsWith("--")) {
64
+ process.stderr.write("clio-coder context map: --out requires a path\n");
65
+ return 2;
66
+ }
67
+ out = value;
68
+ index += 1;
69
+ continue;
70
+ }
71
+ process.stderr.write(`clio-coder context map: unknown flag ${arg}\n`);
72
+ return 2;
73
+ }
74
+ const cwd = process.cwd();
75
+ const codewiki = readCodewiki(cwd);
76
+ if (!codewiki) {
77
+ process.stderr.write(
78
+ "clio-coder context map: no codewiki index in .clio-coder/codewiki.json; run `clio-coder context index` first\n",
79
+ );
80
+ return 1;
81
+ }
82
+ const seed = buildArchitectureSeed(codewiki, {
83
+ title: path.basename(cwd),
84
+ repository: repositoryFacts(cwd),
85
+ });
86
+ const target = out ? path.resolve(cwd, out) : defaultMapSeedPath(cwd);
87
+ mkdirSync(path.dirname(target), { recursive: true });
88
+ writeFileSync(target, serializeArchitectureSeed(seed), "utf8");
89
+ const payload = {
90
+ path: target,
91
+ components: seed.components.length,
92
+ connections: seed.connections.length,
93
+ repository: seed.meta.repository ?? null,
94
+ };
95
+ if (json) {
96
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
97
+ return 0;
98
+ }
99
+ process.stdout.write(
100
+ [
101
+ `clio-coder context map wrote ${target}`,
102
+ ` ${payload.components} components, ${payload.connections} connections${
103
+ payload.repository
104
+ ? `, sources pinned at ${payload.repository.revision.slice(0, 12)}`
105
+ : "; no GitHub origin at a full revision, so no source citations"
106
+ }`,
107
+ payload.repository
108
+ ? " next: validate and deliver it with the archify skill, passing --repo-root ."
109
+ : " next: validate and deliver it with the archify skill (without --repo-root)",
110
+ "",
111
+ ].join("\n"),
112
+ );
113
+ return 0;
114
+ }
@@ -10,6 +10,7 @@ const HELP = `Usage:
10
10
  [--target <id>] [--model <id>] [--thinking off|low|medium|high]
11
11
  clio-coder context reset [--all] [--yes]
12
12
  clio-coder context index [--json]
13
+ clio-coder context map [--out <path>] [--json]
13
14
  clio-coder context replay --sessions <path>... [options]
14
15
  clio-coder context working-set --session <id|path>
15
16
 
@@ -20,6 +21,7 @@ Project context commands:
20
21
  clio-coder context wiki generate or inspect the agent-authored Markdown wiki
21
22
  clio-coder context reset clear accumulated project context artifacts
22
23
  clio-coder context index build the codewiki index without model calls
24
+ clio-coder context map write an archify architecture seed from the codewiki index
23
25
  clio-coder context replay compare working-set policies over Clio ledgers
24
26
  clio-coder context working-set inspect one session's working-set fold and path index
25
27
  `;
@@ -317,6 +319,8 @@ export async function runContextCommand(args: string[]): Promise<number> {
317
319
  return (await import("./context-clear.js")).runContextClearCommand(rest);
318
320
  case "index":
319
321
  return (await import("./context-index.js")).runContextIndexCommand(rest);
322
+ case "map":
323
+ return (await import("./context-map.js")).runContextMapCommand(rest);
320
324
  case "replay":
321
325
  return (await import("./context-working-set.js")).runContextReplayCommand(rest);
322
326
  case "working-set":
@@ -2,6 +2,7 @@ import { lstatSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { resolveClioDirs } from "../core/xdg.js";
4
4
  import type { DoctorFinding } from "../domains/lifecycle/doctor.js";
5
+ import { formatBytes } from "./lifecycle-presenter.js";
5
6
 
6
7
  interface MeasuredEntry {
7
8
  bytes: number;
@@ -68,15 +69,3 @@ function measureEntry(path: string): MeasuredEntry {
68
69
  }
69
70
  return { bytes, error: null };
70
71
  }
71
-
72
- function formatBytes(bytes: number): string {
73
- if (bytes < 1024) return `${bytes} B`;
74
- const units = ["KiB", "MiB", "GiB", "TiB"];
75
- let value = bytes;
76
- let unit = -1;
77
- do {
78
- value /= 1024;
79
- unit += 1;
80
- } while (value >= 1024 && unit < units.length - 1);
81
- return `${value.toFixed(value >= 10 ? 1 : 2)} ${units[unit]}`;
82
- }
@@ -0,0 +1,28 @@
1
+ import type { DoctorFinding } from "../domains/lifecycle/doctor.js";
2
+ import { describeValidationContract, loadValidationContract } from "../domains/safety/validation-contract.js";
3
+
4
+ /**
5
+ * One row for the workspace's scientific validation contract: absent, parsed
6
+ * (and so raising the rigor default to high), Markdown-only advisory, or
7
+ * invalid with the parse fault. Reads the workspace root only; creates nothing.
8
+ */
9
+ export function validationContractFinding(workspaceRoot = process.cwd()): DoctorFinding {
10
+ const name = "validation contract";
11
+ const loaded = loadValidationContract(workspaceRoot);
12
+ if (!loaded.ok) {
13
+ return { ok: false, name, detail: `invalid: ${describeValidationContract(loaded)}; rigor default stays normal` };
14
+ }
15
+ if (loaded.contract === null) {
16
+ if ("advisory" in loaded) {
17
+ return { ok: true, name, level: "warn", detail: `markdown-only: ${describeValidationContract(loaded)}` };
18
+ }
19
+ return { ok: true, name, detail: "none at the workspace root; rigor default normal" };
20
+ }
21
+ const artifacts = loaded.contract.artifacts?.length ?? 0;
22
+ const validators = loaded.contract.validators?.length ?? 0;
23
+ return {
24
+ ok: true,
25
+ name,
26
+ detail: `valid: ${loaded.path} (version ${loaded.contract.version}, ${artifacts} artifact(s), ${validators} validator(s)); rigor default high`,
27
+ };
28
+ }
package/src/cli/doctor.ts CHANGED
@@ -12,6 +12,7 @@ import { namingFootprintFindings } from "./doctor-naming.js";
12
12
  import { panesFindings } from "./doctor-panes.js";
13
13
  import { stateStorageFinding } from "./doctor-state-size.js";
14
14
  import { toolchainFindings } from "./doctor-toolchain.js";
15
+ import { validationContractFinding } from "./doctor-validation-contract.js";
15
16
  import { printError } from "./shared.js";
16
17
 
17
18
  const HELP = `clio-coder doctor [--fix] [--json]
@@ -72,6 +73,9 @@ export async function runDoctorCommand(args: ReadonlyArray<string> = []): Promis
72
73
  // has already agreed not to build on an untouched home.
73
74
  const paneChecks = untouched ? [] : await panesFindings();
74
75
  const namingChecks = namingFootprintFindings({ fix, yaziEnabled: filesEnabled });
76
+ // The validation contract lives in the workspace, not the home, so it is
77
+ // checked on every run: a broken contract is why rigor stayed normal.
78
+ const contractChecks = [validationContractFinding()];
75
79
  const all = [
76
80
  ...findings,
77
81
  ...storageChecks,
@@ -82,6 +86,7 @@ export async function runDoctorCommand(args: ReadonlyArray<string> = []): Promis
82
86
  ...toolChecks,
83
87
  ...paneChecks,
84
88
  ...namingChecks,
89
+ ...contractChecks,
85
90
  ];
86
91
  const ok = all.every((f) => f.ok);
87
92
  if (json) {
@@ -1,78 +1,4 @@
1
- /**
2
- * Fixed machine-readable projection of one evidence bundle's trust record.
3
- *
4
- * `evidence inspect <id>` prints an operator record that quotes the task text,
5
- * the bundle's file list, and per-finding prose. This is the same bundle read
6
- * down to the one thing a GUI can carry safely and usefully: which runs the
7
- * bundle covers, what verdict each run earned, and which axis produced it.
8
- *
9
- * Every value here comes from a closed vocabulary. The axis names, the axis
10
- * states, and the verdicts are all enumerations the harness owns, so there is
11
- * no free-form text on this surface at all, which is what lets it answer the
12
- * question the inventory raises without reopening the boundary the inventory
13
- * closed.
14
- *
15
- * Unlike the other fixed reads this one takes an identifier, because an
16
- * operator names the bundle. The GUI host may only pass back an id it served
17
- * inside its current bounded window; see `apps/workbench/artifact-allowlist.ts`.
18
- */
19
-
20
- import { clioDataDir } from "../core/xdg.js";
21
- import {
22
- inspectEvidence,
23
- TRUST_STATUS_AXES,
24
- type TrustStatusAxis,
25
- type TrustVerdict,
26
- trustVerdict,
27
- } from "../domains/evidence/index.js";
28
-
29
- export const EVIDENCE_DETAIL_MAX_RUNS = 16;
30
-
31
- export interface EvidenceDetailRun {
32
- readonly runId: string;
33
- readonly verdict: TrustVerdict;
34
- /** Every axis, always all six, so an absent axis is stated rather than missing. */
35
- readonly axes: Readonly<Record<TrustStatusAxis, string>>;
36
- }
37
-
38
- export interface EvidenceDetailSnapshot {
39
- readonly version: 1;
40
- readonly generatedAt: string;
41
- readonly evidenceId: string;
42
- readonly sourceKind: "run" | "session" | "eval";
43
- /** False when the bundle predates the canonical trust projection. */
44
- readonly canonical: boolean;
45
- readonly runs: readonly EvidenceDetailRun[];
46
- readonly runsTruncated: boolean;
47
- }
48
-
49
- async function evidenceDetailSnapshot(
50
- evidenceId: string,
51
- now: () => number = Date.now,
52
- dataDir: string = clioDataDir(),
53
- ): Promise<EvidenceDetailSnapshot> {
54
- const inspected = await inspectEvidence(dataDir, evidenceId);
55
- const all = inspected.trustStatus.runs;
56
- const window = all.slice(0, EVIDENCE_DETAIL_MAX_RUNS);
57
- return {
58
- version: 1,
59
- generatedAt: new Date(now()).toISOString(),
60
- evidenceId: inspected.overview.evidenceId,
61
- sourceKind: inspected.overview.source.kind,
62
- canonical: inspected.trustStatus.projection === "canonical",
63
- runs: window.map(
64
- (run): EvidenceDetailRun => ({
65
- runId: run.runId,
66
- verdict: trustVerdict(run.status),
67
- axes: Object.fromEntries(TRUST_STATUS_AXES.map((axis) => [axis, run.status[axis].state])) as Record<
68
- TrustStatusAxis,
69
- string
70
- >,
71
- }),
72
- ),
73
- runsTruncated: all.length > window.length,
74
- };
75
- }
1
+ import { evidenceDetailSnapshot } from "../domains/evidence/detail.js";
76
2
 
77
3
  /**
78
4
  * `clio-coder evidence inspect <id> --json`.
@@ -1,170 +1,4 @@
1
- /**
2
- * Fixed machine-readable projection of recent evidence artifacts.
3
- *
4
- * `evidence list` is an operator table and `evidence inspect <id>` needs an id,
5
- * so neither is a transport a GUI host can invoke blind. This command accepts
6
- * no identifier, path, or limit, selects a bounded newest-first window itself,
7
- * and emits provenance, tags, totals, and a trust verdict.
8
- *
9
- * An overview carries the working directories the runs executed in, the task
10
- * text the operator typed, and the file names inside the bundle. None of that
11
- * appears here. What does is the shape of the artifact and how far it can be
12
- * trusted, which is what an operator picks a bundle by.
13
- */
14
-
15
- import { clioDataDir } from "../core/xdg.js";
16
- import {
17
- EVIDENCE_TAGS,
18
- type EvidenceOverview,
19
- type EvidenceTag,
20
- listEvidenceOverviews,
21
- loadEvidenceTrustStatus,
22
- type TrustVerdict,
23
- trustVerdict,
24
- } from "../domains/evidence/index.js";
25
- import { sanitizeCallTargetText } from "../domains/safety/call-target.js";
26
- import { truncateToWidth } from "../engine/tui-primitives.js";
27
-
28
- export const EVIDENCE_INVENTORY_MAX_ARTIFACTS = 12;
29
- export const EVIDENCE_INVENTORY_MAX_IDS = 8;
30
-
31
- const IDENTITY_WIDTH = 128;
32
-
33
- /**
34
- * Worst verdict first.
35
- *
36
- * An artifact covering several runs is only as trustworthy as its weakest run,
37
- * so the fold takes the worst rather than the newest or the most common. A
38
- * `compromised` run inside an otherwise clean bundle is the fact the operator
39
- * needs, and averaging it away would be the one summary worth not printing.
40
- */
41
- const VERDICT_SEVERITY: ReadonlyArray<TrustVerdict> = ["compromised", "unverified", "unknown", "grounded", "reviewed"];
42
-
43
- export interface EvidenceInventoryArtifact {
44
- readonly evidenceId: string;
45
- readonly sourceKind: "run" | "session" | "eval";
46
- readonly generatedAt: string;
47
- readonly startedAt: string | null;
48
- readonly endedAt: string | null;
49
- readonly runIds: readonly string[];
50
- readonly runIdsTruncated: boolean;
51
- readonly agentIds: readonly string[];
52
- readonly statuses: readonly string[];
53
- readonly tags: readonly EvidenceTag[];
54
- readonly totals: Readonly<{
55
- runs: number;
56
- receipts: number;
57
- toolCalls: number;
58
- toolErrors: number;
59
- blockedToolCalls: number;
60
- protectedArtifacts: number;
61
- tokens: number;
62
- costUsd: number;
63
- wallTimeMs: number;
64
- }>;
65
- /** Secret-shaped values the builder replaced across the bundle's exports. */
66
- readonly redactionCount: number;
67
- readonly trust: Readonly<{
68
- verdict: TrustVerdict;
69
- /** Runs whose canonical trust status the bundle actually recorded. */
70
- runsCovered: number;
71
- /** True when the bundle predates the canonical trust projection. */
72
- historical: boolean;
73
- }>;
74
- }
75
-
76
- export interface EvidenceInventorySnapshot {
77
- readonly version: 1;
78
- readonly generatedAt: string;
79
- readonly artifacts: readonly EvidenceInventoryArtifact[];
80
- readonly truncated: boolean;
81
- }
82
-
83
- function bounded(value: string, width: number): string {
84
- const sanitized = sanitizeCallTargetText(value);
85
- if (sanitized.length === 0) return "unavailable";
86
- return sanitizeCallTargetText(truncateToWidth(sanitized, width, "…", false));
87
- }
88
-
89
- /** Distinct, sanitized, bounded, in first-seen order. */
90
- function identities(values: ReadonlyArray<string>): string[] {
91
- const seen: string[] = [];
92
- for (const value of values) {
93
- const text = bounded(value, IDENTITY_WIDTH);
94
- if (!seen.includes(text)) seen.push(text);
95
- if (seen.length >= EVIDENCE_INVENTORY_MAX_IDS) break;
96
- }
97
- return seen;
98
- }
99
-
100
- function tally(value: number | undefined): number {
101
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.trunc(value) : 0;
102
- }
103
-
104
- function amount(value: number | undefined): number {
105
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : 0;
106
- }
107
-
108
- /** Newest generation first. An unparseable stamp sorts oldest rather than throwing. */
109
- function byNewest(a: EvidenceOverview, b: EvidenceOverview): number {
110
- return (Date.parse(b.generatedAt) || 0) - (Date.parse(a.generatedAt) || 0);
111
- }
112
-
113
- async function evidenceInventorySnapshot(
114
- now: () => number = Date.now,
115
- dataDir: string = clioDataDir(),
116
- ): Promise<EvidenceInventorySnapshot> {
117
- const all = (await listEvidenceOverviews(dataDir)).sort(byNewest);
118
- const window = all.slice(0, EVIDENCE_INVENTORY_MAX_ARTIFACTS);
119
- const artifacts: EvidenceInventoryArtifact[] = [];
120
- for (const overview of window) {
121
- // One unreadable trust file costs that artifact its verdict, never the
122
- // whole inventory: the bundle itself is still the thing being listed.
123
- let verdict: TrustVerdict = "unknown";
124
- let runsCovered = 0;
125
- let historical = true;
126
- try {
127
- const status = await loadEvidenceTrustStatus(dataDir, overview.evidenceId);
128
- historical = status.projection !== "canonical";
129
- runsCovered = status.runs.length;
130
- const verdicts = status.runs.map((run) => trustVerdict(run.status));
131
- verdict = VERDICT_SEVERITY.find((candidate) => verdicts.includes(candidate)) ?? "unknown";
132
- } catch {
133
- verdict = "unknown";
134
- }
135
- artifacts.push({
136
- evidenceId: bounded(overview.evidenceId, IDENTITY_WIDTH),
137
- sourceKind: overview.source.kind,
138
- generatedAt: overview.generatedAt,
139
- startedAt: overview.startedAt,
140
- endedAt: overview.endedAt,
141
- runIds: identities(overview.runIds),
142
- runIdsTruncated: overview.runIds.length > EVIDENCE_INVENTORY_MAX_IDS,
143
- agentIds: identities(overview.agentIds),
144
- statuses: identities(overview.statuses),
145
- tags: overview.tags.filter((tag) => EVIDENCE_TAGS.includes(tag)),
146
- totals: {
147
- runs: tally(overview.totals.runs),
148
- receipts: tally(overview.totals.receipts),
149
- toolCalls: tally(overview.totals.toolCalls),
150
- toolErrors: tally(overview.totals.toolErrors),
151
- blockedToolCalls: tally(overview.totals.blockedToolCalls),
152
- protectedArtifacts: tally(overview.totals.protectedArtifacts),
153
- tokens: tally(overview.totals.tokens),
154
- costUsd: amount(overview.totals.costUsd),
155
- wallTimeMs: tally(overview.totals.wallTimeMs),
156
- },
157
- redactionCount: tally(overview.redactionCount),
158
- trust: { verdict, runsCovered, historical },
159
- });
160
- }
161
- return {
162
- version: 1,
163
- generatedAt: new Date(now()).toISOString(),
164
- artifacts,
165
- truncated: all.length > window.length,
166
- };
167
- }
1
+ import { evidenceInventorySnapshot } from "../domains/evidence/inventory.js";
168
2
 
169
3
  /**
170
4
  * `clio-coder evidence inventory --json`, and nothing else.
package/src/cli/index.ts CHANGED
@@ -56,6 +56,7 @@ Usage:
56
56
  clio-coder context wiki [--update] [--status] [--depth auto|simple|medium|detailed] [--target <id>] [--model <id>]
57
57
  clio-coder context reset [--all] [--yes] clear accumulated project context artifacts
58
58
  clio-coder context index [--json] build the codewiki index without model calls
59
+ clio-coder context map [--out <path>] [--json] write an archify architecture seed from the codewiki index
59
60
  clio-coder context replay --sessions <path>... compare working-set policies over Clio ledgers
60
61
  clio-coder context working-set --session <id|path> inspect one session's working-set state
61
62
  clio-coder uninstall remove all Clio Coder state; --remove-binary also unlinks the launcher
@@ -70,6 +71,7 @@ Usage:
70
71
  clio-coder extensions install, list, enable, disable, or remove extension packages
71
72
  clio-coder skills list, inspect, validate, or install skills
72
73
  clio-coder library list, search, add, or sync agents, prompts, fleets, and skills from catalogs
74
+ clio-coder tasks list, add, hand, finish, or drop project operator tasks
73
75
  clio-coder verifiers discover, inspect, author, validate, edit, or dry-run project checks
74
76
  clio-coder tools list|status|install|remove <id> pinned external programs Clio can drive
75
77
  clio-coder interop inspect --json detected external coding agents and how far each one is wired
@@ -258,6 +260,7 @@ const COMMAND_HANDLERS = new Map<string, CommandHandler>([
258
260
  ["fleet", async (subArgs) => (await import("./fleet.js")).runFleetCommand(subArgs)],
259
261
  ["skills", async (subArgs) => (await import("./skills.js")).runSkillsCommand(subArgs)],
260
262
  ["library", async (subArgs) => (await import("./library.js")).runLibraryCommand(subArgs)],
263
+ ["tasks", async (subArgs) => (await import("./tasks.js")).runTasksCommand(subArgs)],
261
264
  ["verifiers", async (subArgs) => (await import("./verifiers.js")).runVerifiersCommand(subArgs)],
262
265
  ["docs", async (subArgs) => (await import("./docs.js")).runDocsCommand(subArgs)],
263
266
  ["share", async (subArgs) => (await import("./share.js")).runShareCommand(subArgs)],