@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
@@ -5,17 +5,16 @@ import {
5
5
  } from "./chunk-BMS5RKQY.js";
6
6
  import {
7
7
  webFetchToolSurface
8
- } from "./chunk-MCEPRMZW.js";
8
+ } from "./chunk-2CU2H6KE.js";
9
9
  import {
10
- gitTool,
11
10
  verifyToolSurface
12
- } from "./chunk-7BHIY2MW.js";
11
+ } from "./chunk-GX5WYQO4.js";
13
12
  import {
14
13
  codeNavToolSurface
15
- } from "./chunk-LJID3DYZ.js";
14
+ } from "./chunk-RXTN6AKH.js";
16
15
  import {
17
16
  contextToolSurface
18
- } from "./chunk-PBP4B7XR.js";
17
+ } from "./chunk-3UNOLWNZ.js";
19
18
  import {
20
19
  compileGlobRegex,
21
20
  fallbackIgnoredDirs,
@@ -32,31 +31,25 @@ import {
32
31
  readMaxBytes,
33
32
  readTool,
34
33
  renderAgentLedger
35
- } from "./chunk-IKSLQ4XV.js";
34
+ } from "./chunk-75W7L2E2.js";
35
+ import {
36
+ hashToolCall
37
+ } from "./chunk-6QOTUPRG.js";
36
38
  import {
37
39
  createTaskBoardStore,
38
40
  taskBoardCounts
39
- } from "./chunk-Q4XWMHX6.js";
40
- import {
41
- hashToolCall
42
- } from "./chunk-IDNA72AH.js";
41
+ } from "./chunk-6PAZTBPA.js";
43
42
  import {
44
43
  formatModelRejection
45
- } from "./chunk-FVDGR2ZL.js";
44
+ } from "./chunk-6Q3CYFD3.js";
46
45
  import {
47
46
  describeCallAction
48
47
  } from "./chunk-NEDJ26B5.js";
49
- import {
50
- applyToolProfile
51
- } from "./chunk-42FMPA75.js";
52
48
  import {
53
49
  resolveReadPath,
54
50
  resolveToCwd,
55
51
  toPosixPath
56
52
  } from "./chunk-OQE5J4C6.js";
57
- import {
58
- skillActivationFromToolDetails
59
- } from "./chunk-FSP7CMNU.js";
60
53
  import {
61
54
  OBSERVATION_POLICY_SLACK_BYTES,
62
55
  OBSERVE_SELF_CAPS,
@@ -68,42 +61,55 @@ import {
68
61
  reserveObservation,
69
62
  toolResultContextText,
70
63
  truncateHead
71
- } from "./chunk-B7HM5Z7T.js";
64
+ } from "./chunk-NAI6ZFCY.js";
72
65
  import {
73
66
  GREP_MAX_LINE_LENGTH,
74
67
  truncateLine
75
68
  } from "./chunk-OZNBF4L3.js";
76
69
  import {
77
- truncateUtf8
78
- } from "./chunk-6XLNIQDB.js";
79
- import {
80
- parseAgentLedgerBody
81
- } from "./chunk-VAVR4IJY.js";
70
+ applyToolProfile
71
+ } from "./chunk-QZWQA4DE.js";
82
72
  import {
83
73
  classify
84
- } from "./chunk-PGF63K6I.js";
74
+ } from "./chunk-KFV5L5SK.js";
85
75
  import {
86
- CLIO_ARTIFACT_DIR,
87
- artifactDefaultPath,
88
76
  protectArtifact,
89
77
  protectedArtifactMutationBlockReason
90
- } from "./chunk-IKOZFYBN.js";
78
+ } from "./chunk-NXYCB2VD.js";
79
+ import {
80
+ gitTool
81
+ } from "./chunk-BJVFZO5U.js";
82
+ import {
83
+ CLIO_ARTIFACT_DIR,
84
+ artifactDefaultPath
85
+ } from "./chunk-GYV6VZOC.js";
91
86
  import {
92
87
  typebox_exports
93
88
  } from "./chunk-5B2AEOW5.js";
89
+ import {
90
+ parseAgentLedgerBody
91
+ } from "./chunk-VAVR4IJY.js";
92
+ import {
93
+ decisionRef,
94
+ skillActivationFromToolDetails
95
+ } from "./chunk-54X7T7DK.js";
96
+ import {
97
+ byteLength,
98
+ truncateUtf8
99
+ } from "./chunk-6XLNIQDB.js";
94
100
  import {
95
101
  ToolNames,
96
102
  isBuiltinToolName
97
- } from "./chunk-K6BSR66V.js";
103
+ } from "./chunk-4NSRCOYP.js";
98
104
  import {
99
- incompleteInstallationAdvice
100
- } from "./chunk-65DEGPJ6.js";
101
- import {
102
- buildSafeToolEnv
103
- } from "./chunk-HJWWJ6IL.js";
105
+ assertSafeId
106
+ } from "./chunk-R346GLFC.js";
104
107
  import {
105
108
  BusChannels
106
109
  } from "./chunk-F4EKGO4N.js";
110
+ import {
111
+ incompleteInstallationAdvice
112
+ } from "./chunk-65DEGPJ6.js";
107
113
  import {
108
114
  GUARDRAIL_DEFAULTS,
109
115
  resolveGuardrail,
@@ -112,10 +118,17 @@ import {
112
118
  workerToolCallCapExceededReason,
113
119
  workerToolCallCapSynthesisReason
114
120
  } from "./chunk-S66XZJOF.js";
121
+ import {
122
+ buildSafeToolEnv
123
+ } from "./chunk-TOIVGRUX.js";
115
124
  import {
116
125
  StringEnum,
117
126
  engineStreamSimple
118
- } from "./chunk-VXMFAE2W.js";
127
+ } from "./chunk-YPC6ZR5L.js";
128
+ import {
129
+ clioDataDir,
130
+ clioStateDir
131
+ } from "./chunk-BYP5D4HI.js";
119
132
  import {
120
133
  init_esm_shims
121
134
  } from "./chunk-3R73A4XB.js";
@@ -809,9 +822,13 @@ function dispositionAwareAfterToolCall(delegate) {
809
822
  };
810
823
  }
811
824
  function createEngineAgent(options = {}) {
825
+ const { streamFn = engineStreamSimple, onStreamInvocation, ...agentOptions } = options;
812
826
  const agent = new Agent({
813
- streamFn: engineStreamSimple,
814
- ...options,
827
+ ...agentOptions,
828
+ streamFn: onStreamInvocation ? (...args) => {
829
+ onStreamInvocation();
830
+ return streamFn(...args);
831
+ } : streamFn,
815
832
  afterToolCall: dispositionAwareAfterToolCall(options.afterToolCall)
816
833
  });
817
834
  return {
@@ -1480,6 +1497,115 @@ var credentialPresentTool = {
1480
1497
  }
1481
1498
  };
1482
1499
 
1500
+ // src/tools/decide.ts
1501
+ init_esm_shims();
1502
+ var DECIDE_CAPS = Object.freeze({
1503
+ keyBytes: 64,
1504
+ valueBytes: 512,
1505
+ alternatives: 6,
1506
+ alternativeBytes: 256,
1507
+ rationaleBytes: 1024,
1508
+ labelBytes: 128
1509
+ });
1510
+ var KEBAB_KEY = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
1511
+ function boundedText(value, field, cap) {
1512
+ if (typeof value !== "string") return new Error(`decide: ${field} must be a string`);
1513
+ const trimmed = value.trim();
1514
+ if (trimmed.length === 0) return new Error(`decide: ${field} is required`);
1515
+ if (byteLength(trimmed) > cap) return new Error(`decide: ${field} exceeds the ${cap}-byte cap`);
1516
+ return trimmed;
1517
+ }
1518
+ function boundedAlternatives(value) {
1519
+ if (!Array.isArray(value) || value.length === 0) {
1520
+ return new Error("decide: alternatives must list at least one option you rejected");
1521
+ }
1522
+ if (value.length > DECIDE_CAPS.alternatives) {
1523
+ return new Error(`decide: alternatives exceeds the ${DECIDE_CAPS.alternatives}-entry cap`);
1524
+ }
1525
+ const alternatives = [];
1526
+ for (const [index, entry] of value.entries()) {
1527
+ const text = boundedText(entry, `alternatives[${index}]`, DECIDE_CAPS.alternativeBytes);
1528
+ if (text instanceof Error) return text;
1529
+ alternatives.push(text);
1530
+ }
1531
+ return alternatives;
1532
+ }
1533
+ function createDecideTool(deps = {}) {
1534
+ return {
1535
+ name: ToolNames.Decide,
1536
+ description: "Record a design decision you made between two or more viable options, with the alternatives you rejected and why. Call it before implementing the choice; a later call with the same key supersedes the earlier record.",
1537
+ parameters: typebox_exports.Object({
1538
+ key: typebox_exports.String({
1539
+ description: `Stable kebab-case name for the decision, e.g. "cache-key-shape" (at most ${DECIDE_CAPS.keyBytes} bytes).`
1540
+ }),
1541
+ value: typebox_exports.String({ description: `The option you chose (at most ${DECIDE_CAPS.valueBytes} bytes).` }),
1542
+ alternatives: typebox_exports.Array(typebox_exports.String(), {
1543
+ description: `Options you considered and rejected, 1 to ${DECIDE_CAPS.alternatives} entries.`
1544
+ }),
1545
+ rationale: typebox_exports.String({
1546
+ description: `Why the chosen option won over the alternatives (at most ${DECIDE_CAPS.rationaleBytes} bytes).`
1547
+ }),
1548
+ label: typebox_exports.Optional(typebox_exports.String({ description: "Short human-readable title for the decision." }))
1549
+ }),
1550
+ // Read class on purpose: the only effect is one session-ledger append,
1551
+ // so it must stay available at every autonomy level without a prompt.
1552
+ baseActionClass: "read",
1553
+ executionMode: "sequential",
1554
+ async run(args) {
1555
+ const key = boundedText(args.key, "key", DECIDE_CAPS.keyBytes);
1556
+ if (key instanceof Error) return { kind: "error", message: key.message };
1557
+ if (!KEBAB_KEY.test(key)) {
1558
+ return { kind: "error", message: "decide: key must be kebab-case (lowercase letters, digits, single hyphens)" };
1559
+ }
1560
+ const value = boundedText(args.value, "value", DECIDE_CAPS.valueBytes);
1561
+ if (value instanceof Error) return { kind: "error", message: value.message };
1562
+ const alternatives = boundedAlternatives(args.alternatives);
1563
+ if (alternatives instanceof Error) return { kind: "error", message: alternatives.message };
1564
+ const rationale = boundedText(args.rationale, "rationale", DECIDE_CAPS.rationaleBytes);
1565
+ if (rationale instanceof Error) return { kind: "error", message: rationale.message };
1566
+ let label;
1567
+ if (args.label !== void 0 && args.label !== null) {
1568
+ const bounded = boundedText(args.label, "label", DECIDE_CAPS.labelBytes);
1569
+ if (bounded instanceof Error) return { kind: "error", message: bounded.message };
1570
+ label = bounded;
1571
+ }
1572
+ if (deps.decisionBoard === void 0) {
1573
+ return { kind: "error", message: "decide: no session decision board is available in this context" };
1574
+ }
1575
+ let outcome;
1576
+ try {
1577
+ outcome = deps.decisionBoard.recordAgentDecision({
1578
+ key,
1579
+ value,
1580
+ alternatives,
1581
+ rationale,
1582
+ ...label !== void 0 ? { label } : {}
1583
+ });
1584
+ } catch (error) {
1585
+ return { kind: "error", message: error instanceof Error ? error.message : String(error) };
1586
+ }
1587
+ const ref = decisionRef(outcome.entry.interviewId, key);
1588
+ const supersededNote = outcome.superseded === null ? "" : ` (supersedes ${decisionRef(outcome.superseded.interviewId, outcome.superseded.key)})`;
1589
+ return {
1590
+ kind: "ok",
1591
+ output: `decision recorded: ${key} = ${value} [${ref}]${supersededNote}
1592
+ `,
1593
+ details: {
1594
+ decision: {
1595
+ ref,
1596
+ key,
1597
+ value,
1598
+ alternatives,
1599
+ rationale,
1600
+ ...label !== void 0 ? { label } : {},
1601
+ ...outcome.superseded !== null ? { superseded: decisionRef(outcome.superseded.interviewId, outcome.superseded.key) } : {}
1602
+ }
1603
+ }
1604
+ };
1605
+ }
1606
+ };
1607
+ }
1608
+
1483
1609
  // src/tools/edit.ts
1484
1610
  init_esm_shims();
1485
1611
  import { readFileSync, writeFileSync as writeFileSync2 } from "node:fs";
@@ -2509,6 +2635,88 @@ var editTool = {
2509
2635
  }
2510
2636
  };
2511
2637
 
2638
+ // src/tools/evidence.ts
2639
+ init_esm_shims();
2640
+ var EVIDENCE_TOOL_MAX_BYTES = 16384;
2641
+ function boundedResult(value) {
2642
+ const serialized = JSON.stringify(value, null, 2);
2643
+ if (Buffer.byteLength(serialized, "utf8") <= EVIDENCE_TOOL_MAX_BYTES) {
2644
+ return { kind: "ok", output: serialized, details: { truncated: false } };
2645
+ }
2646
+ const hint = "Inspect one run to narrow the output; this preview is incomplete JSON text.";
2647
+ let preview = truncateUtf8(serialized, EVIDENCE_TOOL_MAX_BYTES, "");
2648
+ let output = JSON.stringify({ truncated: true, hint, preview });
2649
+ while (Buffer.byteLength(output, "utf8") > EVIDENCE_TOOL_MAX_BYTES) {
2650
+ const excess = Buffer.byteLength(output, "utf8") - EVIDENCE_TOOL_MAX_BYTES;
2651
+ preview = truncateUtf8(preview, Math.max(0, Buffer.byteLength(preview, "utf8") - excess), "");
2652
+ output = JSON.stringify({ truncated: true, hint, preview });
2653
+ }
2654
+ return { kind: "ok", output, details: { truncated: true } };
2655
+ }
2656
+ var evidenceTool = {
2657
+ name: ToolNames.Evidence,
2658
+ description: "Read canonical evidence as JSON. List recent bundles, inspect a bundle's overview, trust axes and tier, gate decisions, and findings, or build/read evidence for a run.",
2659
+ parameters: typebox_exports.Object({
2660
+ mode: StringEnum(["list", "inspect", "run"]),
2661
+ id: typebox_exports.Optional(typebox_exports.String({ description: "Evidence bundle id for inspect." })),
2662
+ runId: typebox_exports.Optional(typebox_exports.String({ description: "Run id for run." }))
2663
+ }),
2664
+ baseActionClass: "read",
2665
+ // Run mode may materialize a derived bundle in Clio's data directory.
2666
+ executionMode: "sequential",
2667
+ async run(args) {
2668
+ const mode = args.mode;
2669
+ if (mode !== "list" && mode !== "inspect" && mode !== "run") {
2670
+ return { kind: "error", message: "evidence: mode must be list, inspect, or run" };
2671
+ }
2672
+ try {
2673
+ const dataDir = clioDataDir();
2674
+ if (mode === "list") {
2675
+ const { evidenceInventorySnapshot } = await import("./inventory-C26CFDRR.js");
2676
+ return boundedResult(await evidenceInventorySnapshot(Date.now, dataDir));
2677
+ }
2678
+ const id = mode === "inspect" ? args.id : args.runId;
2679
+ if (typeof id !== "string" || id.length === 0) {
2680
+ return { kind: "error", message: `evidence: ${mode} requires ${mode === "inspect" ? "id" : "runId"}` };
2681
+ }
2682
+ assertSafeId(id, mode === "inspect" ? "evidence" : "run");
2683
+ const { buildEvidence, EvidenceNotFoundError, inspectEvidence, loadEvidenceGateDecisions } = await import("./evidence-4F5USFKH.js");
2684
+ const { evidenceDetailSnapshot } = await import("./detail-A7JAVSIG.js");
2685
+ let evidenceId = mode === "run" ? `run-${id}` : id;
2686
+ let inspected;
2687
+ try {
2688
+ inspected = await inspectEvidence(dataDir, evidenceId);
2689
+ } catch (error) {
2690
+ if (mode !== "run" || !(error instanceof EvidenceNotFoundError)) throw error;
2691
+ try {
2692
+ evidenceId = (await buildEvidence({ dataDir, stateDir: clioStateDir(), runId: id })).evidenceId;
2693
+ } catch (buildError) {
2694
+ if (buildError instanceof Error && (buildError.message === "run ledger not found" || buildError.message === `run not found: ${id}`))
2695
+ throw new EvidenceNotFoundError(evidenceId);
2696
+ throw buildError;
2697
+ }
2698
+ inspected = await inspectEvidence(dataDir, evidenceId);
2699
+ }
2700
+ return boundedResult({
2701
+ ...inspected,
2702
+ ...await evidenceDetailSnapshot(evidenceId, Date.now, dataDir),
2703
+ gateDecisions: await loadEvidenceGateDecisions(dataDir, evidenceId)
2704
+ });
2705
+ } catch (error) {
2706
+ const absent = error instanceof Error && error.name === "EvidenceNotFoundError";
2707
+ return {
2708
+ kind: "error",
2709
+ message: truncateUtf8(
2710
+ `evidence: ${error instanceof Error ? error.message : String(error)}`,
2711
+ EVIDENCE_TOOL_MAX_BYTES - 3,
2712
+ "..."
2713
+ ),
2714
+ details: { code: absent ? "artifact_absent" : "evidence_error", artifactAbsent: absent }
2715
+ };
2716
+ }
2717
+ }
2718
+ };
2719
+
2512
2720
  // src/tools/find.ts
2513
2721
  init_esm_shims();
2514
2722
  import { existsSync, statSync } from "node:fs";
@@ -3364,6 +3572,59 @@ ${output}`,
3364
3572
  };
3365
3573
  }
3366
3574
 
3575
+ // src/tools/limitation.ts
3576
+ init_esm_shims();
3577
+ var LIMITATION_REASONS = ["no-runner", "blocked", "out-of-scope", "environment", "other"];
3578
+ function isLimitationReason(value) {
3579
+ return typeof value === "string" && LIMITATION_REASONS.includes(value);
3580
+ }
3581
+ function trimString2(value) {
3582
+ if (typeof value !== "string") return null;
3583
+ const trimmed = value.trim();
3584
+ return trimmed.length > 0 ? trimmed : null;
3585
+ }
3586
+ function normalizePaths(value) {
3587
+ if (value === void 0 || value === null) return [];
3588
+ if (!Array.isArray(value)) return null;
3589
+ const paths = [];
3590
+ for (const item of value) {
3591
+ const path4 = trimString2(item);
3592
+ if (path4 === null) return null;
3593
+ if (!paths.includes(path4)) paths.push(path4);
3594
+ }
3595
+ return paths;
3596
+ }
3597
+ var limitationTool = {
3598
+ name: ToolNames.Limitation,
3599
+ description: "Record what this turn could not verify and why. Call it once, before your final reply, when you changed files but could not run validation; the receipt stands in for validation evidence at the finish gate.",
3600
+ parameters: typebox_exports.Object({
3601
+ scope: typebox_exports.String({ description: "What could not be verified, in one sentence." }),
3602
+ reason: StringEnum(LIMITATION_REASONS, {
3603
+ description: "no-runner: no test or build runner is available; blocked: a safety gate or denial stopped the check; out-of-scope: verification was excluded by the task; environment: the environment cannot run the check; other."
3604
+ }),
3605
+ paths: typebox_exports.Optional(typebox_exports.Array(typebox_exports.String(), { description: "Repository-relative paths left unverified." }))
3606
+ }),
3607
+ baseActionClass: "read",
3608
+ executionMode: "parallel",
3609
+ async run(args) {
3610
+ const scope = trimString2(args.scope);
3611
+ if (scope === null) return { kind: "error", message: "limitation: scope is required" };
3612
+ if (!isLimitationReason(args.reason)) {
3613
+ return { kind: "error", message: `limitation: reason must be one of ${LIMITATION_REASONS.join(", ")}` };
3614
+ }
3615
+ const paths = normalizePaths(args.paths);
3616
+ if (paths === null) return { kind: "error", message: "limitation: paths must be an array of non-empty strings" };
3617
+ const limitation = { scope, reason: args.reason, paths };
3618
+ const pathSuffix = paths.length > 0 ? ` paths=${paths.join(",")}` : "";
3619
+ return {
3620
+ kind: "ok",
3621
+ output: `limitation recorded: ${scope} (reason=${limitation.reason}${pathSuffix})
3622
+ `,
3623
+ details: { limitation }
3624
+ };
3625
+ }
3626
+ };
3627
+
3367
3628
  // src/tools/ls.ts
3368
3629
  init_esm_shims();
3369
3630
  import { readdirSync as readdirSync2, statSync as statSync3 } from "node:fs";
@@ -3461,6 +3722,7 @@ var lsTool = {
3461
3722
  // src/tools/policy.ts
3462
3723
  init_esm_shims();
3463
3724
  var TOOL_PLANES = {
3725
+ [ToolNames.Evidence]: { plane: "observe", actionClass: "read", executionMode: "sequential" },
3464
3726
  [ToolNames.Read]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
3465
3727
  [ToolNames.Grep]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
3466
3728
  [ToolNames.Find]: { plane: "observe", actionClass: "read", executionMode: "parallel" },
@@ -3493,6 +3755,14 @@ var TOOL_PLANES = {
3493
3755
  // panes. It mutates no workspace, so it stays read class; sequential because
3494
3756
  // two pane operations in one batch would race the same pane registry.
3495
3757
  [ToolNames.Panes]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
3758
+ // limitation records a typed receipt in the session ledger and nothing
3759
+ // else: no filesystem, no shell. Read class so it never trips a safety
3760
+ // gate; parallel because the call is pure and idempotent.
3761
+ [ToolNames.Limitation]: { plane: "orchestrate", actionClass: "read", executionMode: "parallel" },
3762
+ // decide appends one decision-board entry to the session ledger and
3763
+ // nothing else. Read class so it never trips a safety gate; sequential so
3764
+ // two decisions in one batch never race the supersede lookup.
3765
+ [ToolNames.Decide]: { plane: "orchestrate", actionClass: "read", executionMode: "sequential" },
3496
3766
  [ToolNames.WebFetch]: { plane: "retrieve", actionClass: "read", executionMode: "parallel" },
3497
3767
  [ToolNames.AskUser]: { plane: "interact", actionClass: "read", executionMode: "sequential" },
3498
3768
  [ToolNames.Artifact]: { plane: "artifact", actionClass: "write", executionMode: "sequential" }
@@ -3599,6 +3869,10 @@ function renderTaskBoardText(board, userTasks = []) {
3599
3869
  if (task.status === "blocked" && task.reason) line += ` \u2014 blocked: ${task.reason}`;
3600
3870
  if (task.status === "cancelled" && task.reason) line += ` \u2014 dropped: ${task.reason}`;
3601
3871
  lines.push(line);
3872
+ const outputs = userTasks.find((item) => item.id === task.userTaskId)?.acceptance?.expectedOutputs;
3873
+ if (outputs?.length) lines.push(` expected outputs: ${outputs.join(", ")}`);
3874
+ for (const item of task.requiredValidationEvidence ?? [])
3875
+ lines.push(` acceptance: ${item.command} (${item.status}; ${item.notes})`);
3602
3876
  }
3603
3877
  if (counts.open > 0 && counts.active === 0) {
3604
3878
  lines.push(`next: start a task with action="start" before working it`);
@@ -3732,7 +4006,12 @@ function createTasksTool(deps) {
3732
4006
  if (userTask.status !== "open" && userTask.status !== "handed") {
3733
4007
  return { kind: "error", message: `tasks: operator task ${id} is ${userTask.status}; it cannot be picked` };
3734
4008
  }
3735
- const result2 = deps.board.apply({ op: "pick", title: userTask.title, userTaskId: userTask.id });
4009
+ const result2 = deps.board.apply({
4010
+ op: "pick",
4011
+ title: userTask.title,
4012
+ userTaskId: userTask.id,
4013
+ ...userTask.acceptance ? { verification: userTask.acceptance.verification } : {}
4014
+ });
3736
4015
  if (!result2.ok) return { kind: "error", message: `tasks: ${result2.message}` };
3737
4016
  const picked = result2.board.tasks.find((task) => task.userTaskId === userTask.id && task.status === "pending");
3738
4017
  if (!picked) return { kind: "error", message: `tasks: durable pickup for ${id} did not produce a board row` };
@@ -3834,6 +4113,7 @@ note: ${pathArg} no longer ends with a newline; the previous content did`;
3834
4113
  // src/tools/core-bootstrap.ts
3835
4114
  function registerCoreTools(registry, deps = {}) {
3836
4115
  const includeNetworkTools = !networkToolsDisabled();
4116
+ registry.register(builtin(evidenceTool, { path: "src/tools/evidence.ts", scope: "core" }));
3837
4117
  registry.register({
3838
4118
  ...builtin(readTool, { path: "src/tools/read.ts", scope: "core" })
3839
4119
  });
@@ -3858,7 +4138,7 @@ function registerCoreTools(registry, deps = {}) {
3858
4138
  if (includeNetworkTools) {
3859
4139
  registry.register({
3860
4140
  ...builtin(
3861
- lazyTool(webFetchToolSurface, async () => (await import("./web-fetch-MPARV2K7.js")).webFetchTool),
4141
+ lazyTool(webFetchToolSurface, async () => (await import("./web-fetch-V4FKSDAV.js")).webFetchTool),
3862
4142
  { path: "src/tools/web-fetch.ts", scope: "core" }
3863
4143
  )
3864
4144
  });
@@ -3868,13 +4148,13 @@ function registerCoreTools(registry, deps = {}) {
3868
4148
  });
3869
4149
  registry.register({
3870
4150
  ...builtin(
3871
- lazyTool(verifyToolSurface, async () => (await import("./verify-5K7ZKQFC.js")).verifyTool),
4151
+ lazyTool(verifyToolSurface, async () => (await import("./verify-FWYGPKMR.js")).verifyTool),
3872
4152
  { path: "src/tools/verify/index.ts", scope: "core" }
3873
4153
  )
3874
4154
  });
3875
4155
  registry.register({
3876
4156
  ...builtin(
3877
- lazyTool(codeNavToolSurface, async () => (await import("./code-nav-YVLCYA7V.js")).codeNavTool),
4157
+ lazyTool(codeNavToolSurface, async () => (await import("./code-nav-IJR2DBPR.js")).codeNavTool),
3878
4158
  { path: "src/tools/codewiki/code-nav.ts", scope: "core" }
3879
4159
  )
3880
4160
  });
@@ -3894,12 +4174,21 @@ function registerCoreTools(registry, deps = {}) {
3894
4174
  registry.register({
3895
4175
  ...builtin(credentialPresentTool, { path: "src/tools/credential-present.ts", scope: "core" })
3896
4176
  });
4177
+ registry.register({
4178
+ ...builtin(limitationTool, { path: "src/tools/limitation.ts", scope: "core" })
4179
+ });
4180
+ registry.register({
4181
+ ...builtin(createDecideTool(deps.decisionBoard ? { decisionBoard: deps.decisionBoard } : {}), {
4182
+ path: "src/tools/decide.ts",
4183
+ scope: "core"
4184
+ })
4185
+ });
3897
4186
  const session = deps.session;
3898
4187
  const readSessionEntries = deps.readSessionEntries;
3899
4188
  registry.register({
3900
4189
  ...builtin(
3901
4190
  lazyTool(contextToolSurface, async () => {
3902
- const { createContextTool } = await import("./context-KQYIWPWT.js");
4191
+ const { createContextTool } = await import("./context-2DKHWH2T.js");
3903
4192
  if (!session) return createContextTool(skillToolDeps);
3904
4193
  const { probeWorkspace } = await import("./workspace-ZJ6BFM3Q.js");
3905
4194
  return createContextTool({
@@ -3997,4 +4286,4 @@ export {
3997
4286
  registerCoreTools,
3998
4287
  assertRegisteredBuiltinTools
3999
4288
  };
4000
- //# sourceMappingURL=chunk-2NHR3NAY.js.map
4289
+ //# sourceMappingURL=chunk-36CT5VVL.js.map
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-5B2AEOW5.js";
8
8
  import {
9
9
  ToolNames
10
- } from "./chunk-K6BSR66V.js";
10
+ } from "./chunk-4NSRCOYP.js";
11
11
  import {
12
12
  StringEnum
13
- } from "./chunk-VXMFAE2W.js";
13
+ } from "./chunk-YPC6ZR5L.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "./chunk-3R73A4XB.js";
@@ -36,4 +36,4 @@ var panesToolSurface = {
36
36
  export {
37
37
  panesToolSurface
38
38
  };
39
- //# sourceMappingURL=chunk-2X4RYJTJ.js.map
39
+ //# sourceMappingURL=chunk-3GY4F45V.js.map
@@ -1,13 +1,11 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
- printError
4
- } from "./chunk-VPKWYKEY.js";
5
- import {
3
+ printError,
6
4
  source_default
7
- } from "./chunk-5TSRNF4G.js";
5
+ } from "./chunk-JCI2ROMZ.js";
8
6
  import {
9
7
  authStoragePath
10
- } from "./chunk-WNP7O5WZ.js";
8
+ } from "./chunk-ID64D7PE.js";
11
9
  import {
12
10
  init_esm_shims
13
11
  } from "./chunk-3R73A4XB.js";
@@ -35,4 +33,4 @@ export {
35
33
  printPlaintextCredentialWarning,
36
34
  credentialWriteFailed
37
35
  };
38
- //# sourceMappingURL=chunk-ZW55JB7N.js.map
36
+ //# sourceMappingURL=chunk-3ODX73FK.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-5B2AEOW5.js";
5
5
  import {
6
6
  ToolNames
7
- } from "./chunk-K6BSR66V.js";
7
+ } from "./chunk-4NSRCOYP.js";
8
8
  import {
9
9
  StringEnum
10
- } from "./chunk-VXMFAE2W.js";
10
+ } from "./chunk-YPC6ZR5L.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "./chunk-3R73A4XB.js";
@@ -32,4 +32,4 @@ var contextToolSurface = {
32
32
  export {
33
33
  contextToolSurface
34
34
  };
35
- //# sourceMappingURL=chunk-PBP4B7XR.js.map
35
+ //# sourceMappingURL=chunk-3UNOLWNZ.js.map
@@ -1,7 +1,4 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
- import {
3
- shellQuote
4
- } from "./chunk-TXOTCRLG.js";
5
2
  import {
6
3
  WORKER_BULK_FRAME_MAX_BYTES,
7
4
  WORKER_EVENT_QUEUE_MAX_FRAMES,
@@ -17,17 +14,17 @@ import {
17
14
  toolSignatureOf
18
15
  } from "./chunk-VAVR4IJY.js";
19
16
  import {
20
- enableClioCompileCache,
21
- workerCompileCacheEnvironment
22
- } from "./chunk-2LEAKD4C.js";
17
+ readClioVersion,
18
+ resolvePackageRoot
19
+ } from "./chunk-IWHMRKLL.js";
23
20
  import {
24
21
  AI_AGENT_NAME,
25
22
  withClioAgentEnvironment
26
23
  } from "./chunk-6EJMN2Y3.js";
27
24
  import {
28
- readClioVersion,
29
- resolvePackageRoot
30
- } from "./chunk-IWHMRKLL.js";
25
+ enableClioCompileCache,
26
+ workerCompileCacheEnvironment
27
+ } from "./chunk-2LEAKD4C.js";
31
28
  import {
32
29
  clioStateDir
33
30
  } from "./chunk-BYP5D4HI.js";
@@ -42,6 +39,12 @@ import { existsSync, readFileSync } from "node:fs";
42
39
  import { join as join2 } from "node:path";
43
40
  import { performance as performance2 } from "node:perf_hooks";
44
41
 
42
+ // src/core/shell-quote.ts
43
+ init_esm_shims();
44
+ function shellQuote(value) {
45
+ return `'${value.replace(/'/g, "'\\''")}'`;
46
+ }
47
+
45
48
  // src/domains/dispatch/route-facts.ts
46
49
  init_esm_shims();
47
50
  var ROUTE_FACT_FRESHNESS_MS = 15 * 60 * 1e3;
@@ -929,6 +932,7 @@ async function runFleetNodePreflight(node, projectRoot, options) {
929
932
  }
930
933
 
931
934
  export {
935
+ shellQuote,
932
936
  computeSettingsFingerprint,
933
937
  receiptAttestationFields,
934
938
  spawnNativeWorker,
@@ -940,4 +944,4 @@ export {
940
944
  routeFactVerdict,
941
945
  runFleetNodePreflight
942
946
  };
943
- //# sourceMappingURL=chunk-4JDLP6ZS.js.map
947
+ //# sourceMappingURL=chunk-3UUXNFEX.js.map