@vibe-agent-toolkit/cli 0.1.39-rc.11 → 0.1.39-rc.13

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 (51) hide show
  1. package/dist/commands/audit/provenance.d.ts +1 -1
  2. package/dist/commands/audit/provenance.d.ts.map +1 -1
  3. package/dist/commands/audit/provenance.js +4 -1
  4. package/dist/commands/audit/provenance.js.map +1 -1
  5. package/dist/commands/audit.d.ts.map +1 -1
  6. package/dist/commands/audit.js +9 -106
  7. package/dist/commands/audit.js.map +1 -1
  8. package/dist/commands/claude/plugin/build.d.ts +39 -0
  9. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  10. package/dist/commands/claude/plugin/build.js +81 -77
  11. package/dist/commands/claude/plugin/build.js.map +1 -1
  12. package/dist/commands/consistency-check.d.ts +8 -3
  13. package/dist/commands/consistency-check.d.ts.map +1 -1
  14. package/dist/commands/consistency-check.js +29 -6
  15. package/dist/commands/consistency-check.js.map +1 -1
  16. package/dist/commands/corpus/seed.d.ts +12 -12
  17. package/dist/commands/skill/review.d.ts.map +1 -1
  18. package/dist/commands/skill/review.js +6 -39
  19. package/dist/commands/skill/review.js.map +1 -1
  20. package/dist/commands/skill/test/run.d.ts +25 -0
  21. package/dist/commands/skill/test/run.d.ts.map +1 -1
  22. package/dist/commands/skill/test/run.js +134 -45
  23. package/dist/commands/skill/test/run.js.map +1 -1
  24. package/dist/commands/skills/build.d.ts.map +1 -1
  25. package/dist/commands/skills/build.js +4 -23
  26. package/dist/commands/skills/build.js.map +1 -1
  27. package/dist/commands/verify.d.ts +20 -0
  28. package/dist/commands/verify.d.ts.map +1 -1
  29. package/dist/commands/verify.js +51 -20
  30. package/dist/commands/verify.js.map +1 -1
  31. package/dist/skill-resolution/classify.d.ts +28 -0
  32. package/dist/skill-resolution/classify.d.ts.map +1 -0
  33. package/dist/skill-resolution/classify.js +58 -0
  34. package/dist/skill-resolution/classify.js.map +1 -0
  35. package/dist/skill-resolution/index.d.ts +5 -0
  36. package/dist/skill-resolution/index.d.ts.map +1 -0
  37. package/dist/skill-resolution/index.js +4 -0
  38. package/dist/skill-resolution/index.js.map +1 -0
  39. package/dist/skill-resolution/packaging-config.d.ts +31 -0
  40. package/dist/skill-resolution/packaging-config.d.ts.map +1 -0
  41. package/dist/skill-resolution/packaging-config.js +72 -0
  42. package/dist/skill-resolution/packaging-config.js.map +1 -0
  43. package/dist/skill-resolution/resolve-skill-reference.d.ts +3 -0
  44. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -0
  45. package/dist/skill-resolution/resolve-skill-reference.js +106 -0
  46. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -0
  47. package/dist/skill-resolution/types.d.ts +59 -0
  48. package/dist/skill-resolution/types.d.ts.map +1 -0
  49. package/dist/skill-resolution/types.js +7 -0
  50. package/dist/skill-resolution/types.js.map +1 -0
  51. package/package.json +11 -11
@@ -13,4 +13,24 @@ export interface VerifyCommandOptions {
13
13
  debug?: boolean;
14
14
  }
15
15
  export declare function createVerifyTopLevelCommand(): Command;
16
+ /** Result of checking files config dests for a single (skill, outputDir) pair */
17
+ export interface FilesDestCheckResult {
18
+ skillName: string;
19
+ /** The actual output directory that was checked (pool dir or plugin-tree dir). */
20
+ outputDir: string;
21
+ missing: string[];
22
+ }
23
+ /**
24
+ * Check that all dest paths from the merged files config exist in the built output.
25
+ *
26
+ * Checks each skill's dests in the location(s) where `vat build` actually wrote them:
27
+ * - Pool skills: `dist/skills/<fsName>/` (only when that dir exists)
28
+ * - Tree-copy skills: `dist/.claude/plugins/.../skills/<name>/` (only when that dir exists)
29
+ *
30
+ * A dest is "missing" ONLY when absent from a candidate dir that exists. If a skill
31
+ * has no existing candidate dir, it is not reported (build didn't run for that mode).
32
+ *
33
+ * @returns One result per (skill, outputDir) pair where dests are absent.
34
+ */
35
+ export declare function checkFilesConfigDests(cwd: string): FilesDestCheckResult[];
16
36
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CA4CrD"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CA4CrD;AAED,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAwCD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA8CzE"}
@@ -8,7 +8,7 @@
8
8
  * 4. consistency check (skill distribution integrity — package.json, plugin assignment)
9
9
  */
10
10
  import { existsSync } from 'node:fs';
11
- import { mergeFilesConfig } from '@vibe-agent-toolkit/agent-skills';
11
+ import { computeTreeCopiedSkillLocations, mergeFilesConfig } from '@vibe-agent-toolkit/agent-skills';
12
12
  import { safePath } from '@vibe-agent-toolkit/utils';
13
13
  import { Command } from 'commander';
14
14
  import { handleCommandError } from '../utils/command-error.js';
@@ -66,31 +66,62 @@ Example:
66
66
  function skillNameToFsPath(name) {
67
67
  return name.replaceAll(':', '__');
68
68
  }
69
+ /**
70
+ * Register a check for (skillName, outputDir, mergedFiles) in the dedup map.
71
+ *
72
+ * Skips silently if:
73
+ * - mergedFiles is empty (no entries to verify)
74
+ * - outputDir does not exist on disk (not a candidate)
75
+ * - the key was already added (dedup guard)
76
+ */
77
+ function tryAddCheckEntry(checks, skillName, outputDir, mergedFiles) {
78
+ if (mergedFiles.length === 0)
79
+ return;
80
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- outputDir is resolved from config, not user input
81
+ if (!existsSync(outputDir))
82
+ return;
83
+ const key = `${skillName}\0${outputDir}`;
84
+ if (!checks.has(key)) {
85
+ checks.set(key, { skillName, outputDir, mergedFiles });
86
+ }
87
+ }
69
88
  /**
70
89
  * Check that all dest paths from the merged files config exist in the built output.
71
- * Returns one result per skill that has files config entries.
90
+ *
91
+ * Checks each skill's dests in the location(s) where `vat build` actually wrote them:
92
+ * - Pool skills: `dist/skills/<fsName>/` (only when that dir exists)
93
+ * - Tree-copy skills: `dist/.claude/plugins/.../skills/<name>/` (only when that dir exists)
94
+ *
95
+ * A dest is "missing" ONLY when absent from a candidate dir that exists. If a skill
96
+ * has no existing candidate dir, it is not reported (build didn't run for that mode).
97
+ *
98
+ * @returns One result per (skill, outputDir) pair where dests are absent.
72
99
  */
73
- function checkFilesConfigDests(cwd) {
100
+ export function checkFilesConfigDests(cwd) {
74
101
  try {
75
102
  const config = loadConfig(cwd);
76
- if (!config?.skills?.config && !config?.skills?.defaults?.files) {
103
+ if (!config)
77
104
  return [];
78
- }
79
105
  const skillsConfig = config.skills;
80
- const results = [];
81
- // Collect all skill names from config
82
- const skillNames = Object.keys(skillsConfig.config ?? {});
83
- // Also check defaults-only (no per-skill config) — but we need skill names for output paths.
84
- // If there's no per-skill config we can't know which skills to check without discovery,
85
- // so we only check skills that are explicitly listed in config.
86
- for (const skillName of skillNames) {
87
- const perSkill = skillsConfig.config?.[skillName];
88
- const defaults = skillsConfig.defaults;
106
+ const defaults = skillsConfig?.defaults;
107
+ // Dedup map: key = `skillName\0outputDir` → check entry
108
+ const checks = new Map();
109
+ // --- Pool/config skills: candidate dir is dist/skills/<fsName> ---
110
+ for (const skillName of Object.keys(skillsConfig?.config ?? {})) {
111
+ const perSkill = skillsConfig?.config?.[skillName];
89
112
  const mergedFiles = mergeFilesConfig(defaults?.files, perSkill?.files);
90
- if (mergedFiles.length === 0) {
91
- continue;
92
- }
93
113
  const outputDir = safePath.resolve(cwd, 'dist', 'skills', skillNameToFsPath(skillName));
114
+ tryAddCheckEntry(checks, skillName, outputDir, mergedFiles);
115
+ }
116
+ // --- Tree-copy skills: candidate dirs are plugin output skill dirs ---
117
+ for (const loc of computeTreeCopiedSkillLocations(config, cwd)) {
118
+ const perSkill = skillsConfig?.config?.[loc.skillDirName];
119
+ const mergedFiles = mergeFilesConfig(defaults?.files, perSkill?.files);
120
+ tryAddCheckEntry(checks, loc.skillDirName, loc.skillOutputDir, mergedFiles);
121
+ }
122
+ // --- Run each pending check and collect results ---
123
+ const results = [];
124
+ for (const { skillName, outputDir, mergedFiles } of checks.values()) {
94
125
  const missing = [];
95
126
  for (const entry of mergedFiles) {
96
127
  const destPath = safePath.resolve(outputDir, entry.dest);
@@ -100,7 +131,7 @@ function checkFilesConfigDests(cwd) {
100
131
  }
101
132
  }
102
133
  if (missing.length > 0) {
103
- results.push({ skillName, missing });
134
+ results.push({ skillName, outputDir, missing });
104
135
  }
105
136
  }
106
137
  return results;
@@ -130,8 +161,8 @@ function getClaudeMarketplaceNames() {
130
161
  */
131
162
  function reportFilesDestErrors(results, logger) {
132
163
  logger.error('\n▶ Phase: files-config-dests');
133
- for (const { skillName, missing } of results) {
134
- logger.error(` Skill '${skillName}': missing dest file(s) in dist/skills/${skillNameToFsPath(skillName)}/:`);
164
+ for (const { skillName, outputDir, missing } of results) {
165
+ logger.error(` Skill '${skillName}': missing dest file(s) in ${outputDir}/:`);
135
166
  for (const dest of missing) {
136
167
  logger.error(` - ${dest}`);
137
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAyB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAgC,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAOvE,MAAM,UAAU,2BAA2B;IACzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEtC,OAAO;SACJ,WAAW,CAAC,mGAAmG,CAAC;SAChH,MAAM,CAAC,gBAAgB,EAAE,2EAA2E,CAAC;SACrG,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,qBAAqB,CAAC;SAC7B,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BL,CACI,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AASD;;;;;;;GAOG;AACH,SAAS,gBAAgB,CACvB,MAA+B,EAC/B,SAAiB,EACjB,SAAiB,EACjB,WAAgD;IAEhD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACrC,wHAAwH;IACxH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO;IACnC,MAAM,GAAG,GAAG,GAAG,SAAS,KAAK,SAAS,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,YAAY,EAAE,QAAQ,CAAC;QAExC,wDAAwD;QACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE7C,oEAAoE;QACpE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACxF,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,CAAC;QAED,wEAAwE;QACxE,KAAK,MAAM,GAAG,IAAI,+BAA+B,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAC/D,MAAM,QAAQ,GAAG,YAAY,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvE,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC9E,CAAC;QAED,qDAAqD;QACrD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpE,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzD,oGAAoG;gBACpG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACjC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,OAA+B,EAC/B,MAAuC;IAEvC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC9C,KAAK,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,YAAY,SAAS,8BAA8B,SAAS,IAAI,CAAC,CAAC;QAC/E,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,MAA0B,EAC1B,MAAuC;IAEvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAE1D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAA6B;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,wEAAwE;QACxE,MAAM,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,oBAAoB,GAAG,qCAAqC,IAAI,EAAE,CAAC;YACzE,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,eAAe,IAAI,EAAE;gBAC3B,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,CAAC;aAClE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAuC,EACvC,YAA2B;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAExF,IAAI,iBAAiB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,uBAAuB,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAClF,uBAAuB,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAA6B;IAChE,gDAAgD;IAChD,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEvC,iFAAiF;IACjF,8DAA8D;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAC,IAAI,IAAI,EAAE,6DAA6D,CAAC,CAAC;IACrH,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEhF,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAEhE,6EAA6E;QAC7E,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,SAAS,GAAG,IAAI,CAAC;gBACjB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;gBAChD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QAED,8FAA8F;QAC9F,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjF,MAAM,oBAAoB,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC7E,IAAI,oBAAoB,EAAE,CAAC;gBACzB,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,eAAe,CAAC;YACd,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACvC,MAAM,EAAE,YAAY;YACpB,QAAQ,EAAE,GAAG,QAAQ,IAAI;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { SkillSource } from '@vibe-agent-toolkit/agent-skills';
2
+ /**
3
+ * Parse the `kind:value` source half of a reference (also used by `--with`).
4
+ * Grammar: `vendored` | `workspace:<x>` | `npm:<x>` | `url:<x>` | `path:<x>`.
5
+ * (No `sha256` here — it arrives only via config descriptors, matching the
6
+ * pre-existing `--with` grammar.)
7
+ */
8
+ export declare function parseSourceSpec(src: string): SkillSource;
9
+ /** Syntactic shape of a reference token (pure ladder rule 1). */
10
+ export type TokenShape = {
11
+ shape: 'source-spec';
12
+ source: SkillSource;
13
+ } | {
14
+ shape: 'definite-path';
15
+ } | {
16
+ shape: 'bare-name';
17
+ token: string;
18
+ };
19
+ /**
20
+ * Classify a reference token's syntactic shape (no IO):
21
+ * - a `kind:` prefix / `vendored` → `source-spec`
22
+ * - absolute, or contains a path separator, or starts with `.` → `definite-path`
23
+ * (ladder rule 1: "always a path; never name-resolved" — incl. the `./<name>`
24
+ * escape that forces a colliding local dir over a declared skill)
25
+ * - otherwise a bare word → `bare-name` (resolved against config + fs by the caller)
26
+ */
27
+ export declare function classifyToken(ref: string): TokenShape;
28
+ //# sourceMappingURL=classify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/classify.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAKpE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAmBxD;AAED,iEAAiE;AACjE,MAAM,MAAM,UAAU,GAClB;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC7C;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,GAC1B;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAS1C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOrD"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * PURE classification of a skill reference token — no filesystem, no config.
3
+ * The IO-bound disambiguation (existing-dir vs declared-skill) lives in
4
+ * {@link resolveSkillReference}; this module decides only the *syntactic* shape.
5
+ */
6
+ import { isAbsolute } from 'node:path';
7
+ import { toForwardSlash } from '@vibe-agent-toolkit/utils';
8
+ const SOURCE_KINDS = new Set(['workspace', 'npm', 'url', 'path']);
9
+ /**
10
+ * Parse the `kind:value` source half of a reference (also used by `--with`).
11
+ * Grammar: `vendored` | `workspace:<x>` | `npm:<x>` | `url:<x>` | `path:<x>`.
12
+ * (No `sha256` here — it arrives only via config descriptors, matching the
13
+ * pre-existing `--with` grammar.)
14
+ */
15
+ export function parseSourceSpec(src) {
16
+ if (src === 'vendored')
17
+ return { vendored: true };
18
+ const colon = src.indexOf(':');
19
+ const kind = colon === -1 ? src : src.slice(0, colon);
20
+ const value = colon === -1 ? '' : src.slice(colon + 1);
21
+ if (!SOURCE_KINDS.has(kind)) {
22
+ throw new Error(`skill source must be workspace:|npm:|url:|path:|vendored. Got: ${src}`);
23
+ }
24
+ if (value === '') {
25
+ throw new Error(`skill source is missing a value: ${src}`);
26
+ }
27
+ switch (kind) {
28
+ case 'workspace': return { workspace: value };
29
+ case 'npm': return { npm: value };
30
+ case 'url': return { url: value };
31
+ default: return { path: value };
32
+ }
33
+ }
34
+ /** True when the token carries a recognized `kind:` prefix or is `vendored`. */
35
+ function isSourceSpec(ref) {
36
+ if (ref === 'vendored')
37
+ return true;
38
+ const colon = ref.indexOf(':');
39
+ return colon > 0 && SOURCE_KINDS.has(ref.slice(0, colon));
40
+ }
41
+ /**
42
+ * Classify a reference token's syntactic shape (no IO):
43
+ * - a `kind:` prefix / `vendored` → `source-spec`
44
+ * - absolute, or contains a path separator, or starts with `.` → `definite-path`
45
+ * (ladder rule 1: "always a path; never name-resolved" — incl. the `./<name>`
46
+ * escape that forces a colliding local dir over a declared skill)
47
+ * - otherwise a bare word → `bare-name` (resolved against config + fs by the caller)
48
+ */
49
+ export function classifyToken(ref) {
50
+ if (isSourceSpec(ref))
51
+ return { shape: 'source-spec', source: parseSourceSpec(ref) };
52
+ const fwd = toForwardSlash(ref);
53
+ if (isAbsolute(ref) || fwd.includes('/') || fwd.startsWith('.')) {
54
+ return { shape: 'definite-path' };
55
+ }
56
+ return { shape: 'bare-name', token: ref };
57
+ }
58
+ //# sourceMappingURL=classify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/skill-resolution/classify.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,kEAAkE,GAAG,EAAE,CACxE,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9C,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAClC,KAAK,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAQD,gFAAgF;AAChF,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,KAAK,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,YAAY,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IACrF,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { resolveSkillReference } from './resolve-skill-reference.js';
2
+ export { classifyToken, parseSourceSpec } from './classify.js';
3
+ export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
4
+ export type { BuildableReference, SkillDistribution, SkillReference } from './types.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { resolveSkillReference } from './resolve-skill-reference.js';
2
+ export { classifyToken, parseSourceSpec } from './classify.js';
3
+ export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared per-skill packaging-config resolution.
3
+ *
4
+ * The nearest-ancestor config walk-up that {@link resolveSkillReference},
5
+ * `vat audit`, and `vat skill review` all use to resolve a single SKILL.md to
6
+ * its governing `skills.config` block. Lives here (not in audit) because three
7
+ * commands depend on it; future CLI work extends THIS, not a fourth copy.
8
+ *
9
+ * Does NOT compose configs across VAT projects — only the nearest-ancestor
10
+ * `vibe-agent-toolkit.config.yaml` contributes.
11
+ */
12
+ import type { SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
13
+ import { type loadConfig } from '../utils/config-loader.js';
14
+ /** Clear the per-root discovery cache (call when fixtures mutate between in-process runs). */
15
+ export declare function resetSkillDiscoveryCache(): void;
16
+ export declare function getDiscoveredSkillsByPath(skillsSection: NonNullable<ReturnType<typeof loadConfig>>['skills'], configRoot: string): Promise<Map<string, string>>;
17
+ /**
18
+ * Resolve the merged packaging config for one SKILL.md by walking UP to its
19
+ * nearest-ancestor config and matching the skill by absolute path. Returns the
20
+ * FULL merge (`skills.defaults` + `skills.config[name]`, keeping
21
+ * `validation.allow`). `null` when there is no governing config, no `skills`
22
+ * section, or the skill is not declared (wild mode).
23
+ */
24
+ export declare function resolveSkillPackagingConfig(skillPath: string): Promise<SkillPackagingConfig | null>;
25
+ /**
26
+ * Audit's display variant: keep `validation.severity`, drop `validation.allow`
27
+ * (audit shows every finding, including ones an `allow` entry would suppress).
28
+ * Drops `validation` entirely when no severity is present.
29
+ */
30
+ export declare function stripValidationAllowForDisplay(config: SkillPackagingConfig): SkillPackagingConfig;
31
+ //# sourceMappingURL=packaging-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packaging-config.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAI7E,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAM9E,8FAA8F;AAC9F,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAsB,yBAAyB,CAC7C,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnE,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAY9B;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAsBtC;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAYjG"}
@@ -0,0 +1,72 @@
1
+ import { findProjectRoot, safePath } from '@vibe-agent-toolkit/utils';
2
+ import { discoverSkillsFromConfig } from '../commands/skills/skill-discovery.js';
3
+ import { loadConfigCached } from '../utils/config-loader.js';
4
+ import { mergeSkillPackagingConfig } from '../utils/skill-packaging-config.js';
5
+ /** configRoot → (abs SKILL.md path → declared skill name). One expansion per root. */
6
+ const skillDiscoveryCache = new Map();
7
+ /** Clear the per-root discovery cache (call when fixtures mutate between in-process runs). */
8
+ export function resetSkillDiscoveryCache() {
9
+ skillDiscoveryCache.clear();
10
+ }
11
+ export async function getDiscoveredSkillsByPath(skillsSection, configRoot) {
12
+ const cached = skillDiscoveryCache.get(configRoot);
13
+ if (cached !== undefined)
14
+ return cached;
15
+ const map = new Map();
16
+ if (skillsSection !== undefined) {
17
+ const discovered = await discoverSkillsFromConfig(skillsSection, configRoot);
18
+ for (const entry of discovered) {
19
+ map.set(safePath.resolve(entry.sourcePath), entry.name);
20
+ }
21
+ }
22
+ skillDiscoveryCache.set(configRoot, map);
23
+ return map;
24
+ }
25
+ /**
26
+ * Resolve the merged packaging config for one SKILL.md by walking UP to its
27
+ * nearest-ancestor config and matching the skill by absolute path. Returns the
28
+ * FULL merge (`skills.defaults` + `skills.config[name]`, keeping
29
+ * `validation.allow`). `null` when there is no governing config, no `skills`
30
+ * section, or the skill is not declared (wild mode).
31
+ */
32
+ export async function resolveSkillPackagingConfig(skillPath) {
33
+ const absSkillPath = safePath.resolve(skillPath);
34
+ const skillDir = safePath.resolve(safePath.join(absSkillPath, '..'));
35
+ const projectRoot = findProjectRoot(skillDir);
36
+ if (projectRoot === null)
37
+ return null;
38
+ const config = loadConfigCached(projectRoot);
39
+ if (config?.skills === undefined)
40
+ return null;
41
+ let matchedName;
42
+ try {
43
+ const byPath = await getDiscoveredSkillsByPath(config.skills, projectRoot);
44
+ matchedName = byPath.get(absSkillPath);
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ if (matchedName === undefined)
50
+ return null;
51
+ const { defaults, config: perSkillConfig } = config.skills;
52
+ return mergeSkillPackagingConfig(defaults, perSkillConfig?.[matchedName]);
53
+ }
54
+ /**
55
+ * Audit's display variant: keep `validation.severity`, drop `validation.allow`
56
+ * (audit shows every finding, including ones an `allow` entry would suppress).
57
+ * Drops `validation` entirely when no severity is present.
58
+ */
59
+ export function stripValidationAllowForDisplay(config) {
60
+ const out = {};
61
+ for (const [key, value] of Object.entries(config)) {
62
+ if (value !== undefined && key !== 'validation') {
63
+ out[key] = value;
64
+ }
65
+ }
66
+ const validation = config.validation;
67
+ if (validation?.severity !== undefined) {
68
+ out['validation'] = { severity: validation.severity };
69
+ }
70
+ return out;
71
+ }
72
+ //# sourceMappingURL=packaging-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packaging-config.js","sourceRoot":"","sources":["../../src/skill-resolution/packaging-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SkillReference } from './types.js';
2
+ export declare function resolveSkillReference(ref: string, cwd: string): Promise<SkillReference>;
3
+ //# sourceMappingURL=resolve-skill-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-skill-reference.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/resolve-skill-reference.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,EAAyC,cAAc,EAAE,MAAM,YAAY,CAAC;AAOxF,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CA+C7F"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * resolveSkillReference — the project-aware front door for resolving a skill
3
+ * reference (the `vat skill test run` subject; also the shared classifier `audit`
4
+ * and `skill review` build on for per-skill config).
5
+ *
6
+ * THIS IS THE CANONICAL ENTRY POINT for "take a skill by name or path." Route
7
+ * every command that accepts a skill reference through it (mirrors the
8
+ * `resolveAssetReference` rule for config file references). Do NOT write a
9
+ * parallel path-only resolver — that is the bug this module exists to prevent.
10
+ *
11
+ * Accepted grammar (subject and `--with` share it):
12
+ * <bare-name> | <path> | workspace:<pkg> | npm:<spec> | url:<u> | path:<dir> | vendored
13
+ *
14
+ * Two-consumer contract:
15
+ * - `vat skill test` calls this directly and BUILDS `buildable` results, then
16
+ * stages + tests the dist.
17
+ * - `audit` / `skill review` use {@link resolveSkillPackagingConfig} (re-exported
18
+ * here) to classify + validate SOURCE; they never materialize a build.
19
+ * Callers should support the FULL surface, not narrow to paths.
20
+ *
21
+ * Disambiguation ladder:
22
+ * 1. kind-prefixed / `vendored` → { kind: 'source', source }
23
+ * 2. absolute / has `/` / starts `.` → { kind: 'source', source: { path } } (as-is; the `./<name>` escape lands here)
24
+ * 3. bare name, no governing config → existing dir ? source : not-found
25
+ * 4. bare name matching a declared skill → buildable (preferred even on a dir collision; note the `./` escape)
26
+ * 5. bare name, undeclared, existing dir → { kind: 'source', source: { path } }
27
+ * 6. bare name, undeclared, not a dir → name-miss
28
+ *
29
+ * PURE LOOKUP/CLASSIFICATION — no side effects, no build. Build is the caller's job.
30
+ */
31
+ import { existsSync } from 'node:fs';
32
+ import { findDistributedSkillLocationBySource, skillNameToFsPath, } from '@vibe-agent-toolkit/agent-skills';
33
+ import { findProjectRoot, safePath } from '@vibe-agent-toolkit/utils';
34
+ import { loadConfigCached } from '../utils/config-loader.js';
35
+ import { classifyToken } from './classify.js';
36
+ import { getDiscoveredSkillsByPath, resolveSkillPackagingConfig } from './packaging-config.js';
37
+ function existingDir(p) {
38
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- user-supplied reference
39
+ return existsSync(p);
40
+ }
41
+ export async function resolveSkillReference(ref, cwd) {
42
+ const shape = classifyToken(ref);
43
+ if (shape.shape === 'source-spec')
44
+ return { kind: 'source', source: shape.source };
45
+ if (shape.shape === 'definite-path')
46
+ return { kind: 'source', source: { path: ref } };
47
+ // bare-name: needs config + fs.
48
+ const configRoot = findProjectRoot(cwd);
49
+ const dirCandidate = safePath.resolve(cwd, ref);
50
+ if (configRoot === null) {
51
+ return existingDir(dirCandidate)
52
+ ? { kind: 'source', source: { path: ref } }
53
+ : { kind: 'not-found', ref };
54
+ }
55
+ const config = loadConfigCached(configRoot);
56
+ if (config?.skills === undefined) {
57
+ // findProjectRoot can anchor on a bare `.git` dir with no governing VAT config
58
+ // (or a config that declares no skills). That is the spec's "wild" rung — there
59
+ // is nothing to name-resolve against, so it is an existing dir or `not-found`,
60
+ // never a name-miss.
61
+ return existingDir(dirCandidate)
62
+ ? { kind: 'source', source: { path: ref } }
63
+ : { kind: 'not-found', ref };
64
+ }
65
+ const byName = new Map(); // name → abs SKILL.md path
66
+ const byPath = await getDiscoveredSkillsByPath(config.skills, configRoot);
67
+ for (const [skillMdPath, name] of byPath.entries())
68
+ byName.set(name, skillMdPath);
69
+ const sourcePath = byName.get(ref);
70
+ if (sourcePath !== undefined) {
71
+ if (existingDir(dirCandidate)) {
72
+ process.stderr.write(`note: '${ref}' matched a declared skill; testing its built dist. Use './${ref}' to test the local directory as-is.\n`);
73
+ }
74
+ return buildBuildable(ref, sourcePath, configRoot, config);
75
+ }
76
+ if (existingDir(dirCandidate))
77
+ return { kind: 'source', source: { path: ref } };
78
+ return {
79
+ kind: 'name-miss',
80
+ name: ref,
81
+ configRoot,
82
+ knownSkills: [...byName.keys()].sort((a, b) => a.localeCompare(b)),
83
+ };
84
+ }
85
+ async function buildBuildable(name, sourcePath, configRoot, config) {
86
+ const packagingConfig = (await resolveSkillPackagingConfig(sourcePath)) ?? {};
87
+ const skillDir = safePath.resolve(safePath.join(safePath.resolve(sourcePath), '..'));
88
+ const location = findDistributedSkillLocationBySource(config, configRoot, skillDir);
89
+ let distribution;
90
+ let expectedDistDir;
91
+ if (location === undefined) {
92
+ distribution = { kind: 'pool' };
93
+ expectedDistDir = safePath.join(configRoot, 'dist', 'skills', skillNameToFsPath(name));
94
+ }
95
+ else {
96
+ distribution = {
97
+ kind: 'plugin-local',
98
+ marketplaceName: location.marketplaceName,
99
+ pluginName: location.pluginName,
100
+ skillDirName: location.skillDirName,
101
+ };
102
+ expectedDistDir = location.skillOutputDir;
103
+ }
104
+ return { kind: 'buildable', name, sourcePath, configRoot, packagingConfig, distribution, expectedDistDir };
105
+ }
106
+ //# sourceMappingURL=resolve-skill-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-skill-reference.js","sourceRoot":"","sources":["../../src/skill-resolution/resolve-skill-reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Result of resolving a skill reference (a CLI subject like `my-skill`,
3
+ * `./dist/skills/x`, or `npm:@scope/s@1.2.3`). See {@link resolveSkillReference}
4
+ * for the full grammar and the disambiguation ladder.
5
+ */
6
+ import type { SkillPackagingConfig, SkillSource } from '@vibe-agent-toolkit/agent-skills';
7
+ /** Where `vat build` places a declared skill's output. */
8
+ export type SkillDistribution =
9
+ /** Pool skill: built by `packageSkill` to `dist/skills/<fsSafeName>`. */
10
+ {
11
+ kind: 'pool';
12
+ }
13
+ /** Plugin-local tree-copy skill: shipped via `vat claude plugin build`. */
14
+ | {
15
+ kind: 'plugin-local';
16
+ marketplaceName: string;
17
+ pluginName: string;
18
+ skillDirName: string;
19
+ };
20
+ /**
21
+ * A project-local reference (a bare NAME matching a declared skill) that must be
22
+ * BUILT and then tested from its dist. The new path this plan adds.
23
+ */
24
+ export interface BuildableReference {
25
+ kind: 'buildable';
26
+ /** The declared skill name. */
27
+ name: string;
28
+ /** Absolute path to the skill's authored SKILL.md (the build input). */
29
+ sourcePath: string;
30
+ /** Absolute path to the governing config root (holds vibe-agent-toolkit.config.yaml). */
31
+ configRoot: string;
32
+ /** Merged packaging config (defaults + per-skill), used to drive the build. */
33
+ packagingConfig: SkillPackagingConfig;
34
+ /** How/where this skill ships. */
35
+ distribution: SkillDistribution;
36
+ /** Absolute dir where the build places the skill (what gets staged + tested). */
37
+ expectedDistDir: string;
38
+ }
39
+ /**
40
+ * The full result union of {@link resolveSkillReference}.
41
+ *
42
+ * - `buildable` → build (real entry points), then test the dist.
43
+ * - `source` → test the tree as-is (already-built dist, external, or undeclared).
44
+ * - `name-miss` → a bare name in a project that declares no such skill (error).
45
+ * - `not-found` → not a path and no governing config to resolve a name (error).
46
+ */
47
+ export type SkillReference = BuildableReference | {
48
+ kind: 'source';
49
+ source: SkillSource;
50
+ } | {
51
+ kind: 'name-miss';
52
+ name: string;
53
+ configRoot: string;
54
+ knownSkills: string[];
55
+ } | {
56
+ kind: 'not-found';
57
+ ref: string;
58
+ };
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE1F,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB;AAC3B,yEAAyE;AACvE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;AAClB,2EAA2E;GACzE;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,UAAU,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,EAAE,oBAAoB,CAAC;IACtC,kCAAkC;IAClC,YAAY,EAAE,iBAAiB,CAAC;IAChC,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Result of resolving a skill reference (a CLI subject like `my-skill`,
3
+ * `./dist/skills/x`, or `npm:@scope/s@1.2.3`). See {@link resolveSkillReference}
4
+ * for the full grammar and the disambiguation ladder.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skill-resolution/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}