@vibe-agent-toolkit/cli 0.2.0-rc.2 → 0.2.0-rc.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 (211) hide show
  1. package/dist/bin/vat +68 -16
  2. package/dist/bin/vat.js +68 -16
  3. package/dist/bin/vat.js.map +1 -1
  4. package/dist/bin.js +157 -37
  5. package/dist/bin.js.map +1 -1
  6. package/dist/command-loaders.d.ts +44 -0
  7. package/dist/command-loaders.d.ts.map +1 -0
  8. package/dist/command-loaders.js +58 -0
  9. package/dist/command-loaders.js.map +1 -0
  10. package/dist/commands/agent/index.js +1 -1
  11. package/dist/commands/agent/install.d.ts.map +1 -1
  12. package/dist/commands/agent/install.js +46 -5
  13. package/dist/commands/agent/install.js.map +1 -1
  14. package/dist/commands/audit/distributed-tree.d.ts +2 -2
  15. package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
  16. package/dist/commands/audit/distributed-tree.js +2 -1
  17. package/dist/commands/audit/distributed-tree.js.map +1 -1
  18. package/dist/commands/audit/git-url-clone.d.ts +1 -1
  19. package/dist/commands/audit/git-url-clone.d.ts.map +1 -1
  20. package/dist/commands/audit/git-url-clone.js.map +1 -1
  21. package/dist/commands/audit/hierarchical-output.d.ts +1 -1
  22. package/dist/commands/audit/hierarchical-output.d.ts.map +1 -1
  23. package/dist/commands/audit/hierarchical-output.js +1 -1
  24. package/dist/commands/audit/hierarchical-output.js.map +1 -1
  25. package/dist/commands/audit.d.ts +22 -1
  26. package/dist/commands/audit.d.ts.map +1 -1
  27. package/dist/commands/audit.js +224 -24
  28. package/dist/commands/audit.js.map +1 -1
  29. package/dist/commands/build.d.ts +1 -1
  30. package/dist/commands/build.d.ts.map +1 -1
  31. package/dist/commands/build.js +15 -12
  32. package/dist/commands/build.js.map +1 -1
  33. package/dist/commands/cache/cache-control.d.ts +82 -0
  34. package/dist/commands/cache/cache-control.d.ts.map +1 -0
  35. package/dist/commands/cache/cache-control.js +86 -0
  36. package/dist/commands/cache/cache-control.js.map +1 -0
  37. package/dist/commands/cache/clear.d.ts +17 -3
  38. package/dist/commands/cache/clear.d.ts.map +1 -1
  39. package/dist/commands/cache/clear.js +68 -3
  40. package/dist/commands/cache/clear.js.map +1 -1
  41. package/dist/commands/cache/index.d.ts +13 -63
  42. package/dist/commands/cache/index.d.ts.map +1 -1
  43. package/dist/commands/cache/index.js +38 -79
  44. package/dist/commands/cache/index.js.map +1 -1
  45. package/dist/commands/claude/budget.d.ts +157 -0
  46. package/dist/commands/claude/budget.d.ts.map +1 -0
  47. package/dist/commands/claude/budget.js +412 -0
  48. package/dist/commands/claude/budget.js.map +1 -0
  49. package/dist/commands/claude/context.d.ts +340 -0
  50. package/dist/commands/claude/context.d.ts.map +1 -0
  51. package/dist/commands/claude/context.js +1079 -0
  52. package/dist/commands/claude/context.js.map +1 -0
  53. package/dist/commands/claude/index.d.ts +13 -0
  54. package/dist/commands/claude/index.d.ts.map +1 -1
  55. package/dist/commands/claude/index.js +24 -2
  56. package/dist/commands/claude/index.js.map +1 -1
  57. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  58. package/dist/commands/claude/marketplace/git-publish.js +18 -19
  59. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  60. package/dist/commands/claude/marketplace/validate.d.ts +19 -1
  61. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  62. package/dist/commands/claude/marketplace/validate.js +41 -21
  63. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  64. package/dist/commands/claude/plugin/build.d.ts +18 -2
  65. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  66. package/dist/commands/claude/plugin/build.js +55 -18
  67. package/dist/commands/claude/plugin/build.js.map +1 -1
  68. package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
  69. package/dist/commands/claude/plugin/helpers.js +2 -1
  70. package/dist/commands/claude/plugin/helpers.js.map +1 -1
  71. package/dist/commands/claude/plugin/install.d.ts.map +1 -1
  72. package/dist/commands/claude/plugin/install.js +24 -3
  73. package/dist/commands/claude/plugin/install.js.map +1 -1
  74. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  75. package/dist/commands/claude/plugin/tree-copy.js +2 -1
  76. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  77. package/dist/commands/consistency-check.d.ts.map +1 -1
  78. package/dist/commands/consistency-check.js +4 -3
  79. package/dist/commands/consistency-check.js.map +1 -1
  80. package/dist/commands/corpus/report.d.ts +1 -1
  81. package/dist/commands/corpus/report.d.ts.map +1 -1
  82. package/dist/commands/corpus/runner.d.ts.map +1 -1
  83. package/dist/commands/corpus/runner.js +3 -2
  84. package/dist/commands/corpus/runner.js.map +1 -1
  85. package/dist/commands/corpus/scan.d.ts.map +1 -1
  86. package/dist/commands/corpus/scan.js +18 -8
  87. package/dist/commands/corpus/scan.js.map +1 -1
  88. package/dist/commands/doctor.d.ts +36 -0
  89. package/dist/commands/doctor.d.ts.map +1 -1
  90. package/dist/commands/doctor.js +99 -2
  91. package/dist/commands/doctor.js.map +1 -1
  92. package/dist/commands/inventory.d.ts +13 -1
  93. package/dist/commands/inventory.d.ts.map +1 -1
  94. package/dist/commands/inventory.js +118 -13
  95. package/dist/commands/inventory.js.map +1 -1
  96. package/dist/commands/mcp/collections.d.ts +1 -1
  97. package/dist/commands/mcp/collections.d.ts.map +1 -1
  98. package/dist/commands/phase-utils.d.ts +155 -104
  99. package/dist/commands/phase-utils.d.ts.map +1 -1
  100. package/dist/commands/phase-utils.js +109 -155
  101. package/dist/commands/phase-utils.js.map +1 -1
  102. package/dist/commands/rag/index-command.d.ts +39 -0
  103. package/dist/commands/rag/index-command.d.ts.map +1 -1
  104. package/dist/commands/rag/index-command.js +28 -2
  105. package/dist/commands/rag/index-command.js.map +1 -1
  106. package/dist/commands/rag/index.d.ts.map +1 -1
  107. package/dist/commands/rag/index.js +21 -10
  108. package/dist/commands/rag/index.js.map +1 -1
  109. package/dist/commands/resources/index.d.ts.map +1 -1
  110. package/dist/commands/resources/index.js +10 -2
  111. package/dist/commands/resources/index.js.map +1 -1
  112. package/dist/commands/resources/scan.d.ts +24 -0
  113. package/dist/commands/resources/scan.d.ts.map +1 -1
  114. package/dist/commands/resources/scan.js +19 -6
  115. package/dist/commands/resources/scan.js.map +1 -1
  116. package/dist/commands/resources/validate.d.ts +12 -1
  117. package/dist/commands/resources/validate.d.ts.map +1 -1
  118. package/dist/commands/resources/validate.js +102 -51
  119. package/dist/commands/resources/validate.js.map +1 -1
  120. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  121. package/dist/commands/skill/review-checklist.js +1 -0
  122. package/dist/commands/skill/review-checklist.js.map +1 -1
  123. package/dist/commands/skill/review.js +2 -2
  124. package/dist/commands/skill/review.js.map +1 -1
  125. package/dist/commands/skill/test/configure.d.ts +19 -0
  126. package/dist/commands/skill/test/configure.d.ts.map +1 -1
  127. package/dist/commands/skill/test/configure.js +18 -3
  128. package/dist/commands/skill/test/configure.js.map +1 -1
  129. package/dist/commands/skill/test/run.d.ts +51 -4
  130. package/dist/commands/skill/test/run.d.ts.map +1 -1
  131. package/dist/commands/skill/test/run.js +123 -12
  132. package/dist/commands/skill/test/run.js.map +1 -1
  133. package/dist/commands/skills/build.d.ts +11 -1
  134. package/dist/commands/skills/build.d.ts.map +1 -1
  135. package/dist/commands/skills/build.js +154 -61
  136. package/dist/commands/skills/build.js.map +1 -1
  137. package/dist/commands/skills/package.d.ts +1 -1
  138. package/dist/commands/skills/package.d.ts.map +1 -1
  139. package/dist/commands/skills/package.js.map +1 -1
  140. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  141. package/dist/commands/skills/skill-discovery.js +2 -1
  142. package/dist/commands/skills/skill-discovery.js.map +1 -1
  143. package/dist/commands/skills/validate.d.ts +79 -2
  144. package/dist/commands/skills/validate.d.ts.map +1 -1
  145. package/dist/commands/skills/validate.js +101 -48
  146. package/dist/commands/skills/validate.js.map +1 -1
  147. package/dist/commands/validate.d.ts.map +1 -1
  148. package/dist/commands/validate.js +26 -16
  149. package/dist/commands/validate.js.map +1 -1
  150. package/dist/commands/verify.d.ts +11 -10
  151. package/dist/commands/verify.d.ts.map +1 -1
  152. package/dist/commands/verify.js +49 -38
  153. package/dist/commands/verify.js.map +1 -1
  154. package/dist/utils/command-error.d.ts +33 -2
  155. package/dist/utils/command-error.d.ts.map +1 -1
  156. package/dist/utils/command-error.js +34 -10
  157. package/dist/utils/command-error.js.map +1 -1
  158. package/dist/utils/config-loader.d.ts.map +1 -1
  159. package/dist/utils/config-loader.js +7 -1
  160. package/dist/utils/config-loader.js.map +1 -1
  161. package/dist/utils/context-budget-issues.d.ts +108 -0
  162. package/dist/utils/context-budget-issues.d.ts.map +1 -0
  163. package/dist/utils/context-budget-issues.js +280 -0
  164. package/dist/utils/context-budget-issues.js.map +1 -0
  165. package/dist/utils/corpus-target.d.ts +48 -0
  166. package/dist/utils/corpus-target.d.ts.map +1 -0
  167. package/dist/utils/corpus-target.js +61 -0
  168. package/dist/utils/corpus-target.js.map +1 -0
  169. package/dist/utils/issue-anchor.d.ts +2 -2
  170. package/dist/utils/issue-anchor.d.ts.map +1 -1
  171. package/dist/utils/issue-anchor.js +1 -1
  172. package/dist/utils/issue-rendering.d.ts +1 -1
  173. package/dist/utils/issue-rendering.d.ts.map +1 -1
  174. package/dist/utils/issue-rendering.js +1 -1
  175. package/dist/utils/issue-rendering.js.map +1 -1
  176. package/dist/utils/issue-severity.d.ts +1 -1
  177. package/dist/utils/issue-severity.d.ts.map +1 -1
  178. package/dist/utils/issue-severity.js +1 -1
  179. package/dist/utils/issue-severity.js.map +1 -1
  180. package/dist/utils/optional-backend.d.ts +77 -0
  181. package/dist/utils/optional-backend.d.ts.map +1 -0
  182. package/dist/utils/optional-backend.js +115 -0
  183. package/dist/utils/optional-backend.js.map +1 -0
  184. package/dist/utils/output.d.ts +17 -0
  185. package/dist/utils/output.d.ts.map +1 -1
  186. package/dist/utils/output.js +19 -0
  187. package/dist/utils/output.js.map +1 -1
  188. package/dist/utils/population-wiring.d.ts +100 -0
  189. package/dist/utils/population-wiring.d.ts.map +1 -0
  190. package/dist/utils/population-wiring.js +98 -0
  191. package/dist/utils/population-wiring.js.map +1 -0
  192. package/dist/utils/projection-store.d.ts +188 -0
  193. package/dist/utils/projection-store.d.ts.map +1 -0
  194. package/dist/utils/projection-store.js +257 -0
  195. package/dist/utils/projection-store.js.map +1 -0
  196. package/dist/utils/resource-loader.d.ts +128 -2
  197. package/dist/utils/resource-loader.d.ts.map +1 -1
  198. package/dist/utils/resource-loader.js +234 -7
  199. package/dist/utils/resource-loader.js.map +1 -1
  200. package/dist/utils/verdict-helpers.d.ts +1 -1
  201. package/dist/utils/verdict-helpers.d.ts.map +1 -1
  202. package/dist/utils/verdict-helpers.js +1 -1
  203. package/dist/utils/verdict-helpers.js.map +1 -1
  204. package/docs/agent.md +2 -2
  205. package/docs/mcp.md +2 -2
  206. package/docs/resources.md +8 -1
  207. package/package.json +15 -12
  208. package/dist/commands/resources/command-helpers.d.ts +0 -5
  209. package/dist/commands/resources/command-helpers.d.ts.map +0 -1
  210. package/dist/commands/resources/command-helpers.js +0 -6
  211. package/dist/commands/resources/command-helpers.js.map +0 -1
@@ -7,8 +7,8 @@
7
7
  */
8
8
  import { existsSync } from 'node:fs';
9
9
  import { readdir } from 'node:fs/promises';
10
- import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/agent-schema';
11
10
  import { checkBrokenPackagedLinks } from '@vibe-agent-toolkit/agent-skills';
11
+ import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/schema';
12
12
  import { safePath } from '@vibe-agent-toolkit/utils';
13
13
  import { Command } from 'commander';
14
14
  import { handleCommandError } from '../utils/command-error.js';
@@ -16,8 +16,10 @@ import { loadConfig } from '../utils/config-loader.js';
16
16
  import { sumSeverityCounts } from '../utils/issue-rendering.js';
17
17
  import { writeYamlOutput } from '../utils/output.js';
18
18
  import { requireProjectRoot } from '../utils/project-root-policy.js';
19
+ import { runClaudePluginBuildPhase } from './claude/plugin/build.js';
19
20
  import { aggregatePhaseIssueCounts, aggregatePhaseStatus, applyPhaseSelection, createPhaseContext, decidePhaseSelection, exitCodeForPhases, runPhase, SYSTEM_ERROR, worseOf, } from './phase-utils.js';
20
21
  import { rejectPositionalArguments } from './positional-args.js';
22
+ import { runSkillsBuildPhase } from './skills/build.js';
21
23
  export function createBuildTopLevelCommand() {
22
24
  const command = new Command('build');
23
25
  command
@@ -65,9 +67,8 @@ Exit Codes:
65
67
  0 - All phases completed successfully (warnings do not fail a build)
66
68
  1 - Build error, or '--only' named a phase that is unrecognized or unconfigured
67
69
  2 - System error (this command's own, a usage error such as a positional
68
- argument, or propagated from a phase that could not run: exited 2, was
69
- killed by a signal, was never spawned, or wrote output that could not be
70
- parsed)
70
+ argument, or propagated from a phase that could not run: it exited 2, or
71
+ reported 'system-error' for itself)
71
72
 
72
73
  Requirements:
73
74
  projectRoot: required (errors if no vibe-agent-toolkit.config.yaml or .git/ ancestor)
@@ -188,15 +189,14 @@ const BUILD_VOCABULARY = {
188
189
  */
189
190
  export function selectBuildPhases(only, hasClaudeMarketplaces, verbose = false) {
190
191
  const phases = [];
191
- // Each phase is a separate spawned process, so a flag not forwarded here is a
192
- // flag the composite command silently cannot express: `vat build` would always
193
- // get the collapsed report with no way to ask for the full one.
194
- const verboseArgs = verbose ? ['--verbose'] : [];
192
+ // A flag not forwarded here is a flag the composite command silently cannot
193
+ // express: `vat build` would always get the collapsed report with no way to
194
+ // ask for the full one.
195
195
  if (!only || only === 'skills') {
196
- phases.push({ name: 'skills', args: ['skills', 'build', ...verboseArgs] });
196
+ phases.push({ name: 'skills', run: () => runSkillsBuildPhase(undefined, { verbose }) });
197
197
  }
198
198
  if ((!only || only === 'claude') && hasClaudeMarketplaces) {
199
- phases.push({ name: 'claude', args: ['claude', 'plugin', 'build', ...verboseArgs] });
199
+ phases.push({ name: 'claude', run: () => runClaudePluginBuildPhase({ verbose }) });
200
200
  }
201
201
  return decidePhaseSelection(only, phases, BUILD_VOCABULARY);
202
202
  }
@@ -209,7 +209,7 @@ async function buildTopLevelCommand(options, command) {
209
209
  const cwd = process.cwd();
210
210
  // Spec §7: `vat build` requires a projectRoot.
211
211
  requireProjectRoot(cwd, 'vat build');
212
- const { logger, startTime, binPath } = createPhaseContext(options.debug);
212
+ const { logger, startTime } = createPhaseContext(options.debug);
213
213
  try {
214
214
  // Inside the try, deliberately: this used to throw from outside it, so an
215
215
  // unroutable `--only` produced a raw stack trace and zero bytes of stdout.
@@ -223,7 +223,10 @@ async function buildTopLevelCommand(options, command) {
223
223
  let shippedLinkIssues = [];
224
224
  for (const phase of phases) {
225
225
  logger.info(`\n▶ Phase: ${phase.name}`);
226
- const result = runPhase(binPath, phase);
226
+ // Awaited in the loop, deliberately, and here it is a DEPENDENCY rather
227
+ // than a presentation choice: `claude` packages what `skills` just wrote
228
+ // into dist/, so overlapping the two would read a half-built tree.
229
+ const result = await runPhase(phase);
227
230
  phaseResults.push(result);
228
231
  // Only a real failure stops the build. A `warning` phase must NOT abort:
229
232
  // warnings are non-blocking everywhere else in VAT, and phase status only
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * The root-level `--no-cache` control surface, kept apart from the `cache`
3
+ * command itself.
4
+ *
5
+ * `bin.ts` must call {@link registerCacheControl} on every single invocation,
6
+ * before parsing. Co-locating it with `createCacheCommand` in `index.ts` meant
7
+ * that unavoidable call dragged in `./clear.js` and, behind it, the whole
8
+ * resources package — measured at ~1.2s of module load on Windows, paid even by
9
+ * `vat --version`. This module imports nothing but commander, so the always-on
10
+ * path stays cheap — keep it that way: any import added here is paid by every
11
+ * `vat` invocation, and `index.ts` deliberately does not re-export it, so
12
+ * reaching these functions through the command group cannot happen by accident.
13
+ */
14
+ import type { Command } from 'commander';
15
+ /**
16
+ * Root options this module reads. Commander represents `--no-cache` as the
17
+ * POSITIVE key `cache` — `true` by default, `false` only when the negated flag
18
+ * is passed. It NEVER produces `noCache`; reading that key is the exact bug that
19
+ * made three flags in this package silent no-ops (see
20
+ * `test/commands/commander-option-keys.test.ts`).
21
+ */
22
+ export interface CacheControlOptions {
23
+ cache?: boolean;
24
+ }
25
+ /**
26
+ * Register the root-level `--no-cache` flag and the hook that gives it effect.
27
+ *
28
+ * ## Why this sets an environment variable instead of plumbing a flag
29
+ *
30
+ * ⚠️ The ORIGINAL reason has expired, and saying so is the point of this note.
31
+ * It was that `vat validate` / `vat verify` / `vat build` enumerated nothing in
32
+ * their own process — each `spawnSync`ed the vat binary once per phase, so a
33
+ * flag parsed in the parent never reached the process doing the parsing, while
34
+ * `process.env` crossed the boundary for free. Phases run in this process now,
35
+ * so that argument no longer holds.
36
+ *
37
+ * What still holds is narrower but sufficient: the flag has to reach code that
38
+ * no CLI option is threaded through. `ParseCache` is constructed deep inside
39
+ * `@vibe-agent-toolkit/resources`, by callers several layers below any command,
40
+ * and `bin.ts` leans on the same mechanism for `VAT_CONTEXT` /
41
+ * `VAT_CONTEXT_PATH`. Plumbing a `noCache` parameter down every one of those
42
+ * call chains is the alternative, and it is a real one — this is now a choice
43
+ * rather than a necessity, so treat it as revisitable rather than as settled.
44
+ *
45
+ * `VAT_CACHE=0` is read by `ParseCache` (packages/resources/src/parse-cache.ts)
46
+ * per construction, never at module load, so setting it from a `preAction` hook
47
+ * — after Commander has parsed, before any command body runs — is observed by
48
+ * every phase, all of which now start after that hook has run.
49
+ *
50
+ * ## The collision with `vat resources validate --no-cache`
51
+ *
52
+ * This root program does NOT use `enablePositionalOptions()`, so Commander scans
53
+ * the WHOLE argv for root options, including everything after the subcommand
54
+ * name. That is the same mechanism that let a root `-v` shadow the subcommands'
55
+ * own `-v, --verbose` (see the incident recorded in `bin.ts`). Measured against
56
+ * commander 12: `vat resources validate docs --no-cache` leaves the ROOT with
57
+ * `cache: false` and the SUBCOMMAND with `cache: true` — the subcommand's
58
+ * identically-named flag is swallowed before it ever sees it, which would have
59
+ * silently re-enabled the external-URL cache the flag exists to bypass.
60
+ *
61
+ * Rather than break a shipped flag, the hook hands the value back down to
62
+ * whichever action command declares a `cache` option of its own. `--no-cache` is
63
+ * a superset — every cache off — so the handoff is a strengthening, never a
64
+ * reversal.
65
+ *
66
+ * @param program - The root program to register the flag and hook on
67
+ */
68
+ export declare function registerCacheControl(program: Command): void;
69
+ /**
70
+ * Apply the root `--no-cache` decision: export it to child processes, and hand
71
+ * it down to an action command that declares its own `cache` option.
72
+ *
73
+ * Exported so a test can drive it from real parsed options rather than from a
74
+ * hand-built bag. Deliberately does nothing when the flag was not passed — a
75
+ * toggle that writes `VAT_CACHE=1` by default would be indistinguishable from
76
+ * one that is always on.
77
+ *
78
+ * @param rootOptions - Options bag from the ROOT program
79
+ * @param actionCommand - The command whose action is about to run
80
+ */
81
+ export declare function applyCacheControl(rootOptions: CacheControlOptions, actionCommand: Command): void;
82
+ //# sourceMappingURL=cache-control.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-control.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/cache-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAWhG"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The root-level `--no-cache` control surface, kept apart from the `cache`
3
+ * command itself.
4
+ *
5
+ * `bin.ts` must call {@link registerCacheControl} on every single invocation,
6
+ * before parsing. Co-locating it with `createCacheCommand` in `index.ts` meant
7
+ * that unavoidable call dragged in `./clear.js` and, behind it, the whole
8
+ * resources package — measured at ~1.2s of module load on Windows, paid even by
9
+ * `vat --version`. This module imports nothing but commander, so the always-on
10
+ * path stays cheap — keep it that way: any import added here is paid by every
11
+ * `vat` invocation, and `index.ts` deliberately does not re-export it, so
12
+ * reaching these functions through the command group cannot happen by accident.
13
+ */
14
+ /**
15
+ * Register the root-level `--no-cache` flag and the hook that gives it effect.
16
+ *
17
+ * ## Why this sets an environment variable instead of plumbing a flag
18
+ *
19
+ * ⚠️ The ORIGINAL reason has expired, and saying so is the point of this note.
20
+ * It was that `vat validate` / `vat verify` / `vat build` enumerated nothing in
21
+ * their own process — each `spawnSync`ed the vat binary once per phase, so a
22
+ * flag parsed in the parent never reached the process doing the parsing, while
23
+ * `process.env` crossed the boundary for free. Phases run in this process now,
24
+ * so that argument no longer holds.
25
+ *
26
+ * What still holds is narrower but sufficient: the flag has to reach code that
27
+ * no CLI option is threaded through. `ParseCache` is constructed deep inside
28
+ * `@vibe-agent-toolkit/resources`, by callers several layers below any command,
29
+ * and `bin.ts` leans on the same mechanism for `VAT_CONTEXT` /
30
+ * `VAT_CONTEXT_PATH`. Plumbing a `noCache` parameter down every one of those
31
+ * call chains is the alternative, and it is a real one — this is now a choice
32
+ * rather than a necessity, so treat it as revisitable rather than as settled.
33
+ *
34
+ * `VAT_CACHE=0` is read by `ParseCache` (packages/resources/src/parse-cache.ts)
35
+ * per construction, never at module load, so setting it from a `preAction` hook
36
+ * — after Commander has parsed, before any command body runs — is observed by
37
+ * every phase, all of which now start after that hook has run.
38
+ *
39
+ * ## The collision with `vat resources validate --no-cache`
40
+ *
41
+ * This root program does NOT use `enablePositionalOptions()`, so Commander scans
42
+ * the WHOLE argv for root options, including everything after the subcommand
43
+ * name. That is the same mechanism that let a root `-v` shadow the subcommands'
44
+ * own `-v, --verbose` (see the incident recorded in `bin.ts`). Measured against
45
+ * commander 12: `vat resources validate docs --no-cache` leaves the ROOT with
46
+ * `cache: false` and the SUBCOMMAND with `cache: true` — the subcommand's
47
+ * identically-named flag is swallowed before it ever sees it, which would have
48
+ * silently re-enabled the external-URL cache the flag exists to bypass.
49
+ *
50
+ * Rather than break a shipped flag, the hook hands the value back down to
51
+ * whichever action command declares a `cache` option of its own. `--no-cache` is
52
+ * a superset — every cache off — so the handoff is a strengthening, never a
53
+ * reversal.
54
+ *
55
+ * @param program - The root program to register the flag and hook on
56
+ */
57
+ export function registerCacheControl(program) {
58
+ program.option('--no-cache', "Disable VAT's disk caches for this run (every phase included)");
59
+ program.hook('preAction', (_thisCommand, actionCommand) => {
60
+ applyCacheControl(program.opts(), actionCommand);
61
+ });
62
+ }
63
+ /**
64
+ * Apply the root `--no-cache` decision: export it to child processes, and hand
65
+ * it down to an action command that declares its own `cache` option.
66
+ *
67
+ * Exported so a test can drive it from real parsed options rather than from a
68
+ * hand-built bag. Deliberately does nothing when the flag was not passed — a
69
+ * toggle that writes `VAT_CACHE=1` by default would be indistinguishable from
70
+ * one that is always on.
71
+ *
72
+ * @param rootOptions - Options bag from the ROOT program
73
+ * @param actionCommand - The command whose action is about to run
74
+ */
75
+ export function applyCacheControl(rootOptions, actionCommand) {
76
+ if (rootOptions.cache !== false)
77
+ return;
78
+ process.env['VAT_CACHE'] = '0';
79
+ // `attributeName()`, not `name()`: for `--no-cache` the latter returns
80
+ // 'no-cache', so a check written against it never matches and the handoff
81
+ // above becomes a no-op that looks like it works.
82
+ if (actionCommand.options.some((option) => option.attributeName() === 'cache')) {
83
+ actionCommand.setOptionValue('cache', false);
84
+ }
85
+ }
86
+ //# sourceMappingURL=cache-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-control.js","sourceRoot":"","sources":["../../../src/commands/cache/cache-control.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,+DAA+D,CAAC,CAAC;IAE9F,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;QACxD,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAuB,EAAE,aAAa,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAgC,EAAE,aAAsB;IACxF,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO;IAExC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;IAE/B,uEAAuE;IACvE,0EAA0E;IAC1E,kDAAkD;IAClD,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;QAC/E,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC"}
@@ -13,13 +13,27 @@
13
13
  export interface CacheClearOptions {
14
14
  debug?: boolean;
15
15
  }
16
- /** What a clear did, as published on stdout. */
16
+ /**
17
+ * What a clear did, as published on stdout.
18
+ *
19
+ * `partial` is not a failure mode bolted on — it is the *common* outcome when
20
+ * something else on the machine is writing to the shared tree, and it has to be
21
+ * reportable. A recursive delete that gives up part-way has already removed most
22
+ * of the cache; surfacing that as a bare thrown error told the operator only
23
+ * that the command failed, while leaving them to guess how much of their cache
24
+ * still existed. An honest count of what went and what stayed is the whole
25
+ * point of a report.
26
+ */
17
27
  export interface CacheClearReport {
18
- status: 'success';
28
+ status: 'success' | 'partial';
19
29
  cacheDir: string;
20
30
  existed: boolean;
21
- /** Top-level entries that were deleted, sorted. Empty when nothing was there. */
31
+ /** Top-level entries that are gone, sorted. Empty when nothing was there. */
22
32
  removed: string[];
33
+ /** Top-level entries that survived a partial clear, sorted. Absent on success. */
34
+ remaining?: string[];
35
+ /** Why the delete stopped short. Absent on success. */
36
+ reason?: string;
23
37
  entriesRemoved: number;
24
38
  bytesRemoved: number;
25
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/clear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,gDAAgD;AAChD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,iFAAiF;IACjF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAcrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkBrF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtF"}
1
+ {"version":3,"file":"clear.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/clear.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAcrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwBrF;AA+CD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtF"}
@@ -20,6 +20,24 @@ import { writeYamlOutput } from '../../utils/output.js';
20
20
  /** The one name the shared cache root is allowed to have. See {@link vatCacheRoot}. */
21
21
  const VAT_CACHE_DIR_NAME = '.vat-cache';
22
22
  const EMPTY_USAGE = { entries: 0, bytes: 0 };
23
+ /**
24
+ * Retry budget for the recursive delete.
25
+ *
26
+ * Not defensive padding — observed. `<tmpdir>/.vat-cache` is shared by every VAT
27
+ * on the machine: other worktrees, other sessions, and any adopter running an
28
+ * *installed* vat all write into it under their own namespace. A `vat cache
29
+ * clear` issued while one of them is mid-run walks a tree that is growing
30
+ * underneath it and `rmdir` fails `ENOTEMPTY` on a shard that gained a file
31
+ * between the listing and the removal. Reproduced twice against a concurrent
32
+ * `vat verify`; the same command succeeded immediately once that run finished.
33
+ *
34
+ * Node retries exactly this error class (`EBUSY`, `EMFILE`, `ENFILE`,
35
+ * `ENOTEMPTY`, `EPERM`) with a linear backoff, which clears a short overlap.
36
+ * It cannot win against a writer that keeps going for the whole window — that
37
+ * case still surfaces as an error, which is correct: "some of your cache is
38
+ * gone and something is still writing" must not be reported as success.
39
+ */
40
+ const RM_RETRY = { maxRetries: 5, retryDelay: 100 };
23
41
  /**
24
42
  * The shared cache root, `<tmpdir>/.vat-cache`.
25
43
  *
@@ -80,16 +98,59 @@ export async function clearCacheDirectory(cacheDir) {
80
98
  return { status: 'success', cacheDir, existed: false, removed: [], entriesRemoved: 0, bytesRemoved: 0 };
81
99
  }
82
100
  const usage = await measureEntries(cacheDir, entries);
83
- await fs.rm(cacheDir, { recursive: true, force: true });
101
+ const names = entries.map((entry) => entry.name);
102
+ try {
103
+ await fs.rm(cacheDir, { recursive: true, force: true, ...RM_RETRY });
104
+ }
105
+ catch (error) {
106
+ return partialReport(cacheDir, names, usage, error);
107
+ }
84
108
  return {
85
109
  status: 'success',
86
110
  cacheDir,
87
111
  existed: true,
88
- removed: entries.map((entry) => entry.name).sort((a, b) => a.localeCompare(b)),
112
+ removed: sorted(names),
89
113
  entriesRemoved: usage.entries,
90
114
  bytesRemoved: usage.bytes,
91
115
  };
92
116
  }
117
+ /**
118
+ * Describe a delete that stopped part-way, by re-reading the tree.
119
+ *
120
+ * The survivors are read back off disk rather than inferred from the error,
121
+ * because the error names one path and says nothing about the other ninety-nine
122
+ * percent. Re-measuring what remains and subtracting is the only way the counts
123
+ * describe what actually happened rather than what was attempted.
124
+ *
125
+ * A concurrent writer can make the remainder *larger* than the original
126
+ * measurement, so the subtraction is floored at zero: reporting a negative
127
+ * number of removed bytes would be worse than reporting none.
128
+ *
129
+ * @param cacheDir - The tree that was being removed
130
+ * @param names - Top-level entry names as they were before the delete
131
+ * @param before - Usage measured before the delete
132
+ * @param error - Whatever `fs.rm` threw
133
+ * @returns A report naming what went, what stayed, and why
134
+ */
135
+ async function partialReport(cacheDir, names, before, error) {
136
+ const survivors = (await readdirOrNull(cacheDir)) ?? [];
137
+ const remaining = new Set(survivors.map((entry) => entry.name));
138
+ const after = await measureEntries(cacheDir, survivors);
139
+ return {
140
+ status: 'partial',
141
+ cacheDir,
142
+ existed: true,
143
+ removed: sorted(names.filter((name) => !remaining.has(name))),
144
+ remaining: sorted([...remaining]),
145
+ reason: error instanceof Error ? error.message : String(error),
146
+ entriesRemoved: Math.max(0, before.entries - after.entries),
147
+ bytesRemoved: Math.max(0, before.bytes - after.bytes),
148
+ };
149
+ }
150
+ /** Stable ordering for the reported entry lists. */
151
+ function sorted(names) {
152
+ return [...names].sort((left, right) => left.localeCompare(right));
153
+ }
93
154
  /**
94
155
  * Command entry point: clear the real cache root and publish the report.
95
156
  *
@@ -102,7 +163,11 @@ export async function cacheClearCommand(options = {}) {
102
163
  const report = await clearCacheDirectory(vatCacheRoot());
103
164
  logger.debug(`Cleared ${String(report.entriesRemoved)} cache entries from ${report.cacheDir}`);
104
165
  writeYamlOutput(report);
105
- process.exit(0);
166
+ // A partial clear publishes its report and *then* fails. Exiting through
167
+ // `handleCommandError` instead would suppress the report entirely, which is
168
+ // the defect this branch exists to fix: the operator most needs to know how
169
+ // much of the cache survived precisely when the command did not finish.
170
+ process.exit(report.status === 'partial' ? 1 : 0);
106
171
  }
107
172
  catch (error) {
108
173
  handleCommandError(error, logger, startTime, 'CacheClear');
@@ -1 +1 @@
1
- {"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/commands/cache/clear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clear.js","sourceRoot":"","sources":["../../../src/commands/cache/clear.ts"],"names":[],"mappings":"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"}
@@ -1,68 +1,18 @@
1
1
  /**
2
- * Cache command group, plus the root-level `--no-cache` control surface.
3
- *
4
- * Both live here so the flag and the command that cleans up after it stay in one
5
- * place: `--no-cache` decides whether this run *writes* to the caches, `vat cache
6
- * clear` decides whether the caches *survive*.
2
+ * Cache command group.
3
+ *
4
+ * The paired `--no-cache` control surface lives in `./cache-control.js`:
5
+ * `--no-cache` decides whether this run *writes* to the caches, `vat cache
6
+ * clear` decides whether the caches *survive*. They are separate modules only
7
+ * because `bin.ts` registers the flag on every invocation and must not pay for
8
+ * this command's imports to do it.
9
+ *
10
+ * ⛔ Do NOT re-export `cache-control.js` from here for convenience. Importing it
11
+ * through this module pulls `./clear.js` and the whole resources package behind
12
+ * it — the exact ~1.2s that splitting the file removed — so a re-export leaves
13
+ * the expensive path one identical-looking import away, with nothing pinning
14
+ * the cheap one. Import from `./cache-control.js` directly.
7
15
  */
8
16
  import { Command } from 'commander';
9
- /**
10
- * Root options this module reads. Commander represents `--no-cache` as the
11
- * POSITIVE key `cache` — `true` by default, `false` only when the negated flag
12
- * is passed. It NEVER produces `noCache`; reading that key is the exact bug that
13
- * made three flags in this package silent no-ops (see
14
- * `test/commands/commander-option-keys.test.ts`).
15
- */
16
- export interface CacheControlOptions {
17
- cache?: boolean;
18
- }
19
- /**
20
- * Register the root-level `--no-cache` flag and the hook that gives it effect.
21
- *
22
- * ## Why this sets an environment variable instead of plumbing a flag
23
- *
24
- * `vat validate`, `vat verify` and `vat build` enumerate nothing in their own
25
- * process: each `spawnSync`s the vat binary once per phase, and the child is
26
- * what parses the corpus. A flag parsed in the parent therefore never reaches
27
- * the process whose caching it is supposed to control, whereas `process.env` is
28
- * inherited by every child for free. `bin.ts` already leans on exactly that for
29
- * `VAT_CONTEXT` / `VAT_CONTEXT_PATH`.
30
- *
31
- * `VAT_CACHE=0` is read by `ParseCache` (packages/resources/src/parse-cache.ts)
32
- * per construction, never at module load, so setting it from a `preAction` hook
33
- * — after Commander has parsed, before any command body runs — is observed.
34
- *
35
- * ## The collision with `vat resources validate --no-cache`
36
- *
37
- * This root program does NOT use `enablePositionalOptions()`, so Commander scans
38
- * the WHOLE argv for root options, including everything after the subcommand
39
- * name. That is the same mechanism that let a root `-v` shadow the subcommands'
40
- * own `-v, --verbose` (see the incident recorded in `bin.ts`). Measured against
41
- * commander 12: `vat resources validate docs --no-cache` leaves the ROOT with
42
- * `cache: false` and the SUBCOMMAND with `cache: true` — the subcommand's
43
- * identically-named flag is swallowed before it ever sees it, which would have
44
- * silently re-enabled the external-URL cache the flag exists to bypass.
45
- *
46
- * Rather than break a shipped flag, the hook hands the value back down to
47
- * whichever action command declares a `cache` option of its own. `--no-cache` is
48
- * a superset — every cache off — so the handoff is a strengthening, never a
49
- * reversal.
50
- *
51
- * @param program - The root program to register the flag and hook on
52
- */
53
- export declare function registerCacheControl(program: Command): void;
54
- /**
55
- * Apply the root `--no-cache` decision: export it to child processes, and hand
56
- * it down to an action command that declares its own `cache` option.
57
- *
58
- * Exported so a test can drive it from real parsed options rather than from a
59
- * hand-built bag. Deliberately does nothing when the flag was not passed — a
60
- * toggle that writes `VAT_CACHE=1` by default would be indistinguishable from
61
- * one that is always on.
62
- *
63
- * @param rootOptions - Options bag from the ROOT program
64
- * @param actionCommand - The command whose action is about to run
65
- */
66
- export declare function applyCacheControl(rootOptions: CacheControlOptions, actionCommand: Command): void;
67
17
  export declare function createCacheCommand(): Command;
68
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI,CAWhG;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CA6D5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,kBAAkB,IAAI,OAAO,CA2E5C"}