@vibe-agent-toolkit/cli 0.1.41-rc.7 → 0.1.41
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.
- package/dist/bin/vat +24 -1
- package/dist/bin/vat.js +24 -1
- package/dist/bin/vat.js.map +1 -1
- package/dist/bin.js +23 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/agent/list.d.ts +11 -0
- package/dist/commands/agent/list.d.ts.map +1 -1
- package/dist/commands/agent/list.js +30 -11
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/audit/distributed-tree.d.ts +172 -0
- package/dist/commands/audit/distributed-tree.d.ts.map +1 -0
- package/dist/commands/audit/distributed-tree.js +319 -0
- package/dist/commands/audit/distributed-tree.js.map +1 -0
- package/dist/commands/audit.d.ts +69 -1
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +525 -174
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts +14 -0
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +103 -26
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +21 -3
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/validate.d.ts +125 -0
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +251 -44
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/org/stubs.d.ts +9 -1
- package/dist/commands/claude/org/stubs.d.ts.map +1 -1
- package/dist/commands/claude/org/stubs.js +11 -3
- package/dist/commands/claude/org/stubs.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts +34 -4
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +187 -16
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.js +6 -2
- package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-json-merge.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-json-merge.js +15 -0
- package/dist/commands/claude/plugin/plugin-json-merge.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts +40 -0
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js +100 -4
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/corpus/report.d.ts +22 -4
- package/dist/commands/corpus/report.d.ts.map +1 -1
- package/dist/commands/corpus/report.js +1 -0
- package/dist/commands/corpus/report.js.map +1 -1
- package/dist/commands/corpus/runner.d.ts +16 -1
- package/dist/commands/corpus/runner.d.ts.map +1 -1
- package/dist/commands/corpus/runner.js +40 -22
- package/dist/commands/corpus/runner.js.map +1 -1
- package/dist/commands/doctor.js +1 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/inventory.d.ts +2 -0
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +45 -4
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/phase-utils.d.ts +183 -14
- package/dist/commands/phase-utils.d.ts.map +1 -1
- package/dist/commands/phase-utils.js +294 -29
- package/dist/commands/phase-utils.js.map +1 -1
- package/dist/commands/positional-args.d.ts +36 -0
- package/dist/commands/positional-args.d.ts.map +1 -0
- package/dist/commands/positional-args.js +52 -0
- package/dist/commands/positional-args.js.map +1 -0
- package/dist/commands/rag/query-command.d.ts +40 -0
- package/dist/commands/rag/query-command.d.ts.map +1 -1
- package/dist/commands/rag/query-command.js +47 -20
- package/dist/commands/rag/query-command.js.map +1 -1
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +27 -9
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/scan.d.ts +37 -0
- package/dist/commands/resources/scan.d.ts.map +1 -1
- package/dist/commands/resources/scan.js +47 -32
- package/dist/commands/resources/scan.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +136 -1
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +105 -66
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/review-checklist.d.ts.map +1 -1
- package/dist/commands/skill/review-checklist.js +5 -0
- package/dist/commands/skill/review-checklist.js.map +1 -1
- package/dist/commands/skill/review.d.ts.map +1 -1
- package/dist/commands/skill/review.js +7 -3
- package/dist/commands/skill/review.js.map +1 -1
- package/dist/commands/skill/test/run.d.ts +1 -1
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +8 -6
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts +349 -11
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +901 -97
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/command-helpers.d.ts +6 -10
- package/dist/commands/skills/command-helpers.d.ts.map +1 -1
- package/dist/commands/skills/command-helpers.js +6 -22
- package/dist/commands/skills/command-helpers.js.map +1 -1
- package/dist/commands/skills/list.d.ts +18 -0
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +41 -15
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/package.d.ts +15 -0
- package/dist/commands/skills/package.d.ts.map +1 -1
- package/dist/commands/skills/package.js +30 -20
- package/dist/commands/skills/package.js.map +1 -1
- package/dist/commands/skills/scope-guard.d.ts +64 -0
- package/dist/commands/skills/scope-guard.d.ts.map +1 -0
- package/dist/commands/skills/scope-guard.js +86 -0
- package/dist/commands/skills/scope-guard.js.map +1 -0
- package/dist/commands/skills/validate-command.d.ts.map +1 -1
- package/dist/commands/skills/validate-command.js +41 -7
- package/dist/commands/skills/validate-command.js.map +1 -1
- package/dist/commands/skills/validate.d.ts +44 -3
- package/dist/commands/skills/validate.d.ts.map +1 -1
- package/dist/commands/skills/validate.js +217 -53
- package/dist/commands/skills/validate.js.map +1 -1
- package/dist/commands/validate.d.ts +18 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +89 -68
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +113 -6
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +440 -123
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/skill-resolution/index.d.ts +1 -1
- package/dist/skill-resolution/index.d.ts.map +1 -1
- package/dist/skill-resolution/index.js +1 -1
- package/dist/skill-resolution/index.js.map +1 -1
- package/dist/skill-resolution/packaging-config.d.ts +15 -2
- package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
- package/dist/skill-resolution/packaging-config.js +39 -2
- package/dist/skill-resolution/packaging-config.js.map +1 -1
- package/dist/utils/command-error.d.ts +34 -1
- package/dist/utils/command-error.d.ts.map +1 -1
- package/dist/utils/command-error.js +32 -1
- package/dist/utils/command-error.js.map +1 -1
- package/dist/utils/help-loader.d.ts +6 -2
- package/dist/utils/help-loader.d.ts.map +1 -1
- package/dist/utils/help-loader.js +9 -16
- package/dist/utils/help-loader.js.map +1 -1
- package/dist/utils/issue-rendering.d.ts +130 -0
- package/dist/utils/issue-rendering.d.ts.map +1 -1
- package/dist/utils/issue-rendering.js +147 -0
- package/dist/utils/issue-rendering.js.map +1 -1
- package/dist/utils/issue-severity.d.ts +51 -0
- package/dist/utils/issue-severity.d.ts.map +1 -0
- package/dist/utils/issue-severity.js +63 -0
- package/dist/utils/issue-severity.js.map +1 -0
- package/dist/utils/output.d.ts +54 -5
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +111 -17
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/relativize-paths.d.ts +45 -0
- package/dist/utils/relativize-paths.d.ts.map +1 -0
- package/dist/utils/relativize-paths.js +67 -0
- package/dist/utils/relativize-paths.js.map +1 -0
- package/dist/utils/resource-loader.d.ts +21 -2
- package/dist/utils/resource-loader.d.ts.map +1 -1
- package/dist/utils/resource-loader.js +85 -11
- package/dist/utils/resource-loader.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +22 -1
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +26 -0
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/dist/utils/verdict-helpers.d.ts +4 -3
- package/dist/utils/verdict-helpers.d.ts.map +1 -1
- package/dist/utils/verdict-helpers.js +6 -13
- package/dist/utils/verdict-helpers.js.map +1 -1
- package/dist/version.d.ts +22 -2
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +31 -2
- package/dist/version.js.map +1 -1
- package/docs/index.md +12 -0
- package/docs/rag.md +9 -4
- package/docs/resources.md +30 -14
- package/docs/skills.md +25 -7
- package/package.json +12 -12
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-basing report `path` values onto the run's single stated root.
|
|
3
|
+
*
|
|
4
|
+
* A report states its coordinate system ONCE — `root:` — and every `path`
|
|
5
|
+
* beneath it is relative to that. Producers keep absolute paths internally on
|
|
6
|
+
* purpose: an absolute path is the identity every internal map keys on (compat
|
|
7
|
+
* results, visited-path de-duplication, registry caches), and unlike a
|
|
8
|
+
* `location` it is trivially recoverable, since an absolute path plus a known
|
|
9
|
+
* root yields the relative form. Re-basing therefore happens once, at the
|
|
10
|
+
* document boundary, and this module is that one place.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately NOT a deep walk over every `path`-named property: re-basing is
|
|
13
|
+
* not idempotent (`relative(root, someRelativeValue)` resolves the value
|
|
14
|
+
* against the process cwd and produces nonsense), so a helper that guesses
|
|
15
|
+
* which values are absolute would silently corrupt an already-relative one.
|
|
16
|
+
* The caller names the nested carriers it owns instead.
|
|
17
|
+
*/
|
|
18
|
+
import { issueLocation } from '@vibe-agent-toolkit/utils';
|
|
19
|
+
/**
|
|
20
|
+
* Re-base one absolute path onto `root`, as a forward-slashed relative path.
|
|
21
|
+
*
|
|
22
|
+
* Pointing a report AT a single resource makes that resource the root, which
|
|
23
|
+
* relativizes to the empty string. That is spelled `.` — the POSIX name for
|
|
24
|
+
* "the root itself" — so no consumer has to special-case a blank value, and
|
|
25
|
+
* `join(root, path)` still resolves.
|
|
26
|
+
*/
|
|
27
|
+
export function relativizePath(absolutePath, root) {
|
|
28
|
+
const relative = issueLocation(absolutePath, root);
|
|
29
|
+
return relative === '' ? '.' : relative;
|
|
30
|
+
}
|
|
31
|
+
/** Whether an unknown value is shaped like something this module can re-base. */
|
|
32
|
+
function isPathEntry(value) {
|
|
33
|
+
return (typeof value === 'object' &&
|
|
34
|
+
value !== null &&
|
|
35
|
+
typeof value.path === 'string');
|
|
36
|
+
}
|
|
37
|
+
function relativizeEntry(entry, root, nestedKeys) {
|
|
38
|
+
const out = { ...entry, path: relativizePath(entry.path, root) };
|
|
39
|
+
// The nested carriers are named by the caller, so they are not on T's known
|
|
40
|
+
// keys; the bag view is the only way to reach them without demanding every
|
|
41
|
+
// caller widen its own result type.
|
|
42
|
+
const bag = out;
|
|
43
|
+
for (const key of nestedKeys) {
|
|
44
|
+
const nested = bag[key];
|
|
45
|
+
if (!Array.isArray(nested))
|
|
46
|
+
continue;
|
|
47
|
+
bag[key] = nested.map((item) => isPathEntry(item) ? relativizeEntry(item, root, nestedKeys) : item);
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Re-base the `path` of every entry — and of every entry inside the nested
|
|
53
|
+
* carriers named by `nestedKeys`, at any depth — onto `root`.
|
|
54
|
+
*
|
|
55
|
+
* Returns new objects; the input is never mutated.
|
|
56
|
+
*
|
|
57
|
+
* @param entries - Report entries carrying absolute `path` values.
|
|
58
|
+
* @param root - The single root the document states.
|
|
59
|
+
* @param nestedKeys - Names of array-valued properties whose elements also
|
|
60
|
+
* carry an absolute `path` (audit passes `['linkedFiles']`). Omitting a
|
|
61
|
+
* carrier leaves its paths absolute, which is how a document ends up in two
|
|
62
|
+
* coordinate systems — so a producer that adds a carrier must name it here.
|
|
63
|
+
*/
|
|
64
|
+
export function relativizePathEntries(entries, root, nestedKeys = []) {
|
|
65
|
+
return entries.map((entry) => relativizeEntry(entry, root, nestedKeys));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=relativize-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relativize-paths.js","sourceRoot":"","sources":["../../src/utils/relativize-paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAO1D;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB,EAAE,IAAY;IAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnD,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1C,CAAC;AAED,iFAAiF;AACjF,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAA4B,CAAC,IAAI,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,KAAQ,EACR,IAAY,EACZ,UAA6B;IAE7B,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;IACjE,4EAA4E;IAC5E,2EAA2E;IAC3E,oCAAoC;IACpC,MAAM,GAAG,GAAG,GAAyC,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,SAAS;QACrC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE,CACtC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAqB,EACrB,IAAY,EACZ,aAAgC,EAAE;IAElC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -11,6 +11,18 @@ export interface ResourceLoadResult {
|
|
|
11
11
|
registry: ResourceRegistry;
|
|
12
12
|
gitTracker: GitTracker | undefined;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Scope resource include patterns to a subdirectory of the crawl base.
|
|
16
|
+
*
|
|
17
|
+
* Pure, and exported so the scoping rule is testable without a filesystem.
|
|
18
|
+
* `relDir` is base-relative with forward slashes; `''` means "the base itself",
|
|
19
|
+
* for which the patterns are already correctly scoped.
|
|
20
|
+
*
|
|
21
|
+
* The patterns in {@link DEFAULT_RESOURCE_INCLUDE} are all `**`-rooted, so
|
|
22
|
+
* prefixing is enough: picomatch's `**` matches zero segments, meaning
|
|
23
|
+
* `docs/**\/*.md` still matches `docs/a.md`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function scopeIncludeToSubtree(include: readonly string[], relDir: string): string[];
|
|
14
26
|
/**
|
|
15
27
|
* Load resources from a path with config support
|
|
16
28
|
*
|
|
@@ -20,8 +32,15 @@ export interface ResourceLoadResult {
|
|
|
20
32
|
* 3. Create registry and crawl
|
|
21
33
|
*
|
|
22
34
|
* Behavior:
|
|
23
|
-
* - When path argument
|
|
24
|
-
*
|
|
35
|
+
* - When no path argument: crawl the project root, applying the config's
|
|
36
|
+
* `resources.include` and `resources.exclude` patterns.
|
|
37
|
+
* - When a path argument is provided: still crawl on the project-root basis (so
|
|
38
|
+
* the config's root-relative globs remain meaningful), with `include` replaced
|
|
39
|
+
* by the default resource patterns scoped to that subtree and the config's
|
|
40
|
+
* `exclude` still applied. A path argument says WHICH tree to scan; it does
|
|
41
|
+
* not license scanning files the project excluded.
|
|
42
|
+
* - When the path argument lies outside the project root, the config's patterns
|
|
43
|
+
* describe a different tree: they are dropped, with a warning.
|
|
25
44
|
*
|
|
26
45
|
* Per CLI-boundary rule (spec §5): `projectRoot` MUST be resolved by the
|
|
27
46
|
* caller using one of the policy helpers in `project-root-policy.ts`. This
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAEL,gBAAgB,EAEhB,KAAK,aAAa,EAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAA4B,MAAM,2BAA2B,CAAC;AAGjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,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;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1F;AAkED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAuD7B"}
|
|
@@ -1,9 +1,79 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utilities for loading and crawling resources
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { existsSync, statSync } from 'node:fs';
|
|
5
|
+
import { DEFAULT_RESOURCE_INCLUDE, ResourceRegistry, } from '@vibe-agent-toolkit/resources';
|
|
6
|
+
import { GitTracker, safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
|
|
6
7
|
import { loadConfig } from './config-loader.js';
|
|
8
|
+
/**
|
|
9
|
+
* Scope resource include patterns to a subdirectory of the crawl base.
|
|
10
|
+
*
|
|
11
|
+
* Pure, and exported so the scoping rule is testable without a filesystem.
|
|
12
|
+
* `relDir` is base-relative with forward slashes; `''` means "the base itself",
|
|
13
|
+
* for which the patterns are already correctly scoped.
|
|
14
|
+
*
|
|
15
|
+
* The patterns in {@link DEFAULT_RESOURCE_INCLUDE} are all `**`-rooted, so
|
|
16
|
+
* prefixing is enough: picomatch's `**` matches zero segments, meaning
|
|
17
|
+
* `docs/**\/*.md` still matches `docs/a.md`.
|
|
18
|
+
*/
|
|
19
|
+
export function scopeIncludeToSubtree(include, relDir) {
|
|
20
|
+
if (relDir === '') {
|
|
21
|
+
return [...include];
|
|
22
|
+
}
|
|
23
|
+
return include.map((pattern) => `${relDir}/${pattern}`);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Build the crawl options for an explicit path argument.
|
|
27
|
+
*
|
|
28
|
+
* The path argument RESTATES which tree to scan; it does not license scanning
|
|
29
|
+
* files the project has declared out of bounds. So `exclude` — a "never treat
|
|
30
|
+
* this as a resource" statement about node_modules, build output, vendored
|
|
31
|
+
* trees, and deliberately-broken test fixtures — is applied either way, while
|
|
32
|
+
* the path replaces `include`.
|
|
33
|
+
*
|
|
34
|
+
* That is only expressible by keeping `baseDir` at the project root: config
|
|
35
|
+
* globs are declared relative to the project root, so re-basing the crawl onto
|
|
36
|
+
* the path argument (the previous behavior) silently voided every one of them.
|
|
37
|
+
* Instead the path argument becomes an include PREFIX on the same basis.
|
|
38
|
+
*/
|
|
39
|
+
function crawlOptionsForPath(pathArg, projectRoot, config, logger) {
|
|
40
|
+
const resolved = safePath.resolve(pathArg);
|
|
41
|
+
// safePath.relative already normalizes, but toForwardSlash makes the
|
|
42
|
+
// separator assumption in the `../` test below explicit on Windows too.
|
|
43
|
+
const normalizedRelDir = toForwardSlash(safePath.relative(projectRoot, resolved));
|
|
44
|
+
if (normalizedRelDir === '..' || normalizedRelDir.startsWith('../')) {
|
|
45
|
+
// Outside the project root, so the config's root-relative globs describe a
|
|
46
|
+
// different tree and genuinely cannot apply. Say so rather than dropping
|
|
47
|
+
// them silently — silent dropping is the bug this function exists to fix.
|
|
48
|
+
logger.warn(`${resolved} is outside projectRoot ${projectRoot}; ` +
|
|
49
|
+
`resources include/exclude patterns from the config do not apply to it`);
|
|
50
|
+
return { baseDir: resolved };
|
|
51
|
+
}
|
|
52
|
+
assertCrawlableDirectory(resolved);
|
|
53
|
+
return {
|
|
54
|
+
baseDir: projectRoot,
|
|
55
|
+
include: scopeIncludeToSubtree(DEFAULT_RESOURCE_INCLUDE, normalizedRelDir),
|
|
56
|
+
...(config?.resources?.exclude ? { exclude: config.resources.exclude } : {}),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Fail loudly on a path argument that cannot be crawled.
|
|
61
|
+
*
|
|
62
|
+
* The crawler used to perform this check itself, because it received the path
|
|
63
|
+
* argument as its `baseDir`. Now that `baseDir` is the project root, a bad path
|
|
64
|
+
* argument would otherwise degrade into a glob that matches nothing — a green
|
|
65
|
+
* run reporting `filesScanned: 0`.
|
|
66
|
+
*/
|
|
67
|
+
function assertCrawlableDirectory(resolved) {
|
|
68
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- CLI path argument, resolved above
|
|
69
|
+
if (!existsSync(resolved)) {
|
|
70
|
+
throw new Error(`Path does not exist: ${resolved}`);
|
|
71
|
+
}
|
|
72
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- CLI path argument, existence checked above
|
|
73
|
+
if (!statSync(resolved).isDirectory()) {
|
|
74
|
+
throw new Error(`Path is not a directory: ${resolved}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
7
77
|
/**
|
|
8
78
|
* Load resources from a path with config support
|
|
9
79
|
*
|
|
@@ -13,8 +83,15 @@ import { loadConfig } from './config-loader.js';
|
|
|
13
83
|
* 3. Create registry and crawl
|
|
14
84
|
*
|
|
15
85
|
* Behavior:
|
|
16
|
-
* - When path argument
|
|
17
|
-
*
|
|
86
|
+
* - When no path argument: crawl the project root, applying the config's
|
|
87
|
+
* `resources.include` and `resources.exclude` patterns.
|
|
88
|
+
* - When a path argument is provided: still crawl on the project-root basis (so
|
|
89
|
+
* the config's root-relative globs remain meaningful), with `include` replaced
|
|
90
|
+
* by the default resource patterns scoped to that subtree and the config's
|
|
91
|
+
* `exclude` still applied. A path argument says WHICH tree to scan; it does
|
|
92
|
+
* not license scanning files the project excluded.
|
|
93
|
+
* - When the path argument lies outside the project root, the config's patterns
|
|
94
|
+
* describe a different tree: they are dropped, with a warning.
|
|
18
95
|
*
|
|
19
96
|
* Per CLI-boundary rule (spec §5): `projectRoot` MUST be resolved by the
|
|
20
97
|
* caller using one of the policy helpers in `project-root-policy.ts`. This
|
|
@@ -48,14 +125,11 @@ export async function loadResourcesWithConfig(pathArg, projectRoot, logger) {
|
|
|
48
125
|
const registry = new ResourceRegistry(registryOptions);
|
|
49
126
|
let crawlOptions;
|
|
50
127
|
if (pathArg) {
|
|
51
|
-
// Path argument provided:
|
|
52
|
-
//
|
|
128
|
+
// Path argument provided: narrow the scan to that subtree, but keep the
|
|
129
|
+
// project's exclude patterns — see crawlOptionsForPath.
|
|
53
130
|
logger.debug(`Path argument provided: ${pathArg}`);
|
|
54
|
-
|
|
55
|
-
crawlOptions
|
|
56
|
-
baseDir: pathArg,
|
|
57
|
-
// Use defaults from ResourceRegistry.crawl (will use **/*.md)
|
|
58
|
-
};
|
|
131
|
+
crawlOptions = crawlOptionsForPath(pathArg, projectRoot, config, logger);
|
|
132
|
+
logger.debug(`Crawling ${crawlOptions.baseDir} with include: ${JSON.stringify(crawlOptions.include)}`);
|
|
59
133
|
}
|
|
60
134
|
else {
|
|
61
135
|
// No path argument: crawl from projectRoot with config patterns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,
|
|
1
|
+
{"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/utils/resource-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* Most fields are a shallow override: a per-skill value replaces the default
|
|
10
10
|
* outright. `files:` is the exception — see below.
|
|
11
11
|
*/
|
|
12
|
-
import { type SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
|
|
12
|
+
import { type DeclaredEvalSuite, type SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
|
|
13
|
+
import type { SkillsConfig } from '@vibe-agent-toolkit/resources';
|
|
13
14
|
/**
|
|
14
15
|
* Merge defaults with per-skill overrides, dropping undefined values.
|
|
15
16
|
*
|
|
@@ -25,4 +26,24 @@ import { type SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
|
|
|
25
26
|
* the build did — the exact class of divergence this module exists to prevent.
|
|
26
27
|
*/
|
|
27
28
|
export declare function mergeSkillPackagingConfig(defaults: Record<string, unknown> | undefined, perSkillOverrides: Record<string, unknown> | undefined): SkillPackagingConfig;
|
|
29
|
+
/**
|
|
30
|
+
* The PROJECT's declared eval suites: one {@link DeclaredEvalSuite} per discovered
|
|
31
|
+
* skill, from the same discovery + merge every lane already runs.
|
|
32
|
+
*
|
|
33
|
+
* Test input never ships, and that rule is project-wide rather than per-skill — a file
|
|
34
|
+
* ANY skill declares as its eval suite is an answer key, and no other skill's bundle may
|
|
35
|
+
* carry it. Every lane that packages or models a bundle therefore needs the whole
|
|
36
|
+
* project's declarations, not just the subject's.
|
|
37
|
+
*
|
|
38
|
+
* Build this ONCE per invocation, from the UNFILTERED discovery, and pass the same array
|
|
39
|
+
* down to every skill:
|
|
40
|
+
* - unfiltered, because `--skill x` narrows what is BUILT, never what counts as test
|
|
41
|
+
* input; a suite excluded from the run is still an answer key;
|
|
42
|
+
* - once, because assembling it per skill would walk the project's whole skills config
|
|
43
|
+
* inside a per-skill loop — a per-item cost against whole-corpus work.
|
|
44
|
+
*/
|
|
45
|
+
export declare function collectDeclaredEvalSuites(skillsConfig: SkillsConfig | undefined, discovered: ReadonlyArray<{
|
|
46
|
+
name: string;
|
|
47
|
+
sourcePath: string;
|
|
48
|
+
}>): DeclaredEvalSuite[];
|
|
28
49
|
//# sourceMappingURL=skill-packaging-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-packaging-config.d.ts","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-packaging-config.d.ts","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAoB,KAAK,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACvH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC7C,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACrD,oBAAoB,CAmBtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,UAAU,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9D,iBAAiB,EAAE,CAUrB"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* outright. `files:` is the exception — see below.
|
|
11
11
|
*/
|
|
12
12
|
import { mergeFilesConfig } from '@vibe-agent-toolkit/agent-skills';
|
|
13
|
+
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
13
14
|
/**
|
|
14
15
|
* Merge defaults with per-skill overrides, dropping undefined values.
|
|
15
16
|
*
|
|
@@ -42,4 +43,29 @@ export function mergeSkillPackagingConfig(defaults, perSkillOverrides) {
|
|
|
42
43
|
}
|
|
43
44
|
return packagingConfig;
|
|
44
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* The PROJECT's declared eval suites: one {@link DeclaredEvalSuite} per discovered
|
|
48
|
+
* skill, from the same discovery + merge every lane already runs.
|
|
49
|
+
*
|
|
50
|
+
* Test input never ships, and that rule is project-wide rather than per-skill — a file
|
|
51
|
+
* ANY skill declares as its eval suite is an answer key, and no other skill's bundle may
|
|
52
|
+
* carry it. Every lane that packages or models a bundle therefore needs the whole
|
|
53
|
+
* project's declarations, not just the subject's.
|
|
54
|
+
*
|
|
55
|
+
* Build this ONCE per invocation, from the UNFILTERED discovery, and pass the same array
|
|
56
|
+
* down to every skill:
|
|
57
|
+
* - unfiltered, because `--skill x` narrows what is BUILT, never what counts as test
|
|
58
|
+
* input; a suite excluded from the run is still an answer key;
|
|
59
|
+
* - once, because assembling it per skill would walk the project's whole skills config
|
|
60
|
+
* inside a per-skill loop — a per-item cost against whole-corpus work.
|
|
61
|
+
*/
|
|
62
|
+
export function collectDeclaredEvalSuites(skillsConfig, discovered) {
|
|
63
|
+
if (skillsConfig === undefined)
|
|
64
|
+
return [];
|
|
65
|
+
const { defaults, config: perSkillConfig } = skillsConfig;
|
|
66
|
+
return discovered.map((skill) => ({
|
|
67
|
+
skillDir: safePath.resolve(skill.sourcePath, '..'),
|
|
68
|
+
config: mergeSkillPackagingConfig(defaults, perSkillConfig?.[skill.name]),
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
45
71
|
//# sourceMappingURL=skill-packaging-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-packaging-config.js","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"skill-packaging-config.js","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAqD,MAAM,kCAAkC,CAAC;AAEvH,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA6C,EAC7C,iBAAsD;IAEtD,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACrD,MAAM,eAAe,GAAyB,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,eAA2C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAkC,CAAC;IAC1E,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC,OAAO,CAAkC,CAAC;IACpF,IAAI,YAAY,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CACvC,YAAsC,EACtC,UAA+D;IAE/D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;IAC1D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAClD,MAAM,EAAE,yBAAyB,CAC/B,QAA+C,EAC/C,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAwC,CACpE;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -41,9 +41,10 @@ export declare function computeConfigVerdicts(observations: readonly Observation
|
|
|
41
41
|
* Mutate a PackagingValidationResult in place to include compat verdicts
|
|
42
42
|
* derived from the result's observations and the configured targets.
|
|
43
43
|
*
|
|
44
|
-
* Verdict issues land in `allErrors
|
|
45
|
-
*
|
|
46
|
-
*
|
|
44
|
+
* Verdict issues land in `allErrors`, which is the sole container for every
|
|
45
|
+
* emitted issue regardless of severity — callers derive the active partition
|
|
46
|
+
* with `activeErrorsOf` / `activeWarningsOf` rather than reading a second
|
|
47
|
+
* pre-filtered copy. Verdicts are not allow-filterable.
|
|
47
48
|
*/
|
|
48
49
|
export declare function applyConfigVerdicts(result: PackagingValidationResult, configTargets: ReadonlyArray<Target> | undefined, skillSourcePath: string, locationRoot: string): void;
|
|
49
50
|
//# sourceMappingURL=verdict-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdict-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/verdict-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,wCAAwC,CAAC;AAGhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAUlF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,eAAe,EAAE,CAkBnB;AAED
|
|
1
|
+
{"version":3,"file":"verdict-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/verdict-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,OAAO,EACb,MAAM,wCAAwC,CAAC;AAGhD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAUlF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,eAAe,EAAE,CAkBnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,EAChD,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,GACnB,IAAI,CAcN"}
|
|
@@ -66,25 +66,18 @@ export function computeConfigVerdicts(observations, configTargets, skillSourcePa
|
|
|
66
66
|
* Mutate a PackagingValidationResult in place to include compat verdicts
|
|
67
67
|
* derived from the result's observations and the configured targets.
|
|
68
68
|
*
|
|
69
|
-
* Verdict issues land in `allErrors
|
|
70
|
-
*
|
|
71
|
-
*
|
|
69
|
+
* Verdict issues land in `allErrors`, which is the sole container for every
|
|
70
|
+
* emitted issue regardless of severity — callers derive the active partition
|
|
71
|
+
* with `activeErrorsOf` / `activeWarningsOf` rather than reading a second
|
|
72
|
+
* pre-filtered copy. Verdicts are not allow-filterable.
|
|
72
73
|
*/
|
|
73
74
|
export function applyConfigVerdicts(result, configTargets, skillSourcePath, locationRoot) {
|
|
74
75
|
const verdictIssues = computeConfigVerdicts(result.observations, configTargets, skillSourcePath, locationRoot);
|
|
75
76
|
if (verdictIssues.length === 0) {
|
|
76
77
|
return;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (issue.severity === 'error') {
|
|
81
|
-
result.activeErrors.push(issue);
|
|
82
|
-
}
|
|
83
|
-
else if (issue.severity === 'warning') {
|
|
84
|
-
result.activeWarnings.push(issue);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (result.activeErrors.length > 0) {
|
|
79
|
+
result.allErrors.push(...verdictIssues);
|
|
80
|
+
if (result.allErrors.some(issue => issue.severity === 'error')) {
|
|
88
81
|
result.status = 'error';
|
|
89
82
|
}
|
|
90
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdict-helpers.js","sourceRoot":"","sources":["../../src/utils/verdict-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,kCAAkC,CAAC;AAKvF,OAAO,EACL,eAAe,EACf,uBAAuB,GAGxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,QAAgB;IAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,eAAe;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ;QACR,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAoC,EACpC,aAAgD,EAChD,eAAuB,EACvB,YAAoB;IAEpB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;QAC/C,aAAa,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;QAC3E,aAAa,EAAE,SAAS;QACxB,kBAAkB,EAAE,SAAS;KAC9B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;QAC/B,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"verdict-helpers.js","sourceRoot":"","sources":["../../src/utils/verdict-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,aAAa,EAAwB,MAAM,kCAAkC,CAAC;AAKvF,OAAO,EACL,eAAe,EACf,uBAAuB,GAGxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,QAAgB;IAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,eAAe;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ;QACR,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAoC,EACpC,aAAgD,EAChD,eAAuB,EACvB,YAAoB;IAEpB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;QAC/C,aAAa,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC;QAC3E,aAAa,EAAE,SAAS;QACxB,kBAAkB,EAAE,SAAS;KAC9B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;QAC/B,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAiC,EACjC,aAAgD,EAChD,eAAuB,EACvB,YAAoB;IAEpB,MAAM,aAAa,GAAG,qBAAqB,CACzC,MAAM,CAAC,YAAY,EACnB,aAAa,EACb,eAAe,EACf,YAAY,CACb,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -7,7 +7,27 @@ export interface VersionContext {
|
|
|
7
7
|
path?: string;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Format version
|
|
10
|
+
* Format the `--version` output: the version line, then the resolved path of
|
|
11
|
+
* the binary that produced it.
|
|
12
|
+
*
|
|
13
|
+
* **Why the binary path is unconditional.** The `-dev (<path>)` suffix is
|
|
14
|
+
* CWD-derived: `bin/vat.ts` computes its context from
|
|
15
|
+
* `findNodeWorkspaceRoot(process.cwd())`, so the *same* branch build invoked by
|
|
16
|
+
* absolute path from an adopter checkout resolves `Context: global` and printed
|
|
17
|
+
* a bare `0.1.41-rc.8` — byte-identical to what the released rc.8 prints. The
|
|
18
|
+
* only way to tell them apart was `VAT_DEBUG=1` plus knowing to look for the
|
|
19
|
+
* `Binary:` line. Every adopter delta test runs in exactly that directory, so
|
|
20
|
+
* the identity check the whole testing protocol depends on was unperformable
|
|
21
|
+
* where the tests actually run.
|
|
22
|
+
*
|
|
23
|
+
* `binaryPath` is a property of what ACTUALLY ran (derived from the entry
|
|
24
|
+
* module's own `import.meta.filename`, not from the cwd), which is why it can
|
|
25
|
+
* answer the question the context label cannot. It is a required parameter on
|
|
26
|
+
* purpose: a defaulted one would let a caller be added that silently ships the
|
|
27
|
+
* old, unidentifiable output.
|
|
28
|
+
*
|
|
29
|
+
* The version stays on line 1 so `--version` output still matches
|
|
30
|
+
* `/^\d+\.\d+\.\d+/`; the provenance is appended, never prepended.
|
|
11
31
|
*/
|
|
12
|
-
export declare function getVersionString(ver: string, context: VersionContext | null): string;
|
|
32
|
+
export declare function getVersionString(ver: string, context: VersionContext | null, binaryPath: string): string;
|
|
13
33
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,eAAO,MAAM,OAAO,EAAE,MAA4B,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,eAAO,MAAM,OAAO,EAAE,MAA4B,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,UAAU,EAAE,MAAM,GACjB,MAAM,CAER"}
|
package/dist/version.js
CHANGED
|
@@ -12,9 +12,12 @@ const packageJson = JSON.parse(
|
|
|
12
12
|
readFileSync(safePath.resolve(__dirname, '../package.json'), 'utf-8'));
|
|
13
13
|
export const version = packageJson.version;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* The version line alone: `<ver>` plus whatever the cwd-derived context adds.
|
|
16
|
+
*
|
|
17
|
+
* Kept private because it is exactly the string that could not identify a
|
|
18
|
+
* binary — `global` and "no context" both collapse to a bare `<ver>`.
|
|
16
19
|
*/
|
|
17
|
-
|
|
20
|
+
function formatVersionLine(ver, context) {
|
|
18
21
|
if (!context) {
|
|
19
22
|
return ver;
|
|
20
23
|
}
|
|
@@ -27,4 +30,30 @@ export function getVersionString(ver, context) {
|
|
|
27
30
|
return ver;
|
|
28
31
|
}
|
|
29
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Format the `--version` output: the version line, then the resolved path of
|
|
35
|
+
* the binary that produced it.
|
|
36
|
+
*
|
|
37
|
+
* **Why the binary path is unconditional.** The `-dev (<path>)` suffix is
|
|
38
|
+
* CWD-derived: `bin/vat.ts` computes its context from
|
|
39
|
+
* `findNodeWorkspaceRoot(process.cwd())`, so the *same* branch build invoked by
|
|
40
|
+
* absolute path from an adopter checkout resolves `Context: global` and printed
|
|
41
|
+
* a bare `0.1.41-rc.8` — byte-identical to what the released rc.8 prints. The
|
|
42
|
+
* only way to tell them apart was `VAT_DEBUG=1` plus knowing to look for the
|
|
43
|
+
* `Binary:` line. Every adopter delta test runs in exactly that directory, so
|
|
44
|
+
* the identity check the whole testing protocol depends on was unperformable
|
|
45
|
+
* where the tests actually run.
|
|
46
|
+
*
|
|
47
|
+
* `binaryPath` is a property of what ACTUALLY ran (derived from the entry
|
|
48
|
+
* module's own `import.meta.filename`, not from the cwd), which is why it can
|
|
49
|
+
* answer the question the context label cannot. It is a required parameter on
|
|
50
|
+
* purpose: a defaulted one would let a caller be added that silently ships the
|
|
51
|
+
* old, unidentifiable output.
|
|
52
|
+
*
|
|
53
|
+
* The version stays on line 1 so `--version` output still matches
|
|
54
|
+
* `/^\d+\.\d+\.\d+/`; the provenance is appended, never prepended.
|
|
55
|
+
*/
|
|
56
|
+
export function getVersionString(ver, context, binaryPath) {
|
|
57
|
+
return `${formatVersionLine(ver, context)}\n binary: ${binaryPath}`;
|
|
58
|
+
}
|
|
30
59
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAG,OAAO,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK;AAC5B,wIAAwI;AACxI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC;AAOnD
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAG,OAAO,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK;AAC5B,wIAAwI;AACxI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC;AAOnD;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,OAA8B;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,GAAG,GAAG,SAAS,OAAO,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACrD,KAAK,OAAO;YACV,OAAO,GAAG,GAAG,YAAY,OAAO,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACxD,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,OAA8B,EAC9B,UAAkB;IAElB,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,UAAU,EAAE,CAAC;AACvE,CAAC"}
|
package/docs/index.md
CHANGED
|
@@ -360,6 +360,18 @@ The `vat` wrapper automatically detects your execution context:
|
|
|
360
360
|
- Uses development build directly (no packaging)
|
|
361
361
|
- Works from any subdirectory within the repo
|
|
362
362
|
|
|
363
|
+
`vat --version` always prints a second line naming the binary that produced it:
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
0.1.0-rc.9-dev (/path/to/repo)
|
|
367
|
+
binary: /path/to/repo/packages/cli/dist/bin.js
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
The context label on the first line is derived from your current directory; the `binary:` line is
|
|
371
|
+
derived from the file Node actually loaded. Run a checkout's build by absolute path from somewhere
|
|
372
|
+
else and the label reads `global` — the `binary:` line is then the only thing that tells you which
|
|
373
|
+
build you ran.
|
|
374
|
+
|
|
363
375
|
**Local install** - Project has vibe-agent-toolkit in node_modules:
|
|
364
376
|
- Uses locally installed version
|
|
365
377
|
- Shown in version output: `0.1.0-rc.9 (local: /path/to/project)`
|
package/docs/rag.md
CHANGED
|
@@ -36,10 +36,15 @@ vat rag clear
|
|
|
36
36
|
5. Supports incremental updates (skips files with unchanged content)
|
|
37
37
|
|
|
38
38
|
**Path Argument Behavior:**
|
|
39
|
-
- `[path]`
|
|
40
|
-
- Recursively finds all `*.md` files under that directory
|
|
41
|
-
-
|
|
42
|
-
-
|
|
39
|
+
- `[path]` restricts the crawl to that subtree of the project
|
|
40
|
+
- Recursively finds all `*.md` / `*.html` files under that directory
|
|
41
|
+
- The path **replaces** the config's `resources.include` patterns
|
|
42
|
+
- The config's `resources.exclude` patterns **still apply**, so a path run never
|
|
43
|
+
indexes build output or vendored trees the project excluded
|
|
44
|
+
- If the path lies outside the project root the config's patterns cannot apply;
|
|
45
|
+
they are dropped and a warning is printed
|
|
46
|
+
- To index the project's full configured set, run without a path argument:
|
|
47
|
+
`vat rag index`
|
|
43
48
|
|
|
44
49
|
**Options:**
|
|
45
50
|
- `[path]` - Base directory to crawl (defaults to current directory)
|