@vibe-agent-toolkit/cli 0.2.0-rc.3 → 0.2.0-rc.5

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 (154) hide show
  1. package/dist/bin/vat +2 -1
  2. package/dist/bin/vat.js +2 -1
  3. package/dist/bin/vat.js.map +1 -1
  4. package/dist/bin.js +37 -3
  5. package/dist/bin.js.map +1 -1
  6. package/dist/commands/audit/distributed-tree.d.ts +1 -1
  7. package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
  8. package/dist/commands/audit/distributed-tree.js +2 -1
  9. package/dist/commands/audit/distributed-tree.js.map +1 -1
  10. package/dist/commands/audit/git-url-clone.d.ts +1 -1
  11. package/dist/commands/audit/git-url-clone.d.ts.map +1 -1
  12. package/dist/commands/audit/git-url-clone.js.map +1 -1
  13. package/dist/commands/audit.d.ts.map +1 -1
  14. package/dist/commands/audit.js +25 -6
  15. package/dist/commands/audit.js.map +1 -1
  16. package/dist/commands/build.d.ts.map +1 -1
  17. package/dist/commands/build.js +14 -11
  18. package/dist/commands/build.js.map +1 -1
  19. package/dist/commands/cache/cache-control.d.ts +16 -7
  20. package/dist/commands/cache/cache-control.d.ts.map +1 -1
  21. package/dist/commands/cache/cache-control.js +17 -8
  22. package/dist/commands/cache/cache-control.js.map +1 -1
  23. package/dist/commands/claude/budget.js +1 -1
  24. package/dist/commands/claude/budget.js.map +1 -1
  25. package/dist/commands/claude/context.d.ts +138 -9
  26. package/dist/commands/claude/context.d.ts.map +1 -1
  27. package/dist/commands/claude/context.js +450 -80
  28. package/dist/commands/claude/context.js.map +1 -1
  29. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  30. package/dist/commands/claude/marketplace/git-publish.js +2 -1
  31. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  32. package/dist/commands/claude/marketplace/validate.d.ts +18 -0
  33. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  34. package/dist/commands/claude/marketplace/validate.js +40 -20
  35. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  36. package/dist/commands/claude/plugin/build.d.ts +17 -1
  37. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  38. package/dist/commands/claude/plugin/build.js +45 -16
  39. package/dist/commands/claude/plugin/build.js.map +1 -1
  40. package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
  41. package/dist/commands/claude/plugin/helpers.js +2 -1
  42. package/dist/commands/claude/plugin/helpers.js.map +1 -1
  43. package/dist/commands/claude/plugin/install.d.ts.map +1 -1
  44. package/dist/commands/claude/plugin/install.js +2 -2
  45. package/dist/commands/claude/plugin/install.js.map +1 -1
  46. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  47. package/dist/commands/claude/plugin/tree-copy.js +2 -1
  48. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  49. package/dist/commands/consistency-check.d.ts.map +1 -1
  50. package/dist/commands/consistency-check.js +2 -1
  51. package/dist/commands/consistency-check.js.map +1 -1
  52. package/dist/commands/corpus/runner.d.ts.map +1 -1
  53. package/dist/commands/corpus/runner.js +3 -20
  54. package/dist/commands/corpus/runner.js.map +1 -1
  55. package/dist/commands/corpus/scan.d.ts.map +1 -1
  56. package/dist/commands/corpus/scan.js +2 -1
  57. package/dist/commands/corpus/scan.js.map +1 -1
  58. package/dist/commands/doctor.d.ts.map +1 -1
  59. package/dist/commands/doctor.js +3 -2
  60. package/dist/commands/doctor.js.map +1 -1
  61. package/dist/commands/inventory.js +2 -2
  62. package/dist/commands/inventory.js.map +1 -1
  63. package/dist/commands/phase-utils.d.ts +154 -103
  64. package/dist/commands/phase-utils.d.ts.map +1 -1
  65. package/dist/commands/phase-utils.js +109 -155
  66. package/dist/commands/phase-utils.js.map +1 -1
  67. package/dist/commands/resources/check-progress.d.ts +145 -0
  68. package/dist/commands/resources/check-progress.d.ts.map +1 -0
  69. package/dist/commands/resources/check-progress.js +205 -0
  70. package/dist/commands/resources/check-progress.js.map +1 -0
  71. package/dist/commands/resources/check-supervisor.d.ts +465 -0
  72. package/dist/commands/resources/check-supervisor.d.ts.map +1 -0
  73. package/dist/commands/resources/check-supervisor.js +566 -0
  74. package/dist/commands/resources/check-supervisor.js.map +1 -0
  75. package/dist/commands/resources/check.d.ts +454 -0
  76. package/dist/commands/resources/check.d.ts.map +1 -0
  77. package/dist/commands/resources/check.js +1237 -0
  78. package/dist/commands/resources/check.js.map +1 -0
  79. package/dist/commands/resources/index.d.ts.map +1 -1
  80. package/dist/commands/resources/index.js +277 -6
  81. package/dist/commands/resources/index.js.map +1 -1
  82. package/dist/commands/resources/query.d.ts +89 -0
  83. package/dist/commands/resources/query.d.ts.map +1 -0
  84. package/dist/commands/resources/query.js +146 -0
  85. package/dist/commands/resources/query.js.map +1 -0
  86. package/dist/commands/resources/scan.d.ts.map +1 -1
  87. package/dist/commands/resources/scan.js +2 -2
  88. package/dist/commands/resources/scan.js.map +1 -1
  89. package/dist/commands/resources/validate.d.ts +11 -0
  90. package/dist/commands/resources/validate.d.ts.map +1 -1
  91. package/dist/commands/resources/validate.js +96 -48
  92. package/dist/commands/resources/validate.js.map +1 -1
  93. package/dist/commands/skill/test/run.d.ts.map +1 -1
  94. package/dist/commands/skill/test/run.js +11 -2
  95. package/dist/commands/skill/test/run.js.map +1 -1
  96. package/dist/commands/skills/build.d.ts +10 -0
  97. package/dist/commands/skills/build.d.ts.map +1 -1
  98. package/dist/commands/skills/build.js +83 -25
  99. package/dist/commands/skills/build.js.map +1 -1
  100. package/dist/commands/skills/install.js +0 -1
  101. package/dist/commands/skills/install.js.map +1 -1
  102. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  103. package/dist/commands/skills/skill-discovery.js +6 -3
  104. package/dist/commands/skills/skill-discovery.js.map +1 -1
  105. package/dist/commands/skills/validate.d.ts +78 -1
  106. package/dist/commands/skills/validate.d.ts.map +1 -1
  107. package/dist/commands/skills/validate.js +67 -32
  108. package/dist/commands/skills/validate.js.map +1 -1
  109. package/dist/commands/validate.d.ts.map +1 -1
  110. package/dist/commands/validate.js +26 -16
  111. package/dist/commands/validate.js.map +1 -1
  112. package/dist/commands/verify.d.ts +9 -8
  113. package/dist/commands/verify.d.ts.map +1 -1
  114. package/dist/commands/verify.js +46 -35
  115. package/dist/commands/verify.js.map +1 -1
  116. package/dist/utils/agent-runner.d.ts.map +1 -1
  117. package/dist/utils/agent-runner.js +7 -3
  118. package/dist/utils/agent-runner.js.map +1 -1
  119. package/dist/utils/command-error.d.ts +88 -2
  120. package/dist/utils/command-error.d.ts.map +1 -1
  121. package/dist/utils/command-error.js +98 -11
  122. package/dist/utils/command-error.js.map +1 -1
  123. package/dist/utils/config-loader.d.ts.map +1 -1
  124. package/dist/utils/config-loader.js +10 -3
  125. package/dist/utils/config-loader.js.map +1 -1
  126. package/dist/utils/issue-severity.d.ts +12 -5
  127. package/dist/utils/issue-severity.d.ts.map +1 -1
  128. package/dist/utils/issue-severity.js +1 -1
  129. package/dist/utils/issue-severity.js.map +1 -1
  130. package/dist/utils/population-wiring.d.ts +47 -6
  131. package/dist/utils/population-wiring.d.ts.map +1 -1
  132. package/dist/utils/population-wiring.js +45 -2
  133. package/dist/utils/population-wiring.js.map +1 -1
  134. package/dist/utils/projection-query.d.ts +263 -0
  135. package/dist/utils/projection-query.d.ts.map +1 -0
  136. package/dist/utils/projection-query.js +262 -0
  137. package/dist/utils/projection-query.js.map +1 -0
  138. package/dist/utils/projection-store.d.ts +110 -6
  139. package/dist/utils/projection-store.d.ts.map +1 -1
  140. package/dist/utils/projection-store.js +133 -9
  141. package/dist/utils/projection-store.js.map +1 -1
  142. package/dist/utils/resource-loader.d.ts +1 -1
  143. package/dist/utils/resource-loader.d.ts.map +1 -1
  144. package/dist/utils/resource-loader.js +11 -1
  145. package/dist/utils/resource-loader.js.map +1 -1
  146. package/dist/utils/vat-bin-path.d.ts +36 -0
  147. package/dist/utils/vat-bin-path.d.ts.map +1 -0
  148. package/dist/utils/vat-bin-path.js +49 -0
  149. package/dist/utils/vat-bin-path.js.map +1 -0
  150. package/package.json +25 -14
  151. package/dist/commands/resources/command-helpers.d.ts +0 -5
  152. package/dist/commands/resources/command-helpers.d.ts.map +0 -1
  153. package/dist/commands/resources/command-helpers.js +0 -6
  154. package/dist/commands/resources/command-helpers.js.map +0 -1
@@ -44,6 +44,7 @@
44
44
  * standard legible error, and a tree that cannot be keyed says so on stderr
45
45
  * rather than silently declining.
46
46
  */
47
+ import type * as ProjectionSqlite from '@vibe-agent-toolkit/projection-sqlite';
47
48
  import type { PopulationCache } from '@vibe-agent-toolkit/resources';
48
49
  /**
49
50
  * The env var that selects a projection store for this process.
@@ -55,11 +56,13 @@ import type { PopulationCache } from '@vibe-agent-toolkit/resources';
55
56
  * would put the A and B arms inside the subject's own tree, where a measurement
56
57
  * edits the thing it measures.
57
58
  *
58
- * 🔑 It is read from the environment and therefore **inherited by every phase
59
- * child**. `runPhase` passes no `env` to `spawnSync`, so `vat validate`'s
60
- * children see the same selection their parent did.
59
+ * 🔑 It is read from the environment, and **every phase now runs in the process
60
+ * that read it** — phases used to be child processes inheriting it across a
61
+ * `spawnSync`, which reached the same place by a longer route. `vat validate`'s
62
+ * phases see the same selection their orchestrator did, and can no longer fail
63
+ * to.
61
64
  *
62
- * 🔑 **That inheritance now has a within-verb instance.** `vat build`'s two
65
+ * 🔑 **That sharing has a within-verb instance.** `vat build`'s two
63
66
  * phases — `skills build` and `claude plugin build` — both reach the lane
64
67
  * through `withResourcePopulationSource` (see `resource-loader.ts`), and both
65
68
  * root their population at the same directory, so phase 2 reads the extent
@@ -88,6 +91,34 @@ import type { PopulationCache } from '@vibe-agent-toolkit/resources';
88
91
  export declare const PROJECTION_STORE_ENV = "VAT_PROJECTION_STORE";
89
92
  /** {@link PROJECTION_STORE_ENV}'s value that selects the SQLite backend. */
90
93
  export declare const PROJECTION_STORE_SQLITE = "sqlite";
94
+ /**
95
+ * Where the projection store's database lives, overriding the default.
96
+ *
97
+ * The default is `tmpdir/.vat-cache/<version>/projection-<shapeDigest>` — one
98
+ * database per VAT release, shared by every root on the machine. This names a
99
+ * different one **explicitly**, which is what an adopter with a per-job cache
100
+ * directory, a shared build agent running two jobs at once, or a test arm that
101
+ * must not touch the developer's live cache actually needs.
102
+ *
103
+ * ðŸŠĪ **What it replaces is redirecting `TMPDIR`, which works and is the wrong
104
+ * instrument.** `defaultStoreDirectory()` resolves through
105
+ * `vatCacheNamespaceRoot()` → `normalizedTmpdir()`, so pointing the OS temp
106
+ * directory elsewhere does move the store — along with every other temp
107
+ * consumer in the process, on a variable whose name is not the same on both
108
+ * platforms (`TMPDIR` on POSIX; `TEMP`, then `TMP`, on Windows, so setting one
109
+ * is silently inert on the other). It relocates the store as a side effect of
110
+ * relocating something larger. This variable says the one thing meant.
111
+ *
112
+ * ⚠ïļ It does **not** consult `XDG_CACHE_HOME` or `HOME`. A caller that set
113
+ * those believed it had its own database and was writing into the shared one;
114
+ * the fix is to name the directory here, not to add more implicit roots.
115
+ *
116
+ * An environment variable rather than a config field, for the same reason
117
+ * {@link PROJECTION_STORE_ENV} is one: it says where an INSTRUMENT keeps its
118
+ * scratch space, not what the project means, and it has to be reachable from a
119
+ * harness that spawns the binary.
120
+ */
121
+ export declare const PROJECTION_STORE_DIR_ENV = "VAT_PROJECTION_STORE_DIR";
91
122
  /**
92
123
  * The env var that turns VAT's disk caches off for a run.
93
124
  *
@@ -131,7 +162,19 @@ export declare const CACHE_DISABLED = "0";
131
162
  * @returns `true` when a store is selected
132
163
  */
133
164
  export declare function projectionStoreSelected(): boolean;
134
- /** An open store, the key half it is used with, and the way to let it go. */
165
+ /**
166
+ * An open store, the key half it is used with, and the way to let it go.
167
+ *
168
+ * ⚠ïļ **Deliberately NOT typed for SQL, and do not re-widen it.** This handle
169
+ * reaches the database at {@link PROJECTION_STORE_DIR_ENV}'s directory, which
170
+ * defaults to one file per VAT release shared by every root on the machine —
171
+ * holding other repositories' link text, heading text and frontmatter. A field
172
+ * typed `SqlQueryableStore` used to live here "for a caller that needs to ASK
173
+ * the store something", and that caller was removed precisely because arbitrary
174
+ * SQL over this store answers from trees the asker never named. `populate()`
175
+ * needs the engine-free {@link PopulationCache} and nothing more; a query lane
176
+ * builds its own store (see `projection-query.ts`).
177
+ */
135
178
  export interface OpenedPopulationCache {
136
179
  /** Hand this to `populate()`. */
137
180
  readonly cache: PopulationCache;
@@ -161,6 +204,57 @@ export interface OpenedPopulationCache {
161
204
  export declare function openPopulationCache(options: {
162
205
  root: string;
163
206
  }): Promise<OpenedPopulationCache | undefined>;
207
+ /**
208
+ * Open a store that lives only in this process's memory.
209
+ *
210
+ * 🔑 **This is what keeps the query surface an ANSWER rather than a privilege.**
211
+ * A caller with no store selected — CI's first run, or a developer who never set
212
+ * the selector — still gets the same SQL over the same schema; the on-disk store
213
+ * only makes the second run cheap. Without it, "what does this tree contain"
214
+ * would be answerable only where a cache happened to exist, and two callers
215
+ * would hold differently-shaped views of one tree.
216
+ *
217
+ * It is a cache that cannot hit: nothing survives the close, so a caller must
218
+ * write the projection into it before asking anything.
219
+ *
220
+ * @returns An open, empty store; close it when done
221
+ */
222
+ export declare function openEphemeralQueryStore(): Promise<ProjectionSqlite.SqlQueryableStore>;
223
+ /**
224
+ * The legible failure for "your Node is too old", or `undefined` when this is
225
+ * some other failure — including "the package is absent".
226
+ *
227
+ * Exported, and returning the error rather than throwing it, so the DIAGNOSIS
228
+ * is unit-testable without a mocked dynamic import. A test cannot make a mocked
229
+ * `import()` reject with a plain `{ code }` — the test runner wraps whatever a
230
+ * module factory throws in its own error, so the code never survives to be
231
+ * read — and the branch's whole value is the message it produces.
232
+ *
233
+ * ðŸŠĪ The two are **different error codes**, and only one of them reaches
234
+ * {@link isModuleMissing}. `@vibe-agent-toolkit/projection-sqlite` imports
235
+ * `node:sqlite`, which arrived in Node 22.13.0; on 22.0–22.12 the import fails
236
+ * with `ERR_UNKNOWN_BUILTIN_MODULE`, not `ERR_MODULE_NOT_FOUND`. Without this
237
+ * branch the user gets a bare `No such built-in module: node:sqlite` — which
238
+ * names neither the version floor nor the fix.
239
+ *
240
+ * ⚠ïļ It is reachable on EVERY `vat resources query`/`check` run, and not a
241
+ * corner: VAT's own floor is `>=22.0.0`, so a supported Node hits it. That was
242
+ * already true before the store-selected path stopped querying a shared
243
+ * database — the query lane has always fallen back to
244
+ * {@link openEphemeralQueryStore} when no store is selected, which is the
245
+ * default, so `node:sqlite` was required on every default run. Nothing here
246
+ * became newly reachable; the branch is load-bearing because the FLOOR is,
247
+ * whichever way the lane resolves its store.
248
+ *
249
+ * The repair stays distinct from the missing-package one on purpose:
250
+ * "install this package" is the wrong instruction for "upgrade Node", and
251
+ * sending someone round that loop cannot terminate.
252
+ *
253
+ * @param error - Whatever the dynamic import threw
254
+ * @returns The error to raise when Node itself lacks the builtin; `undefined`
255
+ * when this failure is something else and the caller should keep diagnosing
256
+ */
257
+ export declare function nodeSqliteFloorFailure(error: unknown): Error | undefined;
164
258
  /**
165
259
  * Run one command's work with a projection store open for its whole duration,
166
260
  * and closed however it ends.
@@ -173,7 +267,17 @@ export declare function openPopulationCache(options: {
173
267
  *
174
268
  * It is also the `withGitSnapshotCache` bracket for the work inside it, so the
175
269
  * key and the extent filed under it come from ONE git snapshot — see the note
176
- * on the call below.
270
+ * in the body.
271
+ *
272
+ * `undefined` on a run with no store selected, which is the shape every
273
+ * population lane wants: no store means re-derive, not fail.
274
+ *
275
+ * ⚠ïļ A caller that wants to run SQL must NOT query this store. It is one
276
+ * database per VAT release, shared by every root on the machine, so arbitrary
277
+ * SQL over it answers from other repositories — see `projection-query.ts`.
278
+ * That is also why this is the ONLY scope over the opened store: there is no
279
+ * separate "opened handle" bracket for a caller wanting more than the cache,
280
+ * because there is nothing legitimate for such a caller to want.
177
281
  *
178
282
  * @param options - Where the corpus is
179
283
  * @param options.root - The absolute corpus root
@@ -1 +1 @@
1
- {"version":3,"file":"projection-store.d.ts","sourceRoot":"","sources":["../../src/utils/projection-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,gHAAgH;AAChH,eAAO,MAAM,cAAc,MAAM,CAAC;AAelC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC;;;;;;OAMG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsB7C;AAuBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACzB,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
1
+ {"version":3,"file":"projection-store.d.ts","sourceRoot":"","sources":["../../src/utils/projection-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,KAAK,gBAAgB,MAAM,uCAAuC,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAmB,MAAM,+BAA+B,CAAC;AAKtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAE3D,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,gHAAgH;AAChH,eAAO,MAAM,cAAc,MAAM,CAAC;AAkBlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC;;;;;;OAMG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsB7C;AA2BD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAE3F;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAaxE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACzB,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GACvD,OAAO,CAAC,CAAC,CAAC,CA0BZ"}
@@ -44,7 +44,7 @@
44
44
  * standard legible error, and a tree that cannot be keyed says so on stderr
45
45
  * rather than silently declining.
46
46
  */
47
- import { gitTreeSnapshot, withGitSnapshotCache } from '@vibe-agent-toolkit/utils';
47
+ import { gitTreeSnapshot, withGitSnapshotCache } from '@vibe-agent-toolkit/utils/git';
48
48
  import { isModuleMissing, reportMissingBackend } from './optional-backend.js';
49
49
  /**
50
50
  * The env var that selects a projection store for this process.
@@ -56,11 +56,13 @@ import { isModuleMissing, reportMissingBackend } from './optional-backend.js';
56
56
  * would put the A and B arms inside the subject's own tree, where a measurement
57
57
  * edits the thing it measures.
58
58
  *
59
- * 🔑 It is read from the environment and therefore **inherited by every phase
60
- * child**. `runPhase` passes no `env` to `spawnSync`, so `vat validate`'s
61
- * children see the same selection their parent did.
59
+ * 🔑 It is read from the environment, and **every phase now runs in the process
60
+ * that read it** — phases used to be child processes inheriting it across a
61
+ * `spawnSync`, which reached the same place by a longer route. `vat validate`'s
62
+ * phases see the same selection their orchestrator did, and can no longer fail
63
+ * to.
62
64
  *
63
- * 🔑 **That inheritance now has a within-verb instance.** `vat build`'s two
65
+ * 🔑 **That sharing has a within-verb instance.** `vat build`'s two
64
66
  * phases — `skills build` and `claude plugin build` — both reach the lane
65
67
  * through `withResourcePopulationSource` (see `resource-loader.ts`), and both
66
68
  * root their population at the same directory, so phase 2 reads the extent
@@ -89,6 +91,34 @@ import { isModuleMissing, reportMissingBackend } from './optional-backend.js';
89
91
  export const PROJECTION_STORE_ENV = 'VAT_PROJECTION_STORE';
90
92
  /** {@link PROJECTION_STORE_ENV}'s value that selects the SQLite backend. */
91
93
  export const PROJECTION_STORE_SQLITE = 'sqlite';
94
+ /**
95
+ * Where the projection store's database lives, overriding the default.
96
+ *
97
+ * The default is `tmpdir/.vat-cache/<version>/projection-<shapeDigest>` — one
98
+ * database per VAT release, shared by every root on the machine. This names a
99
+ * different one **explicitly**, which is what an adopter with a per-job cache
100
+ * directory, a shared build agent running two jobs at once, or a test arm that
101
+ * must not touch the developer's live cache actually needs.
102
+ *
103
+ * ðŸŠĪ **What it replaces is redirecting `TMPDIR`, which works and is the wrong
104
+ * instrument.** `defaultStoreDirectory()` resolves through
105
+ * `vatCacheNamespaceRoot()` → `normalizedTmpdir()`, so pointing the OS temp
106
+ * directory elsewhere does move the store — along with every other temp
107
+ * consumer in the process, on a variable whose name is not the same on both
108
+ * platforms (`TMPDIR` on POSIX; `TEMP`, then `TMP`, on Windows, so setting one
109
+ * is silently inert on the other). It relocates the store as a side effect of
110
+ * relocating something larger. This variable says the one thing meant.
111
+ *
112
+ * ⚠ïļ It does **not** consult `XDG_CACHE_HOME` or `HOME`. A caller that set
113
+ * those believed it had its own database and was writing into the shared one;
114
+ * the fix is to name the directory here, not to add more implicit roots.
115
+ *
116
+ * An environment variable rather than a config field, for the same reason
117
+ * {@link PROJECTION_STORE_ENV} is one: it says where an INSTRUMENT keeps its
118
+ * scratch space, not what the project means, and it has to be reachable from a
119
+ * harness that spawns the binary.
120
+ */
121
+ export const PROJECTION_STORE_DIR_ENV = 'VAT_PROJECTION_STORE_DIR';
92
122
  /**
93
123
  * The env var that turns VAT's disk caches off for a run.
94
124
  *
@@ -109,6 +139,8 @@ export const CACHE_DISABLED = '0';
109
139
  * it: RAG carries a platform-native binary, while this one carries a Node
110
140
  * version floor.
111
141
  */
142
+ /** What Node throws for `import('node:sqlite')` before 22.13.0. */
143
+ const UNKNOWN_BUILTIN_MODULE = 'ERR_UNKNOWN_BUILTIN_MODULE';
112
144
  const PROJECTION_STORE_BACKEND = {
113
145
  feature: 'The projection store',
114
146
  packageName: '@vibe-agent-toolkit/projection-sqlite',
@@ -191,19 +223,101 @@ export async function openPopulationCache(options) {
191
223
  * for "upgrade Node", and diagnosing a version floor as a missing dependency
192
224
  * sends a user round a loop that cannot terminate.
193
225
  *
194
- * @returns The opened store
226
+ * @returns The opened store, typed as the engine-free contract — the SQLite
227
+ * backend really does return a `SqlQueryableStore`, and this narrows it away
228
+ * on purpose so the population path cannot grow a query
195
229
  */
196
230
  async function loadStore() {
231
+ const directory = process.env[PROJECTION_STORE_DIR_ENV];
232
+ // Spread rather than passed, because the backend defaults the field when it is
233
+ // ABSENT and an explicit `undefined` is a different argument under
234
+ // `exactOptionalPropertyTypes`. Empty string is treated as unset: an unset
235
+ // variable and one exported as `''` are the same intent, and `''` would
236
+ // otherwise resolve to the process cwd.
237
+ return (await loadBackend()).openSqliteProjectionStore(directory === undefined || directory === '' ? {} : { directory });
238
+ }
239
+ /**
240
+ * Open a store that lives only in this process's memory.
241
+ *
242
+ * 🔑 **This is what keeps the query surface an ANSWER rather than a privilege.**
243
+ * A caller with no store selected — CI's first run, or a developer who never set
244
+ * the selector — still gets the same SQL over the same schema; the on-disk store
245
+ * only makes the second run cheap. Without it, "what does this tree contain"
246
+ * would be answerable only where a cache happened to exist, and two callers
247
+ * would hold differently-shaped views of one tree.
248
+ *
249
+ * It is a cache that cannot hit: nothing survives the close, so a caller must
250
+ * write the projection into it before asking anything.
251
+ *
252
+ * @returns An open, empty store; close it when done
253
+ */
254
+ export async function openEphemeralQueryStore() {
255
+ return (await loadBackend()).openEphemeralProjectionStore();
256
+ }
257
+ /**
258
+ * Load the selected backend module, or report it as uninstalled and exit.
259
+ *
260
+ * @returns The backend's module namespace
261
+ */
262
+ async function loadBackend() {
197
263
  try {
198
- const backend = await import('@vibe-agent-toolkit/projection-sqlite');
199
- return backend.openSqliteProjectionStore();
264
+ return await import('@vibe-agent-toolkit/projection-sqlite');
200
265
  }
201
266
  catch (error) {
267
+ const floor = nodeSqliteFloorFailure(error);
268
+ if (floor !== undefined)
269
+ throw floor;
202
270
  if (!isModuleMissing(error))
203
271
  throw error;
204
272
  reportMissingBackend(PROJECTION_STORE_BACKEND);
205
273
  }
206
274
  }
275
+ /**
276
+ * The legible failure for "your Node is too old", or `undefined` when this is
277
+ * some other failure — including "the package is absent".
278
+ *
279
+ * Exported, and returning the error rather than throwing it, so the DIAGNOSIS
280
+ * is unit-testable without a mocked dynamic import. A test cannot make a mocked
281
+ * `import()` reject with a plain `{ code }` — the test runner wraps whatever a
282
+ * module factory throws in its own error, so the code never survives to be
283
+ * read — and the branch's whole value is the message it produces.
284
+ *
285
+ * ðŸŠĪ The two are **different error codes**, and only one of them reaches
286
+ * {@link isModuleMissing}. `@vibe-agent-toolkit/projection-sqlite` imports
287
+ * `node:sqlite`, which arrived in Node 22.13.0; on 22.0–22.12 the import fails
288
+ * with `ERR_UNKNOWN_BUILTIN_MODULE`, not `ERR_MODULE_NOT_FOUND`. Without this
289
+ * branch the user gets a bare `No such built-in module: node:sqlite` — which
290
+ * names neither the version floor nor the fix.
291
+ *
292
+ * ⚠ïļ It is reachable on EVERY `vat resources query`/`check` run, and not a
293
+ * corner: VAT's own floor is `>=22.0.0`, so a supported Node hits it. That was
294
+ * already true before the store-selected path stopped querying a shared
295
+ * database — the query lane has always fallen back to
296
+ * {@link openEphemeralQueryStore} when no store is selected, which is the
297
+ * default, so `node:sqlite` was required on every default run. Nothing here
298
+ * became newly reachable; the branch is load-bearing because the FLOOR is,
299
+ * whichever way the lane resolves its store.
300
+ *
301
+ * The repair stays distinct from the missing-package one on purpose:
302
+ * "install this package" is the wrong instruction for "upgrade Node", and
303
+ * sending someone round that loop cannot terminate.
304
+ *
305
+ * @param error - Whatever the dynamic import threw
306
+ * @returns The error to raise when Node itself lacks the builtin; `undefined`
307
+ * when this failure is something else and the caller should keep diagnosing
308
+ */
309
+ export function nodeSqliteFloorFailure(error) {
310
+ const isFloor = typeof error === 'object'
311
+ && error !== null
312
+ && 'code' in error
313
+ && error.code === UNKNOWN_BUILTIN_MODULE;
314
+ if (!isFloor)
315
+ return undefined;
316
+ return new Error('The projection store needs `node:sqlite`, which this Node does not have.'
317
+ + ` VAT runs on Node >= 22.0.0, but \`node:sqlite\` arrived in 22.13.0 — you are on ${process.version}.`
318
+ + ' Upgrade Node to 22.13.0 or newer. Installing a package will not help:'
319
+ + ' the module is built into Node, not published to npm.');
320
+ }
207
321
  /**
208
322
  * Run one command's work with a projection store open for its whole duration,
209
323
  * and closed however it ends.
@@ -216,7 +330,17 @@ async function loadStore() {
216
330
  *
217
331
  * It is also the `withGitSnapshotCache` bracket for the work inside it, so the
218
332
  * key and the extent filed under it come from ONE git snapshot — see the note
219
- * on the call below.
333
+ * in the body.
334
+ *
335
+ * `undefined` on a run with no store selected, which is the shape every
336
+ * population lane wants: no store means re-derive, not fail.
337
+ *
338
+ * ⚠ïļ A caller that wants to run SQL must NOT query this store. It is one
339
+ * database per VAT release, shared by every root on the machine, so arbitrary
340
+ * SQL over it answers from other repositories — see `projection-query.ts`.
341
+ * That is also why this is the ONLY scope over the opened store: there is no
342
+ * separate "opened handle" bracket for a caller wanting more than the cache,
343
+ * because there is nothing legitimate for such a caller to want.
220
344
  *
221
345
  * @param options - Where the corpus is
222
346
  * @param options.root - The absolute corpus root
@@ -1 +1 @@
1
- {"version":3,"file":"projection-store.js","sourceRoot":"","sources":["../../src/utils/projection-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-store.js","sourceRoot":"","sources":["../../src/utils/projection-store.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Utilities for loading and crawling resources
3
3
  */
4
4
  import { ResourceRegistry, type CrawlSourceKind, type ProjectConfig, type ResourcePopulationSource } from '@vibe-agent-toolkit/resources';
5
- import { GitTracker } from '@vibe-agent-toolkit/utils';
5
+ import { GitTracker } from '@vibe-agent-toolkit/utils/git';
6
6
  import type { Logger } from './logger.js';
7
7
  /**
8
8
  * Which enumerator produced a load's population.
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAIL,gBAAgB,EAEhB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAE9B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAA6C,MAAM,2BAA2B,CAAC;AAGlG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC;;;;;;;;;OASG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1F;AA+CD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAE1D;AA8DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACrE,EACD,IAAI,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3E,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CA8G7B"}
1
+ {"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAIL,gBAAgB,EAEhB,KAAK,eAAe,EAEpB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAE9B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAmB,MAAM,+BAA+B,CAAC;AAG5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,YAAY,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;IACnC;;;;;;;;;OASG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;;;;;;;;;;OAYG;IACH,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1F;AA+CD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,4EAA4E;AAC5E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAE1D;AAsED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,4BAA4B,CAAC,CAAC,EAClD,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,mBAAmB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACrE,EACD,IAAI,EAAE,CAAC,gBAAgB,EAAE,wBAAwB,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3E,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CA8G7B"}
@@ -3,8 +3,10 @@
3
3
  */
4
4
  import { existsSync, statSync } from 'node:fs';
5
5
  import { buildResourcePopulation, DEFAULT_RESOURCE_INCLUDE, gitExtentSelected, ResourceRegistry, } from '@vibe-agent-toolkit/resources';
6
- import { GitTracker, gitTreeSnapshot, safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
6
+ import { safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
7
+ import { GitTracker, gitTreeSnapshot } from '@vibe-agent-toolkit/utils/git';
7
8
  import { loadConfig } from './config-loader.js';
9
+ import { collectionsOption } from './population-wiring.js';
8
10
  import { withPopulationCache } from './projection-store.js';
9
11
  /**
10
12
  * Scope resource include patterns to a subdirectory of the crawl base.
@@ -159,6 +161,14 @@ function populationSourceFor(root, gitTracker, observeExtentSource, cache) {
159
161
  root: enumeratedRoot,
160
162
  gitTracker,
161
163
  ...(cache !== undefined && { cache }),
164
+ // `enumeratedRoot` and this source's own `root` are the SAME directory,
165
+ // always: `populationFrom` compares them and declines outright when they
166
+ // differ, so `enumerate` is never called for another tree. Reading the
167
+ // declarations off the root being enumerated is therefore not a guard
168
+ // against a second root — it is how the declaration and the enumeration
169
+ // are kept demonstrably on one tree at the point of use, with no second
170
+ // variable to fall out of step with the one that was checked.
171
+ ...collectionsOption(enumeratedRoot),
162
172
  });
163
173
  observeExtentSource(population.extentSource);
164
174
  return population.paths;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Where the built vat CLI entry is, for the commands that re-invoke it as a
3
+ * child process.
4
+ *
5
+ * ## ðŸŠĪ `dist/bin.js`, deliberately NOT `dist/bin/vat.js`
6
+ *
7
+ * `packages/lab/src/harness/instrument.ts` documents `dist/bin/vat.js` as a
8
+ * re-resolving WRAPPER: it looks the CLI up again at run time, so spawning it
9
+ * can execute a different build than the one the caller is running from. A
10
+ * supervisor that thinks it is bounding its own code, and a corpus runner that
11
+ * thinks it is auditing with its own validators, both need the entry point that
12
+ * cannot be redirected.
13
+ *
14
+ * ## Why the two branches
15
+ *
16
+ * `node` cannot execute `.ts`, so a caller running from SOURCE under vitest
17
+ * still has to reach the COMPILED entry — which is why the source-tree branch
18
+ * walks across to `packages/cli/dist/bin.js` rather than to a sibling. A build
19
+ * is therefore a precondition for every test that spawns the CLI, and a system
20
+ * test that skipped it would prove things about a stale `dist`.
21
+ *
22
+ * ðŸŠĪ Shared rather than copied. This resolution lived inline in
23
+ * `commands/corpus/runner.ts` and a second caller wanted it; a second copy is a
24
+ * duplication-gate failure under this repo's zero-tolerance policy, and — worse
25
+ * — two copies drift, so one caller would keep spawning the wrapper long after
26
+ * the other stopped. The `__dirname`-relative hops below are correct for THIS
27
+ * module's location and nothing else, which is precisely why it is not a snippet
28
+ * to paste.
29
+ */
30
+ /**
31
+ * Resolve the path to the built vat CLI entry.
32
+ *
33
+ * @returns An absolute path to `dist/bin.js`
34
+ */
35
+ export declare function resolveVatBinPath(): string;
36
+ //# sourceMappingURL=vat-bin-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vat-bin-path.d.ts","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAUH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAO1C"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Where the built vat CLI entry is, for the commands that re-invoke it as a
3
+ * child process.
4
+ *
5
+ * ## ðŸŠĪ `dist/bin.js`, deliberately NOT `dist/bin/vat.js`
6
+ *
7
+ * `packages/lab/src/harness/instrument.ts` documents `dist/bin/vat.js` as a
8
+ * re-resolving WRAPPER: it looks the CLI up again at run time, so spawning it
9
+ * can execute a different build than the one the caller is running from. A
10
+ * supervisor that thinks it is bounding its own code, and a corpus runner that
11
+ * thinks it is auditing with its own validators, both need the entry point that
12
+ * cannot be redirected.
13
+ *
14
+ * ## Why the two branches
15
+ *
16
+ * `node` cannot execute `.ts`, so a caller running from SOURCE under vitest
17
+ * still has to reach the COMPILED entry — which is why the source-tree branch
18
+ * walks across to `packages/cli/dist/bin.js` rather than to a sibling. A build
19
+ * is therefore a precondition for every test that spawns the CLI, and a system
20
+ * test that skipped it would prove things about a stale `dist`.
21
+ *
22
+ * ðŸŠĪ Shared rather than copied. This resolution lived inline in
23
+ * `commands/corpus/runner.ts` and a second caller wanted it; a second copy is a
24
+ * duplication-gate failure under this repo's zero-tolerance policy, and — worse
25
+ * — two copies drift, so one caller would keep spawning the wrapper long after
26
+ * the other stopped. The `__dirname`-relative hops below are correct for THIS
27
+ * module's location and nothing else, which is precisely why it is not a snippet
28
+ * to paste.
29
+ */
30
+ import { existsSync } from 'node:fs';
31
+ import { dirname } from 'node:path';
32
+ import { fileURLToPath } from 'node:url';
33
+ import { safePath } from '@vibe-agent-toolkit/utils';
34
+ const HERE = dirname(fileURLToPath(import.meta.url));
35
+ /**
36
+ * Resolve the path to the built vat CLI entry.
37
+ *
38
+ * @returns An absolute path to `dist/bin.js`
39
+ */
40
+ export function resolveVatBinPath() {
41
+ // Compiled tree: packages/cli/dist/utils/vat-bin-path.js → packages/cli/dist/bin.js
42
+ const compiled = safePath.resolve(HERE, '../bin.js');
43
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- internal path
44
+ if (existsSync(compiled))
45
+ return compiled;
46
+ // Source tree (vitest): packages/cli/src/utils/vat-bin-path.ts → packages/cli/dist/bin.js
47
+ return safePath.resolve(HERE, '../../dist/bin.js');
48
+ }
49
+ //# sourceMappingURL=vat-bin-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vat-bin-path.js","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,oFAAoF;IACpF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,oFAAoF;IACpF,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,0FAA0F;IAC1F,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACrD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/cli",
3
- "version": "0.2.0-rc.3",
3
+ "version": "0.2.0-rc.5",
4
4
  "description": "Command-line interface for vibe-agent-toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,14 +46,15 @@
46
46
  "//dependencies-note": "DO NOT add example agent packages or adopter packages here. Adopter packages (like vat-development-agents) depend on the CLI binary at build time — declaring them as deps creates a circular build dependency. They are built in a second turbo pass via package#task overrides in turbo.json.",
47
47
  "dependencies": {
48
48
  "@anthropic-ai/sdk": "^0.71.2",
49
- "@vibe-agent-toolkit/agent-config": "0.2.0-rc.3",
50
- "@vibe-agent-toolkit/schema": "0.2.0-rc.3",
51
- "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.3",
52
- "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.3",
53
- "@vibe-agent-toolkit/discovery": "0.2.0-rc.3",
54
- "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.3",
55
- "@vibe-agent-toolkit/resources": "0.2.0-rc.3",
56
- "@vibe-agent-toolkit/utils": "0.2.0-rc.3",
49
+ "@vibe-agent-toolkit/agent-config": "0.2.0-rc.5",
50
+ "@vibe-agent-toolkit/agent-skills": "0.2.0-rc.5",
51
+ "@vibe-agent-toolkit/claude-marketplace": "0.2.0-rc.5",
52
+ "@vibe-agent-toolkit/discovery": "0.2.0-rc.5",
53
+ "@vibe-agent-toolkit/gateway-mcp": "0.2.0-rc.5",
54
+ "@vibe-agent-toolkit/projection-sqlite": "0.2.0-rc.5",
55
+ "@vibe-agent-toolkit/resources": "0.2.0-rc.5",
56
+ "@vibe-agent-toolkit/schema": "0.2.0-rc.5",
57
+ "@vibe-agent-toolkit/utils": "0.2.0-rc.5",
57
58
  "adm-zip": "^0.6.0",
58
59
  "commander": "^12.1.0",
59
60
  "picomatch": "^4.0.3",
@@ -68,7 +69,9 @@
68
69
  "@types/picomatch": "^4.0.2",
69
70
  "@types/semver": "^7.7.1",
70
71
  "@types/tar": "^6.1.13",
71
- "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.3",
72
+ "@vibe-agent-toolkit/dev-tools": "0.2.0-rc.5",
73
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.5",
74
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.5",
72
75
  "rimraf": "^6.0.1",
73
76
  "typescript": "^5.7.3",
74
77
  "vitest": "^3.2.4"
@@ -80,9 +83,17 @@
80
83
  "type": "git",
81
84
  "url": "https://github.com/jdutton/vibe-agent-toolkit.git"
82
85
  },
83
- "optionalDependencies": {
84
- "@vibe-agent-toolkit/projection-sqlite": "workspace:*",
85
- "@vibe-agent-toolkit/rag": "workspace:*",
86
- "@vibe-agent-toolkit/rag-lancedb": "workspace:*"
86
+ "//peerDependencies-note": "The RAG backends are OPTIONAL PEERS, never optionalDependencies. `optionalDependencies` are INSTALLED BY DEFAULT by npm and pnpm alike - 'optional' there means the install may fail without failing the build, not that it is skipped - so declaring them that way shipped ~240 MB (onnxruntime-web 136 MB, a LanceDB platform binary 93 MB, a third apache-arrow, protobufjs) to every adopter, contradicting the seam in src/utils/optional-backend.ts that exists precisely to keep them out. Optional peers are NOT auto-installed, so the manifest now says what that module already says: these ship separately, and an absent one is a legible error naming the package to install. projection-sqlite is deliberately NOT in this group: it has zero third-party dependencies (only node:sqlite, which is built into Node) and a 152 KB dist, so the platform-binary argument that justifies the seam is simply false for it. It is also what `vat resources query` builds its ephemeral in-memory store from, and a query surface that works only where a backend was separately installed is the capability gate the projection design forbids.",
87
+ "peerDependencies": {
88
+ "@vibe-agent-toolkit/rag": "0.2.0-rc.5",
89
+ "@vibe-agent-toolkit/rag-lancedb": "0.2.0-rc.5"
90
+ },
91
+ "peerDependenciesMeta": {
92
+ "@vibe-agent-toolkit/rag": {
93
+ "optional": true
94
+ },
95
+ "@vibe-agent-toolkit/rag-lancedb": {
96
+ "optional": true
97
+ }
87
98
  }
88
99
  }
@@ -1,5 +0,0 @@
1
- /**
2
- * Shared helper functions for resources commands
3
- */
4
- export { handleCommandError } from '../../utils/command-error.js';
5
- //# sourceMappingURL=command-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Shared helper functions for resources commands
3
- */
4
- // Re-export shared utilities for convenience
5
- export { handleCommandError } from '../../utils/command-error.js';
6
- //# sourceMappingURL=command-helpers.js.map