@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
@@ -2,9 +2,6 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  warnLegacyNaming
4
4
  } from "./chunk-D7E7WCDF.js";
5
- import {
6
- MAX_TIMER_DELAY_MS
7
- } from "./chunk-EBY63B7G.js";
8
5
  import {
9
6
  ACTIVE_AGENT_AUTOMATION_ROLES,
10
7
  ACTIVE_ROUTING_POSTURES,
@@ -14,19 +11,22 @@ import {
14
11
  THEME_NAMED_COLORS,
15
12
  THINKING_LEVELS
16
13
  } from "./chunk-UXCU4E3T.js";
14
+ import {
15
+ MAX_TIMER_DELAY_MS
16
+ } from "./chunk-EBY63B7G.js";
17
17
  import {
18
18
  withStateFileLockSync
19
19
  } from "./chunk-IKCO5N3L.js";
20
20
  import {
21
21
  require_dist
22
22
  } from "./chunk-APJ265NV.js";
23
+ import {
24
+ safeResourceWrite
25
+ } from "./chunk-WEPFGWHJ.js";
23
26
  import {
24
27
  clioConfigDir,
25
28
  resolveClioDirs
26
29
  } from "./chunk-BYP5D4HI.js";
27
- import {
28
- safeResourceWrite
29
- } from "./chunk-WEPFGWHJ.js";
30
30
  import {
31
31
  __toESM,
32
32
  init_esm_shims
@@ -393,6 +393,52 @@ function validateLmStudioSettings(issues, path, value) {
393
393
  }
394
394
  return Object.keys(out).length > 0 ? out : void 0;
395
395
  }
396
+ function validateLiteLLMSettings(issues, path, value) {
397
+ if (!isPlainObject(value)) {
398
+ issues.add(path, `expected a map, got ${describe(value)}`);
399
+ return void 0;
400
+ }
401
+ issues.unknownKeys(path, value, ["request"]);
402
+ const out = {};
403
+ if ("request" in value) {
404
+ if (!isPlainObject(value.request)) {
405
+ issues.add(`${path}.request`, `expected a map, got ${describe(value.request)}`);
406
+ } else {
407
+ issues.unknownKeys(`${path}.request`, value.request, [
408
+ "tags",
409
+ "sendSessionId",
410
+ "timeoutSeconds",
411
+ "streamTimeoutSeconds",
412
+ "numRetries"
413
+ ]);
414
+ const request = {};
415
+ if ("tags" in value.request) {
416
+ const parsed = expectStringArray(issues, `${path}.request.tags`, value.request.tags);
417
+ if (parsed !== void 0) {
418
+ const invalidTag = parsed.find((tag) => tag.includes(","));
419
+ if (invalidTag) issues.add(`${path}.request.tags`, "tags may not contain commas");
420
+ else if (parsed.length > 0) request.tags = [...new Set(parsed)];
421
+ }
422
+ }
423
+ if ("sendSessionId" in value.request) {
424
+ const parsed = expectBoolean(issues, `${path}.request.sendSessionId`, value.request.sendSessionId);
425
+ if (parsed !== void 0) request.sendSessionId = parsed;
426
+ }
427
+ for (const key of ["timeoutSeconds", "streamTimeoutSeconds"]) {
428
+ if (key in value.request) {
429
+ const parsed = expectNumber(issues, `${path}.request.${key}`, value.request[key], { min: 1e-3, max: 86400 });
430
+ if (parsed !== void 0) request[key] = parsed;
431
+ }
432
+ }
433
+ if ("numRetries" in value.request) {
434
+ const parsed = expectInteger(issues, `${path}.request.numRetries`, value.request.numRetries, { min: 0, max: 100 });
435
+ if (parsed !== void 0) request.numRetries = parsed;
436
+ }
437
+ if (Object.keys(request).length > 0) out.request = request;
438
+ }
439
+ }
440
+ return Object.keys(out).length > 0 ? out : void 0;
441
+ }
396
442
  function validateTarget(issues, path, value) {
397
443
  if (!isPlainObject(value)) {
398
444
  issues.add(path, `expected a map, got ${describe(value)}`);
@@ -410,6 +456,7 @@ function validateTarget(issues, path, value) {
410
456
  "gateway",
411
457
  "pricing",
412
458
  "lmstudio",
459
+ "litellm",
413
460
  "maxConcurrentRequests"
414
461
  ]);
415
462
  const id = "id" in value ? expectString(issues, `${path}.id`, value.id) : void 0;
@@ -461,6 +508,10 @@ function validateTarget(issues, path, value) {
461
508
  const v = validateLmStudioSettings(issues, `${path}.lmstudio`, value.lmstudio);
462
509
  if (v !== void 0) target.lmstudio = v;
463
510
  }
511
+ if ("litellm" in value) {
512
+ const v = validateLiteLLMSettings(issues, `${path}.litellm`, value.litellm);
513
+ if (v !== void 0) target.litellm = v;
514
+ }
464
515
  if ("maxConcurrentRequests" in value) {
465
516
  const v = expectInteger(issues, `${path}.maxConcurrentRequests`, value.maxConcurrentRequests, { min: 1 });
466
517
  if (v !== void 0) target.maxConcurrentRequests = v;
@@ -1843,4 +1894,4 @@ export {
1843
1894
  removeFleetProfileFromSettings,
1844
1895
  bindAgentProfileInSettings
1845
1896
  };
1846
- //# sourceMappingURL=chunk-34BHNEE3.js.map
1897
+ //# sourceMappingURL=chunk-GHS5EBTQ.js.map
@@ -1,23 +1,23 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- clio_coder_naming_default
4
- } from "./chunk-XQRY4DTA.js";
5
2
  import {
6
3
  settings_v2_default
7
- } from "./chunk-3KIPBMUA.js";
4
+ } from "./chunk-5ICU3EUH.js";
5
+ import {
6
+ clio_coder_naming_default
7
+ } from "./chunk-IGLP3ODT.js";
8
8
  import {
9
9
  upgradeLegacyExtensionInstallState
10
- } from "./chunk-77QIVUZB.js";
10
+ } from "./chunk-5MEZN6CB.js";
11
11
  import {
12
12
  readSettings,
13
13
  settingsPath,
14
14
  updateSettings,
15
15
  withSettingsLock
16
- } from "./chunk-34BHNEE3.js";
16
+ } from "./chunk-GHS5EBTQ.js";
17
17
  import {
18
18
  authStoragePath,
19
19
  openAuthStorage
20
- } from "./chunk-WNP7O5WZ.js";
20
+ } from "./chunk-ID64D7PE.js";
21
21
  import {
22
22
  require_dist
23
23
  } from "./chunk-APJ265NV.js";
@@ -140,6 +140,9 @@ var REGISTRY = Object.freeze([
140
140
  function listMigrations() {
141
141
  return REGISTRY;
142
142
  }
143
+ function readMigrationManifest(stateDir) {
144
+ return readManifest(manifestPath(stateDir));
145
+ }
143
146
  function manifestPath(stateDir) {
144
147
  return join2(stateDir, "migrations.json");
145
148
  }
@@ -184,6 +187,7 @@ async function runPending(stateDir, migrations = REGISTRY) {
184
187
 
185
188
  export {
186
189
  listMigrations,
190
+ readMigrationManifest,
187
191
  runPending
188
192
  };
189
- //# sourceMappingURL=chunk-DYHAXKHD.js.map
193
+ //# sourceMappingURL=chunk-GWZNEVM2.js.map
@@ -0,0 +1,59 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ VERIFICATION_SCRIPT_FAMILY_HINT
4
+ } from "./chunk-UL3WSD3F.js";
5
+ import {
6
+ typebox_exports
7
+ } from "./chunk-5B2AEOW5.js";
8
+ import {
9
+ ToolNames
10
+ } from "./chunk-4NSRCOYP.js";
11
+ import {
12
+ StringEnum
13
+ } from "./chunk-YPC6ZR5L.js";
14
+ import {
15
+ init_esm_shims
16
+ } from "./chunk-3R73A4XB.js";
17
+
18
+ // src/tools/verify/surface.ts
19
+ init_esm_shims();
20
+ var BROWSER_MODES = ["auto", "required", "off"];
21
+ function prepareVerifyArguments(args) {
22
+ if (!args || typeof args !== "object" || Array.isArray(args)) return args;
23
+ const next = { ...args };
24
+ if (typeof next.args === "string") {
25
+ try {
26
+ const parsed = JSON.parse(next.args);
27
+ if (Array.isArray(parsed)) next.args = parsed;
28
+ } catch {
29
+ }
30
+ }
31
+ return next;
32
+ }
33
+ var verifyToolSurface = {
34
+ name: ToolNames.Verify,
35
+ 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.',
36
+ parameters: typebox_exports.Object({
37
+ check: typebox_exports.Optional(
38
+ typebox_exports.String({
39
+ description: `Check id, package script (${VERIFICATION_SCRIPT_FAMILY_HINT}), or "frontend"; omit to list.`
40
+ })
41
+ ),
42
+ path: typebox_exports.Optional(typebox_exports.String({ description: "frontend: artifact file under the workspace root." })),
43
+ args: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Package scripts only: arguments after --." })),
44
+ browser: typebox_exports.Optional(StringEnum(BROWSER_MODES, { description: "frontend: headless browser mode (default auto)." })),
45
+ cwd: typebox_exports.Optional(typebox_exports.String({ description: "Package scripts only: working directory." })),
46
+ timeout_ms: typebox_exports.Optional(typebox_exports.Number({ description: "Package and frontend checks only: timeout in ms." })),
47
+ max_output_bytes: typebox_exports.Optional(typebox_exports.Number({ description: "Output cap in bytes (default 600000)." }))
48
+ }),
49
+ baseActionClass: "execute",
50
+ executionMode: "sequential",
51
+ prepareArguments: prepareVerifyArguments
52
+ };
53
+
54
+ export {
55
+ BROWSER_MODES,
56
+ prepareVerifyArguments,
57
+ verifyToolSurface
58
+ };
59
+ //# sourceMappingURL=chunk-GX5WYQO4.js.map
@@ -0,0 +1,26 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-3R73A4XB.js";
5
+
6
+ // src/core/artifact-paths.ts
7
+ init_esm_shims();
8
+ var CLIO_PROJECT_DIR = ".clio-coder";
9
+ var CLIO_ARTIFACT_DIR = `${CLIO_PROJECT_DIR}/artifacts`;
10
+ var KIND_FILENAMES = {
11
+ plan: "PLAN.md",
12
+ review: "REVIEW.md",
13
+ report: "REPORT.md"
14
+ };
15
+ var DEFAULT_FILENAME = KIND_FILENAMES.plan;
16
+ function artifactDefaultPath(kind) {
17
+ const filename = typeof kind === "string" ? KIND_FILENAMES[kind] ?? DEFAULT_FILENAME : DEFAULT_FILENAME;
18
+ return `${CLIO_ARTIFACT_DIR}/${filename}`;
19
+ }
20
+
21
+ export {
22
+ CLIO_PROJECT_DIR,
23
+ CLIO_ARTIFACT_DIR,
24
+ artifactDefaultPath
25
+ };
26
+ //# sourceMappingURL=chunk-GYV6VZOC.js.map
@@ -9,14 +9,14 @@ import {
9
9
  readClioVersion,
10
10
  readPiMonoVersion
11
11
  } from "./chunk-IWHMRKLL.js";
12
- import {
13
- clioStateDir,
14
- stateRootRemoved
15
- } from "./chunk-BYP5D4HI.js";
16
12
  import {
17
13
  fsyncDirectory,
18
14
  safeResourceWrite
19
15
  } from "./chunk-WEPFGWHJ.js";
16
+ import {
17
+ clioStateDir,
18
+ stateRootRemoved
19
+ } from "./chunk-BYP5D4HI.js";
20
20
  import {
21
21
  init_esm_shims
22
22
  } from "./chunk-3R73A4XB.js";
@@ -576,4 +576,4 @@ export {
576
576
  openSession,
577
577
  resumeSession
578
578
  };
579
- //# sourceMappingURL=chunk-MQXIVJ35.js.map
579
+ //# sourceMappingURL=chunk-HAXOFFRH.js.map
@@ -0,0 +1,390 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ decisionRef
4
+ } from "./chunk-54X7T7DK.js";
5
+ import {
6
+ truncateUtf8
7
+ } from "./chunk-6XLNIQDB.js";
8
+ import {
9
+ init_esm_shims
10
+ } from "./chunk-3R73A4XB.js";
11
+
12
+ // src/domains/dispatch/event-pump.ts
13
+ init_esm_shims();
14
+ var EVENT_TEE_LIMIT = 1024;
15
+ function startDispatchEventPump(source, fold, options = {}) {
16
+ const limit = options.limit ?? EVENT_TEE_LIMIT;
17
+ const pending = [...options.prelude ?? []];
18
+ const waiters = [];
19
+ let finished = false;
20
+ let abandoned = false;
21
+ let dropped = 0;
22
+ const push = (value) => {
23
+ if (abandoned) return;
24
+ const waiter = waiters.shift();
25
+ if (waiter) {
26
+ waiter({ value, done: false });
27
+ return;
28
+ }
29
+ pending.push(value);
30
+ while (pending.length > limit) {
31
+ pending.shift();
32
+ dropped += 1;
33
+ }
34
+ };
35
+ const end = () => {
36
+ finished = true;
37
+ while (waiters.length > 0) {
38
+ waiters.shift()?.({ value: void 0, done: true });
39
+ }
40
+ };
41
+ const notify = (event) => {
42
+ try {
43
+ options.onEvent?.(event);
44
+ } catch (error) {
45
+ options.onError?.(error);
46
+ }
47
+ };
48
+ const done = (async () => {
49
+ try {
50
+ for (const event of options.prelude ?? []) notify(event);
51
+ for await (const event of source) {
52
+ try {
53
+ fold(event);
54
+ } catch (error) {
55
+ options.onError?.(error);
56
+ }
57
+ notify(event);
58
+ push(event);
59
+ }
60
+ } catch (error) {
61
+ options.onError?.(error);
62
+ } finally {
63
+ end();
64
+ }
65
+ })();
66
+ const events = {
67
+ next() {
68
+ if (pending.length > 0) {
69
+ return Promise.resolve({ value: pending.shift(), done: false });
70
+ }
71
+ if (finished || abandoned) return Promise.resolve({ value: void 0, done: true });
72
+ return new Promise((resolve) => {
73
+ waiters.push(resolve);
74
+ });
75
+ },
76
+ return() {
77
+ abandoned = true;
78
+ pending.length = 0;
79
+ while (waiters.length > 0) {
80
+ waiters.shift()?.({ value: void 0, done: true });
81
+ }
82
+ return Promise.resolve({ value: void 0, done: true });
83
+ },
84
+ [Symbol.asyncIterator]() {
85
+ return this;
86
+ }
87
+ };
88
+ return { events, done, droppedEvents: () => dropped };
89
+ }
90
+ var WORKER_OUTPUT_MAX_BYTES = 8192;
91
+ var WORKER_OUTPUT_TRUNCATION_MARKER = "\n[worker output truncated]";
92
+ function isRecord(value) {
93
+ return typeof value === "object" && value !== null && !Array.isArray(value);
94
+ }
95
+ function assistantTextFromContent(content) {
96
+ if (typeof content === "string") return content;
97
+ if (!Array.isArray(content)) return "";
98
+ return content.map((block) => {
99
+ if (typeof block === "string") return block;
100
+ if (!isRecord(block)) return "";
101
+ return typeof block.text === "string" ? block.text : "";
102
+ }).join("");
103
+ }
104
+ function isDurableAssistantMessage(message) {
105
+ const stopReason = message.stopReason;
106
+ if (stopReason === "toolUse" || stopReason === "error" || stopReason === "aborted" || stopReason === "cancelled") {
107
+ return false;
108
+ }
109
+ if (!Array.isArray(message.content)) return true;
110
+ return !message.content.some((block) => isRecord(block) && block.type === "toolCall");
111
+ }
112
+ function durableAssistantTextFromEvent(event) {
113
+ if (!isRecord(event) || event.type !== "message_end" || !isRecord(event.message)) return "";
114
+ if (event.message.role !== "assistant" || !isDurableAssistantMessage(event.message)) return "";
115
+ return assistantTextFromContent(event.message.content);
116
+ }
117
+ function boundedOutput(state, text) {
118
+ const bytes = Buffer.byteLength(text, "utf8");
119
+ const bounded = truncateUtf8(text, WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
120
+ return { state, text: bounded, bytes, truncated: bounded !== text };
121
+ }
122
+ function createWorkerOutputCapture() {
123
+ let finalText = null;
124
+ let partialText = "";
125
+ let partialBytes = 0;
126
+ let partialStored = 0;
127
+ return {
128
+ observe(event) {
129
+ if (!isRecord(event)) return;
130
+ if (event.type === "message_end") {
131
+ const message = isRecord(event.message) ? event.message : null;
132
+ partialText = "";
133
+ partialBytes = 0;
134
+ partialStored = 0;
135
+ if (message === null || message.role !== "assistant") return;
136
+ if (!isDurableAssistantMessage(message)) return;
137
+ const text = assistantTextFromContent(message.content).trim();
138
+ if (text.length > 0) finalText = text;
139
+ return;
140
+ }
141
+ if (event.type !== "message_update") return;
142
+ const assistantEvent = isRecord(event.assistantMessageEvent) ? event.assistantMessageEvent : null;
143
+ if (assistantEvent === null || assistantEvent.type !== "text_delta") return;
144
+ const delta = assistantEvent.delta;
145
+ if (typeof delta !== "string" || delta.length === 0) return;
146
+ partialBytes += Buffer.byteLength(delta, "utf8");
147
+ if (partialStored < WORKER_OUTPUT_MAX_BYTES) {
148
+ partialText += delta;
149
+ partialStored += Buffer.byteLength(delta, "utf8");
150
+ }
151
+ },
152
+ snapshot() {
153
+ if (partialBytes > 0 && partialText.trim().length > 0) {
154
+ const bounded = truncateUtf8(partialText.trim(), WORKER_OUTPUT_MAX_BYTES, WORKER_OUTPUT_TRUNCATION_MARKER);
155
+ return {
156
+ state: "partial",
157
+ text: bounded,
158
+ bytes: partialBytes,
159
+ truncated: bounded !== partialText.trim() || partialBytes > partialStored
160
+ };
161
+ }
162
+ if (finalText !== null) return boundedOutput("final", finalText);
163
+ return void 0;
164
+ }
165
+ };
166
+ }
167
+
168
+ // src/domains/dispatch/admission-error.ts
169
+ init_esm_shims();
170
+ var AdmissionCanceledError = class extends Error {
171
+ code = "admission_canceled";
172
+ constructor(message = "dispatch: admission canceled before a capacity slot opened") {
173
+ super(message);
174
+ this.name = "AdmissionCanceledError";
175
+ }
176
+ };
177
+
178
+ // src/domains/session/decision-board.ts
179
+ init_esm_shims();
180
+ import { randomUUID } from "node:crypto";
181
+ function answeredAtForDecision(policy, sourceQuestion) {
182
+ for (let index = policy.rounds.length - 1; index >= 0; index -= 1) {
183
+ const round = policy.rounds[index];
184
+ if (!round?.answeredAt) continue;
185
+ if (round.answers.some((answer) => answer.question === sourceQuestion)) return round.answeredAt;
186
+ if (round.questions.some((question) => question.question === sourceQuestion)) return round.answeredAt;
187
+ }
188
+ return void 0;
189
+ }
190
+ function finalizedInterviewEntryFields(policy) {
191
+ if (policy.rounds.length === 0 && policy.decisions.length === 0) return null;
192
+ if (!policy.turnId) throw new Error(`decision board: interview ${policy.id} has no originating user turn`);
193
+ if (policy.status !== "complete" && policy.status !== "cancelled") {
194
+ throw new Error(`decision board: interview ${policy.id} finalized with status ${policy.status}`);
195
+ }
196
+ const endedAt = policy.endedAt ?? policy.updatedAt;
197
+ const decisionsByKey = /* @__PURE__ */ new Map();
198
+ for (const decision of policy.decisions) {
199
+ const decidedAt = decision.source_question ? answeredAtForDecision(policy, decision.source_question) ?? endedAt : endedAt;
200
+ decisionsByKey.set(decision.key, {
201
+ key: decision.key,
202
+ value: decision.value,
203
+ ...decision.label ? { label: decision.label } : {},
204
+ ...decision.source_question ? { source_question: decision.source_question } : {},
205
+ status: "active",
206
+ decidedAt
207
+ });
208
+ }
209
+ return {
210
+ kind: "decisionLedger",
211
+ parentTurnId: policy.turnId,
212
+ interviewId: policy.id,
213
+ interviewStatus: policy.status,
214
+ startedAt: policy.startedAt,
215
+ endedAt,
216
+ roundCount: policy.rounds.length,
217
+ ...policy.summary ? { summary: policy.summary } : {},
218
+ ...policy.transcriptPath ? { transcriptPath: policy.transcriptPath } : {},
219
+ exposure: policy.exposure ?? "local",
220
+ decisions: [...decisionsByKey.values()]
221
+ };
222
+ }
223
+ var DECISION_REFS_CAP = 32;
224
+ function activeDecisionRefs(board) {
225
+ const refs = /* @__PURE__ */ new Set();
226
+ for (const entry of board) {
227
+ for (const decision of entry.decisions) {
228
+ if (decision.status === "active") refs.add(decisionRef(entry.interviewId, decision.key));
229
+ }
230
+ }
231
+ return [...refs].sort().slice(0, DECISION_REFS_CAP);
232
+ }
233
+ function isDecisionLedgerEntry(value) {
234
+ return !!value && typeof value === "object" && value.kind === "decisionLedger";
235
+ }
236
+ function foldDecisionBoard(entries) {
237
+ const lastByInterview = /* @__PURE__ */ new Map();
238
+ for (let index = 0; index < entries.length; index += 1) {
239
+ const raw = entries[index];
240
+ if (!isDecisionLedgerEntry(raw)) continue;
241
+ lastByInterview.set(raw.interviewId, { entry: raw, index });
242
+ }
243
+ return [...lastByInterview.values()].sort((left, right) => {
244
+ const byEndedAt = right.entry.endedAt.localeCompare(left.entry.endedAt);
245
+ return byEndedAt !== 0 ? byEndedAt : right.index - left.index;
246
+ }).map(({ entry }) => entry);
247
+ }
248
+ function activeLeafFromEntries(entries) {
249
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
250
+ const entry = entries[index];
251
+ if (entry && typeof entry === "object" && entry.kind === "message") {
252
+ const turnId = entry.turnId;
253
+ if (typeof turnId === "string" && turnId.length > 0) return turnId;
254
+ }
255
+ }
256
+ return null;
257
+ }
258
+ function createDecisionBoardStore(deps = {}) {
259
+ let cachedSessionId;
260
+ let dirty = true;
261
+ let interviews = [];
262
+ const syncToSession = () => {
263
+ const sessionId = deps.getSessionId?.() ?? null;
264
+ if (!dirty && sessionId === cachedSessionId) return;
265
+ const entries = deps.readEntries?.() ?? [];
266
+ interviews = foldDecisionBoard(entries);
267
+ cachedSessionId = sessionId;
268
+ dirty = false;
269
+ };
270
+ const append = (entry) => {
271
+ if (!deps.appendEntry) throw new Error("decision board: no session ledger is available");
272
+ deps.appendEntry(entry);
273
+ dirty = true;
274
+ };
275
+ const store = {
276
+ snapshot() {
277
+ syncToSession();
278
+ return interviews;
279
+ },
280
+ recordFinalizedInterview(policy) {
281
+ const entry = finalizedInterviewEntryFields(policy);
282
+ if (entry === null) return false;
283
+ append(entry);
284
+ return true;
285
+ },
286
+ recordAgentDecision(input) {
287
+ syncToSession();
288
+ let superseded = null;
289
+ for (const interview of interviews) {
290
+ const prior = interview.decisions.find((decision) => decision.key === input.key && decision.status === "active");
291
+ if (prior === void 0) continue;
292
+ if (interview.origin !== "agent" || prior.source !== "agent") {
293
+ throw new Error(
294
+ `decision board: '${input.key}' is an operator decision (${interview.interviewId}); it can only be revised through ask_user`
295
+ );
296
+ }
297
+ superseded = { interviewId: interview.interviewId, key: prior.key };
298
+ break;
299
+ }
300
+ if (superseded !== null) store.supersede(superseded.interviewId, superseded.key, input.rationale);
301
+ const now = (deps.now?.() ?? /* @__PURE__ */ new Date()).toISOString();
302
+ const entries = deps.readEntries?.() ?? [];
303
+ const parentTurnId = deps.getActiveLeafTurnId?.() ?? activeLeafFromEntries(entries);
304
+ if (!parentTurnId) throw new Error("decision board: no active branch leaf is available for the decision");
305
+ const entry = {
306
+ kind: "decisionLedger",
307
+ parentTurnId,
308
+ origin: "agent",
309
+ interviewId: `agent:${randomUUID()}`,
310
+ interviewStatus: "complete",
311
+ startedAt: now,
312
+ endedAt: now,
313
+ roundCount: 0,
314
+ exposure: "local",
315
+ decisions: [
316
+ {
317
+ key: input.key,
318
+ value: input.value,
319
+ ...input.label ? { label: input.label } : {},
320
+ status: "active",
321
+ decidedAt: now,
322
+ source: "agent",
323
+ alternatives: [...input.alternatives],
324
+ rationale: input.rationale
325
+ }
326
+ ]
327
+ };
328
+ append(entry);
329
+ return { entry, superseded };
330
+ },
331
+ supersede(interviewId, key, correction) {
332
+ syncToSession();
333
+ const interview = interviews.find((candidate) => candidate.interviewId === interviewId);
334
+ if (!interview) throw new Error(`decision board: interview ${interviewId} was not found on the active branch`);
335
+ const selected = interview.decisions.find((decision) => decision.key === key);
336
+ if (!selected) throw new Error(`decision board: decision ${key} was not found in interview ${interviewId}`);
337
+ const revisedAt = (deps.now?.() ?? /* @__PURE__ */ new Date()).toISOString();
338
+ const normalizedCorrection = correction?.trim();
339
+ const entries = deps.readEntries?.() ?? [];
340
+ const parentTurnId = deps.getActiveLeafTurnId?.() ?? activeLeafFromEntries(entries);
341
+ if (!parentTurnId) throw new Error("decision board: no active branch leaf is available for the revision");
342
+ const revision = {
343
+ kind: "decisionLedger",
344
+ parentTurnId,
345
+ interviewId: interview.interviewId,
346
+ interviewStatus: interview.interviewStatus,
347
+ startedAt: interview.startedAt,
348
+ endedAt: interview.endedAt,
349
+ roundCount: interview.roundCount,
350
+ ...interview.summary ? { summary: interview.summary } : {},
351
+ ...interview.transcriptPath ? { transcriptPath: interview.transcriptPath } : {},
352
+ ...interview.exposure ? { exposure: interview.exposure } : {},
353
+ decisions: interview.decisions.map((decision) => {
354
+ if (decision.key !== selected.key) return { ...decision };
355
+ const next = { ...decision, status: "superseded", revisedAt };
356
+ if (normalizedCorrection) next.correction = normalizedCorrection;
357
+ else delete next.correction;
358
+ return next;
359
+ })
360
+ };
361
+ append(revision);
362
+ return revision;
363
+ },
364
+ invalidate() {
365
+ dirty = true;
366
+ }
367
+ };
368
+ return store;
369
+ }
370
+ function decisionRationale(decision) {
371
+ const parts = [];
372
+ if (decision.alternatives?.length) parts.push(`Alternatives: ${decision.alternatives.join("; ")}`);
373
+ if (decision.rationale) parts.push(`Rationale: ${decision.rationale}`);
374
+ if (parts.length > 0) return parts.join(". ");
375
+ return decision.source_question ?? decision.correction;
376
+ }
377
+
378
+ export {
379
+ EVENT_TEE_LIMIT,
380
+ startDispatchEventPump,
381
+ WORKER_OUTPUT_MAX_BYTES,
382
+ durableAssistantTextFromEvent,
383
+ createWorkerOutputCapture,
384
+ AdmissionCanceledError,
385
+ activeDecisionRefs,
386
+ foldDecisionBoard,
387
+ createDecisionBoardStore,
388
+ decisionRationale
389
+ };
390
+ //# sourceMappingURL=chunk-I2DWJ4GM.js.map
@@ -3,13 +3,13 @@ import {
3
3
  init_esm_shims
4
4
  } from "./chunk-3R73A4XB.js";
5
5
 
6
- // src/core/shell-quote.ts
6
+ // src/domains/evidence/ordering.ts
7
7
  init_esm_shims();
8
- function shellQuote(value) {
9
- return `'${value.replace(/'/g, "'\\''")}'`;
8
+ function compareCodepoints(left, right) {
9
+ return left < right ? -1 : left > right ? 1 : 0;
10
10
  }
11
11
 
12
12
  export {
13
- shellQuote
13
+ compareCodepoints
14
14
  };
15
- //# sourceMappingURL=chunk-TXOTCRLG.js.map
15
+ //# sourceMappingURL=chunk-I5FWO7L5.js.map