@iowarp/clio-coder 0.4.3 → 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 (340) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +1 -1
  3. package/dist/{acp-H2NGRPWO.js → acp-WNAYYF4F.js} +4 -5
  4. package/dist/{agents-TL5LLUQP.js → agents-3OKXHLOI.js} +33 -31
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-E5SW4HMS.js → auth-VKNNMGPU.js} +10 -11
  7. package/dist/{builtins-IA7V7FUC.js → builtins-WGALA46I.js} +4 -4
  8. package/dist/{chunk-F5JHEYZM.js → chunk-23L32XTI.js} +10 -7
  9. package/dist/{chunk-DWUOQKRU.js → chunk-25QBEXRS.js} +2 -2
  10. package/dist/{chunk-LLDJM5XK.js → chunk-26QSH3EJ.js} +2 -2
  11. package/dist/{chunk-N2Z7HLVY.js → chunk-2ASED4PZ.js} +10 -10
  12. package/dist/{chunk-MCEPRMZW.js → chunk-2CU2H6KE.js} +2 -2
  13. package/dist/chunk-2DSOYNFC.js +108 -0
  14. package/dist/{chunk-LDJG7DW3.js → chunk-2ZSONWVL.js} +4 -4
  15. package/dist/{chunk-GI7YYQ3F.js → chunk-36CT5VVL.js} +324 -41
  16. package/dist/{chunk-4UVU7BJ5.js → chunk-3GY4F45V.js} +2 -2
  17. package/dist/{chunk-PUVDKJ2Y.js → chunk-3ODX73FK.js} +3 -5
  18. package/dist/{chunk-IUE3Y34X.js → chunk-3UNOLWNZ.js} +2 -2
  19. package/dist/{chunk-6PTFB5VS.js → chunk-3UUXNFEX.js} +8 -4
  20. package/dist/{chunk-2APPQIER.js → chunk-4M6Z5QVF.js} +4 -4
  21. package/dist/{chunk-K6BSR66V.js → chunk-4NSRCOYP.js} +4 -1
  22. package/dist/{chunk-JGRC33J2.js → chunk-54X7T7DK.js} +12 -3
  23. package/dist/{chunk-YQWYVTMC.js → chunk-5636DCO5.js} +4 -4
  24. package/dist/{chunk-7E7I3WLS.js → chunk-57XXR6DR.js} +23 -22
  25. package/dist/{chunk-7ZYNNDKC.js → chunk-5TUB6SLS.js} +2 -2
  26. package/dist/{chunk-VW6DOEDG.js → chunk-6OSVSQL5.js} +11 -2
  27. package/dist/{chunk-L47TF46W.js → chunk-6PAZTBPA.js} +14 -2
  28. package/dist/{chunk-XIVNBFZS.js → chunk-6Q3CYFD3.js} +34 -16
  29. package/dist/{chunk-RSJ25QSL.js → chunk-6QOTUPRG.js} +155 -36
  30. package/dist/{chunk-JKKCYP3C.js → chunk-6UINWWS6.js} +10 -4
  31. package/dist/{chunk-WBKFA554.js → chunk-72YIHOZQ.js} +2 -2
  32. package/dist/{chunk-PAJQJ7BS.js → chunk-75W7L2E2.js} +246 -697
  33. package/dist/{chunk-RRNP2ANY.js → chunk-7UGL4MB5.js} +4 -4
  34. package/dist/{chunk-EKCHAPYA.js → chunk-AUPNRN7C.js} +2 -2
  35. package/dist/{chunk-ZDN3Y73Y.js → chunk-BJVFZO5U.js} +6 -48
  36. package/dist/{chunk-IWT4SF4R.js → chunk-CUSRQKPU.js} +64 -2
  37. package/dist/{chunk-SKHCAU7K.js → chunk-DQOVN6KV.js} +3 -2
  38. package/dist/{chunk-ZWPRK62N.js → chunk-DT3LWJOB.js} +4 -4
  39. package/dist/chunk-DXKJURES.js +671 -0
  40. package/dist/{chunk-BEPZRGGU.js → chunk-EL24TAU4.js} +2 -2
  41. package/dist/{chunk-OML5D5V5.js → chunk-ELWDPP3Y.js} +5 -5
  42. package/dist/{chunk-NDINPTJ4.js → chunk-ELZVTCGV.js} +5 -4
  43. package/dist/chunk-EXLD33WO.js +381 -0
  44. package/dist/{chunk-IJNZMHLA.js → chunk-FEAXX7B6.js} +2 -2
  45. package/dist/{chunk-TM6LQDI3.js → chunk-FFUPXJC4.js} +74 -323
  46. package/dist/chunk-GX5WYQO4.js +59 -0
  47. package/dist/chunk-I2DWJ4GM.js +390 -0
  48. package/dist/{chunk-TXOTCRLG.js → chunk-I5FWO7L5.js} +5 -5
  49. package/dist/chunk-IRXAATOX.js +539 -0
  50. package/dist/chunk-IXIY2H4R.js +44 -0
  51. package/dist/{chunk-KK4JZPBQ.js → chunk-IZXGRF7P.js} +76 -10
  52. package/dist/{chunk-5TSRNF4G.js → chunk-JCI2ROMZ.js} +164 -6
  53. package/dist/{chunk-INY6HTFL.js → chunk-JEIYHLOR.js} +2 -2
  54. package/dist/{chunk-MUW2BDDH.js → chunk-JQLNNIKT.js} +2 -2
  55. package/dist/{chunk-XPWWI35G.js → chunk-JSD46VO2.js} +19 -8
  56. package/dist/{chunk-VA5FNYMT.js → chunk-JT2RFCC5.js} +39 -2
  57. package/dist/{chunk-V2ANDPVT.js → chunk-K6T2ZAMZ.js} +168 -6
  58. package/dist/{chunk-B4OAX3SI.js → chunk-KFV5L5SK.js} +13 -6
  59. package/dist/{chunk-JEQ3XTHC.js → chunk-LLXSDWXS.js} +2 -2
  60. package/dist/{chunk-E3TPLWFX.js → chunk-LTIKRKFL.js} +3 -3
  61. package/dist/{chunk-NIQJ66N4.js → chunk-N56KALIC.js} +17 -17
  62. package/dist/{chunk-JDAY6FIL.js → chunk-NAI6ZFCY.js} +13 -9
  63. package/dist/{chunk-AF4YM7Z4.js → chunk-NRO2BJRH.js} +2490 -2182
  64. package/dist/{chunk-WRBAGUNF.js → chunk-NXIMQY5W.js} +2 -2
  65. package/dist/{chunk-I7ZPNEJM.js → chunk-NXYCB2VD.js} +5 -5
  66. package/dist/chunk-ODGTEFFI.js +50 -0
  67. package/dist/{chunk-2VIKGWFZ.js → chunk-OEJSLEPW.js} +2 -2
  68. package/dist/{chunk-KKOJXO6R.js → chunk-OMQNJVKW.js} +4 -2
  69. package/dist/{chunk-54CBCGIR.js → chunk-Q4WO54TA.js} +132 -77
  70. package/dist/{chunk-B4VEBZKF.js → chunk-QUFRYSWI.js} +12 -6
  71. package/dist/{chunk-42FMPA75.js → chunk-QZWQA4DE.js} +2 -2
  72. package/dist/{chunk-HEQY7ZFI.js → chunk-RAY4OVGZ.js} +2 -2
  73. package/dist/{chunk-G76U63X4.js → chunk-RQCKCSRL.js} +7 -7
  74. package/dist/{chunk-64I3JVYM.js → chunk-RXTN6AKH.js} +2 -2
  75. package/dist/{chunk-UPZU6GE4.js → chunk-RZDWV63N.js} +3 -3
  76. package/dist/{chunk-2UH2KFUP.js → chunk-S6PYF2XF.js} +2 -2
  77. package/dist/{chunk-JSC3U7TI.js → chunk-TOIVGRUX.js} +2 -2
  78. package/dist/{chunk-7DRAWPTZ.js → chunk-TQAHXW6Y.js} +1 -1
  79. package/dist/{chunk-JIEGK6UF.js → chunk-U6TMQNSI.js} +48 -4
  80. package/dist/{chunk-AX2THNSA.js → chunk-UEPWCCTY.js} +4 -4
  81. package/dist/{chunk-QWGDJJYJ.js → chunk-USR47QNF.js} +4 -4
  82. package/dist/{chunk-Y3CBHOR6.js → chunk-V6HJFQZE.js} +2 -2
  83. package/dist/chunk-V76WTFTW.js +318 -0
  84. package/dist/{chunk-NMJXSHBJ.js → chunk-W54I7H25.js} +2 -2
  85. package/dist/{chunk-2UG5F4C5.js → chunk-XULDXHTN.js} +24 -12
  86. package/dist/chunk-XXYSBZIQ.js +283 -0
  87. package/dist/{chunk-MWUZBSAQ.js → chunk-Y55JBDO5.js} +331 -51
  88. package/dist/{chunk-W6RRQCPQ.js → chunk-YD5GIKET.js} +4 -4
  89. package/dist/{chunk-CE5AX47J.js → chunk-YECAMM3D.js} +2 -2
  90. package/dist/{chunk-WCXUNS7U.js → chunk-YNFKXPEC.js} +6 -6
  91. package/dist/cli/index.js +36 -35
  92. package/dist/{clio-CMMK4KRR.js → clio-QLICPCF5.js} +2 -2
  93. package/dist/{code-nav-MDZNQS33.js → code-nav-IJR2DBPR.js} +6 -6
  94. package/dist/{components-UCUQ4QXW.js → components-2TGAI2RC.js} +3 -4
  95. package/dist/{config-SVM5P5YI.js → config-IUA6OYNS.js} +52 -47
  96. package/dist/{configure-LE3IK2TJ.js → configure-VEPX4NMX.js} +14 -15
  97. package/dist/{context-VNCR7KAG.js → context-2DKHWH2T.js} +23 -23
  98. package/dist/{context-2OHRKS42.js → context-4MPR7WKB.js} +48 -42
  99. package/dist/{context-E3VC7RX5.js → context-BOYF5EJM.js} +11 -11
  100. package/dist/{context-clear-BW4O37TG.js → context-clear-S4ZJCQUX.js} +48 -42
  101. package/dist/{context-working-set-VDS25HXZ.js → context-working-set-3I3FYX6Y.js} +8 -8
  102. package/dist/detail-A7JAVSIG.js +98 -0
  103. package/dist/{dispatch-runner-5AHT53RF.js → dispatch-runner-RJ5I2F2O.js} +71 -58
  104. package/dist/{docs-PD3EXDKU.js → docs-SPOV3BAN.js} +3 -5
  105. package/dist/{doctor-WNNVO6FY.js → doctor-DKICC2SN.js} +54 -31
  106. package/dist/{eval-7G7SGAYO.js → eval-OQOQUDHK.js} +47 -56
  107. package/dist/{evidence-VD6736FQ.js → evidence-4DQ25GUQ.js} +53 -150
  108. package/dist/evidence-4F5USFKH.js +208 -0
  109. package/dist/{evolve-AL3NGVRL.js → evolve-GSS52E5J.js} +44 -41
  110. package/dist/{extensions-MOVJ32NM.js → extensions-G7MFLYHT.js} +4 -5
  111. package/dist/{fleet-QZHUMAGI.js → fleet-Q37YHHAQ.js} +74 -68
  112. package/dist/{fleet-commands-BAYT5FJZ.js → fleet-commands-G7E4N7SM.js} +14 -11
  113. package/dist/{fleet-decisions-IREVMRU4.js → fleet-decisions-O7M6QBA2.js} +6 -6
  114. package/dist/{fleet-graph-YCTT3HTI.js → fleet-graph-TOUBW6OW.js} +13 -13
  115. package/dist/{fleet-inspect-QVJTDAVB.js → fleet-inspect-SW33JJNI.js} +43 -39
  116. package/dist/{fleet-preflight-25QAFPK4.js → fleet-preflight-CV2655TW.js} +2 -3
  117. package/dist/{fleet-validate-5O57AAJ7.js → fleet-validate-KESZX2YH.js} +16 -16
  118. package/dist/{fleet-verify-CPH2W2T6.js → fleet-verify-UQPMTVE3.js} +42 -38
  119. package/dist/{fleet-view-SWBR3VGQ.js → fleet-view-MN2VG4MR.js} +43 -39
  120. package/dist/{init-J477LKZH.js → init-PXEXQSBF.js} +60 -54
  121. package/dist/{interop-3FCM6XLG.js → interop-ZG5T62U3.js} +6 -7
  122. package/dist/inventory-C26CFDRR.js +101 -0
  123. package/dist/{library-QUQEIUG6.js → library-B2W4N74O.js} +16 -17
  124. package/dist/{memory-SGGSEP65.js → memory-YCANYS5A.js} +45 -42
  125. package/dist/{models-HEKUAXXK.js → models-GERTU3YI.js} +20 -22
  126. package/dist/{monitor-HKU57TYQ.js → monitor-CPNIUULB.js} +50 -44
  127. package/dist/{orchestrator-VDFAEFAI.js → orchestrator-J4BSH4WQ.js} +491 -1182
  128. package/dist/{panes-DN2SSFOH.js → panes-BOHAEGYC.js} +3 -3
  129. package/dist/{panes-TALGNPZT.js → panes-NXSLDQZ2.js} +5 -6
  130. package/dist/{paths-NBMFAIEZ.js → paths-VSUWNC22.js} +3 -4
  131. package/dist/{reset-EAJFFJVB.js → reset-TNWTB5LU.js} +5 -6
  132. package/dist/{resources-OVKSEFVE.js → resources-4PXNMD5G.js} +14 -14
  133. package/dist/{run-7DP7ZF2J.js → run-D6XJ34CN.js} +79 -83
  134. package/dist/{share-WML67FT3.js → share-2NWMJJEE.js} +14 -15
  135. package/dist/{skills-SG662R2K.js → skills-KR7WON5G.js} +18 -19
  136. package/dist/{skills-eval-VVZEUU46.js → skills-eval-O2ZNOLDS.js} +49 -46
  137. package/dist/{skills-inventory-I2E23GET.js → skills-inventory-ZZOUBK7O.js} +14 -14
  138. package/dist/{slash-commands-S7MBJDQK.js → slash-commands-ZXPJD64J.js} +32 -23
  139. package/dist/{steer-2LQOMCPB.js → steer-XA25PSCS.js} +3 -3
  140. package/dist/{support-CC2UJBJ6.js → support-7EMVWYG2.js} +2 -2
  141. package/dist/{targets-4QC3HIEW.js → targets-OMH2XCSN.js} +25 -27
  142. package/dist/tasks-IPAGMEIX.js +36 -0
  143. package/dist/{terminal-lease-TUHIJ6Y2.js → terminal-lease-C2J3JYRE.js} +4 -4
  144. package/dist/{tools-TFGJICCU.js → tools-EFFEAIDP.js} +5 -6
  145. package/dist/{uninstall-5PEVOE5B.js → uninstall-HALS6BLF.js} +7 -8
  146. package/dist/{upgrade-M4WXY6KN.js → upgrade-MS72RJEP.js} +14 -11
  147. package/dist/{usage-N7ZNVLEM.js → usage-NHG6MCJM.js} +60 -51
  148. package/dist/{verifiers-DJTP4XX6.js → verifiers-7AUNVXDY.js} +150 -17
  149. package/dist/{verify-RWE4PPEK.js → verify-FWYGPKMR.js} +12 -10
  150. package/dist/{web-fetch-MPARV2K7.js → web-fetch-V4FKSDAV.js} +4 -4
  151. package/dist/{wiki-generate-C7IQOXSP.js → wiki-generate-743CIGJW.js} +63 -56
  152. package/dist/{with-panes-4GCGSL7J.js → with-panes-BDQEWBRT.js} +2 -2
  153. package/dist/worker/entry.js +36 -33
  154. package/docs/README.md +3 -2
  155. package/docs/architecture/acp.md +17 -0
  156. package/docs/architecture/artifact-versions.md +1 -1
  157. package/docs/architecture/dispatch-typed-intent.md +1 -1
  158. package/docs/architecture/evidence-and-memory.md +1 -1
  159. package/docs/architecture/observability.md +7 -1
  160. package/docs/architecture/prompt-envelope-and-tools.md +15 -5
  161. package/docs/architecture/safety-model.md +10 -17
  162. package/docs/architecture/tui-design.md +1 -1
  163. package/docs/guide/built-in-agents.md +8 -8
  164. package/docs/guide/commands-and-modes.md +17 -2
  165. package/docs/guide/configuration-and-targets.md +3 -1
  166. package/docs/guide/configuration-reference.md +10 -5
  167. package/docs/guide/environment-variables.md +2 -2
  168. package/docs/guide/tool-usage.md +78 -3
  169. package/docs/history/config-knobs-audit.md +2 -2
  170. package/docs/process/development-pipeline.md +6 -1
  171. package/docs/process/git-commit-provenance.md +15 -0
  172. package/docs/process/release-cut-checklist.md +207 -0
  173. package/docs/process/scientific-validation.md +18 -17
  174. package/evals/behavioral-machinery-support.ts +1 -0
  175. package/evals/behavioral-machinery.yaml +1 -1
  176. package/package.json +1 -1
  177. package/skills/coding/coding-standards/SKILL.md +14 -4
  178. package/skills/context/context-handoff/SKILL.md +3 -3
  179. package/skills/context/context-prime/SKILL.md +3 -3
  180. package/skills/planning/architecture/SKILL.md +5 -5
  181. package/skills/planning/backlog/SKILL.md +4 -4
  182. package/skills/planning/prd/SKILL.md +4 -3
  183. package/skills/planning/product-intent/SKILL.md +8 -8
  184. package/skills/planning/tech-spec/SKILL.md +4 -4
  185. package/skills/registry.yaml +32 -32
  186. package/skills/research/arxiv-literature/SKILL.md +3 -3
  187. package/skills/research/experiment-protocol/SKILL.md +3 -3
  188. package/skills/research/scientific-debugging/SKILL.md +3 -2
  189. package/skills/research/scientific-modernization/SKILL.md +3 -3
  190. package/skills/skill-marketplace.json +16 -16
  191. package/skills/workflow/cut-it/SKILL.md +3 -4
  192. package/skills/workflow/design-council/SKILL.md +5 -10
  193. package/skills/workflow/grill-me/SKILL.md +14 -15
  194. package/skills/workflow/workflow-distiller/SKILL.md +4 -4
  195. package/src/cli/args.ts +0 -8
  196. package/src/cli/configure.ts +2 -1
  197. package/src/cli/doctor-state-size.ts +1 -12
  198. package/src/cli/doctor-validation-contract.ts +28 -0
  199. package/src/cli/doctor.ts +5 -0
  200. package/src/cli/evidence-detail.ts +1 -75
  201. package/src/cli/evidence-inventory.ts +1 -167
  202. package/src/cli/index.ts +2 -0
  203. package/src/cli/run.ts +0 -2
  204. package/src/cli/targets.ts +1 -1
  205. package/src/cli/tasks.ts +84 -0
  206. package/src/cli/upgrade.ts +10 -5
  207. package/src/cli/usage.ts +6 -0
  208. package/src/cli/verifiers.ts +147 -1
  209. package/src/cli/wiki-generate.ts +1 -0
  210. package/src/core/commit-attribution.ts +41 -1
  211. package/src/core/git-commit-attribution.ts +46 -3
  212. package/src/core/run-overrides.ts +0 -5
  213. package/src/core/skill-activation.ts +3 -0
  214. package/src/core/tool-names.ts +5 -2
  215. package/src/domains/agents/builtins/architect.md +1 -1
  216. package/src/domains/agents/builtins/coder.md +1 -1
  217. package/src/domains/agents/builtins/documenter.md +1 -1
  218. package/src/domains/agents/builtins/git-master.md +1 -1
  219. package/src/domains/agents/builtins/provenance.md +7 -7
  220. package/src/domains/agents/builtins/tester.md +1 -1
  221. package/src/domains/agents/builtins/verifier.md +2 -2
  222. package/src/domains/agents/builtins/wiki-writer.md +4 -3
  223. package/src/domains/context/extension.ts +31 -7
  224. package/src/domains/context/refresh.ts +3 -0
  225. package/src/domains/context/wiki/frontmatter.ts +5 -2
  226. package/src/domains/context/wiki/generate.ts +6 -0
  227. package/src/domains/context/wiki/prompts.ts +43 -0
  228. package/src/domains/dispatch/active-route-planner.ts +4 -0
  229. package/src/domains/dispatch/code-step.ts +11 -4
  230. package/src/domains/dispatch/contract.ts +31 -7
  231. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  232. package/src/domains/dispatch/extension.ts +50 -27
  233. package/src/domains/dispatch/fleet-commit-attribution.ts +5 -0
  234. package/src/domains/dispatch/fleet-run.ts +1 -0
  235. package/src/domains/dispatch/host-verification.ts +114 -13
  236. package/src/domains/dispatch/intent.ts +28 -18
  237. package/src/domains/dispatch/orphan-recovery.ts +2 -0
  238. package/src/domains/dispatch/receipt-integrity.ts +4 -0
  239. package/src/domains/dispatch/reservation-store.ts +5 -3
  240. package/src/domains/dispatch/state.ts +15 -2
  241. package/src/domains/dispatch/types.ts +17 -2
  242. package/src/domains/eval/runners/clio-run.ts +12 -9
  243. package/src/domains/eval/runners/context-index.ts +2 -7
  244. package/src/domains/eval/runners/context-init.ts +3 -6
  245. package/src/domains/eval/runners/external-command.ts +29 -11
  246. package/src/domains/evidence/build.ts +102 -15
  247. package/src/domains/evidence/detail.ts +69 -0
  248. package/src/domains/evidence/eval.ts +13 -1
  249. package/src/domains/evidence/finish-contract-map.ts +5 -1
  250. package/src/domains/evidence/inventory.ts +167 -0
  251. package/src/domains/evidence/store.ts +16 -0
  252. package/src/domains/evidence/types.ts +12 -0
  253. package/src/domains/extensions/resources.ts +7 -0
  254. package/src/domains/middleware/marketplace-offer.ts +20 -1
  255. package/src/domains/middleware/runtime.ts +7 -3
  256. package/src/domains/mux/detect.ts +3 -6
  257. package/src/domains/observability/accountability.ts +15 -1
  258. package/src/domains/observability/contract.ts +52 -7
  259. package/src/domains/observability/evidence-index.ts +10 -0
  260. package/src/domains/observability/extension.ts +9 -5
  261. package/src/domains/observability/projection.ts +394 -45
  262. package/src/{interactive → domains/observability}/worker-progress.ts +3 -3
  263. package/src/domains/prompts/fragments/operating/contract.md +2 -0
  264. package/src/domains/prompts/fragments/wiki/page.md +8 -0
  265. package/src/domains/providers/model-discovery.ts +1 -4
  266. package/src/domains/providers/models/local-models/clio-coder-local-coding-targets.yaml +16 -14
  267. package/src/domains/providers/runtimes/claude/claude-code.ts +9 -0
  268. package/src/domains/providers/support.ts +1 -1
  269. package/src/domains/providers/types/runtime-descriptor.ts +1 -1
  270. package/src/domains/safety/action-classifier.ts +7 -0
  271. package/src/domains/safety/default-path-policy.ts +2 -0
  272. package/src/domains/safety/finish-contract-registration.ts +29 -14
  273. package/src/domains/safety/finish-contract.ts +252 -40
  274. package/src/domains/safety/index.ts +20 -1
  275. package/src/domains/safety/policy-engine.ts +26 -6
  276. package/src/domains/safety/rigor.ts +53 -39
  277. package/src/domains/safety/validation-contract.ts +388 -0
  278. package/src/domains/session/archive-readers.ts +10 -1
  279. package/src/domains/session/decision-board.ts +101 -2
  280. package/src/domains/session/entries.ts +44 -7
  281. package/src/domains/session/extension.ts +4 -4
  282. package/src/domains/session/handoff.ts +2 -1
  283. package/src/domains/session/manager.ts +2 -3
  284. package/src/domains/session/task-board.ts +14 -1
  285. package/src/domains/session/tree/fork.ts +1 -2
  286. package/src/domains/session/tree/navigator.ts +1 -1
  287. package/src/domains/user-tasks/acceptance.ts +56 -0
  288. package/src/domains/user-tasks/active-acceptance.ts +40 -0
  289. package/src/domains/user-tasks/store.ts +34 -3
  290. package/src/engine/acp/adapter.ts +24 -6
  291. package/src/engine/acp/server.ts +21 -4
  292. package/src/engine/acp/transport.ts +53 -8
  293. package/src/engine/acp/types.ts +4 -0
  294. package/src/engine/apis/ollama-native.ts +15 -0
  295. package/src/engine/claude/subprocess-runtime.ts +107 -60
  296. package/src/engine/external-subprocess.ts +12 -4
  297. package/src/entry/orchestrator.ts +11 -2
  298. package/src/interactive/dispatch-board.ts +46 -717
  299. package/src/interactive/fleet-run-preview.ts +2 -1
  300. package/src/interactive/interactive-application.ts +3 -2
  301. package/src/interactive/interactive-presentation.ts +55 -12
  302. package/src/interactive/interactive-slash-runtime.ts +2 -1
  303. package/src/interactive/oracle.ts +5 -2
  304. package/src/interactive/overlays/fleet-run-approval.ts +3 -2
  305. package/src/interactive/overlays/message-picker.ts +2 -2
  306. package/src/interactive/overlays/settings.ts +2 -2
  307. package/src/interactive/overlays/tree-selector.ts +2 -2
  308. package/src/interactive/renderers/branch-summary.ts +1 -1
  309. package/src/interactive/slash-autocomplete.ts +4 -6
  310. package/src/interactive/slash-commands.ts +25 -39
  311. package/src/interactive/slash-spec.ts +28 -0
  312. package/src/interactive/view/artifacts.ts +2 -0
  313. package/src/interactive/worker-stream.ts +7 -3
  314. package/src/tools/bootstrap.ts +4 -0
  315. package/src/tools/builtin-tool-catalog.ts +31 -0
  316. package/src/tools/compete-worktrees.ts +7 -1
  317. package/src/tools/core-bootstrap.ts +16 -0
  318. package/src/tools/decide.ts +136 -0
  319. package/src/tools/dispatch-admission.ts +21 -0
  320. package/src/tools/dispatch-plan.ts +5 -2
  321. package/src/tools/dispatch-runner.ts +15 -1
  322. package/src/tools/dispatch-types.ts +6 -0
  323. package/src/tools/evidence.ts +96 -0
  324. package/src/tools/limitation.ts +76 -0
  325. package/src/tools/policy.ts +9 -0
  326. package/src/tools/presentation.ts +3 -0
  327. package/src/tools/registry.ts +1 -1
  328. package/src/tools/result-shaping.ts +17 -5
  329. package/src/tools/task-worktree.ts +13 -3
  330. package/src/tools/tasks.ts +10 -1
  331. package/src/tools/verify/authoring.ts +170 -83
  332. package/src/tools/verify/catalog.ts +122 -5
  333. package/src/tools/verify/index.ts +2 -1
  334. package/src/tools/verify/numeric.ts +298 -0
  335. package/src/tools/verify/perf.ts +143 -0
  336. package/src/tools/verify/scripts.ts +229 -2
  337. package/dist/chunk-7DICMOS6.js +0 -313
  338. package/dist/chunk-RVG5JXAL.js +0 -41
  339. package/dist/chunk-T56WDKA5.js +0 -183
  340. package/dist/chunk-VPKWYKEY.js +0 -169
@@ -1,23 +1,26 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  summarizeFailedCompactionUsage
4
- } from "./chunk-IJNZMHLA.js";
4
+ } from "./chunk-FEAXX7B6.js";
5
5
  import {
6
6
  readEvidenceIndex,
7
- readOutOfTurnUsageRows
8
- } from "./chunk-VA5FNYMT.js";
7
+ readOutOfTurnUsageRows,
8
+ summarizeEvidenceIndex
9
+ } from "./chunk-JT2RFCC5.js";
9
10
  import {
10
11
  loadMemoryRecordsSync
11
- } from "./chunk-BEPZRGGU.js";
12
- import "./chunk-G76U63X4.js";
13
- import "./chunk-UPZU6GE4.js";
14
- import "./chunk-RRNP2ANY.js";
12
+ } from "./chunk-EL24TAU4.js";
13
+ import "./chunk-RQCKCSRL.js";
14
+ import "./chunk-RZDWV63N.js";
15
+ import "./chunk-7UGL4MB5.js";
15
16
  import "./chunk-DR52UMZW.js";
16
- import "./chunk-AF4YM7Z4.js";
17
- import "./chunk-B4VEBZKF.js";
18
- import "./chunk-E3TPLWFX.js";
19
- import "./chunk-WRBAGUNF.js";
20
- import "./chunk-IWT4SF4R.js";
17
+ import "./chunk-NRO2BJRH.js";
18
+ import "./chunk-NXIMQY5W.js";
19
+ import "./chunk-XRZT5WY5.js";
20
+ import "./chunk-QUFRYSWI.js";
21
+ import "./chunk-LTIKRKFL.js";
22
+ import "./chunk-ODGTEFFI.js";
23
+ import "./chunk-CUSRQKPU.js";
21
24
  import {
22
25
  addResponseModelIdObservationCount,
23
26
  emptyResponseModelIdObservationCounts,
@@ -26,73 +29,74 @@ import {
26
29
  parseSessionEntries,
27
30
  readAuditRows,
28
31
  responseModelIdObservationCountsLabel
29
- } from "./chunk-JKKCYP3C.js";
32
+ } from "./chunk-6UINWWS6.js";
30
33
  import "./chunk-FTMGRKEF.js";
31
- import "./chunk-XRZT5WY5.js";
32
- import "./chunk-RVG5JXAL.js";
33
34
  import "./chunk-VIA6RFQZ.js";
34
- import "./chunk-T56WDKA5.js";
35
35
  import "./chunk-W6GROXXM.js";
36
- import "./chunk-2VIKGWFZ.js";
36
+ import "./chunk-I2DWJ4GM.js";
37
+ import "./chunk-OEJSLEPW.js";
37
38
  import "./chunk-RKKLTLYB.js";
38
- import "./chunk-6PTFB5VS.js";
39
- import "./chunk-TXOTCRLG.js";
39
+ import "./chunk-K6T2ZAMZ.js";
40
+ import "./chunk-3UUXNFEX.js";
40
41
  import {
41
42
  loadSkills
42
- } from "./chunk-LDJG7DW3.js";
43
+ } from "./chunk-2ZSONWVL.js";
43
44
  import "./chunk-NDDGJUXD.js";
44
- import "./chunk-CE5AX47J.js";
45
+ import "./chunk-YECAMM3D.js";
46
+ import "./chunk-V76WTFTW.js";
45
47
  import {
46
48
  foldPromptCacheTelemetry,
47
49
  hasPromptCacheTelemetry
48
50
  } from "./chunk-3DPEIQKN.js";
49
- import "./chunk-7DRAWPTZ.js";
51
+ import "./chunk-TQAHXW6Y.js";
50
52
  import "./chunk-5MEZN6CB.js";
51
- import "./chunk-PUVDKJ2Y.js";
53
+ import "./chunk-3ODX73FK.js";
52
54
  import "./chunk-HVDIIIQW.js";
53
55
  import {
54
56
  formatColumns,
55
57
  printError
56
- } from "./chunk-VPKWYKEY.js";
57
- import "./chunk-5TSRNF4G.js";
58
+ } from "./chunk-JCI2ROMZ.js";
58
59
  import "./chunk-2WZ546HR.js";
59
- import "./chunk-PAJQJ7BS.js";
60
- import "./chunk-EKCHAPYA.js";
61
- import "./chunk-L47TF46W.js";
62
- import "./chunk-RSJ25QSL.js";
63
- import "./chunk-XIVNBFZS.js";
60
+ import "./chunk-75W7L2E2.js";
61
+ import "./chunk-6QOTUPRG.js";
62
+ import "./chunk-AUPNRN7C.js";
63
+ import "./chunk-6PAZTBPA.js";
64
+ import "./chunk-6Q3CYFD3.js";
64
65
  import "./chunk-NEDJ26B5.js";
65
- import "./chunk-42FMPA75.js";
66
- import "./chunk-H7IXIC72.js";
67
- import "./chunk-7DICMOS6.js";
68
66
  import "./chunk-OQE5J4C6.js";
67
+ import "./chunk-NAI6ZFCY.js";
68
+ import "./chunk-OZNBF4L3.js";
69
+ import "./chunk-QZWQA4DE.js";
70
+ import "./chunk-H7IXIC72.js";
71
+ import "./chunk-KFV5L5SK.js";
72
+ import "./chunk-NXYCB2VD.js";
73
+ import "./chunk-ECH6PKUQ.js";
74
+ import "./chunk-IRXAATOX.js";
75
+ import "./chunk-BJVFZO5U.js";
76
+ import "./chunk-DXKJURES.js";
69
77
  import "./chunk-HHV2GANA.js";
70
- import "./chunk-B4OAX3SI.js";
71
- import "./chunk-I7ZPNEJM.js";
72
78
  import "./chunk-GYV6VZOC.js";
73
79
  import "./chunk-UL3WSD3F.js";
74
- import "./chunk-JDAY6FIL.js";
75
- import "./chunk-OZNBF4L3.js";
76
- import "./chunk-ECH6PKUQ.js";
77
- import "./chunk-6XLNIQDB.js";
78
80
  import "./chunk-5B2AEOW5.js";
79
81
  import "./chunk-VAVR4IJY.js";
80
- import "./chunk-JGRC33J2.js";
81
82
  import "./chunk-4BJ5BYCE.js";
82
- import "./chunk-K6BSR66V.js";
83
- import "./chunk-XPWWI35G.js";
83
+ import "./chunk-54X7T7DK.js";
84
+ import "./chunk-I5FWO7L5.js";
85
+ import "./chunk-6XLNIQDB.js";
86
+ import "./chunk-4NSRCOYP.js";
87
+ import "./chunk-JSD46VO2.js";
84
88
  import "./chunk-CFGTUFWB.js";
85
89
  import "./chunk-NZMNUPZZ.js";
86
90
  import "./chunk-2JH2WHGE.js";
91
+ import "./chunk-KXDSS5WJ.js";
92
+ import "./chunk-GHS5EBTQ.js";
93
+ import "./chunk-D7E7WCDF.js";
87
94
  import {
88
95
  cwdHash
89
96
  } from "./chunk-HAXOFFRH.js";
90
97
  import "./chunk-R346GLFC.js";
91
- import "./chunk-KXDSS5WJ.js";
92
- import "./chunk-GHS5EBTQ.js";
93
- import "./chunk-D7E7WCDF.js";
94
98
  import "./chunk-BTK3SSSK.js";
95
- import "./chunk-NMJXSHBJ.js";
99
+ import "./chunk-W54I7H25.js";
96
100
  import "./chunk-PMZVFWSR.js";
97
101
  import "./chunk-F4EKGO4N.js";
98
102
  import "./chunk-XAKHZX5N.js";
@@ -100,15 +104,15 @@ import "./chunk-33YXPOE3.js";
100
104
  import "./chunk-7CR24IG7.js";
101
105
  import "./chunk-XPLRXC72.js";
102
106
  import "./chunk-IWHMRKLL.js";
103
- import "./chunk-VW6DOEDG.js";
107
+ import "./chunk-6OSVSQL5.js";
104
108
  import "./chunk-UXCU4E3T.js";
105
109
  import "./chunk-LL4KHSZI.js";
106
- import "./chunk-JSC3U7TI.js";
107
110
  import "./chunk-S66XZJOF.js";
108
- import "./chunk-JIEGK6UF.js";
111
+ import "./chunk-TOIVGRUX.js";
112
+ import "./chunk-U6TMQNSI.js";
109
113
  import "./chunk-EBY63B7G.js";
110
114
  import "./chunk-6EJMN2Y3.js";
111
- import "./chunk-LLDJM5XK.js";
115
+ import "./chunk-26QSH3EJ.js";
112
116
  import "./chunk-ID64D7PE.js";
113
117
  import "./chunk-336NSSKI.js";
114
118
  import "./chunk-IKCO5N3L.js";
@@ -342,6 +346,7 @@ async function runUsageCommand(argv) {
342
346
  return decision === "blocked" || decision === "denied";
343
347
  });
344
348
  const evidenceRows = readEvidenceIndex(stateDir).filter((row) => inWindow(row.generatedAt, windowStart, now));
349
+ const accountability = summarizeEvidenceIndex(evidenceRows);
345
350
  let memoryRecords = [];
346
351
  try {
347
352
  memoryRecords = loadMemoryRecordsSync(clioDataDir());
@@ -504,6 +509,8 @@ async function runUsageCommand(argv) {
504
509
  else emit({ kind: "fact", fact: "session-store-missing", path: presence.sessionsPath });
505
510
  if (presence.receiptsPresent) emit({ kind: "fact", fact: "dispatch-runs", value: receipts.length });
506
511
  else emit({ kind: "fact", fact: "receipt-store-missing", path: presence.receiptsPath });
512
+ emit({ kind: "fact", fact: "unverified-successes", value: accountability.unverifiedSuccesses });
513
+ emit({ kind: "fact", fact: "ungrounded-claims", value: accountability.ungroundedClaims });
507
514
  emit({ kind: "fact", fact: "audit-tool-calls", value: auditToolCalls.length, blocked: auditBlocked.length });
508
515
  if (usageMeasurable) {
509
516
  emit({
@@ -740,6 +747,8 @@ async function runUsageCommand(argv) {
740
747
  )
741
748
  );
742
749
  }
750
+ out(` unverified successes: ${accountability.unverifiedSuccesses}`);
751
+ out(` ungrounded claims: ${accountability.ungroundedClaims}`);
743
752
  if (tagCounts.size > 0) {
744
753
  out("");
745
754
  out(" failure tags (from evidence index)");
@@ -1008,4 +1017,4 @@ function isRecord(value) {
1008
1017
  export {
1009
1018
  runUsageCommand
1010
1019
  };
1011
- //# sourceMappingURL=usage-N7ZNVLEM.js.map
1020
+ //# sourceMappingURL=usage-NHG6MCJM.js.map
@@ -4,35 +4,41 @@ import {
4
4
  discoverVerifierAuthoring,
5
5
  previewVerifierDraft,
6
6
  runVerifierAuthoringWorkflow
7
- } from "./chunk-54CBCGIR.js";
7
+ } from "./chunk-Q4WO54TA.js";
8
8
  import {
9
9
  verifyTool
10
- } from "./chunk-F5JHEYZM.js";
11
- import "./chunk-V2ANDPVT.js";
10
+ } from "./chunk-23L32XTI.js";
11
+ import {
12
+ recordPerfBaseline
13
+ } from "./chunk-K6T2ZAMZ.js";
12
14
  import "./chunk-LCGCVYZ4.js";
15
+ import "./chunk-V76WTFTW.js";
13
16
  import {
14
17
  printError,
15
18
  printOk
16
- } from "./chunk-VPKWYKEY.js";
17
- import "./chunk-5TSRNF4G.js";
18
- import "./chunk-ZDN3Y73Y.js";
19
+ } from "./chunk-JCI2ROMZ.js";
20
+ import "./chunk-GX5WYQO4.js";
19
21
  import "./chunk-VG7TBQIY.js";
22
+ import "./chunk-OQE5J4C6.js";
23
+ import "./chunk-ECH6PKUQ.js";
24
+ import "./chunk-BJVFZO5U.js";
20
25
  import {
26
+ DECLARED_CHECK_KINDS,
21
27
  PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
22
- loadProjectVerifierCatalog
23
- } from "./chunk-7DICMOS6.js";
24
- import "./chunk-OQE5J4C6.js";
28
+ loadProjectVerifierCatalog,
29
+ normalizeNumericTolerance
30
+ } from "./chunk-DXKJURES.js";
25
31
  import {
26
32
  isProjectVerifierCheckId
27
33
  } from "./chunk-UL3WSD3F.js";
28
- import "./chunk-ECH6PKUQ.js";
29
- import "./chunk-6XLNIQDB.js";
30
34
  import "./chunk-5B2AEOW5.js";
31
- import "./chunk-K6BSR66V.js";
35
+ import "./chunk-I5FWO7L5.js";
36
+ import "./chunk-6XLNIQDB.js";
37
+ import "./chunk-4NSRCOYP.js";
32
38
  import {
33
39
  SAFE_EXEC_DEFAULT_TIMEOUT_MS
34
- } from "./chunk-JSC3U7TI.js";
35
- import "./chunk-JIEGK6UF.js";
40
+ } from "./chunk-TOIVGRUX.js";
41
+ import "./chunk-U6TMQNSI.js";
36
42
  import "./chunk-EBY63B7G.js";
37
43
  import "./chunk-6EJMN2Y3.js";
38
44
  import "./chunk-APJ265NV.js";
@@ -208,11 +214,22 @@ Usage:
208
214
  clio-coder verifiers edit <id> [--description <text>] [--command <json-argv>] [fields] [--yes]
209
215
  clio-coder verifiers rename <old> <new> [--yes]
210
216
  clio-coder verifiers remove <id> [--yes]
217
+ clio-coder verifiers baseline <id>
211
218
 
212
219
  Fields:
213
220
  --cwd <path> repository-relative working directory (default .)
214
221
  --timeout-ms <number> bounded timeout in milliseconds (default 120000)
215
222
  --tags <a,b> comma-separated catalog tags
223
+ --kind <kind> command (default), numeric-compare, or perf-budget
224
+ --reference <path> numeric-compare: repository-relative reference JSON of string -> number | number[]
225
+ --tolerance <json> numeric-compare: {"relative"?,"absolute"?,"ulp"?}, at least one;
226
+ perf-budget with --baseline: {"relative"} headroom over the baseline
227
+ --budget-ms <number> perf-budget: wall-time bound in milliseconds
228
+ --budget-relative <r> perf-budget with --budget-ms: fractional headroom over the bound
229
+ --baseline <path> perf-budget: repository-relative baseline JSON written by 'verifiers baseline <id>'
230
+
231
+ baseline runs a perf-budget check once and records its wall time at the check's
232
+ baseline path; a failing or timed-out command records nothing.
216
233
 
217
234
  Discovery and every preview are read-only. Mutating commands write only with
218
235
  --yes after printing the exact argv, cwd, timeout, tags, source provenance, and
@@ -231,7 +248,13 @@ var VALUE_OPTIONS = /* @__PURE__ */ new Set([
231
248
  "--tags",
232
249
  "--exclude",
233
250
  "--rename",
234
- "--dry-run"
251
+ "--dry-run",
252
+ "--kind",
253
+ "--reference",
254
+ "--tolerance",
255
+ "--budget-ms",
256
+ "--budget-relative",
257
+ "--baseline"
235
258
  ]);
236
259
  function parseAuthoringArgs(argv) {
237
260
  const positional = [];
@@ -289,6 +312,82 @@ function parseTimeout(value) {
289
312
  function tags(value) {
290
313
  return value === void 0 ? [] : value.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0);
291
314
  }
315
+ function parseJsonObject(value, option) {
316
+ try {
317
+ const parsed = JSON.parse(value);
318
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
319
+ return new Error(`${option} must be a JSON object`);
320
+ }
321
+ return parsed;
322
+ } catch (error) {
323
+ return new Error(`${option} must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
324
+ }
325
+ }
326
+ function kindFieldsFromArgs(parsed) {
327
+ const kindValue = oneValue(parsed, "--kind") ?? "command";
328
+ if (!DECLARED_CHECK_KINDS.includes(kindValue)) {
329
+ return new Error(`--kind must be one of ${DECLARED_CHECK_KINDS.join(", ")}`);
330
+ }
331
+ const kind = kindValue;
332
+ const reference = oneValue(parsed, "--reference");
333
+ const toleranceValue = oneValue(parsed, "--tolerance");
334
+ const budgetMs = oneValue(parsed, "--budget-ms");
335
+ const budgetRelative = oneValue(parsed, "--budget-relative");
336
+ const baseline = oneValue(parsed, "--baseline");
337
+ if (kind === "command") {
338
+ const stray = [
339
+ ["--reference", reference],
340
+ ["--tolerance", toleranceValue],
341
+ ["--budget-ms", budgetMs],
342
+ ["--budget-relative", budgetRelative],
343
+ ["--baseline", baseline]
344
+ ].filter(([, value]) => value !== void 0);
345
+ if (stray.length > 0)
346
+ return new Error(`${stray.map(([name]) => name).join(", ")} require --kind numeric-compare or perf-budget`);
347
+ return {};
348
+ }
349
+ if (kind === "numeric-compare") {
350
+ if (budgetMs !== void 0 || budgetRelative !== void 0 || baseline !== void 0) {
351
+ return new Error("--budget-ms, --budget-relative, and --baseline belong to --kind perf-budget");
352
+ }
353
+ if (reference === void 0) return new Error("--reference is required for --kind numeric-compare");
354
+ if (toleranceValue === void 0) return new Error("--tolerance is required for --kind numeric-compare");
355
+ const toleranceJson = parseJsonObject(toleranceValue, "--tolerance");
356
+ if (toleranceJson instanceof Error) return toleranceJson;
357
+ const tolerance = normalizeNumericTolerance(toleranceJson);
358
+ if (tolerance instanceof Error) return new Error(`--tolerance ${tolerance.message}`);
359
+ return { kind, numeric: { reference, tolerance } };
360
+ }
361
+ if (reference !== void 0) return new Error("--reference belongs to --kind numeric-compare");
362
+ if (budgetMs === void 0 === (baseline === void 0)) {
363
+ return new Error("--kind perf-budget requires exactly one of --budget-ms or --baseline");
364
+ }
365
+ if (budgetMs !== void 0) {
366
+ if (toleranceValue !== void 0) return new Error("use --budget-relative for headroom over --budget-ms");
367
+ const wallTimeMs = Number(budgetMs);
368
+ if (!Number.isFinite(wallTimeMs) || wallTimeMs <= 0) return new Error("--budget-ms must be a positive number");
369
+ const budget = { wallTimeMs };
370
+ if (budgetRelative !== void 0) {
371
+ const relative = Number(budgetRelative);
372
+ if (!Number.isFinite(relative) || relative < 0) return new Error("--budget-relative must be a non-negative number");
373
+ budget.tolerance = { relative };
374
+ }
375
+ return { kind, perf: { budget } };
376
+ }
377
+ if (budgetRelative !== void 0)
378
+ return new Error("--budget-relative belongs with --budget-ms; use --tolerance with --baseline");
379
+ const perf = { baseline };
380
+ if (toleranceValue !== void 0) {
381
+ const toleranceJson = parseJsonObject(toleranceValue, "--tolerance");
382
+ if (toleranceJson instanceof Error) return toleranceJson;
383
+ const relative = toleranceJson.relative;
384
+ if (typeof relative !== "number" || !Number.isFinite(relative) || relative < 0) {
385
+ return new Error('--tolerance for a baseline must be {"relative": <non-negative number>}');
386
+ }
387
+ perf.tolerance = { relative };
388
+ }
389
+ return { kind, perf };
390
+ }
292
391
  function requiredValue(parsed, option) {
293
392
  const value = oneValue(parsed, option);
294
393
  return value === void 0 || value.length === 0 ? new Error(`${option} is required`) : value;
@@ -314,6 +413,8 @@ function addRevision(parsed) {
314
413
  if (command instanceof Error) return command;
315
414
  const timeoutMs = parseTimeout(oneValue(parsed, "--timeout-ms"));
316
415
  if (timeoutMs instanceof Error) return timeoutMs;
416
+ const kindFields = kindFieldsFromArgs(parsed);
417
+ if (kindFields instanceof Error) return kindFields;
317
418
  return {
318
419
  kind: "add",
319
420
  check: {
@@ -322,7 +423,8 @@ function addRevision(parsed) {
322
423
  command,
323
424
  cwd: oneValue(parsed, "--cwd") ?? ".",
324
425
  timeoutMs,
325
- tags: tags(oneValue(parsed, "--tags"))
426
+ tags: tags(oneValue(parsed, "--tags")),
427
+ ...kindFields
326
428
  }
327
429
  };
328
430
  }
@@ -348,6 +450,13 @@ function editRevision(parsed) {
348
450
  }
349
451
  const tagValue = oneValue(parsed, "--tags");
350
452
  if (tagValue !== void 0) changes.tags = tags(tagValue);
453
+ if (oneValue(parsed, "--kind") !== void 0) {
454
+ const kindFields = kindFieldsFromArgs(parsed);
455
+ if (kindFields instanceof Error) return kindFields;
456
+ changes.kind = kindFields.kind ?? "command";
457
+ if (kindFields.numeric !== void 0) changes.numeric = kindFields.numeric;
458
+ if (kindFields.perf !== void 0) changes.perf = kindFields.perf;
459
+ }
351
460
  if (Object.keys(changes).length === 0) return new Error("edit requires at least one changed field");
352
461
  return { kind: "edit", id, changes };
353
462
  }
@@ -419,6 +528,29 @@ async function executeWorkflow(parsed, options) {
419
528
  for (const dryRun of result.dryRuns) code = Math.max(code, printDryRun(dryRun.id, dryRun.result));
420
529
  return code;
421
530
  }
531
+ async function baselineCommand(id) {
532
+ if (id === void 0) {
533
+ printError("baseline requires a check ID");
534
+ return 2;
535
+ }
536
+ const loaded = loadProjectVerifierCatalog(process.cwd());
537
+ if (!loaded.ok) {
538
+ printError(`production catalog parser rejected ${loaded.reason}`);
539
+ return 1;
540
+ }
541
+ const check = loaded.source?.checks.find((candidate) => candidate.id === id);
542
+ if (check === void 0) {
543
+ printError(`no catalog check '${id}' in ${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}`);
544
+ return 1;
545
+ }
546
+ const recorded = await recordPerfBaseline(check);
547
+ if (!recorded.ok) {
548
+ printError(`baseline '${id}' not recorded: ${recorded.message}`);
549
+ return 1;
550
+ }
551
+ printOk(`recorded baseline for '${id}': ${Math.round(recorded.wallTimeMs)}ms at ${recorded.path}`);
552
+ return 0;
553
+ }
422
554
  async function discoverCommand() {
423
555
  const discovery = discoverVerifierAuthoring();
424
556
  if (!discovery.ok) {
@@ -462,6 +594,7 @@ async function runVerifiersCommand(argv) {
462
594
  const command = parsed.positional[0];
463
595
  if (command === "discover") return discoverCommand();
464
596
  if (command === "validate") return validateCommand();
597
+ if (command === "baseline") return baselineCommand(parsed.positional[1]);
465
598
  if (command === "dry-run") {
466
599
  const id = parsed.positional[1];
467
600
  if (id === void 0) {
@@ -493,4 +626,4 @@ async function runVerifiersCommand(argv) {
493
626
  export {
494
627
  runVerifiersCommand
495
628
  };
496
- //# sourceMappingURL=verifiers-DJTP4XX6.js.map
629
+ //# sourceMappingURL=verifiers-7AUNVXDY.js.map
@@ -1,19 +1,21 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  verifyTool
4
- } from "./chunk-F5JHEYZM.js";
5
- import "./chunk-V2ANDPVT.js";
6
- import "./chunk-ZDN3Y73Y.js";
4
+ } from "./chunk-23L32XTI.js";
5
+ import "./chunk-K6T2ZAMZ.js";
6
+ import "./chunk-GX5WYQO4.js";
7
7
  import "./chunk-VG7TBQIY.js";
8
- import "./chunk-7DICMOS6.js";
9
8
  import "./chunk-OQE5J4C6.js";
10
- import "./chunk-UL3WSD3F.js";
11
9
  import "./chunk-ECH6PKUQ.js";
12
- import "./chunk-6XLNIQDB.js";
10
+ import "./chunk-BJVFZO5U.js";
11
+ import "./chunk-DXKJURES.js";
12
+ import "./chunk-UL3WSD3F.js";
13
13
  import "./chunk-5B2AEOW5.js";
14
- import "./chunk-K6BSR66V.js";
15
- import "./chunk-JSC3U7TI.js";
16
- import "./chunk-JIEGK6UF.js";
14
+ import "./chunk-I5FWO7L5.js";
15
+ import "./chunk-6XLNIQDB.js";
16
+ import "./chunk-4NSRCOYP.js";
17
+ import "./chunk-TOIVGRUX.js";
18
+ import "./chunk-U6TMQNSI.js";
17
19
  import "./chunk-EBY63B7G.js";
18
20
  import "./chunk-6EJMN2Y3.js";
19
21
  import "./chunk-APJ265NV.js";
@@ -24,4 +26,4 @@ import "./chunk-3R73A4XB.js";
24
26
  export {
25
27
  verifyTool
26
28
  };
27
- //# sourceMappingURL=verify-RWE4PPEK.js.map
29
+ //# sourceMappingURL=verify-FWYGPKMR.js.map
@@ -1,12 +1,12 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  webFetchToolSurface
4
- } from "./chunk-MCEPRMZW.js";
4
+ } from "./chunk-2CU2H6KE.js";
5
+ import "./chunk-5B2AEOW5.js";
5
6
  import {
6
7
  truncateUtf8
7
8
  } from "./chunk-6XLNIQDB.js";
8
- import "./chunk-5B2AEOW5.js";
9
- import "./chunk-K6BSR66V.js";
9
+ import "./chunk-4NSRCOYP.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-3R73A4XB.js";
@@ -634,4 +634,4 @@ ${truncate(preview, ERROR_PREVIEW_BYTES)}` : ""}`
634
634
  export {
635
635
  webFetchTool
636
636
  };
637
- //# sourceMappingURL=web-fetch-MPARV2K7.js.map
637
+ //# sourceMappingURL=web-fetch-V4FKSDAV.js.map