@iowarp/clio-coder 0.3.3 → 0.3.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 (244) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +3 -3
  4. package/dist/{acp-P2AQILE2.js → acp-S5R4RR5B.js} +7 -6
  5. package/dist/{agents-72W3BI7I.js → agents-P6DMMVZY.js} +24 -21
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-5TWEIYDN.js → auth-2XCZLPKS.js} +12 -8
  8. package/dist/{chunk-GGXXDWE4.js → chunk-22NAGB7X.js} +2 -2
  9. package/dist/{chunk-2DJ2KNFG.js → chunk-2LZI5CAG.js} +133 -13
  10. package/dist/{chunk-OAO4GE4M.js → chunk-2TZWSW76.js} +2 -2
  11. package/dist/{chunk-OOJYHWRB.js → chunk-34475P3I.js} +2 -2
  12. package/dist/{chunk-4XUGQOHA.js → chunk-35MKKU5R.js} +4 -4
  13. package/dist/{chunk-LM5TQCJZ.js → chunk-3HZ5RWN2.js} +5 -5
  14. package/dist/{chunk-AGYYIBLL.js → chunk-3JLKSKD7.js} +2 -2
  15. package/dist/{chunk-KZWTDYJF.js → chunk-4JUF2NNX.js} +7 -7
  16. package/dist/{chunk-ZDOOVTXZ.js → chunk-4OC57DA6.js} +27 -4
  17. package/dist/chunk-5M54SPOL.js +926 -0
  18. package/dist/{chunk-STBPMHSX.js → chunk-7RXG6QRZ.js} +51 -11
  19. package/dist/{chunk-X6IAEBZR.js → chunk-A2GZF7DC.js} +5 -5
  20. package/dist/{chunk-A3CYT5EX.js → chunk-AD2SYQYC.js} +55 -2
  21. package/dist/chunk-AOCYTWAV.js +449 -0
  22. package/dist/chunk-BEY543CS.js +258 -0
  23. package/dist/{chunk-6N5PTWMY.js → chunk-BP4OYD6A.js} +32 -13
  24. package/dist/chunk-BPGS2WCQ.js +612 -0
  25. package/dist/{chunk-V6RTAOC2.js → chunk-BRXQQJFP.js} +8 -8
  26. package/dist/chunk-CFGTUFWB.js +67 -0
  27. package/dist/{chunk-CBCAPZAA.js → chunk-E25LMLRW.js} +2 -2
  28. package/dist/{chunk-DUYJ5IO6.js → chunk-EDRHSCIE.js} +4 -4
  29. package/dist/{chunk-XBXAASKX.js → chunk-EFADSJET.js} +2 -2
  30. package/dist/{chunk-M6SHUN7Q.js → chunk-FO5ZOVUY.js} +2 -2
  31. package/dist/chunk-FYYLNIL5.js +313 -0
  32. package/dist/{chunk-FNTMWMX5.js → chunk-HV5X7OR2.js} +14 -12
  33. package/dist/{chunk-TZTZS7QK.js → chunk-HXG4IURW.js} +5 -3
  34. package/dist/{chunk-5UFT4SUX.js → chunk-K6WL7QZT.js} +3 -3
  35. package/dist/chunk-K7VKOLQQ.js +15 -0
  36. package/dist/{chunk-BMEMKKIT.js → chunk-KOHPCX4K.js} +2 -2
  37. package/dist/{chunk-OC7FIQPC.js → chunk-KRPY7NTG.js} +10 -7
  38. package/dist/chunk-LL4KHSZI.js +22 -0
  39. package/dist/{chunk-DSELYM6W.js → chunk-MEQ45TQ4.js} +15 -9
  40. package/dist/{chunk-5UUP6MWO.js → chunk-MV3K5QF2.js} +5 -436
  41. package/dist/{chunk-6SGHMWE3.js → chunk-N4CZJQRK.js} +5 -5
  42. package/dist/{chunk-TZK7PACC.js → chunk-NILBFAPG.js} +14 -8
  43. package/dist/chunk-OZNBF4L3.js +23 -0
  44. package/dist/{verify-375KUB3Y.js → chunk-PCZJO5TI.js} +127 -42
  45. package/dist/chunk-QQK64KLB.js +1360 -0
  46. package/dist/{chunk-SRDMMSEP.js → chunk-QQL5RT5M.js} +979 -1619
  47. package/dist/{chunk-LZSJBIVT.js → chunk-QWU7ZBO7.js} +70 -720
  48. package/dist/{chunk-2TLUCQVG.js → chunk-RD5U66HV.js} +3 -3
  49. package/dist/{chunk-OKGUZO2U.js → chunk-SPULKLCF.js} +4 -3
  50. package/dist/{chunk-OQ33BKR3.js → chunk-TTNYS3EA.js} +3 -60
  51. package/dist/chunk-TW3WDMVS.js +677 -0
  52. package/dist/chunk-TZSKNMZG.js +434 -0
  53. package/dist/{chunk-7MNJORFF.js → chunk-UL3WSD3F.js} +6 -1
  54. package/dist/{chunk-PIWWS5BL.js → chunk-UZHIZC5S.js} +7 -7
  55. package/dist/{chunk-UFIIWP2H.js → chunk-VAWWTKDP.js} +8 -8
  56. package/dist/{chunk-COU2UHX6.js → chunk-VEZEGCGW.js} +170 -2
  57. package/dist/{chunk-LW6DSM3M.js → chunk-VMNQ6OZA.js} +98 -202
  58. package/dist/chunk-VSNATDE6.js +122 -0
  59. package/dist/chunk-W6GROXXM.js +69 -0
  60. package/dist/chunk-WPQLXFOZ.js +375 -0
  61. package/dist/{chunk-ORBHGJC5.js → chunk-WR67VIZY.js} +3 -3
  62. package/dist/{chunk-PAJK6MAQ.js → chunk-X6COSD2O.js} +5 -5
  63. package/dist/chunk-ZGVHUX3M.js +66 -0
  64. package/dist/{chunk-LWLEKMDQ.js → chunk-ZYKPLLNQ.js} +510 -547
  65. package/dist/cli/index.js +27 -23
  66. package/dist/{clio-JOU4FXVA.js → clio-J5JIOIDS.js} +7 -6
  67. package/dist/{code-nav-7AX6FYE6.js → code-nav-AXCXSBHX.js} +5 -3
  68. package/dist/{config-XCDVKR23.js → config-OEBMIN2U.js} +37 -27
  69. package/dist/{configure-4GAP54ZW.js → configure-PUQOSIXQ.js} +16 -13
  70. package/dist/{context-5VKGUVJJ.js → context-EKDCKUUZ.js} +82 -7
  71. package/dist/{context-4UOGGLQ5.js → context-MGSE4Z2T.js} +33 -23
  72. package/dist/{context-77FM5DV5.js → context-URSXPBCK.js} +17 -9
  73. package/dist/{context-clear-XXJRLCJJ.js → context-clear-KDAJRNUK.js} +33 -23
  74. package/dist/context-working-set-SBKMPPI2.js +1552 -0
  75. package/dist/{dispatch-runner-QPRDDBDX.js → dispatch-runner-MSWN72NK.js} +43 -29
  76. package/dist/{doctor-HR46URBJ.js → doctor-7BSE27PJ.js} +10 -10
  77. package/dist/{eval-XSSNATB4.js → eval-IZGDOO4H.js} +9 -8
  78. package/dist/{evidence-6HG2PY2B.js → evidence-SR7WXB5B.js} +51 -23
  79. package/dist/{evolve-K7YU3NCY.js → evolve-K7VE2CBX.js} +30 -20
  80. package/dist/{fleet-VY3HHKN6.js → fleet-7XMJNQNF.js} +48 -38
  81. package/dist/{fleet-preflight-DDN536IT.js → fleet-preflight-AQNAH644.js} +3 -3
  82. package/dist/{init-JYGXI3FK.js → init-JGNPAYXT.js} +41 -31
  83. package/dist/{memory-WFZMGYHX.js → memory-4ALKDJ4Q.js} +32 -22
  84. package/dist/{models-I5QWSEOM.js → models-ZMMLFJNN.js} +22 -19
  85. package/dist/{monitor-GE4ID3IA.js → monitor-2F3T5KHP.js} +55 -43
  86. package/dist/{orchestrator-EM5MC3HM.js → orchestrator-ORHT43JB.js} +572 -388
  87. package/dist/{reset-L2FQEE3E.js → reset-NXGTYNUO.js} +4 -3
  88. package/dist/{run-ZU3QMZPZ.js → run-RF4WJGMT.js} +51 -41
  89. package/dist/{share-S5BZQC5I.js → share-UT3W6E4M.js} +5 -4
  90. package/dist/{skills-X5VXCRNQ.js → skills-PSACKC5Q.js} +2 -2
  91. package/dist/{skills-eval-WKIHWTHR.js → skills-eval-WJSI55RZ.js} +34 -24
  92. package/dist/{targets-SNCPI2NR.js → targets-PIIRAOYS.js} +23 -20
  93. package/dist/{terminal-lease-BNAHVHBS.js → terminal-lease-ULWXWNVY.js} +4 -3
  94. package/dist/{upgrade-JQHHPQ4K.js → upgrade-346TZ6AV.js} +18 -17
  95. package/dist/{usage-OR4O5SMZ.js → usage-6KKXR32N.js} +34 -24
  96. package/dist/verifiers-4UUM6TEE.js +1214 -0
  97. package/dist/verify-X5HDROLA.js +25 -0
  98. package/dist/{wiki-generate-UEXP2ARI.js → wiki-generate-7STOCIFZ.js} +42 -31
  99. package/dist/worker/entry.js +33 -24
  100. package/docs/README.md +7 -6
  101. package/docs/acp.md +1 -1
  102. package/docs/alcf-provider.md +1 -1
  103. package/docs/architecture.md +2 -2
  104. package/docs/artifact-versions.md +1 -1
  105. package/docs/built-in-agents.md +1 -1
  106. package/docs/capacity-and-scheduling.md +1 -1
  107. package/docs/commands-and-modes.md +53 -21
  108. package/docs/config-knobs-audit.md +1 -2
  109. package/docs/configuration-and-targets.md +15 -1
  110. package/docs/context-engine.md +64 -12
  111. package/docs/context-working-set.md +194 -0
  112. package/docs/development-pipeline.md +1 -1
  113. package/docs/documentation-coverage.md +5 -5
  114. package/docs/documentation-guide.md +6 -5
  115. package/docs/environment-variables.md +2 -1
  116. package/docs/eval-runner.md +1 -1
  117. package/docs/evals-internal.md +14 -1
  118. package/docs/evidence-and-memory.md +74 -2
  119. package/docs/evolution.md +1 -1
  120. package/docs/exit-codes-and-output.md +1 -1
  121. package/docs/extensions-and-sharing.md +2 -2
  122. package/docs/fleet-dispatch.md +22 -7
  123. package/docs/glossary.md +21 -1
  124. package/docs/installation-and-lifecycle.md +2 -2
  125. package/docs/middleware-and-components.md +1 -1
  126. package/docs/model-catalog.md +7 -9
  127. package/docs/observability.md +4 -4
  128. package/docs/proactive-memory.md +1 -1
  129. package/docs/prompt-envelope-and-tools.md +4 -4
  130. package/docs/provider-adapter-cookbook.md +1 -1
  131. package/docs/release-cut-checklist.md +31 -31
  132. package/docs/safety-model.md +23 -4
  133. package/docs/scientific-validation.md +21 -3
  134. package/docs/session-lifecycle.md +3 -3
  135. package/docs/skills-marketplace.md +1 -1
  136. package/docs/tool-usage.md +79 -12
  137. package/docs/trace-store.md +1 -1
  138. package/docs/troubleshooting.md +1 -1
  139. package/docs/tui-design.md +1 -1
  140. package/docs/worker-dispatch-mechanics.md +11 -1
  141. package/package.json +8 -11
  142. package/skills/meta/clio-test/SKILL.md +20 -17
  143. package/skills/meta/clio-test/evals.md +3 -3
  144. package/skills/meta/clio-test/references/harness.md +35 -6
  145. package/skills/meta/clio-test/references/test-map.md +20 -10
  146. package/skills/registry.yaml +2 -2
  147. package/skills/skill-marketplace.json +1 -1
  148. package/src/cli/context-working-set.ts +513 -0
  149. package/src/cli/context.ts +8 -0
  150. package/src/cli/evidence.ts +20 -2
  151. package/src/cli/index.ts +4 -0
  152. package/src/cli/verifiers.ts +325 -0
  153. package/src/core/bash-exec.ts +39 -14
  154. package/src/core/bus-events.ts +19 -4
  155. package/src/core/config.ts +54 -0
  156. package/src/core/defaults.ts +50 -3
  157. package/src/core/verification-scripts.ts +6 -0
  158. package/src/domains/agents/builtins/verifier.md +3 -0
  159. package/src/domains/config/classify.ts +1 -0
  160. package/src/domains/context/working-set/contract.ts +161 -0
  161. package/src/domains/context/working-set/defaults.ts +28 -0
  162. package/src/domains/context/working-set/engine.ts +203 -0
  163. package/src/domains/context/working-set/fold.ts +62 -0
  164. package/src/domains/context/working-set/horizon.ts +38 -0
  165. package/src/domains/context/working-set/marker.ts +103 -0
  166. package/src/domains/context/working-set/path-index.ts +436 -0
  167. package/src/domains/context/working-set/payload.ts +152 -0
  168. package/src/domains/context/working-set/policies/age-horizon.ts +55 -0
  169. package/src/domains/context/working-set/policies/index.ts +21 -0
  170. package/src/domains/context/working-set/policies/structural.ts +160 -0
  171. package/src/domains/context/working-set/project.ts +132 -0
  172. package/src/domains/context/working-set/protect.ts +109 -0
  173. package/src/domains/context/working-set/recall.ts +177 -0
  174. package/src/domains/context/working-set/replay/controls.ts +112 -0
  175. package/src/domains/context/working-set/replay/load-clio.ts +199 -0
  176. package/src/domains/context/working-set/replay/metrics.ts +185 -0
  177. package/src/domains/context/working-set/replay/reference-graph.ts +79 -0
  178. package/src/domains/context/working-set/replay/report.ts +139 -0
  179. package/src/domains/context/working-set/replay/runner.ts +325 -0
  180. package/src/domains/context/working-set/replay/synthetic.ts +422 -0
  181. package/src/domains/context/working-set/replay/trace.ts +21 -0
  182. package/src/domains/context/working-set/visible.ts +54 -0
  183. package/src/domains/evidence/build.ts +112 -45
  184. package/src/domains/evidence/eval.ts +24 -7
  185. package/src/domains/evidence/index.ts +53 -0
  186. package/src/domains/evidence/ordering.ts +12 -0
  187. package/src/domains/evidence/run-trust.ts +221 -0
  188. package/src/domains/evidence/store.ts +46 -6
  189. package/src/domains/evidence/trust-status.ts +854 -0
  190. package/src/domains/evidence/types.ts +26 -0
  191. package/src/domains/middleware/memory-intervention.ts +3 -0
  192. package/src/domains/middleware/stalled-turn.ts +165 -4
  193. package/src/domains/safety/autonomy.ts +1 -1
  194. package/src/domains/safety/default-path-policy.ts +8 -0
  195. package/src/domains/safety/finish-contract.ts +4 -3
  196. package/src/domains/safety/policy-engine.ts +48 -6
  197. package/src/domains/session/compaction/compact.ts +23 -1
  198. package/src/domains/session/compaction/cut-point.ts +2 -0
  199. package/src/domains/session/compaction/tokens.ts +16 -1
  200. package/src/domains/session/context-ledger.ts +2 -0
  201. package/src/domains/session/entries.ts +107 -1
  202. package/src/domains/session/manager.ts +9 -2
  203. package/src/domains/session/migrations/index.ts +22 -3
  204. package/src/engine/acp/server.ts +3 -0
  205. package/src/engine/agent.ts +18 -1
  206. package/src/engine/session.ts +9 -3
  207. package/src/entry/orchestrator.ts +16 -4
  208. package/src/interactive/chat-loop-messages.ts +18 -6
  209. package/src/interactive/chat-panel.ts +17 -1
  210. package/src/interactive/chat-renderer.ts +30 -21
  211. package/src/interactive/context-meter.ts +10 -0
  212. package/src/interactive/context-overlay.ts +81 -6
  213. package/src/interactive/context-recall-command.ts +110 -0
  214. package/src/interactive/interactive-slash-runtime.ts +37 -1
  215. package/src/interactive/model-session-replay.ts +21 -0
  216. package/src/interactive/overlay-general-openers.ts +6 -0
  217. package/src/interactive/overlay-session-lifecycle.ts +8 -4
  218. package/src/interactive/renderers/tool-execution.ts +18 -2
  219. package/src/interactive/session-transcript.ts +2 -2
  220. package/src/interactive/slash-commands.ts +29 -2
  221. package/src/interactive/turn-context.ts +238 -88
  222. package/src/interactive/turn-middleware.ts +6 -6
  223. package/src/tools/agent-tools.ts +11 -4
  224. package/src/tools/bash.ts +144 -82
  225. package/src/tools/builtin-tool-catalog.ts +11 -5
  226. package/src/tools/context/index.ts +105 -3
  227. package/src/tools/context/surface.ts +3 -2
  228. package/src/tools/core-bootstrap.ts +21 -0
  229. package/src/tools/dispatch-runner.ts +9 -7
  230. package/src/tools/monitor.ts +28 -20
  231. package/src/tools/registry.ts +59 -7
  232. package/src/tools/result-disposition.ts +550 -0
  233. package/src/tools/result-shaping.ts +262 -19
  234. package/src/tools/safe-exec.ts +2 -0
  235. package/src/tools/verify/authoring.ts +1119 -0
  236. package/src/tools/verify/catalog.ts +346 -0
  237. package/src/tools/verify/index.ts +13 -3
  238. package/src/tools/verify/scripts.ts +135 -37
  239. package/src/tools/verify/surface.ts +9 -5
  240. package/src/tools/worker-evidence.ts +35 -12
  241. package/dist/chunk-J7CWMCQD.js +0 -255
  242. package/dist/chunk-T6YILFSB.js +0 -80
  243. package/dist/chunk-VAKQQHWR.js +0 -434
  244. package/dist/chunk-VPAYEGVX.js +0 -184
@@ -6,35 +6,32 @@ import {
6
6
  runVectorTool,
7
7
  timeoutArg,
8
8
  verifyToolSurface
9
- } from "./chunk-TZK7PACC.js";
9
+ } from "./chunk-NILBFAPG.js";
10
+ import {
11
+ PROJECT_VERIFIER_CATALOG_RELATIVE_PATH,
12
+ loadProjectVerifierCatalog,
13
+ packageDeclaredCheck,
14
+ resolveProjectVerifierExecutionCwd
15
+ } from "./chunk-FYYLNIL5.js";
10
16
  import {
11
17
  VERIFICATION_SCRIPT_FAMILY_HINT,
12
18
  declaredVerificationScripts,
13
19
  isVerificationScriptName
14
- } from "./chunk-7MNJORFF.js";
20
+ } from "./chunk-UL3WSD3F.js";
15
21
  import {
16
22
  escapeRegExp
17
23
  } from "./chunk-VG7TBQIY.js";
18
24
  import {
19
25
  resolveReadPath
20
26
  } from "./chunk-OQE5J4C6.js";
21
- import "./chunk-ECH6PKUQ.js";
22
27
  import {
23
28
  truncateUtf8
24
29
  } from "./chunk-6XLNIQDB.js";
25
- import "./chunk-5B2AEOW5.js";
26
- import "./chunk-CGKSTWHD.js";
27
30
  import {
28
31
  combineSafeOutput,
29
32
  resolveSafeCwd,
30
33
  runCommandVector
31
- } from "./chunk-VPAYEGVX.js";
32
- import "./chunk-COU2UHX6.js";
33
- import "./chunk-FQ4SKYE4.js";
34
- import "./chunk-FCSXB6T2.js";
35
- import "./chunk-YXLYO42X.js";
36
- import "./chunk-BNAZZHFG.js";
37
- import "./chunk-6EJMN2Y3.js";
34
+ } from "./chunk-VEZEGCGW.js";
38
35
  import {
39
36
  init_esm_shims
40
37
  } from "./chunk-3R73A4XB.js";
@@ -616,51 +613,133 @@ function lineAt(text, index) {
616
613
  init_esm_shims();
617
614
  import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
618
615
  import path2 from "node:path";
619
- function declaredCheckSources(cwd) {
620
- const pkgPath = path2.join(cwd, "package.json");
621
- if (!existsSync2(pkgPath)) return [];
622
- const pkg = parsePackageJson(pkgPath);
623
- if (!pkg.ok) return [];
624
- return [{ kind: "package.json", path: pkgPath, checks: declaredVerificationScripts(pkg.scripts) }];
616
+ function repositoryRelativeCwd(workspaceRoot, resolved) {
617
+ const relative = path2.relative(workspaceRoot, resolved);
618
+ return relative.length === 0 ? "." : relative.split(path2.sep).join("/");
625
619
  }
626
- function listChecks(cwdArg) {
627
- let cwd;
628
- try {
629
- cwd = resolveSafeCwd(cwdArg, process.cwd());
630
- } catch (err) {
631
- return { kind: "error", message: `verify: ${err instanceof Error ? err.message : String(err)}` };
620
+ function packageTag(id) {
621
+ const separator = id.search(/[:.-]/u);
622
+ return [separator === -1 ? id : id.slice(0, separator)];
623
+ }
624
+ function packageCheckSource(packageRoot, workspaceRoot) {
625
+ const packagePath = path2.join(packageRoot, "package.json");
626
+ if (!existsSync2(packagePath)) return null;
627
+ const pkg = parsePackageJson(packagePath);
628
+ if (!pkg.ok) return null;
629
+ const cwd = repositoryRelativeCwd(workspaceRoot, packageRoot);
630
+ const checks = declaredVerificationScripts(pkg.scripts).map(
631
+ (id) => packageDeclaredCheck(id, packagePath, cwd, packageTag(id))
632
+ );
633
+ return { kind: "package.json", path: packagePath, checks };
634
+ }
635
+ function providerCollision(sources) {
636
+ const seen = /* @__PURE__ */ new Map();
637
+ for (const source of sources) {
638
+ for (const check of source.checks) {
639
+ const prior = seen.get(check.id);
640
+ if (prior !== void 0) {
641
+ return `duplicate declared check id '${check.id}' from ${prior.source.kind} (${prior.source.path}) and ${check.source.kind} (${check.source.path})`;
642
+ }
643
+ seen.set(check.id, check);
644
+ }
632
645
  }
633
- const sources = declaredCheckSources(cwd);
646
+ return null;
647
+ }
648
+ function discoverDeclaredChecksAtRoot(workspaceRoot, cwdArg) {
649
+ let packageRoot;
650
+ try {
651
+ packageRoot = resolveSafeCwd(cwdArg, workspaceRoot);
652
+ } catch (error) {
653
+ return { ok: false, reason: error instanceof Error ? error.message : String(error) };
654
+ }
655
+ const sources = [];
656
+ const packageSource = packageCheckSource(packageRoot, workspaceRoot);
657
+ if (packageSource !== null) sources.push(packageSource);
658
+ const projectCatalog = loadProjectVerifierCatalog(workspaceRoot);
659
+ if (!projectCatalog.ok) return projectCatalog;
660
+ if (projectCatalog.source !== null) sources.push(projectCatalog.source);
661
+ const collision = providerCollision(sources);
662
+ if (collision !== null) return { ok: false, reason: collision };
663
+ return { ok: true, sources };
664
+ }
665
+ function discoverDeclaredChecks(cwdArg) {
666
+ return discoverDeclaredChecksAtRoot(process.cwd(), cwdArg);
667
+ }
668
+ function clonedSources(sources) {
669
+ return sources.map((source) => ({
670
+ kind: source.kind,
671
+ path: source.path,
672
+ checks: source.checks.map((check) => ({
673
+ ...check,
674
+ command: [...check.command],
675
+ tags: [...check.tags],
676
+ source: { ...check.source }
677
+ }))
678
+ }));
679
+ }
680
+ function listChecks(cwdArg) {
681
+ const discovery = discoverDeclaredChecks(cwdArg);
682
+ if (!discovery.ok) return { kind: "error", message: `verify: ${discovery.reason}` };
634
683
  const lines = [];
635
- if (sources.length === 0 || sources.every((source) => source.checks.length === 0)) {
636
- lines.push("No declared verification checks found (no package.json verification scripts).");
684
+ if (discovery.sources.length === 0 || discovery.sources.every((source) => source.checks.length === 0)) {
685
+ lines.push(
686
+ `No declared verification checks found (no package.json verification scripts or ${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH} entries).`,
687
+ "Run `clio-coder verifiers author` to inspect declared project tooling, preview exact argv checks, and create the catalog after confirmation."
688
+ );
637
689
  } else {
638
690
  lines.push("Declared verification checks:");
639
- for (const source of sources) {
640
- lines.push(`${source.kind}:`);
641
- for (const check of source.checks) lines.push(`- ${check}`);
691
+ for (const source of discovery.sources) {
692
+ lines.push(source.kind === "package.json" ? "package.json:" : `${PROJECT_VERIFIER_CATALOG_RELATIVE_PATH}:`);
693
+ for (const check of source.checks) {
694
+ const tags = check.tags.length > 0 ? ` [${check.tags.join(", ")}]` : "";
695
+ lines.push(`- ${check.id}${tags}: ${check.description}`);
696
+ }
642
697
  }
643
698
  }
644
699
  lines.push(
645
700
  "",
646
- 'Run one with verify(check="<name>"). verify(check="frontend", path=<file>) validates an HTML/CSS/JS artifact.'
701
+ 'Run one with verify(check="<id>"). verify(check="frontend", path=<file>) validates an HTML/CSS/JS artifact.'
647
702
  );
648
703
  return {
649
704
  kind: "ok",
650
705
  output: lines.join("\n"),
651
- details: { sources: sources.map((source) => ({ ...source })) }
706
+ details: { sources: clonedSources(discovery.sources) }
707
+ };
708
+ }
709
+ function withDeclaredEvidence(result, check) {
710
+ return {
711
+ ...result,
712
+ details: {
713
+ ...result.details,
714
+ action: "verify",
715
+ check: check.id,
716
+ source: { ...check.source },
717
+ description: check.description,
718
+ declaredCommand: [...check.command],
719
+ declaredCwd: check.cwd,
720
+ declaredTimeoutMs: check.timeoutMs,
721
+ tags: [...check.tags]
722
+ }
652
723
  };
653
724
  }
725
+ async function runProjectCheck(check, options) {
726
+ const [file, ...vector] = check.command;
727
+ if (file === void 0) return { kind: "error", message: `verify: declared check '${check.id}' has empty argv` };
728
+ const cwd = resolveProjectVerifierExecutionCwd(check.cwd, process.cwd());
729
+ if (cwd instanceof Error) return { kind: "error", message: `verify: ${cwd.message}` };
730
+ const result = await runVectorTool("verify", file, vector, { cwd, timeout_ms: check.timeoutMs }, options);
731
+ return withDeclaredEvidence(result, check);
732
+ }
654
733
  async function runScriptCheck(check, args, options) {
655
734
  let cwd;
656
735
  try {
657
736
  cwd = resolveSafeCwd(typeof args.cwd === "string" && args.cwd.length > 0 ? args.cwd : void 0, process.cwd());
658
- } catch (err) {
659
- return { kind: "error", message: `verify: ${err instanceof Error ? err.message : String(err)}` };
737
+ } catch (error) {
738
+ return { kind: "error", message: `verify: ${error instanceof Error ? error.message : String(error)}` };
660
739
  }
661
- const pkgPath = path2.join(cwd, "package.json");
662
- if (!existsSync2(pkgPath)) return { kind: "error", message: `verify: package.json not found in ${cwd}` };
663
- const pkg = parsePackageJson(pkgPath);
740
+ const packagePath = path2.join(cwd, "package.json");
741
+ if (!existsSync2(packagePath)) return { kind: "error", message: `verify: package.json not found in ${cwd}` };
742
+ const pkg = parsePackageJson(packagePath);
664
743
  if (!pkg.ok) return { kind: "error", message: `verify: ${pkg.reason}` };
665
744
  if (!Object.hasOwn(pkg.scripts, check)) {
666
745
  const declared = declaredVerificationScripts(pkg.scripts);
@@ -675,9 +754,9 @@ async function runScriptCheck(check, args, options) {
675
754
  if (extraArgs.length > 0) vector.push("--", ...extraArgs);
676
755
  return runVectorTool("verify", "npm", vector, { ...args, cwd }, options);
677
756
  }
678
- function parsePackageJson(pkgPath) {
757
+ function parsePackageJson(packagePath) {
679
758
  try {
680
- const parsed = JSON.parse(readFileSync2(pkgPath, "utf8"));
759
+ const parsed = JSON.parse(readFileSync2(packagePath, "utf8"));
681
760
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
682
761
  return { ok: false, reason: "package.json root must be an object" };
683
762
  }
@@ -686,8 +765,8 @@ function parsePackageJson(pkgPath) {
686
765
  return { ok: false, reason: "package.json has no scripts object" };
687
766
  }
688
767
  return { ok: true, scripts };
689
- } catch (err) {
690
- return { ok: false, reason: err instanceof Error ? err.message : String(err) };
768
+ } catch (error) {
769
+ return { ok: false, reason: error instanceof Error ? error.message : String(error) };
691
770
  }
692
771
  }
693
772
 
@@ -701,6 +780,10 @@ var verifyTool = {
701
780
  return listChecks(typeof args.cwd === "string" && args.cwd.length > 0 ? args.cwd : void 0);
702
781
  }
703
782
  if (check === "frontend") return runFrontendCheck(args, options);
783
+ const discovery = discoverDeclaredChecks(typeof args.cwd === "string" && args.cwd.length > 0 ? args.cwd : void 0);
784
+ if (!discovery.ok) return { kind: "error", message: `verify: ${discovery.reason}` };
785
+ const declared = discovery.sources.flatMap((source) => source.checks).find((candidate) => candidate.id === check);
786
+ if (declared?.source.kind === "project-catalog") return runProjectCheck(declared, options);
704
787
  if (!isVerificationScriptName(check)) {
705
788
  return {
706
789
  kind: "error",
@@ -710,7 +793,9 @@ var verifyTool = {
710
793
  return runScriptCheck(check, args, options);
711
794
  }
712
795
  };
796
+
713
797
  export {
798
+ discoverDeclaredChecksAtRoot,
714
799
  verifyTool
715
800
  };
716
- //# sourceMappingURL=verify-375KUB3Y.js.map
801
+ //# sourceMappingURL=chunk-PCZJO5TI.js.map