@iowarp/clio-coder 0.3.6 → 0.3.8

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 (323) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +22 -6
  3. package/dist/{acp-2BEHC4DL.js → acp-U67UHUK2.js} +14 -14
  4. package/dist/{agents-LNNFTM53.js → agents-YU6SGALZ.js} +42 -35
  5. package/dist/assets/codewiki.json +1 -1
  6. package/dist/{auth-KXXFI2VS.js → auth-5ZPJOIVG.js} +32 -24
  7. package/dist/builtins-C6JMZVV6.js +17 -0
  8. package/dist/{chunk-E25LMLRW.js → chunk-26LEYJZH.js} +2 -2
  9. package/dist/{chunk-TSHXZTOQ.js → chunk-2HEJ2F35.js} +5 -5
  10. package/dist/{chunk-PBTHKCPN.js → chunk-2HFZQUHL.js} +7 -7
  11. package/dist/{chunk-FO5ZOVUY.js → chunk-3BINW3FP.js} +5 -5
  12. package/dist/{chunk-4OC57DA6.js → chunk-4DGYLA73.js} +53 -2
  13. package/dist/{chunk-CKXWIANG.js → chunk-4SPRNWDE.js} +18 -16
  14. package/dist/{chunk-E2ER4LJF.js → chunk-5C3AQNDW.js} +25 -1
  15. package/dist/{chunk-XF5N4U5A.js → chunk-5DHKRSMQ.js} +9 -8
  16. package/dist/{chunk-43AOLP7E.js → chunk-5FR74PWO.js} +2 -1
  17. package/dist/{chunk-EKY57CSP.js → chunk-5H3GB5BO.js} +68 -772
  18. package/dist/{chunk-6XXKFVSN.js → chunk-5Q2VVUKB.js} +4 -4
  19. package/dist/{chunk-DJVECN66.js → chunk-7RFXX52T.js} +295 -3705
  20. package/dist/{chunk-ZXF4XRKW.js → chunk-7RGZWPB6.js} +158 -8
  21. package/dist/{chunk-FYYLNIL5.js → chunk-A2NJGIB3.js} +2 -2
  22. package/dist/{chunk-XXQNGV4M.js → chunk-A3WNZD3P.js} +548 -72
  23. package/dist/{chunk-VEZEGCGW.js → chunk-B5CSFE7B.js} +23 -21
  24. package/dist/{chunk-2SFS6XQE.js → chunk-DGSYXYMX.js} +3 -2
  25. package/dist/chunk-DR52UMZW.js +21 -0
  26. package/dist/{chunk-ZWLZP4ZT.js → chunk-DYIM5TJT.js} +98 -12
  27. package/dist/{chunk-QKMUKYO7.js → chunk-E77JEWSD.js} +270 -125
  28. package/dist/{chunk-LYF7OHWH.js → chunk-EMYUUSFG.js} +12 -467
  29. package/dist/{chunk-4VP4KH3K.js → chunk-EQ63NRB7.js} +8 -8
  30. package/dist/chunk-FBVTI2TJ.js +518 -0
  31. package/dist/{chunk-R46L2BIR.js → chunk-FHJEP5SW.js} +19 -25
  32. package/dist/{chunk-WR67VIZY.js → chunk-GN57SG4G.js} +66 -8
  33. package/dist/{chunk-RD5U66HV.js → chunk-GPIEI3LY.js} +9 -9
  34. package/dist/{chunk-PCZJO5TI.js → chunk-GU2UIAFZ.js} +13 -178
  35. package/dist/chunk-GWS3VEIW.js +195 -0
  36. package/dist/chunk-H7IXIC72.js +103 -0
  37. package/dist/{chunk-3BPUFZDL.js → chunk-HLE42MG7.js} +3 -3
  38. package/dist/{chunk-24I7BN55.js → chunk-IFBNV6H6.js} +3 -3
  39. package/dist/{chunk-QNQHSOLF.js → chunk-IGWKHNIQ.js} +114 -55
  40. package/dist/chunk-IIZWH4XA.js +172 -0
  41. package/dist/{chunk-AD2SYQYC.js → chunk-IJ7RPIYJ.js} +124 -6
  42. package/dist/chunk-J3YUBZWY.js +382 -0
  43. package/dist/{chunk-5JGRAMKL.js → chunk-JOZYP4GM.js} +8 -6
  44. package/dist/{chunk-OH3TOQTB.js → chunk-K4XHGFR5.js} +751 -15
  45. package/dist/{chunk-EYPA3EGJ.js → chunk-KTYTFRMB.js} +178 -14
  46. package/dist/chunk-LU7P4LHA.js +33 -0
  47. package/dist/chunk-ME6CCNFO.js +108 -0
  48. package/dist/chunk-MXKJU4JB.js +1100 -0
  49. package/dist/{chunk-RY3LY4J5.js → chunk-N22QMJKY.js} +21 -18
  50. package/dist/chunk-NMPKI6XL.js +3006 -0
  51. package/dist/chunk-NUGM5KR6.js +165 -0
  52. package/dist/{chunk-22NAGB7X.js → chunk-P43ETTHK.js} +5 -94
  53. package/dist/{chunk-NILBFAPG.js → chunk-PMDBGQSJ.js} +2 -2
  54. package/dist/chunk-PT7HYKEM.js +165 -0
  55. package/dist/chunk-RVG5JXAL.js +41 -0
  56. package/dist/{chunk-GEYXPTRF.js → chunk-RWSI4YD7.js} +2 -2
  57. package/dist/{chunk-4BPJXDWC.js → chunk-TANS5ZJS.js} +35 -19
  58. package/dist/{verifiers-NCBTHHN2.js → chunk-TB5666IT.js} +67 -324
  59. package/dist/{chunk-QM3F2GKX.js → chunk-TLQJPP24.js} +7927 -8088
  60. package/dist/{chunk-G7MUEIGA.js → chunk-TT36MB5S.js} +2 -1
  61. package/dist/chunk-TTHACPOM.js +961 -0
  62. package/dist/{chunk-6US73PDB.js → chunk-TYPGUK6W.js} +7 -7
  63. package/dist/{chunk-MFFY33HR.js → chunk-U6MBIEMB.js} +554 -209
  64. package/dist/chunk-VAWNZU7Z.js +242 -0
  65. package/dist/{chunk-IR4CFBFN.js → chunk-VCBR6CU7.js} +12 -12
  66. package/dist/{chunk-WHJYKASB.js → chunk-VHN4MY6O.js} +2 -2
  67. package/dist/{chunk-XYDYPRZI.js → chunk-VWZOAB7K.js} +10 -10
  68. package/dist/{chunk-ZRGEBJ4T.js → chunk-WLFILSD5.js} +48 -48
  69. package/dist/{chunk-K7T3E2SR.js → chunk-WNIJTQQK.js} +12 -11
  70. package/dist/{chunk-CYQKWTG3.js → chunk-WSB3FPX7.js} +68 -20
  71. package/dist/{chunk-KHSFENX2.js → chunk-WWCZ5F23.js} +116 -14
  72. package/dist/{chunk-XE2VEJHX.js → chunk-WXY7KU3G.js} +2 -2
  73. package/dist/{chunk-PPAMZ32Z.js → chunk-XK56QHLX.js} +6 -1
  74. package/dist/{chunk-KOHPCX4K.js → chunk-XWSF374K.js} +5 -5
  75. package/dist/{chunk-CJUB2JJ2.js → chunk-YS5VLNH5.js} +10 -10
  76. package/dist/{chunk-ZZMN5OM4.js → chunk-ZNLWCMVZ.js} +2 -2
  77. package/dist/{chunk-WHGPSPT5.js → chunk-ZVJ5BLO2.js} +2 -2
  78. package/dist/cli/index.js +33 -31
  79. package/dist/{clio-M2KGYUFZ.js → clio-QVTYJ57A.js} +10 -10
  80. package/dist/{code-nav-GQNL7XA6.js → code-nav-FGGFIE7L.js} +5 -5
  81. package/dist/codewiki/build-worker.js +4 -4
  82. package/dist/{components-5TTYYX6G.js → components-ZFA3SAER.js} +9 -9
  83. package/dist/{config-XUUYQIWO.js → config-LW5IJFQN.js} +65 -55
  84. package/dist/{configure-IHJ7YOMV.js → configure-7XIZCOU4.js} +29 -24
  85. package/dist/{context-75MIWW3U.js → context-L3WL3X7K.js} +54 -43
  86. package/dist/{context-ZQ7SIFJV.js → context-N52ZA626.js} +30 -14
  87. package/dist/{context-74JLXAWD.js → context-Y6Y7QPR6.js} +12 -12
  88. package/dist/{context-clear-GYKWNUML.js → context-clear-MBQRLSDQ.js} +54 -43
  89. package/dist/{context-index-SSR5ECNE.js → context-index-HVMFQHK3.js} +5 -5
  90. package/dist/{context-working-set-UX5KEP4J.js → context-working-set-GS6DSO7F.js} +18 -18
  91. package/dist/{dispatch-runner-GIJBHNFL.js → dispatch-runner-22ZCNOM3.js} +367 -79
  92. package/dist/{docs-6FZSCG5B.js → docs-7LQ23DLM.js} +9 -9
  93. package/dist/{doctor-SVJ5BZCW.js → doctor-M7YEDGAE.js} +27 -23
  94. package/dist/{eval-CG6LLBLD.js → eval-BEC2WHDA.js} +73 -20
  95. package/dist/{evidence-ZYFIEN42.js → evidence-REJUMSKM.js} +70 -59
  96. package/dist/{evolve-QGEXEMDW.js → evolve-PY5ZBA5K.js} +50 -39
  97. package/dist/{extensions-ADGNCJJD.js → extensions-HVKU65YU.js} +7 -7
  98. package/dist/{fleet-S5R4ZOQY.js → fleet-7WZEWRFA.js} +236 -377
  99. package/dist/fleet-commands-UVHWM76J.js +70 -0
  100. package/dist/fleet-graph-6ULH7PES.js +125 -0
  101. package/dist/fleet-new-RDVJLHHH.js +48 -0
  102. package/dist/{fleet-preflight-BHSNPBMH.js → fleet-preflight-J53T6CCE.js} +5 -5
  103. package/dist/fleet-validate-72PC4SLA.js +79 -0
  104. package/dist/{init-5DRU55YR.js → init-OG3TPGQG.js} +69 -57
  105. package/dist/library-CNTMPLRF.js +217 -0
  106. package/dist/{memory-7YKKR6UC.js → memory-6IS7F275.js} +52 -41
  107. package/dist/{models-ZPOLRU2C.js → models-ENRJDA5W.js} +37 -31
  108. package/dist/{monitor-US5F5YGZ.js → monitor-XLDVO7TN.js} +79 -42
  109. package/dist/{orchestrator-E2AL4T5N.js → orchestrator-6KSPYRHA.js} +4126 -762
  110. package/dist/{paths-E7KYAQWE.js → paths-DBXMZMDU.js} +6 -6
  111. package/dist/registry-LG64LTF4.js +11 -0
  112. package/dist/{reset-KZ652EK6.js → reset-RZ4ER727.js} +12 -12
  113. package/dist/{run-SRNBKDWD.js → run-Y2CNK5RU.js} +89 -76
  114. package/dist/{share-CGZE33UP.js → share-A55GYP6Z.js} +37 -13
  115. package/dist/{skills-S2X4DLY5.js → skills-ALC5J6AT.js} +29 -13
  116. package/dist/{skills-eval-W2GGIC4R.js → skills-eval-JPBEBYQU.js} +60 -48
  117. package/dist/support-MIETYA5E.js +38 -0
  118. package/dist/{targets-54SWINWB.js → targets-VGNXIR3S.js} +46 -36
  119. package/dist/{terminal-lease-SAIF2OGY.js → terminal-lease-WOBR64YA.js} +4 -4
  120. package/dist/{uninstall-BVLWXKBT.js → uninstall-ZJF5H5ZN.js} +9 -9
  121. package/dist/{upgrade-JKAR27XC.js → upgrade-FUSUAGHR.js} +31 -28
  122. package/dist/{usage-MSAWCLX4.js → usage-N4MKVHKD.js} +140 -68
  123. package/dist/verifiers-YAWOJ3H2.js +336 -0
  124. package/dist/{verify-X5HDROLA.js → verify-LTDHYBGY.js} +10 -9
  125. package/dist/{wiki-generate-GUSOQ6ZP.js → wiki-generate-6M7GHTBJ.js} +75 -62
  126. package/dist/worker/entry.js +67 -57
  127. package/docs/README.md +3 -2
  128. package/docs/acp.md +1 -1
  129. package/docs/alcf-provider.md +1 -1
  130. package/docs/architecture.md +2 -2
  131. package/docs/artifact-versions.md +11 -6
  132. package/docs/built-in-agents.md +26 -2
  133. package/docs/capacity-and-scheduling.md +1 -1
  134. package/docs/commands-and-modes.md +83 -3
  135. package/docs/configuration-and-targets.md +86 -4
  136. package/docs/context-engine.md +1 -1
  137. package/docs/development-pipeline.md +1 -1
  138. package/docs/dispatch-architecture-rationale.md +1 -1
  139. package/docs/documentation-coverage.md +3 -3
  140. package/docs/documentation-guide.md +3 -3
  141. package/docs/eval-runner.md +1 -1
  142. package/docs/evals-internal.md +1 -1
  143. package/docs/evidence-and-memory.md +74 -10
  144. package/docs/evolution.md +1 -1
  145. package/docs/exit-codes-and-output.md +4 -1
  146. package/docs/extensions-and-sharing.md +6 -2
  147. package/docs/fleet-demo-runbook.md +2 -2
  148. package/docs/fleet-dispatch.md +228 -16
  149. package/docs/git-commit-provenance.md +2 -2
  150. package/docs/glossary.md +22 -2
  151. package/docs/installation-and-lifecycle.md +2 -2
  152. package/docs/middleware-and-components.md +2 -1
  153. package/docs/model-catalog.md +1 -1
  154. package/docs/observability.md +56 -9
  155. package/docs/proactive-memory.md +1 -1
  156. package/docs/prompt-envelope-and-tools.md +4 -2
  157. package/docs/provider-adapter-cookbook.md +1 -1
  158. package/docs/release-cut-checklist.md +83 -65
  159. package/docs/resource-library.md +59 -0
  160. package/docs/safety-model.md +2 -2
  161. package/docs/scientific-validation.md +3 -3
  162. package/docs/session-lifecycle.md +37 -1
  163. package/docs/skills-marketplace.md +16 -3
  164. package/docs/tool-usage.md +14 -7
  165. package/docs/trace-store.md +1 -1
  166. package/docs/troubleshooting.md +1 -1
  167. package/docs/tui-design.md +1 -1
  168. package/docs/worker-dispatch-mechanics.md +3 -3
  169. package/package.json +1 -2
  170. package/src/cli/argv.ts +5 -0
  171. package/src/cli/configure.ts +107 -23
  172. package/src/cli/doctor.ts +5 -1
  173. package/src/cli/evidence.ts +30 -25
  174. package/src/cli/fleet-commands.ts +37 -0
  175. package/src/cli/fleet-graph.ts +102 -0
  176. package/src/cli/fleet-new.ts +36 -0
  177. package/src/cli/fleet-preflight.ts +111 -0
  178. package/src/cli/fleet-validate.ts +30 -0
  179. package/src/cli/fleet.ts +173 -335
  180. package/src/cli/index.ts +3 -1
  181. package/src/cli/library.ts +190 -0
  182. package/src/cli/share.ts +13 -1
  183. package/src/cli/shared.ts +1 -0
  184. package/src/cli/targets.ts +4 -1
  185. package/src/cli/usage.ts +111 -19
  186. package/src/cli/validate-model.ts +60 -5
  187. package/src/core/bus-events.ts +29 -0
  188. package/src/core/commit-attribution.ts +4 -4
  189. package/src/core/config.ts +130 -0
  190. package/src/core/defaults.ts +81 -0
  191. package/src/core/path-boundary.ts +100 -0
  192. package/src/domains/agents/builtins/architect.md +1 -0
  193. package/src/domains/agents/builtins/oracle.md +33 -0
  194. package/src/domains/agents/catalog.ts +13 -1
  195. package/src/domains/agents/extension.ts +2 -11
  196. package/src/domains/agents/fleet-contract.ts +304 -24
  197. package/src/domains/agents/index.ts +14 -0
  198. package/src/domains/agents/recipe.ts +7 -1
  199. package/src/domains/agents/registry.ts +73 -5
  200. package/src/domains/agents/result-contract.ts +360 -15
  201. package/src/domains/agents/write-boundary.ts +15 -50
  202. package/src/domains/config/classify.ts +4 -0
  203. package/src/domains/context/project-rules.ts +51 -1
  204. package/src/domains/dispatch/active-route-planner.ts +14 -0
  205. package/src/domains/dispatch/assignment-reconcile.ts +22 -5
  206. package/src/domains/dispatch/assignment-store.ts +151 -14
  207. package/src/domains/dispatch/backoff.ts +2 -1
  208. package/src/domains/dispatch/capability-match.ts +1 -0
  209. package/src/domains/dispatch/checkout-writer-lease.ts +175 -0
  210. package/src/domains/dispatch/contract.ts +48 -0
  211. package/src/domains/dispatch/delegation-plan.ts +164 -0
  212. package/src/domains/dispatch/execution-plan.ts +76 -5
  213. package/src/domains/dispatch/execution-role.ts +12 -2
  214. package/src/domains/dispatch/execution-scheduler.ts +183 -67
  215. package/src/domains/dispatch/extension.ts +412 -74
  216. package/src/domains/dispatch/fleet-gate.ts +14 -0
  217. package/src/domains/dispatch/fleet-plan.ts +63 -3
  218. package/src/domains/dispatch/fleet-run.ts +791 -0
  219. package/src/domains/dispatch/gate-role-prompts.ts +47 -0
  220. package/src/domains/dispatch/host-verification.ts +178 -0
  221. package/src/domains/dispatch/index.ts +41 -1
  222. package/src/domains/dispatch/intent-requirements.ts +40 -0
  223. package/src/domains/dispatch/intent.ts +235 -0
  224. package/src/domains/dispatch/path-scope.ts +370 -0
  225. package/src/domains/dispatch/receipt-integrity.ts +9 -4
  226. package/src/domains/dispatch/state.ts +36 -3
  227. package/src/domains/dispatch/types.ts +64 -12
  228. package/src/domains/dispatch/validation.ts +69 -6
  229. package/src/domains/dispatch/write-boundary-enforcer.ts +45 -0
  230. package/src/domains/dispatch/write-boundary.ts +201 -22
  231. package/src/domains/eval/metrics/evidence.ts +79 -2
  232. package/src/domains/eval/runners/clio-run.ts +12 -2
  233. package/src/domains/evidence/build.ts +69 -11
  234. package/src/domains/evidence/index.ts +21 -0
  235. package/src/domains/evidence/provenance.ts +46 -11
  236. package/src/domains/evidence/trust-projection.ts +274 -0
  237. package/src/domains/evidence/trust-status.ts +155 -18
  238. package/src/domains/evidence/types.ts +4 -0
  239. package/src/domains/extensions/discovery.ts +88 -1
  240. package/src/domains/extensions/resources.ts +20 -8
  241. package/src/domains/extensions/state.ts +6 -2
  242. package/src/domains/extensions/types.ts +4 -1
  243. package/src/domains/lifecycle/doctor.ts +140 -1
  244. package/src/domains/middleware/index.ts +15 -0
  245. package/src/domains/middleware/watchdog.ts +281 -0
  246. package/src/domains/observability/contract.ts +3 -1
  247. package/src/domains/observability/cost.ts +12 -1
  248. package/src/domains/observability/extension.ts +2 -2
  249. package/src/domains/observability/index.ts +10 -0
  250. package/src/domains/observability/out-of-turn-usage.ts +223 -0
  251. package/src/domains/prompts/contract.ts +3 -5
  252. package/src/domains/providers/extension.ts +30 -2
  253. package/src/domains/resources/common-loader.ts +3 -0
  254. package/src/domains/resources/index.ts +20 -0
  255. package/src/domains/resources/library.ts +326 -0
  256. package/src/domains/resources/prompts/loader.ts +119 -14
  257. package/src/domains/resources/skills/marketplace.ts +37 -12
  258. package/src/domains/safety/policy-engine.ts +5 -5
  259. package/src/domains/safety/run-effects.ts +64 -1
  260. package/src/domains/safety/scope.ts +7 -12
  261. package/src/domains/session/handoff.ts +629 -0
  262. package/src/domains/share/archive.ts +67 -2
  263. package/src/engine/acp/server.ts +4 -1
  264. package/src/engine/prompt-templates.ts +18 -1
  265. package/src/engine/worker-runtime.ts +6 -3
  266. package/src/entry/orchestrator.ts +37 -0
  267. package/src/interactive/bus-notices.ts +26 -0
  268. package/src/interactive/chat-loop.ts +235 -1
  269. package/src/interactive/chat-renderer.ts +22 -0
  270. package/src/interactive/cost-overlay.ts +31 -3
  271. package/src/interactive/council-dispatch.ts +30 -0
  272. package/src/interactive/council-grid.ts +213 -0
  273. package/src/interactive/council.ts +99 -0
  274. package/src/interactive/dispatch-board.ts +311 -17
  275. package/src/interactive/fleet-run-preview.ts +307 -0
  276. package/src/interactive/footer/notifications.ts +219 -0
  277. package/src/interactive/handoff-round.ts +56 -0
  278. package/src/interactive/interactive-application.ts +43 -1
  279. package/src/interactive/interactive-event-projection.ts +23 -1
  280. package/src/interactive/interactive-slash-runtime.ts +52 -2
  281. package/src/interactive/interactive-subscriptions.ts +14 -2
  282. package/src/interactive/oracle.ts +179 -0
  283. package/src/interactive/overlay-ask-user-lifecycle.ts +6 -0
  284. package/src/interactive/overlay-general-openers.ts +190 -1
  285. package/src/interactive/overlay-key-routing.ts +17 -1
  286. package/src/interactive/overlay-lifecycle.ts +41 -1
  287. package/src/interactive/overlay-permission-lifecycle.ts +10 -0
  288. package/src/interactive/overlay-resource-openers.ts +11 -3
  289. package/src/interactive/overlay-session-lifecycle.ts +234 -2
  290. package/src/interactive/overlays/fleet-run-approval.ts +208 -0
  291. package/src/interactive/overlays/handoff-review.ts +185 -0
  292. package/src/interactive/overlays/library-install-confirm.ts +151 -0
  293. package/src/interactive/overlays/list-overlay.ts +168 -2
  294. package/src/interactive/overlays/settings.ts +221 -30
  295. package/src/interactive/overlays/side-question.ts +139 -0
  296. package/src/interactive/overlays/skills-hub.ts +401 -15
  297. package/src/interactive/side-question.ts +171 -0
  298. package/src/interactive/slash-commands.ts +439 -7
  299. package/src/interactive/slash-spec.ts +19 -6
  300. package/src/interactive/theme/tokens.ts +30 -0
  301. package/src/interactive/turn-middleware.ts +15 -1
  302. package/src/interactive/view/artifacts.ts +42 -9
  303. package/src/interactive/view/view-overlay.ts +15 -3
  304. package/src/interactive/watchdog-run.ts +75 -0
  305. package/src/interactive/worker-receipts.ts +14 -2
  306. package/src/interactive/worker-share.ts +56 -1
  307. package/src/interactive/worker-stream.ts +15 -0
  308. package/src/tools/bootstrap.ts +3 -0
  309. package/src/tools/compete-worktrees.ts +13 -79
  310. package/src/tools/dispatch-admission.ts +251 -18
  311. package/src/tools/dispatch-arguments.ts +84 -1
  312. package/src/tools/dispatch-plan.ts +165 -6
  313. package/src/tools/dispatch-runner.ts +364 -23
  314. package/src/tools/dispatch-types.ts +20 -1
  315. package/src/tools/dispatch.ts +72 -2
  316. package/src/tools/monitor.ts +29 -0
  317. package/src/tools/profiles.ts +18 -4
  318. package/src/tools/task-worktree.ts +238 -0
  319. package/src/tools/verify/authoring.ts +61 -1
  320. package/src/tools/verify/scripts.ts +62 -0
  321. package/src/tools/worker-evidence.ts +21 -14
  322. package/src/worker/spec-contract.ts +3 -1
  323. package/dist/chunk-HC4CLZ2Y.js +0 -68
@@ -1,55 +1,37 @@
1
1
  import { createRequire as __clioCreateRequire } from "node:module"; const require = __clioCreateRequire(import.meta.url);
2
+ import {
3
+ verifyTool
4
+ } from "./chunk-GU2UIAFZ.js";
5
+ import {
6
+ discoverDeclaredChecksAtRoot,
7
+ discoverDeclaredProjectEntriesAtRoot
8
+ } from "./chunk-VAWNZU7Z.js";
2
9
  import {
3
10
  parseTomlDocument,
4
11
  tomlTableAt
5
12
  } from "./chunk-LCGCVYZ4.js";
6
- import {
7
- discoverDeclaredChecksAtRoot,
8
- verifyTool
9
- } from "./chunk-PCZJO5TI.js";
10
- import "./chunk-NILBFAPG.js";
11
13
  import {
12
14
  PROJECT_VERIFIER_CATALOG_CAPS,
13
15
  PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
14
16
  PROJECT_VERIFIER_CATALOG_VERSION,
15
17
  compareCodepoints,
16
- loadProjectVerifierCatalog,
17
18
  parseProjectVerifierCatalogText
18
- } from "./chunk-FYYLNIL5.js";
19
+ } from "./chunk-A2NJGIB3.js";
19
20
  import {
20
21
  isVerificationScriptName
21
22
  } from "./chunk-UL3WSD3F.js";
22
- import "./chunk-VG7TBQIY.js";
23
- import "./chunk-OQE5J4C6.js";
24
- import "./chunk-ECH6PKUQ.js";
25
- import "./chunk-6XLNIQDB.js";
26
- import "./chunk-5B2AEOW5.js";
27
- import "./chunk-CGKSTWHD.js";
28
- import {
29
- printError,
30
- printOk
31
- } from "./chunk-PPAMZ32Z.js";
32
- import "./chunk-5TSRNF4G.js";
33
23
  import {
34
24
  SAFE_EXEC_DEFAULT_TIMEOUT_MS,
35
25
  resolveSafeCwd
36
- } from "./chunk-VEZEGCGW.js";
37
- import "./chunk-FQ4SKYE4.js";
38
- import "./chunk-FCSXB6T2.js";
26
+ } from "./chunk-B5CSFE7B.js";
39
27
  import {
40
28
  require_dist
41
29
  } from "./chunk-APJ265NV.js";
42
- import "./chunk-YXLYO42X.js";
43
- import "./chunk-BNAZZHFG.js";
44
- import "./chunk-6EJMN2Y3.js";
45
30
  import {
46
31
  __toESM,
47
32
  init_esm_shims
48
33
  } from "./chunk-3R73A4XB.js";
49
34
 
50
- // src/cli/verifiers.ts
51
- init_esm_shims();
52
-
53
35
  // src/tools/verify/authoring.ts
54
36
  init_esm_shims();
55
37
  var import_yaml = __toESM(require_dist(), 1);
@@ -259,7 +241,7 @@ function pythonProposals(workspaceRoot, diagnostics) {
259
241
  if (document === null) {
260
242
  diagnostics.push(`${pyprojectPath}: invalid TOML; Python discovery skipped.`);
261
243
  } else {
262
- for (const [path2, section, module, id, description, tags2] of [
244
+ for (const [path2, section, module, id, description, tags] of [
263
245
  [
264
246
  ["tool", "pytest", "ini_options"],
265
247
  "tool.pytest.ini_options",
@@ -278,7 +260,7 @@ function pythonProposals(workspaceRoot, diagnostics) {
278
260
  command: ["python", "-m", module],
279
261
  cwd: ".",
280
262
  timeoutMs: SAFE_EXEC_DEFAULT_TIMEOUT_MS,
281
- tags: [...tags2],
263
+ tags: [...tags],
282
264
  provenance: {
283
265
  kind: "python-runner",
284
266
  path: pyprojectPath,
@@ -343,6 +325,52 @@ function pythonProposals(workspaceRoot, diagnostics) {
343
325
  }
344
326
  return proposals;
345
327
  }
328
+ function discoverDeclaredProjectCommands(workspaceRoot = process.cwd()) {
329
+ const commands = [];
330
+ const add = (id, command, pathValue, detail, kind) => {
331
+ commands.push({
332
+ id,
333
+ command,
334
+ provenance: { kind, path: pathValue, detail, authority: "project-declared" }
335
+ });
336
+ };
337
+ for (const entry of discoverDeclaredProjectEntriesAtRoot(workspaceRoot)) {
338
+ add(entry.id, entry.command, entry.path, entry.detail, entry.kind);
339
+ }
340
+ const pyprojectText = regularFileText(path.join(workspaceRoot, "pyproject.toml"), workspaceRoot);
341
+ if (typeof pyprojectText === "string") {
342
+ const document = parseTomlDocument(pyprojectText);
343
+ if (document !== null) {
344
+ for (const [tablePath, label] of [
345
+ [["project", "scripts"], "project.scripts"],
346
+ [["tool", "poetry", "scripts"], "tool.poetry.scripts"]
347
+ ]) {
348
+ const scripts = tomlTableAt(document, tablePath);
349
+ if (scripts === null) continue;
350
+ for (const [name, target] of Object.entries(scripts).sort(([left], [right]) => compareCodepoints(left, right))) {
351
+ if (typeof target === "string") add(name, [name], "pyproject.toml", `[${label}] entry '${name}'`, "python-runner");
352
+ }
353
+ }
354
+ for (const [tablePath, module, id, label] of [
355
+ [["tool", "pytest", "ini_options"], "pytest", "pytest", "tool.pytest.ini_options"],
356
+ [["tool", "tox"], "tox", "tox", "tool.tox"],
357
+ [["tool", "nox"], "nox", "nox", "tool.nox"]
358
+ ]) {
359
+ if (tomlTableAt(document, tablePath) !== null)
360
+ add(id, ["python", "-m", module], "pyproject.toml", `[${label}]`, "python-runner");
361
+ }
362
+ }
363
+ }
364
+ const seen = /* @__PURE__ */ new Set();
365
+ return commands.filter((entry) => {
366
+ let id = slug(entry.id, "command");
367
+ let suffix = 2;
368
+ while (seen.has(id)) id = `${slug(entry.id, "command")}-${suffix++}`;
369
+ seen.add(id);
370
+ entry.id = id;
371
+ return true;
372
+ });
373
+ }
346
374
  function goProposals(workspaceRoot, diagnostics) {
347
375
  const relative = "go.mod";
348
376
  const text = regularFileText(path.join(workspaceRoot, relative), workspaceRoot);
@@ -506,14 +534,14 @@ function validationContractProposals(workspaceRoot, diagnostics) {
506
534
  const description = typeof record?.description === "string" ? record.description : `Run validation contract command ${JSON.stringify(argv)}`;
507
535
  const cwd = typeof record?.cwd === "string" ? record.cwd : ".";
508
536
  const timeoutMs = typeof record?.timeoutMs === "number" ? record.timeoutMs : SAFE_EXEC_DEFAULT_TIMEOUT_MS;
509
- const tags2 = Array.isArray(record?.tags) ? record.tags.filter((tag) => typeof tag === "string") : [];
537
+ const tags = Array.isArray(record?.tags) ? record.tags.filter((tag) => typeof tag === "string") : [];
510
538
  proposals.push({
511
539
  preferredId: declaredId,
512
540
  description,
513
541
  command: argv,
514
542
  cwd,
515
543
  timeoutMs,
516
- tags: tags2.length > 0 ? tags2 : ["scientific", "validation"],
544
+ tags: tags.length > 0 ? tags : ["scientific", "validation"],
517
545
  provenance: {
518
546
  kind: "validation-contract",
519
547
  path: relative,
@@ -640,8 +668,8 @@ function createVerifierDraft(discovery, options = {}) {
640
668
  ...discovery.catalogText === void 0 ? {} : { catalogText: discovery.catalogText }
641
669
  };
642
670
  }
643
- function catalogEntry({ id, description, command, cwd, timeoutMs, tags: tags2 }) {
644
- return { id, description, command: [...command], cwd, timeoutMs, tags: [...tags2] };
671
+ function catalogEntry({ id, description, command, cwd, timeoutMs, tags }) {
672
+ return { id, description, command: [...command], cwd, timeoutMs, tags: [...tags] };
645
673
  }
646
674
  function serializeVerifierDraft(draft) {
647
675
  const checks = [...draft.checks].sort((left, right) => compareCodepoints(left.id, right.id));
@@ -925,296 +953,11 @@ async function runVerifierAuthoringWorkflow(options) {
925
953
  };
926
954
  }
927
955
 
928
- // src/cli/verifiers.ts
929
- var HELP = `Project verifier authoring
930
-
931
- Usage:
932
- clio-coder verifiers discover
933
- clio-coder verifiers author [--exclude <id>] [--rename <old>=<new>] [--dry-run <id>] [--yes]
934
- clio-coder verifiers validate
935
- clio-coder verifiers dry-run <id>
936
- clio-coder verifiers add --id <id> --description <text> --command <json-argv> [fields] [--yes]
937
- clio-coder verifiers edit <id> [--description <text>] [--command <json-argv>] [fields] [--yes]
938
- clio-coder verifiers rename <old> <new> [--yes]
939
- clio-coder verifiers remove <id> [--yes]
940
-
941
- Fields:
942
- --cwd <path> repository-relative working directory (default .)
943
- --timeout-ms <number> bounded timeout in milliseconds (default 120000)
944
- --tags <a,b> comma-separated catalog tags
945
-
946
- Discovery and every preview are read-only. Mutating commands write only with
947
- --yes after printing the exact argv, cwd, timeout, tags, source provenance, and
948
- effective execution authority. dry-run invokes the production verify path.
949
- `;
950
- var VALUE_OPTIONS = /* @__PURE__ */ new Set([
951
- "--id",
952
- "--description",
953
- "--command",
954
- "--cwd",
955
- "--timeout-ms",
956
- "--tags",
957
- "--exclude",
958
- "--rename",
959
- "--dry-run"
960
- ]);
961
- function parseAuthoringArgs(argv) {
962
- const positional = [];
963
- const values = /* @__PURE__ */ new Map();
964
- let yes = false;
965
- let help = false;
966
- for (let index = 0; index < argv.length; index += 1) {
967
- const arg = argv[index];
968
- if (arg === "--yes") {
969
- yes = true;
970
- continue;
971
- }
972
- if (arg === "--help" || arg === "-h") {
973
- help = true;
974
- continue;
975
- }
976
- if (arg?.startsWith("--") === true) {
977
- if (!VALUE_OPTIONS.has(arg)) return { yes, help, positional, values, error: `unknown option: ${arg}` };
978
- const value = argv[index + 1];
979
- if (value === void 0 || value.startsWith("--")) {
980
- return { yes, help, positional, values, error: `${arg} requires a value` };
981
- }
982
- const prior = values.get(arg) ?? [];
983
- prior.push(value);
984
- values.set(arg, prior);
985
- index += 1;
986
- continue;
987
- }
988
- if (arg !== void 0) positional.push(arg);
989
- }
990
- return { yes, help, positional, values };
991
- }
992
- function oneValue(parsed, option) {
993
- return parsed.values.get(option)?.at(-1);
994
- }
995
- function parseCommand(value) {
996
- if (value === void 0) return new Error("--command is required and must be a JSON argv array");
997
- let parsed;
998
- try {
999
- parsed = JSON.parse(value);
1000
- } catch (error) {
1001
- return new Error(`--command must be valid JSON: ${error instanceof Error ? error.message : String(error)}`);
1002
- }
1003
- if (!Array.isArray(parsed) || parsed.length === 0 || parsed.some((entry) => typeof entry !== "string")) {
1004
- return new Error("--command must be a non-empty JSON string array");
1005
- }
1006
- return parsed;
1007
- }
1008
- function parseTimeout(value) {
1009
- if (value === void 0) return SAFE_EXEC_DEFAULT_TIMEOUT_MS;
1010
- const parsed = Number(value);
1011
- if (!Number.isInteger(parsed) || parsed <= 0) return new Error("--timeout-ms must be a positive integer");
1012
- return parsed;
1013
- }
1014
- function tags(value) {
1015
- return value === void 0 ? [] : value.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0);
1016
- }
1017
- function requiredValue(parsed, option) {
1018
- const value = oneValue(parsed, option);
1019
- return value === void 0 || value.length === 0 ? new Error(`${option} is required`) : value;
1020
- }
1021
- function authorRevisions(parsed) {
1022
- const revisions = [];
1023
- for (const id of parsed.values.get("--exclude") ?? []) revisions.push({ kind: "remove", id });
1024
- for (const rename of parsed.values.get("--rename") ?? []) {
1025
- const separator = rename.indexOf("=");
1026
- if (separator <= 0 || separator === rename.length - 1) {
1027
- return new Error("--rename must use <old>=<new>");
1028
- }
1029
- revisions.push({ kind: "rename", id: rename.slice(0, separator), newId: rename.slice(separator + 1) });
1030
- }
1031
- return revisions;
1032
- }
1033
- function addRevision(parsed) {
1034
- const id = requiredValue(parsed, "--id");
1035
- if (id instanceof Error) return id;
1036
- const description = requiredValue(parsed, "--description");
1037
- if (description instanceof Error) return description;
1038
- const command = parseCommand(oneValue(parsed, "--command"));
1039
- if (command instanceof Error) return command;
1040
- const timeoutMs = parseTimeout(oneValue(parsed, "--timeout-ms"));
1041
- if (timeoutMs instanceof Error) return timeoutMs;
1042
- return {
1043
- kind: "add",
1044
- check: {
1045
- id,
1046
- description,
1047
- command,
1048
- cwd: oneValue(parsed, "--cwd") ?? ".",
1049
- timeoutMs,
1050
- tags: tags(oneValue(parsed, "--tags"))
1051
- }
1052
- };
1053
- }
1054
- function editRevision(parsed) {
1055
- const id = parsed.positional[1];
1056
- if (id === void 0) return new Error("edit requires a check ID");
1057
- const changes = {};
1058
- const description = oneValue(parsed, "--description");
1059
- if (description !== void 0) changes.description = description;
1060
- const commandValue = oneValue(parsed, "--command");
1061
- if (commandValue !== void 0) {
1062
- const command = parseCommand(commandValue);
1063
- if (command instanceof Error) return command;
1064
- changes.command = command;
1065
- }
1066
- const cwd = oneValue(parsed, "--cwd");
1067
- if (cwd !== void 0) changes.cwd = cwd;
1068
- const timeoutValue = oneValue(parsed, "--timeout-ms");
1069
- if (timeoutValue !== void 0) {
1070
- const timeoutMs = parseTimeout(timeoutValue);
1071
- if (timeoutMs instanceof Error) return timeoutMs;
1072
- changes.timeoutMs = timeoutMs;
1073
- }
1074
- const tagValue = oneValue(parsed, "--tags");
1075
- if (tagValue !== void 0) changes.tags = tags(tagValue);
1076
- if (Object.keys(changes).length === 0) return new Error("edit requires at least one changed field");
1077
- return { kind: "edit", id, changes };
1078
- }
1079
- function mutationRevision(parsed) {
1080
- const command = parsed.positional[0];
1081
- if (command === "add") return addRevision(parsed);
1082
- if (command === "edit") return editRevision(parsed);
1083
- if (command === "rename") {
1084
- const id = parsed.positional[1];
1085
- const newId = parsed.positional[2];
1086
- if (id === void 0 || newId === void 0) return new Error("rename requires <old> and <new> IDs");
1087
- return { kind: "rename", id, newId };
1088
- }
1089
- if (command === "remove") {
1090
- const id = parsed.positional[1];
1091
- if (id === void 0) return new Error("remove requires a check ID");
1092
- return { kind: "remove", id };
1093
- }
1094
- return new Error(`unknown verifiers command: ${command ?? "(none)"}`);
1095
- }
1096
- function printDryRun(id, result) {
1097
- if (result.kind === "error") {
1098
- printError(`dry-run '${id}' failed: ${result.message}`);
1099
- return 1;
1100
- }
1101
- process.stdout.write(`Dry run '${id}':
1102
- ${result.output}${result.output.endsWith("\n") ? "" : "\n"}`);
1103
- return 0;
1104
- }
1105
- async function executeWorkflow(parsed, options) {
1106
- let printedPreview = false;
1107
- const dryRunCheckIds = parsed.values.get("--dry-run") ?? [];
1108
- const result = await runVerifierAuthoringWorkflow({
1109
- includeProposals: options.includeProposals,
1110
- initialRevisions: options.revisions,
1111
- confirmed: parsed.yes,
1112
- decide(context) {
1113
- process.stdout.write(`${context.preview}
1114
- `);
1115
- printedPreview = true;
1116
- if (!parsed.yes || context.draft.checks.length === 0 && options.revisions.length === 0) {
1117
- return { kind: "reject" };
1118
- }
1119
- return { kind: "confirm", dryRunCheckIds };
1120
- }
1121
- });
1122
- if (result.status === "invalid") {
1123
- if (!printedPreview && result.preview !== void 0) process.stdout.write(`${result.preview}
1124
- `);
1125
- printError(result.reason);
1126
- if (result.wrote && result.path !== void 0) {
1127
- process.stderr.write(` ${result.path} was written; repair or remove it before running a check.
1128
- `);
1129
- }
1130
- return 1;
1131
- }
1132
- if (result.status === "rejected") {
1133
- if (!parsed.yes) {
1134
- process.stdout.write("Review complete. Nothing changed; rerun the same command with --yes to write this preview.\n");
1135
- } else {
1136
- process.stdout.write(
1137
- "Nothing changed because the preview contains no catalog checks. Package checks remain active; unsupported commands can be added with `clio-coder verifiers add`.\n"
1138
- );
1139
- }
1140
- return 0;
1141
- }
1142
- printOk(`wrote ${result.path}; production parser accepted the catalog`);
1143
- let code = 0;
1144
- for (const dryRun of result.dryRuns) code = Math.max(code, printDryRun(dryRun.id, dryRun.result));
1145
- return code;
1146
- }
1147
- async function discoverCommand() {
1148
- const discovery = discoverVerifierAuthoring();
1149
- if (!discovery.ok) {
1150
- printError(discovery.reason);
1151
- process.stderr.write(`${discovery.manualEntry}
1152
- `);
1153
- return 1;
1154
- }
1155
- process.stdout.write(`${previewVerifierDraft(createVerifierDraft(discovery))}
1156
- `);
1157
- return 0;
1158
- }
1159
- function validateCommand() {
1160
- const loaded = loadProjectVerifierCatalog(process.cwd());
1161
- if (!loaded.ok) {
1162
- printError(`production catalog parser rejected ${loaded.reason}`);
1163
- return 1;
1164
- }
1165
- if (loaded.source === null) {
1166
- process.stdout.write(`No ${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH} exists. Run \`clio-coder verifiers author\`.
1167
- `);
1168
- return 0;
1169
- }
1170
- printOk(
1171
- `production catalog parser accepted ${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH} (${loaded.source.checks.length} check${loaded.source.checks.length === 1 ? "" : "s"})`
1172
- );
1173
- return 0;
1174
- }
1175
- async function runVerifiersCommand(argv) {
1176
- const parsed = parseAuthoringArgs(argv);
1177
- if (parsed.error !== void 0) {
1178
- printError(parsed.error);
1179
- process.stderr.write(HELP);
1180
- return 2;
1181
- }
1182
- if (parsed.help || parsed.positional.length === 0) {
1183
- process.stdout.write(HELP);
1184
- return 0;
1185
- }
1186
- const command = parsed.positional[0];
1187
- if (command === "discover") return discoverCommand();
1188
- if (command === "validate") return validateCommand();
1189
- if (command === "dry-run") {
1190
- const id = parsed.positional[1];
1191
- if (id === void 0) {
1192
- printError("dry-run requires a check ID");
1193
- return 2;
1194
- }
1195
- return printDryRun(id, await verifyTool.run({ check: id }));
1196
- }
1197
- if (command === "author") {
1198
- const revisions = authorRevisions(parsed);
1199
- if (revisions instanceof Error) {
1200
- printError(revisions.message);
1201
- return 2;
1202
- }
1203
- return executeWorkflow(parsed, { includeProposals: true, revisions });
1204
- }
1205
- if (["add", "edit", "rename", "remove"].includes(command ?? "")) {
1206
- const revision = mutationRevision(parsed);
1207
- if (revision instanceof Error) {
1208
- printError(revision.message);
1209
- return 2;
1210
- }
1211
- return executeWorkflow(parsed, { includeProposals: false, revisions: [revision] });
1212
- }
1213
- printError(`unknown verifiers command: ${command}`);
1214
- process.stderr.write(HELP);
1215
- return 2;
1216
- }
1217
956
  export {
1218
- runVerifiersCommand
957
+ discoverDeclaredProjectCommands,
958
+ discoverVerifierAuthoring,
959
+ createVerifierDraft,
960
+ previewVerifierDraft,
961
+ runVerifierAuthoringWorkflow
1219
962
  };
1220
- //# sourceMappingURL=verifiers-NCBTHHN2.js.map
963
+ //# sourceMappingURL=chunk-TB5666IT.js.map