@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
@@ -2,7 +2,7 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  parseJsonObjectPayload,
4
4
  parseVerifierResult
5
- } from "./chunk-B4OAX3SI.js";
5
+ } from "./chunk-KFV5L5SK.js";
6
6
  import {
7
7
  atomicWrite
8
8
  } from "./chunk-HAXOFFRH.js";
@@ -685,4 +685,4 @@ export {
685
685
  readGateDecisionArtifacts,
686
686
  readGateDecisionArtifactsForRunIds
687
687
  };
688
- //# sourceMappingURL=chunk-WRBAGUNF.js.map
688
+ //# sourceMappingURL=chunk-NXIMQY5W.js.map
@@ -1,16 +1,16 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ canonicalizeExistingPath
4
+ } from "./chunk-ECH6PKUQ.js";
2
5
  import {
3
6
  artifactDefaultPath
4
7
  } from "./chunk-GYV6VZOC.js";
5
8
  import {
6
9
  isVerificationScriptName
7
10
  } from "./chunk-UL3WSD3F.js";
8
- import {
9
- canonicalizeExistingPath
10
- } from "./chunk-ECH6PKUQ.js";
11
11
  import {
12
12
  ToolNames
13
- } from "./chunk-K6BSR66V.js";
13
+ } from "./chunk-4NSRCOYP.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "./chunk-3R73A4XB.js";
@@ -804,4 +804,4 @@ export {
804
804
  commandArgumentSegments,
805
805
  scanShellLike
806
806
  };
807
- //# sourceMappingURL=chunk-I7ZPNEJM.js.map
807
+ //# sourceMappingURL=chunk-NXYCB2VD.js.map
@@ -0,0 +1,50 @@
1
+ import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ describeValidationContract,
4
+ loadValidationContract
5
+ } from "./chunk-V76WTFTW.js";
6
+ import {
7
+ init_esm_shims
8
+ } from "./chunk-3R73A4XB.js";
9
+
10
+ // src/domains/safety/rigor.ts
11
+ init_esm_shims();
12
+ function rigorResolution(options) {
13
+ if (options.override === "high" || options.override === "normal") {
14
+ return { rigor: options.override, source: "override" };
15
+ }
16
+ const cwd = options.cwd ?? process.cwd();
17
+ const loaded = loadValidationContract(cwd);
18
+ if (!loaded.ok) {
19
+ const resolution = { rigor: "normal", source: "invalid-contract", contractPath: loaded.path };
20
+ const diagnostic = describeValidationContract(loaded);
21
+ if (diagnostic !== null) resolution.diagnostic = diagnostic;
22
+ return resolution;
23
+ }
24
+ if (loaded.contract !== null) {
25
+ return { rigor: "high", source: "validation-contract", contractPath: loaded.path };
26
+ }
27
+ if ("advisory" in loaded) {
28
+ const resolution = { rigor: "normal", source: "markdown-advisory", contractPath: loaded.path };
29
+ const diagnostic = describeValidationContract(loaded);
30
+ if (diagnostic !== null) resolution.diagnostic = diagnostic;
31
+ return resolution;
32
+ }
33
+ return { rigor: "normal", source: "none" };
34
+ }
35
+ function resolveRigor(options) {
36
+ return rigorResolution(options).rigor;
37
+ }
38
+ function parseRigorOverride(value) {
39
+ if (typeof value !== "string") return null;
40
+ const normalized = value.trim().toLowerCase();
41
+ if (normalized === "high") return "high";
42
+ if (normalized === "normal") return "normal";
43
+ return null;
44
+ }
45
+
46
+ export {
47
+ resolveRigor,
48
+ parseRigorOverride
49
+ };
50
+ //# sourceMappingURL=chunk-ODGTEFFI.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-RKKLTLYB.js";
5
5
  import {
6
6
  enabledExtensionResourceRoots
7
- } from "./chunk-7DRAWPTZ.js";
7
+ } from "./chunk-TQAHXW6Y.js";
8
8
  import {
9
9
  PATH_BOUNDARY_MAX_ENTRIES,
10
10
  normalizePathBoundary,
@@ -5073,4 +5073,4 @@ export {
5073
5073
  listFleetContracts,
5074
5074
  renderFleetPrompt
5075
5075
  };
5076
- //# sourceMappingURL=chunk-2VIKGWFZ.js.map
5076
+ //# sourceMappingURL=chunk-OEJSLEPW.js.map
@@ -1390,7 +1390,9 @@ async function detectMux(options = {}) {
1390
1390
  return { detection: none("panes are turned off"), client: null };
1391
1391
  }
1392
1392
  if (enabled === "embedded") {
1393
- log("info", "interface.panes.enabled=embedded is not implemented yet; detecting a guest pane host instead");
1393
+ const reason = "embedded pane hosting is not implemented; use auto or guest";
1394
+ log("warning", reason);
1395
+ return { detection: none(reason, [], true), client: null };
1394
1396
  }
1395
1397
  if (env.HERDR_ENV !== "1") {
1396
1398
  return { detection: none("HERDR_ENV is not 1, so Clio is not running inside a pane host"), client: null };
@@ -1830,4 +1832,4 @@ export {
1830
1832
  createYaziSession,
1831
1833
  createMuxDomainModule
1832
1834
  };
1833
- //# sourceMappingURL=chunk-KKOJXO6R.js.map
1835
+ //# sourceMappingURL=chunk-OMQNJVKW.js.map
@@ -1,29 +1,36 @@
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";
4
+ } from "./chunk-23L32XTI.js";
5
5
  import {
6
6
  discoverDeclaredChecksAtRoot,
7
7
  discoverDeclaredProjectEntriesAtRoot
8
- } from "./chunk-V2ANDPVT.js";
8
+ } from "./chunk-K6T2ZAMZ.js";
9
9
  import {
10
10
  parseTomlDocument,
11
11
  tomlTableAt
12
12
  } from "./chunk-LCGCVYZ4.js";
13
+ import {
14
+ VALIDATION_CONTRACT_MARKDOWN_PATH,
15
+ loadValidationContract
16
+ } from "./chunk-V76WTFTW.js";
13
17
  import {
14
18
  PROJECT_VERIFIER_CATALOG_CAPS,
15
19
  PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
16
20
  PROJECT_VERIFIER_CATALOG_VERSION,
17
- compareCodepoints,
21
+ normalizeNumericTolerance,
18
22
  parseProjectVerifierCatalogText
19
- } from "./chunk-7DICMOS6.js";
23
+ } from "./chunk-DXKJURES.js";
20
24
  import {
21
25
  isVerificationScriptName
22
26
  } from "./chunk-UL3WSD3F.js";
27
+ import {
28
+ compareCodepoints
29
+ } from "./chunk-I5FWO7L5.js";
23
30
  import {
24
31
  SAFE_EXEC_DEFAULT_TIMEOUT_MS,
25
32
  resolveSafeCwd
26
- } from "./chunk-JSC3U7TI.js";
33
+ } from "./chunk-TOIVGRUX.js";
27
34
  import {
28
35
  require_dist
29
36
  } from "./chunk-APJ265NV.js";
@@ -48,12 +55,6 @@ import {
48
55
  } from "node:fs";
49
56
  import path from "node:path";
50
57
  var DECLARED_FILE_CAP_BYTES = 1024 * 1024;
51
- var VALIDATION_CONTRACT_PATHS = [
52
- ".clio-coder/validation.yaml",
53
- ".clio-coder/validation.yml",
54
- "validation.yaml",
55
- "validation.yml"
56
- ];
57
58
  function manualEntryInstruction() {
58
59
  return 'No unambiguous declared command was found. Add one explicitly with `clio-coder verifiers add --id <id> --description <text> --command \'["executable","arg"]\'`; `--command` is an exact JSON argv array. Review the preview, then rerun with `--yes`.';
59
60
  }
@@ -62,9 +63,20 @@ function cloneCheck(check) {
62
63
  ...check,
63
64
  command: [...check.command],
64
65
  tags: [...check.tags],
66
+ ...check.numeric !== void 0 ? { numeric: structuredClone(check.numeric) } : {},
67
+ ...check.perf !== void 0 ? { perf: structuredClone(check.perf) } : {},
65
68
  provenance: { ...check.provenance }
66
69
  };
67
70
  }
71
+ function kindFields(check) {
72
+ const kind = check.kind ?? "command";
73
+ if (kind === "command") return {};
74
+ return {
75
+ kind,
76
+ ...check.numeric !== void 0 ? { numeric: structuredClone(check.numeric) } : {},
77
+ ...check.perf !== void 0 ? { perf: structuredClone(check.perf) } : {}
78
+ };
79
+ }
68
80
  function relativePath(workspaceRoot, filePath) {
69
81
  const relative = path.relative(workspaceRoot, filePath);
70
82
  return relative.length === 0 ? "." : relative.split(path.sep).join("/");
@@ -139,6 +151,7 @@ function projectedCheck(workspaceRoot, check) {
139
151
  cwd: check.cwd,
140
152
  timeoutMs: check.timeoutMs,
141
153
  tags: [...check.tags],
154
+ ...kindFields(check),
142
155
  provenance: sourceProvenance(workspaceRoot, check),
143
156
  state: check.source.kind === "package.json" ? "active" : "existing",
144
157
  ...check.source.kind === "package.json" ? {} : { catalogId: check.id }
@@ -469,13 +482,6 @@ function shellLikeArgv(command) {
469
482
  if ((argv[0] ?? "").includes("=")) return new Error("environment assignments are not argv executables");
470
483
  return argv;
471
484
  }
472
- function validatorArgv(value) {
473
- if (typeof value === "string") return shellLikeArgv(value);
474
- if (!Array.isArray(value) || value.length === 0 || value.some((entry) => typeof entry !== "string" || entry.length === 0)) {
475
- return new Error("validator must be a command string or a non-empty argv string array");
476
- }
477
- return [...value];
478
- }
479
485
  function validationPreferredId(argv) {
480
486
  const executable = path.basename(argv[0] ?? "check").replace(/\.[^.]+$/u, "");
481
487
  const script = argv.find((entry, index) => index > 0 && /\.(?:py|js|mjs|sh)$/u.test(entry));
@@ -484,80 +490,64 @@ function validationPreferredId(argv) {
484
490
  }
485
491
  function validationContractProposals(workspaceRoot, diagnostics) {
486
492
  const proposals = [];
487
- for (const relative of VALIDATION_CONTRACT_PATHS) {
488
- const text = regularFileText(path.join(workspaceRoot, relative), workspaceRoot);
489
- if (text === null) continue;
490
- if (text instanceof Error) {
491
- diagnostics.push(`${relative}: ${text.message}; validation command discovery skipped.`);
492
- continue;
493
- }
494
- const document = (0, import_yaml.parseDocument)(text, { prettyErrors: false, strict: true, uniqueKeys: true });
495
- if (document.errors.length > 0) {
496
- diagnostics.push(`${relative}: invalid YAML; validation command discovery skipped.`);
497
- continue;
498
- }
499
- let parsed;
500
- try {
501
- parsed = document.toJS({ maxAliasCount: 0 });
502
- } catch (error) {
503
- diagnostics.push(`${relative}: invalid YAML (${error instanceof Error ? error.message : String(error)}).`);
504
- continue;
505
- }
506
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) continue;
507
- const validators = parsed.validators;
508
- if (!Array.isArray(validators)) continue;
509
- for (const [index, validator] of validators.entries()) {
510
- const record = validator !== null && typeof validator === "object" && !Array.isArray(validator) ? validator : null;
511
- if (record !== null) {
512
- const typedFields = [
513
- ["id", (value) => typeof value === "string"],
514
- ["description", (value) => typeof value === "string"],
515
- ["cwd", (value) => typeof value === "string"],
516
- ["timeoutMs", (value) => typeof value === "number"],
517
- ["tags", (value) => Array.isArray(value) && value.every((tag) => typeof tag === "string")]
518
- ];
519
- const invalidField = typedFields.find(([field, valid]) => Object.hasOwn(record, field) && !valid(record[field]));
520
- if (invalidField !== void 0) {
521
- diagnostics.push(
522
- `${relative}: validators[${index}].${String(invalidField[0])} has an ambiguous type; use manual argv entry.`
523
- );
524
- continue;
525
- }
526
- }
527
- const commandValue = record === null ? validator : record.command;
528
- const argv = validatorArgv(commandValue);
493
+ const loaded = loadValidationContract(workspaceRoot);
494
+ if (!loaded.ok) {
495
+ diagnostics.push(`${loaded.path}: ${loaded.reason}; validation command discovery skipped.`);
496
+ } else if (loaded.contract !== null) {
497
+ for (const [index, validator] of (loaded.contract.validators ?? []).entries()) {
498
+ const argv = shellLikeArgv(validator);
529
499
  if (argv instanceof Error) {
530
- diagnostics.push(`${relative}: validators[${index}] is ambiguous (${argv.message}); use manual argv entry.`);
500
+ diagnostics.push(`${loaded.path}: validators[${index}] is ambiguous (${argv.message}); use manual argv entry.`);
531
501
  continue;
532
502
  }
533
- const declaredId = typeof record?.id === "string" ? record.id : validationPreferredId(argv);
534
- const description = typeof record?.description === "string" ? record.description : `Run validation contract command ${JSON.stringify(argv)}`;
535
- const cwd = typeof record?.cwd === "string" ? record.cwd : ".";
536
- const timeoutMs = typeof record?.timeoutMs === "number" ? record.timeoutMs : SAFE_EXEC_DEFAULT_TIMEOUT_MS;
537
- const tags = Array.isArray(record?.tags) ? record.tags.filter((tag) => typeof tag === "string") : [];
538
503
  proposals.push({
539
- preferredId: declaredId,
540
- description,
504
+ preferredId: validationPreferredId(argv),
505
+ description: `Run validation contract command ${JSON.stringify(argv)}`,
541
506
  command: argv,
542
- cwd,
543
- timeoutMs,
544
- tags: tags.length > 0 ? tags : ["scientific", "validation"],
507
+ cwd: ".",
508
+ timeoutMs: SAFE_EXEC_DEFAULT_TIMEOUT_MS,
509
+ tags: ["scientific", "validation"],
545
510
  provenance: {
546
511
  kind: "validation-contract",
547
- path: relative,
512
+ path: loaded.path,
548
513
  detail: `validators[${index}]`,
549
514
  authority: "project-declared"
550
515
  }
551
516
  });
552
517
  }
553
518
  }
554
- if (existsSync(path.join(workspaceRoot, "VALIDATION.md"))) {
519
+ if (existsSync(path.join(workspaceRoot, VALIDATION_CONTRACT_MARKDOWN_PATH))) {
555
520
  diagnostics.push(
556
- "VALIDATION.md is advisory prose; enter an exact argv vector manually instead of inferring a command."
521
+ `${VALIDATION_CONTRACT_MARKDOWN_PATH} is advisory prose; enter an exact argv vector manually instead of inferring a command.`
557
522
  );
558
523
  }
559
524
  return proposals;
560
525
  }
526
+ function numericContractProposals(workspaceRoot) {
527
+ const loaded = loadValidationContract(workspaceRoot);
528
+ if (!loaded.ok || loaded.contract === null) return [];
529
+ const proposals = [];
530
+ const seen = /* @__PURE__ */ new Set();
531
+ for (const artifact of loaded.contract.artifacts ?? []) {
532
+ if (artifact.numerical_tolerances === void 0) continue;
533
+ const tolerance = normalizeNumericTolerance(artifact.numerical_tolerances);
534
+ if (tolerance instanceof Error) continue;
535
+ const base = slug(path.basename(artifact.path).replace(/\.[^.]+$/u, ""), "artifact");
536
+ const preferred = boundedId(`numeric-${base}`);
537
+ let id = preferred;
538
+ for (let suffix = 2; seen.has(id); suffix += 1) id = `${boundedId(preferred, `-${suffix}`)}-${suffix}`;
539
+ seen.add(id);
540
+ const reference = `${artifact.path}.reference.json`;
541
+ proposals.push({
542
+ id,
543
+ artifactPath: artifact.path,
544
+ reference,
545
+ tolerance,
546
+ addCommand: `clio-coder verifiers add --id ${id} --kind numeric-compare --reference ${JSON.stringify(reference)} --tolerance '${JSON.stringify(tolerance)}' --description ${JSON.stringify(`Compare ${artifact.path} against its reference within tolerance`)} --command '["<executable>","<arg>"]'`
547
+ });
548
+ }
549
+ return proposals;
550
+ }
561
551
  function deduplicatedRawProposals(proposals, diagnostics) {
562
552
  const seen = /* @__PURE__ */ new Map();
563
553
  for (const proposal of proposals.sort(rawProposalSort)) {
@@ -652,6 +642,7 @@ function discoverVerifierAuthoring(workspaceRoot = process.cwd()) {
652
642
  activeChecks,
653
643
  existingChecks,
654
644
  proposals,
645
+ numericProposals: numericContractProposals(workspaceRoot),
655
646
  diagnostics,
656
647
  manualEntry,
657
648
  ...typeof catalogText === "string" ? { catalogText } : {}
@@ -663,13 +654,28 @@ function createVerifierDraft(discovery, options = {}) {
663
654
  catalogPath: discovery.catalogPath,
664
655
  activeChecks: discovery.activeChecks.map(cloneCheck),
665
656
  checks: [...discovery.existingChecks, ...options.includeProposals === false ? [] : discovery.proposals].map(cloneCheck).sort((left, right) => compareCodepoints(left.id, right.id)),
657
+ numericProposals: options.includeProposals === false ? [] : discovery.numericProposals.map((proposal) => ({ ...proposal })),
666
658
  diagnostics: [...discovery.diagnostics],
667
659
  manualEntry: discovery.manualEntry,
668
660
  ...discovery.catalogText === void 0 ? {} : { catalogText: discovery.catalogText }
669
661
  };
670
662
  }
671
- function catalogEntry({ id, description, command, cwd, timeoutMs, tags }) {
672
- return { id, description, command: [...command], cwd, timeoutMs, tags: [...tags] };
663
+ function catalogEntry(check) {
664
+ const { id, description, command, cwd, timeoutMs, tags } = check;
665
+ const entry = { id, description, command: [...command], cwd, timeoutMs, tags: [...tags] };
666
+ const kind = check.kind ?? "command";
667
+ if (kind === "command") return entry;
668
+ entry.kind = kind;
669
+ if (check.numeric !== void 0) {
670
+ entry.reference = check.numeric.reference;
671
+ entry.tolerance = { ...check.numeric.tolerance };
672
+ }
673
+ if (check.perf !== void 0) {
674
+ if (check.perf.budget !== void 0) entry.budget = structuredClone(check.perf.budget);
675
+ if (check.perf.baseline !== void 0) entry.baseline = check.perf.baseline;
676
+ if (check.perf.tolerance !== void 0) entry.tolerance = { ...check.perf.tolerance };
677
+ }
678
+ return entry;
673
679
  }
674
680
  function serializeVerifierDraft(draft) {
675
681
  const checks = [...draft.checks].sort((left, right) => compareCodepoints(left.id, right.id));
@@ -697,8 +703,17 @@ function serializeVerifierDraft(draft) {
697
703
  node.set(field, value);
698
704
  changed = true;
699
705
  }
706
+ for (const field of ["kind", "reference", "tolerance", "budget", "baseline"]) {
707
+ if (Object.hasOwn(current, field) && !Object.hasOwn(entry, field)) {
708
+ node.delete(field);
709
+ changed = true;
710
+ }
711
+ }
700
712
  }
701
713
  if (!changed && appended.length === 0 && kept.size === sequence.items.length) return draft.catalogText;
714
+ if (document.get("version") !== PROJECT_VERIFIER_CATALOG_VERSION) {
715
+ document.set("version", PROJECT_VERIFIER_CATALOG_VERSION);
716
+ }
702
717
  sequence.items = [...sequence.items.filter((node) => (0, import_yaml.isMap)(node) && kept.has(node)), ...appended];
703
718
  return document.toString({ lineWidth: 0 });
704
719
  }
@@ -727,6 +742,7 @@ function validateVerifierDraft(draft) {
727
742
  cwd: check.cwd,
728
743
  timeoutMs: check.timeoutMs,
729
744
  tags: [...check.tags],
745
+ ...kindFields(check),
730
746
  provenance: original?.provenance ?? {
731
747
  kind: "manual-entry",
732
748
  path: PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
@@ -744,6 +760,7 @@ function cloneDraft(draft) {
744
760
  ...draft,
745
761
  activeChecks: draft.activeChecks.map(cloneCheck),
746
762
  checks: draft.checks.map(cloneCheck),
763
+ numericProposals: draft.numericProposals.map((proposal) => ({ ...proposal })),
747
764
  diagnostics: [...draft.diagnostics]
748
765
  };
749
766
  }
@@ -806,6 +823,17 @@ function reviseVerifierDraft(draft, revisions) {
806
823
  if (revision.changes.cwd !== void 0) check.cwd = revision.changes.cwd;
807
824
  if (revision.changes.timeoutMs !== void 0) check.timeoutMs = revision.changes.timeoutMs;
808
825
  if (revision.changes.tags !== void 0) check.tags = [...revision.changes.tags];
826
+ if (revision.changes.kind !== void 0) {
827
+ const next2 = kindFields({
828
+ kind: revision.changes.kind,
829
+ ...revision.changes.numeric !== void 0 ? { numeric: revision.changes.numeric } : {},
830
+ ...revision.changes.perf !== void 0 ? { perf: revision.changes.perf } : {}
831
+ });
832
+ delete check.kind;
833
+ delete check.numeric;
834
+ delete check.perf;
835
+ Object.assign(check, next2);
836
+ }
809
837
  diagnostics.push(`Edited check '${revision.id}' without changing its deterministic ID.`);
810
838
  }
811
839
  next.checks.sort((left, right) => compareCodepoints(left.id, right.id));
@@ -830,9 +858,24 @@ function renderCheck(check, destinationPath) {
830
858
  ` cwd: ${check.cwd}`,
831
859
  ` timeoutMs: ${check.timeoutMs}`,
832
860
  ` tags: ${JSON.stringify(check.tags)}`,
861
+ ...renderKind(check),
833
862
  ` effective execution authority: ${authorityDescription(check)}`
834
863
  ];
835
864
  }
865
+ function renderKind(check) {
866
+ const kind = check.kind ?? "command";
867
+ if (kind === "command") return [];
868
+ const lines = [` kind: ${kind}`];
869
+ if (check.numeric !== void 0) {
870
+ lines.push(` reference: ${check.numeric.reference}`, ` tolerance: ${JSON.stringify(check.numeric.tolerance)}`);
871
+ }
872
+ if (check.perf !== void 0) {
873
+ if (check.perf.budget !== void 0) lines.push(` budget: ${JSON.stringify(check.perf.budget)}`);
874
+ if (check.perf.baseline !== void 0) lines.push(` baseline: ${check.perf.baseline}`);
875
+ if (check.perf.tolerance !== void 0) lines.push(` tolerance: ${JSON.stringify(check.perf.tolerance)}`);
876
+ }
877
+ return lines;
878
+ }
836
879
  function previewVerifierDraft(draft, options = {}) {
837
880
  const validation = validateVerifierDraft(draft);
838
881
  const lines = [
@@ -847,6 +890,18 @@ function previewVerifierDraft(draft, options = {}) {
847
890
  lines.push("", "Catalog checks after confirmation:");
848
891
  if (draft.checks.length === 0) lines.push("(none)");
849
892
  else for (const check of draft.checks) lines.push(...renderCheck(check, draft.catalogPath));
893
+ if (draft.numericProposals.length > 0) {
894
+ lines.push("", "Numeric-compare checks the validation contract implies (command required before they can be added):");
895
+ for (const proposal of draft.numericProposals) {
896
+ lines.push(
897
+ `- ${proposal.id}`,
898
+ ` artifact: ${proposal.artifactPath}`,
899
+ ` reference: ${proposal.reference}`,
900
+ ` tolerance: ${JSON.stringify(proposal.tolerance)}`,
901
+ ` add with: ${proposal.addCommand}`
902
+ );
903
+ }
904
+ }
850
905
  if (draft.diagnostics.length > 0) {
851
906
  lines.push("", "Diagnostics:");
852
907
  for (const diagnostic of draft.diagnostics) lines.push(`- ${diagnostic}`);
@@ -960,4 +1015,4 @@ export {
960
1015
  previewVerifierDraft,
961
1016
  runVerifierAuthoringWorkflow
962
1017
  };
963
- //# sourceMappingURL=chunk-54CBCGIR.js.map
1018
+ //# sourceMappingURL=chunk-Q4WO54TA.js.map
@@ -4,7 +4,7 @@ import {
4
4
  normalizeWriteBoundary,
5
5
  normalizeWriteBoundaryEntry,
6
6
  writeBoundaryCovers
7
- } from "./chunk-2VIKGWFZ.js";
7
+ } from "./chunk-OEJSLEPW.js";
8
8
  import {
9
9
  asDirectoryPathBoundary,
10
10
  pathBoundaryEntryCovers
@@ -75,9 +75,12 @@ function isCanonicalWorktreePathInside(parent, candidate) {
75
75
  const rel = relative(canonicalParent, canonicalCandidate);
76
76
  return rel.length > 0 && rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);
77
77
  }
78
- function commitWorktreePath(path, identity, message) {
79
- git(path, ["add", "-A"]);
80
- if (git(path, ["status", "--porcelain"]).length === 0) return false;
78
+ function commitWorktreePath(path, identity, message, excludedPaths = []) {
79
+ if (excludedPaths.length > 0) {
80
+ git(path, ["reset", "-q", "HEAD", "--", ...excludedPaths.map((entry) => `:(top,literal)${entry}`)]);
81
+ }
82
+ git(path, ["add", "-A", "--", ".", ...excludedPaths.map((entry) => `:(top,exclude,literal)${entry}`)]);
83
+ if (git(path, ["diff", "--cached", "--name-only", "-z"]).length === 0) return false;
81
84
  git(path, [
82
85
  "-c",
83
86
  `user.name=${identity}`,
@@ -593,7 +596,10 @@ async function createCandidateWorktreeMapped(ownership, index, baseline, mux) {
593
596
  return { ...native, provenance: { backend: "native", path, branch, fallback } };
594
597
  }
595
598
  function commitCandidateWork(worktree, message) {
596
- return commitWorktreePath(worktree.path, COMPETE_COMMIT_IDENTITY, message);
599
+ return commitWorktreePath(worktree.path, COMPETE_COMMIT_IDENTITY, message, [
600
+ ".clio-coder/codewiki.json",
601
+ ".clio-coder/state.json"
602
+ ]);
597
603
  }
598
604
  function candidateDiffStat(root, branch) {
599
605
  return worktreeBranchDiffStat(root, branch);
@@ -1199,4 +1205,4 @@ export {
1199
1205
  preflightWriteBoundaries,
1200
1206
  createWriteBoundaryEnforcer
1201
1207
  };
1202
- //# sourceMappingURL=chunk-B4VEBZKF.js.map
1208
+ //# sourceMappingURL=chunk-QUFRYSWI.js.map
@@ -2,7 +2,7 @@ import { createRequire as __clioCreateRequire } from "node:module"; const requir
2
2
  import {
3
3
  ToolNames,
4
4
  isBuiltinToolName
5
- } from "./chunk-K6BSR66V.js";
5
+ } from "./chunk-4NSRCOYP.js";
6
6
  import {
7
7
  init_esm_shims
8
8
  } from "./chunk-3R73A4XB.js";
@@ -98,4 +98,4 @@ export {
98
98
  assertToolProfileEnforceable,
99
99
  applyToolProfile
100
100
  };
101
- //# sourceMappingURL=chunk-42FMPA75.js.map
101
+ //# sourceMappingURL=chunk-QZWQA4DE.js.map
@@ -4,7 +4,7 @@ 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
10
  } from "./chunk-YPC6ZR5L.js";
@@ -29,4 +29,4 @@ var steerToolSurface = {
29
29
  export {
30
30
  steerToolSurface
31
31
  };
32
- //# sourceMappingURL=chunk-HEQY7ZFI.js.map
32
+ //# sourceMappingURL=chunk-RAY4OVGZ.js.map
@@ -1,10 +1,10 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  parseAgentRecipeSchema
4
- } from "./chunk-RRNP2ANY.js";
4
+ } from "./chunk-7UGL4MB5.js";
5
5
  import {
6
6
  parseFleetContract
7
- } from "./chunk-2VIKGWFZ.js";
7
+ } from "./chunk-OEJSLEPW.js";
8
8
  import {
9
9
  parseFrontmatter
10
10
  } from "./chunk-RKKLTLYB.js";
@@ -15,7 +15,7 @@ import {
15
15
  loadSkills,
16
16
  parsePendingSkillRequests,
17
17
  projectCompatTrusted
18
- } from "./chunk-LDJG7DW3.js";
18
+ } from "./chunk-2ZSONWVL.js";
19
19
  import {
20
20
  normalizedSkillHash
21
21
  } from "./chunk-NDDGJUXD.js";
@@ -25,11 +25,11 @@ import {
25
25
  sourceInfoForRoot,
26
26
  splitYamlFrontmatter,
27
27
  stringField
28
- } from "./chunk-CE5AX47J.js";
28
+ } from "./chunk-YECAMM3D.js";
29
29
  import {
30
30
  assertAgentSpecPolicy,
31
31
  normalizeAgentSpec
32
- } from "./chunk-B4OAX3SI.js";
32
+ } from "./chunk-KFV5L5SK.js";
33
33
  import {
34
34
  INTEROP_AGENT_KINDS
35
35
  } from "./chunk-KXDSS5WJ.js";
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-GHS5EBTQ.js";
40
40
  import {
41
41
  runCommandVector
42
- } from "./chunk-JSC3U7TI.js";
42
+ } from "./chunk-TOIVGRUX.js";
43
43
  import {
44
44
  expandConfigPath
45
45
  } from "./chunk-336NSSKI.js";
@@ -908,4 +908,4 @@ export {
908
908
  ResourcesDomainModule,
909
909
  createResourcesDomainModule
910
910
  };
911
- //# sourceMappingURL=chunk-G76U63X4.js.map
911
+ //# sourceMappingURL=chunk-RQCKCSRL.js.map
@@ -4,7 +4,7 @@ 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
10
  } from "./chunk-YPC6ZR5L.js";
@@ -49,4 +49,4 @@ export {
49
49
  CODE_NAV_MAX_LIMIT,
50
50
  codeNavToolSurface
51
51
  };
52
- //# sourceMappingURL=chunk-64I3JVYM.js.map
52
+ //# sourceMappingURL=chunk-RXTN6AKH.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  discoverAgentRecipes
4
- } from "./chunk-RRNP2ANY.js";
4
+ } from "./chunk-7UGL4MB5.js";
5
5
  import {
6
6
  assertAgentIdNamespace
7
7
  } from "./chunk-DR52UMZW.js";
8
8
  import {
9
9
  normalizeAgentSpec
10
- } from "./chunk-B4OAX3SI.js";
10
+ } from "./chunk-KFV5L5SK.js";
11
11
  import {
12
12
  BusChannels
13
13
  } from "./chunk-F4EKGO4N.js";
@@ -146,4 +146,4 @@ var AgentsDomainModule = {
146
146
  export {
147
147
  AgentsDomainModule
148
148
  };
149
- //# sourceMappingURL=chunk-UPZU6GE4.js.map
149
+ //# sourceMappingURL=chunk-RZDWV63N.js.map
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
2
  import {
3
3
  compileExecutionPlan
4
- } from "./chunk-E3TPLWFX.js";
4
+ } from "./chunk-LTIKRKFL.js";
5
5
  import {
6
6
  deriveExecutionRole
7
7
  } from "./chunk-H7IXIC72.js";
@@ -94,4 +94,4 @@ function compileScoutTransition(input) {
94
94
  export {
95
95
  compileScoutTransition
96
96
  };
97
- //# sourceMappingURL=chunk-2UH2KFUP.js.map
97
+ //# sourceMappingURL=chunk-S6PYF2XF.js.map