@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
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- loadSkills
4
- } from "./chunk-O3YUNJZ2.js";
5
2
  import {
6
3
  parseFrontmatter
7
4
  } from "./chunk-RKKLTLYB.js";
5
+ import {
6
+ loadSkills
7
+ } from "./chunk-2ZSONWVL.js";
8
8
  import {
9
9
  enabledExtensionResourceRoots
10
- } from "./chunk-HLAFFSEK.js";
10
+ } from "./chunk-TQAHXW6Y.js";
11
11
  import {
12
12
  assertAgentSpecPolicy,
13
13
  isAgentAudience,
@@ -19,7 +19,7 @@ import {
19
19
  isShadowAgent,
20
20
  normalizeAgentSpec,
21
21
  parseResultContract
22
- } from "./chunk-PGF63K6I.js";
22
+ } from "./chunk-KFV5L5SK.js";
23
23
  import {
24
24
  resolvePackageRoot
25
25
  } from "./chunk-IWHMRKLL.js";
@@ -396,4 +396,4 @@ export {
396
396
  parseAgentRecipeSchema,
397
397
  discoverAgentRecipes
398
398
  };
399
- //# sourceMappingURL=chunk-CRFOIAX3.js.map
399
+ //# sourceMappingURL=chunk-7UGL4MB5.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-H7IXIC72.js";
6
6
  import {
7
7
  isAgentCapabilityClass
8
- } from "./chunk-PGF63K6I.js";
8
+ } from "./chunk-KFV5L5SK.js";
9
9
  import {
10
10
  init_esm_shims
11
11
  } from "./chunk-3R73A4XB.js";
@@ -995,4 +995,4 @@ export {
995
995
  routingIntentRejection,
996
996
  explainRouteDecision
997
997
  };
998
- //# sourceMappingURL=chunk-HIICAHCJ.js.map
998
+ //# sourceMappingURL=chunk-AUPNRN7C.js.map
@@ -1,65 +1,26 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- truncateUtf8
4
- } from "./chunk-6XLNIQDB.js";
5
- import {
6
- VERIFICATION_SCRIPT_FAMILY_HINT
7
- } from "./chunk-UL3WSD3F.js";
8
2
  import {
9
3
  typebox_exports
10
4
  } from "./chunk-5B2AEOW5.js";
5
+ import {
6
+ truncateUtf8
7
+ } from "./chunk-6XLNIQDB.js";
11
8
  import {
12
9
  ToolNames
13
- } from "./chunk-K6BSR66V.js";
10
+ } from "./chunk-4NSRCOYP.js";
14
11
  import {
15
12
  SAFE_EXEC_DEFAULT_MAX_OUTPUT_BYTES,
16
13
  SAFE_EXEC_DEFAULT_TIMEOUT_MS,
17
14
  combineSafeOutput,
18
15
  runCommandVector
19
- } from "./chunk-HJWWJ6IL.js";
16
+ } from "./chunk-TOIVGRUX.js";
20
17
  import {
21
18
  StringEnum
22
- } from "./chunk-VXMFAE2W.js";
19
+ } from "./chunk-YPC6ZR5L.js";
23
20
  import {
24
21
  init_esm_shims
25
22
  } from "./chunk-3R73A4XB.js";
26
23
 
27
- // src/tools/verify/surface.ts
28
- init_esm_shims();
29
- var BROWSER_MODES = ["auto", "required", "off"];
30
- function prepareVerifyArguments(args) {
31
- if (!args || typeof args !== "object" || Array.isArray(args)) return args;
32
- const next = { ...args };
33
- if (typeof next.args === "string") {
34
- try {
35
- const parsed = JSON.parse(next.args);
36
- if (Array.isArray(parsed)) next.args = parsed;
37
- } catch {
38
- }
39
- }
40
- return next;
41
- }
42
- var verifyToolSurface = {
43
- name: ToolNames.Verify,
44
- description: 'Run a declared verification check: no arguments lists package scripts and .clio-coder/verifiers.yaml entries, check=<id> runs one, and check="frontend" with path validates an HTML/CSS/JS artifact.',
45
- parameters: typebox_exports.Object({
46
- check: typebox_exports.Optional(
47
- typebox_exports.String({
48
- description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`
49
- })
50
- ),
51
- path: typebox_exports.Optional(typebox_exports.String({ description: "frontend: artifact file under the workspace root." })),
52
- args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Package scripts only: arguments after --." })),
53
- browser: typebox_exports.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
54
- cwd: typebox_exports.Optional(typebox_exports.String({ description: "Package scripts only: working directory." })),
55
- timeout_ms: typebox_exports.Optional(typebox_exports.Number({ description: "Package and frontend checks only: timeout in ms." })),
56
- max_output_bytes: typebox_exports.Optional(typebox_exports.Number({ description: "Output cap in bytes (default 600000)." }))
57
- }),
58
- baseActionClass: "execute",
59
- executionMode: "sequential",
60
- prepareArguments: prepareVerifyArguments
61
- };
62
-
63
24
  // src/tools/safe-exec.ts
64
25
  init_esm_shims();
65
26
  var TRUNCATION_MARKER = "\n[output truncated]\n";
@@ -166,9 +127,6 @@ export {
166
127
  timeoutArg,
167
128
  maxOutputArg,
168
129
  runVectorTool,
169
- gitTool,
170
- BROWSER_MODES,
171
- prepareVerifyArguments,
172
- verifyToolSurface
130
+ gitTool
173
131
  };
174
- //# sourceMappingURL=chunk-7BHIY2MW.js.map
132
+ //# sourceMappingURL=chunk-BJVFZO5U.js.map
@@ -3,13 +3,13 @@ import {
3
3
  ROUTE_POLICY_VERSION,
4
4
  isRouteDecisionAgentSelection,
5
5
  isRoutingIntent
6
- } from "./chunk-HIICAHCJ.js";
6
+ } from "./chunk-AUPNRN7C.js";
7
7
  import {
8
8
  isExecutionRole
9
9
  } from "./chunk-H7IXIC72.js";
10
10
  import {
11
11
  readSettings
12
- } from "./chunk-34BHNEE3.js";
12
+ } from "./chunk-GHS5EBTQ.js";
13
13
  import {
14
14
  readClioVersion,
15
15
  resolvePackageRoot
@@ -101,6 +101,9 @@ var RECEIPT_INTEGRITY_FIELD_COVERAGE = {
101
101
  plan: true,
102
102
  fleetGate: true,
103
103
  personaOverride: true,
104
+ // Absent unless the parent board held decisions, so older receipts and
105
+ // decision-free runs digest exactly as before.
106
+ decisionRefs: true,
104
107
  projectContext: true,
105
108
  // Always set on receipts written after #104 landed; absent only on older
106
109
  // receipts, which omit these fields from canonical serialization.
@@ -188,6 +191,7 @@ function ledgerDigestFields(envelope) {
188
191
  executionRole: envelope.executionRole,
189
192
  task: envelope.task,
190
193
  ...envelope.budget !== void 0 ? { budget: envelope.budget } : {},
194
+ ...envelope.decisionRefs !== void 0 ? { decisionRefs: envelope.decisionRefs } : {},
191
195
  targetId: envelope.targetId,
192
196
  wireModelId: envelope.wireModelId,
193
197
  runtimeId: envelope.runtimeId,
@@ -536,6 +540,13 @@ function normalizeTrustStatus(value) {
536
540
  completionEvidence: normalizeAxis("completionEvidence", value.completionEvidence)
537
541
  };
538
542
  }
543
+ function validateTrustStatus(value) {
544
+ try {
545
+ return { ok: true, status: normalizeTrustStatus(value) };
546
+ } catch (error) {
547
+ return { ok: false, reason: error instanceof Error ? error.message : String(error) };
548
+ }
549
+ }
539
550
  function absentTrustStatus(reason) {
540
551
  return { state: "absent", reason };
541
552
  }
@@ -558,6 +569,18 @@ function composeTrustStatus(...projections) {
558
569
  }
559
570
  return normalizeTrustStatus({ version: TRUST_STATUS_VERSION, ...axes });
560
571
  }
572
+ function projectTrustStatus(status, axes) {
573
+ const normalized = normalizeTrustStatus(status);
574
+ const projection = {};
575
+ const requested = new Set(axes);
576
+ if (requested.has("artifactIntegrity")) projection.artifactIntegrity = normalized.artifactIntegrity;
577
+ if (requested.has("validationGrounding")) projection.validationGrounding = normalized.validationGrounding;
578
+ if (requested.has("independentReview")) projection.independentReview = normalized.independentReview;
579
+ if (requested.has("contextProvenance")) projection.contextProvenance = normalized.contextProvenance;
580
+ if (requested.has("autonomyEnforcement")) projection.autonomyEnforcement = normalized.autonomyEnforcement;
581
+ if (requested.has("completionEvidence")) projection.completionEvidence = normalized.completionEvidence;
582
+ return projection;
583
+ }
561
584
  function sha256Reference(kind, id, digest) {
562
585
  const reference = { kind, id };
563
586
  if (digest !== void 0 && /^[a-f0-9]{64}$/u.test(digest)) {
@@ -892,6 +915,20 @@ function adaptGroundedEvidenceValidationStatus(input) {
892
915
  uniqueBoundedReferences([{ kind: "evidence_bundle", id: input.evidenceId }, ...observed])
893
916
  );
894
917
  }
918
+ function adaptFinishContractCompletionStatus(assessment, options = {}) {
919
+ const artifacts = uniqueBoundedReferences(
920
+ options.artifacts ?? assessment.evidence.map((evidence, index) => ({
921
+ kind: evidence.turnId === void 0 ? "finish_contract_evidence" : "session_entry",
922
+ id: evidence.turnId ?? `${evidence.kind}:${index + 1}`
923
+ }))
924
+ );
925
+ const source = { kind: "finish_contract", id: options.sourceId ?? assessment.reason };
926
+ const authority = { kind: "clio", id: "finish-contract" };
927
+ if (assessment.reason === "no_mutation") return attributed("not_applicable", source, authority, artifacts);
928
+ if (assessment.reason === "validation_evidence") return attributed("evidenced", source, authority, artifacts);
929
+ if (assessment.reason === "explicit_limitation") return attributed("limited", source, authority, artifacts);
930
+ return attributed("incomplete", source, authority, artifacts);
931
+ }
895
932
  function uniqueBoundedReferences(references) {
896
933
  const sorted = [...references].sort(compareArtifactReferences);
897
934
  const unique = sorted.filter(
@@ -904,6 +941,13 @@ function uniqueBoundedReferences(references) {
904
941
  init_esm_shims();
905
942
  var TRUST_SUMMARY_VERSION = 1;
906
943
  var TRUST_SUMMARY_MAX_REFS = 8;
944
+ var TRUST_VERDICTS = [
945
+ "reviewed",
946
+ "grounded",
947
+ "unverified",
948
+ "compromised",
949
+ "unknown"
950
+ ];
907
951
  var TRUST_STATE_WORDS = {
908
952
  artifactIntegrity: {
909
953
  verified: "sealed",
@@ -1387,22 +1431,40 @@ export {
1387
1431
  withReceiptIntegrity,
1388
1432
  isReceiptIntegrity,
1389
1433
  verifyReceiptIntegrity,
1434
+ TRUST_STATUS_VERSION,
1435
+ TRUST_STATUS_MAX_ARTIFACT_REFERENCES,
1436
+ TRUST_STATUS_MAX_IDENTIFIER_LENGTH,
1390
1437
  TRUST_STATUS_AXES,
1438
+ TRUST_STATUS_STATES,
1391
1439
  isTrustStatusIdentifier,
1392
1440
  normalizeTrustStatus,
1441
+ validateTrustStatus,
1442
+ absentTrustStatus,
1393
1443
  composeTrustStatus,
1444
+ projectTrustStatus,
1394
1445
  retiredReceiptIntegrity,
1395
1446
  retiredReceiptIntegrityReason,
1447
+ verifyReceiptIntegrityOutcome,
1396
1448
  retiredIntegrityVersionOf,
1449
+ adaptReceiptIntegrityStatus,
1450
+ adaptRunReceiptValidationStatus,
1451
+ adaptRunReceiptContextStatus,
1452
+ adaptRunReceiptAutonomyStatus,
1397
1453
  adaptRunReceiptTrustStatus,
1398
1454
  inspectRunReceiptTrustStatus,
1399
1455
  adaptGateDecisionReviewStatus,
1400
1456
  adaptGroundedEvidenceValidationStatus,
1457
+ adaptFinishContractCompletionStatus,
1458
+ TRUST_SUMMARY_VERSION,
1459
+ TRUST_SUMMARY_MAX_REFS,
1460
+ TRUST_VERDICTS,
1461
+ TRUST_STATE_WORDS,
1401
1462
  trustStateWord,
1402
1463
  formatTrustSummary,
1403
1464
  formatTrustSummaryLine,
1404
1465
  formatTrustAxes,
1405
1466
  trustVerdict,
1467
+ trustSummaryReferences,
1406
1468
  summarizeTrustStatus,
1407
1469
  evalClioProvenance,
1408
1470
  evalEnvironmentProvenance,
@@ -1412,4 +1474,4 @@ export {
1412
1474
  loadEvalTaskFile,
1413
1475
  EvalTaskFileError
1414
1476
  };
1415
- //# sourceMappingURL=chunk-B74PXLU7.js.map
1477
+ //# sourceMappingURL=chunk-CUSRQKPU.js.map
@@ -0,0 +1,386 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ terminalColumns,
4
+ wrapPlain
5
+ } from "./chunk-2IR2NMPA.js";
6
+ import {
7
+ source_default
8
+ } from "./chunk-JCI2ROMZ.js";
9
+ import {
10
+ init_esm_shims
11
+ } from "./chunk-3R73A4XB.js";
12
+
13
+ // src/cli/lifecycle-presenter.ts
14
+ init_esm_shims();
15
+ import { lstatSync, readdirSync } from "node:fs";
16
+ import { homedir } from "node:os";
17
+ import { join } from "node:path";
18
+ import { stdin as defaultInput, stdout as defaultOutput } from "node:process";
19
+ import { createInterface } from "node:readline/promises";
20
+ function formatBytes(bytes) {
21
+ if (bytes < 1024) return `${bytes} B`;
22
+ const units = ["KB", "MB", "GB", "TB"];
23
+ let value = bytes / 1024;
24
+ let unitIndex = 0;
25
+ while (value >= 1024 && unitIndex < units.length - 1) {
26
+ value /= 1024;
27
+ unitIndex += 1;
28
+ }
29
+ return `${value.toFixed(1)} ${units[unitIndex]}`;
30
+ }
31
+ function measurePath(targetPath) {
32
+ let stats;
33
+ try {
34
+ stats = lstatSync(targetPath);
35
+ } catch {
36
+ return { bytes: 0, exists: false, isDirectory: false, isSymbolicLink: false };
37
+ }
38
+ if (stats.isSymbolicLink()) {
39
+ return { bytes: stats.size, exists: true, isDirectory: false, isSymbolicLink: true };
40
+ }
41
+ if (!stats.isDirectory()) {
42
+ return { bytes: stats.size, exists: true, isDirectory: false, isSymbolicLink: false };
43
+ }
44
+ let total = 0;
45
+ function walk(dir) {
46
+ let entries;
47
+ try {
48
+ entries = readdirSync(dir, { withFileTypes: true });
49
+ } catch {
50
+ return;
51
+ }
52
+ for (const entry of entries) {
53
+ const full = join(dir, entry.name);
54
+ try {
55
+ if (entry.isDirectory()) walk(full);
56
+ else total += lstatSync(full).size;
57
+ } catch {
58
+ }
59
+ }
60
+ }
61
+ walk(targetPath);
62
+ return { bytes: total, exists: true, isDirectory: true, isSymbolicLink: false };
63
+ }
64
+ function shortenPath(targetPath, home = homedir()) {
65
+ if (!targetPath) return targetPath;
66
+ if (targetPath === home) return "~";
67
+ if (targetPath.startsWith(`${home}/`) || targetPath.startsWith(`${home}\\`)) {
68
+ return `~/${targetPath.slice(home.length + 1)}`;
69
+ }
70
+ return targetPath;
71
+ }
72
+ var LifecyclePresenter = class {
73
+ json;
74
+ plain;
75
+ out;
76
+ in;
77
+ columns;
78
+ report;
79
+ lastBlock = null;
80
+ emitted = false;
81
+ constructor(options = {}) {
82
+ this.json = Boolean(options.json);
83
+ const stream = options.stream ?? defaultOutput;
84
+ const isTty = Boolean(stream.isTTY);
85
+ this.plain = options.plain ?? (!isTty || Boolean(process.env.NO_COLOR));
86
+ this.out = stream;
87
+ this.in = options.inputStream ?? defaultInput;
88
+ this.columns = options.columns ?? terminalColumns(stream);
89
+ this.report = {
90
+ command: "",
91
+ title: "",
92
+ status: "success",
93
+ items: [],
94
+ steps: [],
95
+ warnings: [],
96
+ errors: [],
97
+ advice: []
98
+ };
99
+ }
100
+ isJson() {
101
+ return this.json;
102
+ }
103
+ isPlain() {
104
+ return this.plain;
105
+ }
106
+ getReport() {
107
+ return this.report;
108
+ }
109
+ setMethod(method) {
110
+ this.report.method = method;
111
+ }
112
+ /** Open a block, writing the one separator that belongs before it. */
113
+ open(block) {
114
+ if (this.lastBlock !== null && this.lastBlock !== block) this.separator();
115
+ this.lastBlock = block;
116
+ }
117
+ separator() {
118
+ this.out.write(this.plain ? "\n" : `${source_default.cyan("\u2502")}
119
+ `);
120
+ }
121
+ /**
122
+ * Close the current block, for a caller that is about to draw its own lines
123
+ * on the rail. `configure` hands the rail to the arrow-key selector after
124
+ * rendering a screen's values, and the selector cannot know what came before
125
+ * it.
126
+ */
127
+ blank() {
128
+ if (this.json) return;
129
+ this.separator();
130
+ this.lastBlock = null;
131
+ }
132
+ /** Rail-level prose, wrapped to the terminal so the rail survives a narrow window. */
133
+ prose(text) {
134
+ const prefix = this.plain ? " " : `${source_default.cyan("\u2502")} `;
135
+ for (const line of wrapPlain(text, this.columns - 3)) this.out.write(`${prefix}${line}
136
+ `);
137
+ }
138
+ header(title, command = "") {
139
+ this.report.title = title;
140
+ this.report.command = command;
141
+ if (this.json) return;
142
+ if (this.plain) {
143
+ this.out.write(`
144
+ ${title}
145
+ `);
146
+ } else {
147
+ this.out.write(`
148
+ ${source_default.cyan("\u250C")} ${source_default.bold(title)}
149
+ `);
150
+ }
151
+ this.lastBlock = "header";
152
+ }
153
+ /** One detected fact. Consecutive facts group into a single block. */
154
+ step(text) {
155
+ this.report.steps.push({ type: "step", message: text });
156
+ if (this.json) return;
157
+ this.open("step");
158
+ if (this.plain) this.out.write(` ${text}
159
+ `);
160
+ else this.out.write(`${source_default.blue("\u25CF")} ${text}
161
+ `);
162
+ }
163
+ /** A line of prose on the rail, not a detected fact. */
164
+ note(text) {
165
+ this.report.steps.push({ type: "note", message: text });
166
+ if (this.json) return;
167
+ this.open("note");
168
+ this.prose(text);
169
+ }
170
+ /**
171
+ * Aligned label/value rows for a settings screen. Not `note()`, because
172
+ * these must not reflow: the column is what makes eight values scannable,
173
+ * and a wrap would put the value under the wrong label.
174
+ */
175
+ fields(rows) {
176
+ for (const [label, value] of rows) this.report.steps.push({ type: "field", message: `${label}: ${value}` });
177
+ if (this.json || rows.length === 0) return;
178
+ this.open("step");
179
+ const width = Math.max(...rows.map(([label]) => label.length));
180
+ for (const [label, value] of rows) {
181
+ const padded = `${label}${" ".repeat(width - label.length)}`;
182
+ if (this.plain) this.out.write(` ${padded} ${value}
183
+ `);
184
+ else this.out.write(`${source_default.blue("\u25CF")} ${source_default.dim(padded)} ${value}
185
+ `);
186
+ }
187
+ }
188
+ substep(text, glyph = "\u2713") {
189
+ this.report.steps.push({ type: "substep", message: text });
190
+ if (this.json) return;
191
+ this.open("list");
192
+ if (this.plain) {
193
+ this.out.write(` ${glyph} ${text}
194
+ `);
195
+ return;
196
+ }
197
+ const coloredGlyph = glyph === "\u2713" ? source_default.green(glyph) : source_default.dim(glyph);
198
+ this.out.write(`${source_default.blue("\u25CF")} ${coloredGlyph} ${text}
199
+ `);
200
+ }
201
+ listItems(header, items) {
202
+ for (const item of items) {
203
+ this.report.items.push(item);
204
+ }
205
+ if (this.json) return;
206
+ this.open("note");
207
+ this.prose(`${header}:`);
208
+ this.open("list");
209
+ for (const item of items) {
210
+ const sizeStr = item.status !== "absent" && item.bytes !== void 0 && item.bytes !== null ? ` (${formatBytes(item.bytes)})` : "";
211
+ const removes = item.status === void 0 || item.status === "remove";
212
+ let suffix = "";
213
+ if (item.status === "keep") suffix = item.detail ? ` (${item.detail})` : " (kept)";
214
+ else if (item.status === "absent") suffix = item.detail ? ` (${item.detail})` : " (absent)";
215
+ else if (item.status === "skip") suffix = item.detail ? ` (${item.detail})` : " (skipped)";
216
+ else if (item.status === "clean") suffix = item.detail ? ` (${item.detail})` : " (nothing to remove)";
217
+ else if (item.detail) suffix = ` (${item.detail})`;
218
+ const body = `${item.label}: ${shortenPath(item.path)}${sizeStr}`;
219
+ if (this.plain) {
220
+ this.out.write(` ${removes ? "\u2713" : "\u2013"} ${body}${suffix}
221
+ `);
222
+ continue;
223
+ }
224
+ const glyph = removes ? source_default.green("\u2713") : item.status === "skip" ? source_default.yellow("\u2013") : source_default.dim("\u2013");
225
+ const tail = suffix.length === 0 ? "" : item.status === "skip" ? source_default.yellow(suffix) : source_default.dim(suffix);
226
+ this.out.write(
227
+ `${source_default.blue("\u25CF")} ${glyph} ${source_default.bold(item.label)}: ${shortenPath(item.path)}${sizeStr}${tail}
228
+ `
229
+ );
230
+ }
231
+ }
232
+ /** One action that has already happened. Consecutive results group together. */
233
+ completedStep(text) {
234
+ this.report.steps.push({ type: "completed", message: text });
235
+ if (this.json) return;
236
+ this.open("completed");
237
+ if (this.plain) this.out.write(` \u2713 ${text}
238
+ `);
239
+ else this.out.write(`${source_default.green("\u25C7")} ${text}
240
+ `);
241
+ }
242
+ warn(text) {
243
+ this.report.warnings.push(text);
244
+ if (this.json) return;
245
+ this.open("warn");
246
+ if (this.plain) {
247
+ for (const line of wrapPlain(text, this.columns - 3)) this.out.write(` ${line}
248
+ `);
249
+ return;
250
+ }
251
+ const prefix = `${source_default.yellow("\u25B2")} `;
252
+ const continuation = `${source_default.cyan("\u2502")} `;
253
+ wrapPlain(text, this.columns - 3).forEach((line, index) => {
254
+ this.out.write(`${index === 0 ? prefix : continuation}${source_default.yellow(line)}
255
+ `);
256
+ });
257
+ }
258
+ /**
259
+ * Record a failure and say it once on stderr. The JSON report is not written
260
+ * here: a command that fails still has advice to add, and emitting mid-flight
261
+ * either dropped it or put a second document on stdout. Callers end on
262
+ * `finish()`.
263
+ */
264
+ fail(message, detail) {
265
+ this.report.status = "error";
266
+ this.report.errors.push(detail ? `${message}: ${detail}` : message);
267
+ if (this.json) return;
268
+ if (this.plain) {
269
+ process.stderr.write(`error: ${message}
270
+ `);
271
+ if (detail) process.stderr.write(` ${detail}
272
+ `);
273
+ return;
274
+ }
275
+ process.stderr.write(`${source_default.red("\u2716")} ${source_default.red(message)}
276
+ `);
277
+ if (detail) process.stderr.write(`${source_default.cyan("\u2502")} ${source_default.dim(detail)}
278
+ `);
279
+ }
280
+ commandAdvice(lead, command) {
281
+ this.report.advice.push({ lead, command });
282
+ if (this.json) return;
283
+ this.open("advice");
284
+ this.prose(lead);
285
+ for (const line of command.split("\n")) {
286
+ if (this.plain) this.out.write(` ${line}
287
+ `);
288
+ else this.out.write(`${source_default.blue("\u25CF")} ${source_default.cyan(line)}
289
+ `);
290
+ }
291
+ }
292
+ message(text) {
293
+ this.report.steps.push({ type: "message", message: text });
294
+ if (this.json) return;
295
+ this.open("message");
296
+ if (this.plain) this.out.write(` ${text}
297
+ `);
298
+ else this.out.write(`${source_default.cyan("\u25C6")} ${source_default.bold(text)}
299
+ `);
300
+ }
301
+ /**
302
+ * Ask once, and treat a closed input as a refusal.
303
+ *
304
+ * `rl.question()` from readline/promises settles on an answer and on an abort
305
+ * signal, but not on the input ending: at EOF the interface emits `close` and
306
+ * the promise is simply never resolved. Every caller here guards a delete, so
307
+ * the failure mode was a `clio-coder uninstall` that printed its prompt and
308
+ * then hung forever on Ctrl-D. Racing the `close` event settles that case as
309
+ * "no", which is the only safe reading of an input that stopped talking.
310
+ */
311
+ async confirm(question, defaultYes = false) {
312
+ if (this.json) return false;
313
+ const hint = defaultYes ? "Y/n" : "y/N";
314
+ this.open("confirm");
315
+ const rl = createInterface({ input: this.in, output: this.out });
316
+ try {
317
+ const promptStr = this.plain ? ` ${question} [${hint}]: ` : `${source_default.cyan("\u25C7")} ${source_default.bold(question)} [${hint}]
318
+ ${source_default.cyan("\u2502")} `;
319
+ const answer = await new Promise((resolve) => {
320
+ let settled = false;
321
+ const settle = (value) => {
322
+ if (settled) return;
323
+ settled = true;
324
+ resolve(value);
325
+ };
326
+ rl.once("close", () => settle(null));
327
+ rl.question(promptStr).then(
328
+ (value) => settle(value),
329
+ () => settle(null)
330
+ );
331
+ });
332
+ if (answer === null) return false;
333
+ const normalized = answer.trim().toLowerCase();
334
+ const confirmed = normalized.length === 0 ? defaultYes : normalized === "y" || normalized === "yes";
335
+ this.out.write(this.plain ? ` ${confirmed ? "Yes" : "No"}
336
+ ` : `${source_default.cyan("\u2502")} ${confirmed ? "Yes" : "No"}
337
+ `);
338
+ return confirmed;
339
+ } finally {
340
+ rl.close();
341
+ }
342
+ }
343
+ /**
344
+ * Close the transcript. Every command ends here, on success and on failure,
345
+ * so `--json` emits exactly one document containing everything that was
346
+ * recorded, including advice added after a failure.
347
+ */
348
+ done(summary = "Done") {
349
+ this.report.summary = summary;
350
+ if (this.json) {
351
+ this.emit();
352
+ return;
353
+ }
354
+ if (this.plain) {
355
+ this.out.write(`
356
+ ${summary}
357
+ `);
358
+ return;
359
+ }
360
+ this.separator();
361
+ this.out.write(`${source_default.cyan("\u2514")} ${source_default.bold(summary)}
362
+
363
+ `);
364
+ }
365
+ /** Emit the JSON report without a closing line, for paths that ended in an error. */
366
+ finish() {
367
+ if (this.json) this.emit();
368
+ }
369
+ emit() {
370
+ if (this.emitted) return;
371
+ this.emitted = true;
372
+ this.out.write(`${JSON.stringify(this.report, null, 2)}
373
+ `);
374
+ }
375
+ };
376
+ function createLifecyclePresenter(options = {}) {
377
+ return new LifecyclePresenter(options);
378
+ }
379
+
380
+ export {
381
+ formatBytes,
382
+ measurePath,
383
+ shortenPath,
384
+ createLifecyclePresenter
385
+ };
386
+ //# sourceMappingURL=chunk-DQOVN6KV.js.map