@vibe-agent-toolkit/cli 0.1.41-rc.6 → 0.1.41-rc.8

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 (199) hide show
  1. package/README.md +4 -3
  2. package/dist/bin/vat +25 -2
  3. package/dist/bin/vat.js +25 -2
  4. package/dist/bin/vat.js.map +1 -1
  5. package/dist/bin.js +12 -1
  6. package/dist/bin.js.map +1 -1
  7. package/dist/commands/agent/list.d.ts +11 -0
  8. package/dist/commands/agent/list.d.ts.map +1 -1
  9. package/dist/commands/agent/list.js +30 -11
  10. package/dist/commands/agent/list.js.map +1 -1
  11. package/dist/commands/audit/hierarchical-output.d.ts +6 -2
  12. package/dist/commands/audit/hierarchical-output.d.ts.map +1 -1
  13. package/dist/commands/audit/hierarchical-output.js +93 -50
  14. package/dist/commands/audit/hierarchical-output.js.map +1 -1
  15. package/dist/commands/audit-settings.d.ts +35 -0
  16. package/dist/commands/audit-settings.d.ts.map +1 -1
  17. package/dist/commands/audit-settings.js +121 -51
  18. package/dist/commands/audit-settings.js.map +1 -1
  19. package/dist/commands/audit.d.ts +97 -2
  20. package/dist/commands/audit.d.ts.map +1 -1
  21. package/dist/commands/audit.js +505 -231
  22. package/dist/commands/audit.js.map +1 -1
  23. package/dist/commands/build.d.ts +14 -0
  24. package/dist/commands/build.d.ts.map +1 -1
  25. package/dist/commands/build.js +126 -32
  26. package/dist/commands/build.js.map +1 -1
  27. package/dist/commands/claude/marketplace/license-utils.d.ts +39 -2
  28. package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
  29. package/dist/commands/claude/marketplace/license-utils.js +114 -68
  30. package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
  31. package/dist/commands/claude/marketplace/publish.js +5 -4
  32. package/dist/commands/claude/marketplace/publish.js.map +1 -1
  33. package/dist/commands/claude/marketplace/validate.d.ts +97 -0
  34. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  35. package/dist/commands/claude/marketplace/validate.js +157 -49
  36. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  37. package/dist/commands/claude/org/skills.d.ts +11 -3
  38. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  39. package/dist/commands/claude/org/skills.js +70 -20
  40. package/dist/commands/claude/org/skills.js.map +1 -1
  41. package/dist/commands/claude/org/stubs.d.ts +9 -1
  42. package/dist/commands/claude/org/stubs.d.ts.map +1 -1
  43. package/dist/commands/claude/org/stubs.js +11 -3
  44. package/dist/commands/claude/org/stubs.js.map +1 -1
  45. package/dist/commands/claude/plugin/build.d.ts +116 -0
  46. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  47. package/dist/commands/claude/plugin/build.js +173 -40
  48. package/dist/commands/claude/plugin/build.js.map +1 -1
  49. package/dist/commands/claude/plugin/marketplace-json.d.ts +36 -0
  50. package/dist/commands/claude/plugin/marketplace-json.d.ts.map +1 -0
  51. package/dist/commands/claude/plugin/marketplace-json.js +34 -0
  52. package/dist/commands/claude/plugin/marketplace-json.js.map +1 -0
  53. package/dist/commands/claude/plugin/plugin-json-merge.d.ts +30 -1
  54. package/dist/commands/claude/plugin/plugin-json-merge.d.ts.map +1 -1
  55. package/dist/commands/claude/plugin/plugin-json-merge.js +107 -14
  56. package/dist/commands/claude/plugin/plugin-json-merge.js.map +1 -1
  57. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  58. package/dist/commands/claude/plugin/tree-copy.js +0 -1
  59. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  60. package/dist/commands/corpus/report.d.ts +22 -4
  61. package/dist/commands/corpus/report.d.ts.map +1 -1
  62. package/dist/commands/corpus/report.js +1 -0
  63. package/dist/commands/corpus/report.js.map +1 -1
  64. package/dist/commands/corpus/runner.d.ts +16 -1
  65. package/dist/commands/corpus/runner.d.ts.map +1 -1
  66. package/dist/commands/corpus/runner.js +55 -48
  67. package/dist/commands/corpus/runner.js.map +1 -1
  68. package/dist/commands/doctor.d.ts +57 -8
  69. package/dist/commands/doctor.d.ts.map +1 -1
  70. package/dist/commands/doctor.js +142 -67
  71. package/dist/commands/doctor.js.map +1 -1
  72. package/dist/commands/inventory.d.ts +2 -0
  73. package/dist/commands/inventory.d.ts.map +1 -1
  74. package/dist/commands/inventory.js +45 -4
  75. package/dist/commands/inventory.js.map +1 -1
  76. package/dist/commands/phase-utils.d.ts +240 -11
  77. package/dist/commands/phase-utils.d.ts.map +1 -1
  78. package/dist/commands/phase-utils.js +352 -15
  79. package/dist/commands/phase-utils.js.map +1 -1
  80. package/dist/commands/rag/query-command.d.ts +40 -0
  81. package/dist/commands/rag/query-command.d.ts.map +1 -1
  82. package/dist/commands/rag/query-command.js +47 -20
  83. package/dist/commands/rag/query-command.js.map +1 -1
  84. package/dist/commands/resources/index.d.ts.map +1 -1
  85. package/dist/commands/resources/index.js +38 -13
  86. package/dist/commands/resources/index.js.map +1 -1
  87. package/dist/commands/resources/scan.d.ts +37 -0
  88. package/dist/commands/resources/scan.d.ts.map +1 -1
  89. package/dist/commands/resources/scan.js +47 -32
  90. package/dist/commands/resources/scan.js.map +1 -1
  91. package/dist/commands/resources/validate.d.ts +136 -1
  92. package/dist/commands/resources/validate.d.ts.map +1 -1
  93. package/dist/commands/resources/validate.js +121 -68
  94. package/dist/commands/resources/validate.js.map +1 -1
  95. package/dist/commands/skill/review.d.ts.map +1 -1
  96. package/dist/commands/skill/review.js +40 -23
  97. package/dist/commands/skill/review.js.map +1 -1
  98. package/dist/commands/skill/test/run.d.ts +1 -1
  99. package/dist/commands/skill/test/run.d.ts.map +1 -1
  100. package/dist/commands/skill/test/run.js +8 -6
  101. package/dist/commands/skill/test/run.js.map +1 -1
  102. package/dist/commands/skills/build.d.ts +140 -0
  103. package/dist/commands/skills/build.d.ts.map +1 -1
  104. package/dist/commands/skills/build.js +348 -94
  105. package/dist/commands/skills/build.js.map +1 -1
  106. package/dist/commands/skills/command-helpers.d.ts +6 -10
  107. package/dist/commands/skills/command-helpers.d.ts.map +1 -1
  108. package/dist/commands/skills/command-helpers.js +6 -22
  109. package/dist/commands/skills/command-helpers.js.map +1 -1
  110. package/dist/commands/skills/list.d.ts +18 -0
  111. package/dist/commands/skills/list.d.ts.map +1 -1
  112. package/dist/commands/skills/list.js +41 -15
  113. package/dist/commands/skills/list.js.map +1 -1
  114. package/dist/commands/skills/package.d.ts +17 -0
  115. package/dist/commands/skills/package.d.ts.map +1 -1
  116. package/dist/commands/skills/package.js +72 -43
  117. package/dist/commands/skills/package.js.map +1 -1
  118. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  119. package/dist/commands/skills/skill-discovery.js +9 -1
  120. package/dist/commands/skills/skill-discovery.js.map +1 -1
  121. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  122. package/dist/commands/skills/validate-command.js +22 -6
  123. package/dist/commands/skills/validate-command.js.map +1 -1
  124. package/dist/commands/skills/validate.d.ts +79 -0
  125. package/dist/commands/skills/validate.d.ts.map +1 -1
  126. package/dist/commands/skills/validate.js +268 -79
  127. package/dist/commands/skills/validate.js.map +1 -1
  128. package/dist/commands/validate.d.ts +18 -0
  129. package/dist/commands/validate.d.ts.map +1 -1
  130. package/dist/commands/validate.js +79 -66
  131. package/dist/commands/validate.js.map +1 -1
  132. package/dist/commands/verify.d.ts +38 -1
  133. package/dist/commands/verify.d.ts.map +1 -1
  134. package/dist/commands/verify.js +247 -84
  135. package/dist/commands/verify.js.map +1 -1
  136. package/dist/index.d.ts +1 -1
  137. package/dist/index.d.ts.map +1 -1
  138. package/dist/index.js +7 -1
  139. package/dist/index.js.map +1 -1
  140. package/dist/skill-resolution/index.d.ts +1 -1
  141. package/dist/skill-resolution/index.d.ts.map +1 -1
  142. package/dist/skill-resolution/index.js +1 -1
  143. package/dist/skill-resolution/index.js.map +1 -1
  144. package/dist/skill-resolution/packaging-config.d.ts +15 -2
  145. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  146. package/dist/skill-resolution/packaging-config.js +39 -2
  147. package/dist/skill-resolution/packaging-config.js.map +1 -1
  148. package/dist/utils/command-error.d.ts +34 -1
  149. package/dist/utils/command-error.d.ts.map +1 -1
  150. package/dist/utils/command-error.js +32 -1
  151. package/dist/utils/command-error.js.map +1 -1
  152. package/dist/utils/config-loader.d.ts.map +1 -1
  153. package/dist/utils/config-loader.js +0 -2
  154. package/dist/utils/config-loader.js.map +1 -1
  155. package/dist/utils/help-loader.d.ts +6 -2
  156. package/dist/utils/help-loader.d.ts.map +1 -1
  157. package/dist/utils/help-loader.js +9 -16
  158. package/dist/utils/help-loader.js.map +1 -1
  159. package/dist/utils/issue-anchor.d.ts +26 -0
  160. package/dist/utils/issue-anchor.d.ts.map +1 -0
  161. package/dist/utils/issue-anchor.js +39 -0
  162. package/dist/utils/issue-anchor.js.map +1 -0
  163. package/dist/utils/issue-rendering.d.ts +149 -0
  164. package/dist/utils/issue-rendering.d.ts.map +1 -0
  165. package/dist/utils/issue-rendering.js +229 -0
  166. package/dist/utils/issue-rendering.js.map +1 -0
  167. package/dist/utils/output.d.ts +80 -9
  168. package/dist/utils/output.d.ts.map +1 -1
  169. package/dist/utils/output.js +138 -23
  170. package/dist/utils/output.js.map +1 -1
  171. package/dist/utils/project-root-policy.d.ts +2 -2
  172. package/dist/utils/project-root-policy.js +2 -2
  173. package/dist/utils/relativize-paths.d.ts +45 -0
  174. package/dist/utils/relativize-paths.d.ts.map +1 -0
  175. package/dist/utils/relativize-paths.js +67 -0
  176. package/dist/utils/relativize-paths.js.map +1 -0
  177. package/dist/utils/resource-loader.d.ts +21 -2
  178. package/dist/utils/resource-loader.d.ts.map +1 -1
  179. package/dist/utils/resource-loader.js +85 -11
  180. package/dist/utils/resource-loader.js.map +1 -1
  181. package/dist/utils/skill-packaging-config.d.ts +22 -1
  182. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  183. package/dist/utils/skill-packaging-config.js +26 -0
  184. package/dist/utils/skill-packaging-config.js.map +1 -1
  185. package/dist/utils/validate-help-files.d.ts +3 -2
  186. package/dist/utils/validate-help-files.d.ts.map +1 -1
  187. package/dist/utils/validate-help-files.js +48 -5
  188. package/dist/utils/validate-help-files.js.map +1 -1
  189. package/dist/utils/verdict-helpers.d.ts +14 -5
  190. package/dist/utils/verdict-helpers.d.ts.map +1 -1
  191. package/dist/utils/verdict-helpers.js +19 -16
  192. package/dist/utils/verdict-helpers.js.map +1 -1
  193. package/docs/audit.md +40 -14
  194. package/docs/doctor.md +46 -10
  195. package/docs/index.md +1 -1
  196. package/docs/rag.md +9 -4
  197. package/docs/resources.md +54 -22
  198. package/docs/skills.md +11 -7
  199. package/package.json +12 -12
@@ -5,26 +5,37 @@
5
5
  * 1. vat resources validate (link integrity, collection schemas)
6
6
  * 2. vat skills validate (SKILL.md frontmatter validation)
7
7
  * 3. vat claude marketplace validate (strict marketplace validation, when configured)
8
- * 4. consistency check (skill distribution integrity — package.json, plugin assignment)
8
+ * 4. files-config-dests (in-process; every `files:` dest exists in the built output)
9
+ * 5. consistency check (in-process; skill distribution integrity — package.json, plugin assignment)
10
+ *
11
+ * 1–3 are subprocess phases chosen by {@link selectVerifyPhases}; 4–5 run here and
12
+ * are chosen by `selectInProcessVerifyPhases`. Both sets are config-gated, and both
13
+ * are announced on startup.
9
14
  */
10
15
  import { existsSync } from 'node:fs';
11
16
  import { basename } from 'node:path';
17
+ import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/agent-schema';
12
18
  import { computeTreeCopiedSkillLocations, mergeFilesConfig } from '@vibe-agent-toolkit/agent-skills';
13
19
  import { safePath } from '@vibe-agent-toolkit/utils';
14
20
  import { Command } from 'commander';
15
21
  import { handleCommandError } from '../utils/command-error.js';
16
22
  import { loadConfig } from '../utils/config-loader.js';
17
- import { createLogger } from '../utils/logger.js';
18
23
  import { writeYamlOutput } from '../utils/output.js';
19
24
  import { requireProjectRoot } from '../utils/project-root-policy.js';
20
- import { runConsistencyChecks } from './consistency-check.js';
21
- import { resolveBinPath, runPhase } from './phase-utils.js';
25
+ import { runConsistencyChecks, } from './consistency-check.js';
26
+ import { addRetiredOnlyOption, aggregatePhaseStatus, applyPhaseSelection, createPhaseContext, decidePhaseSelection, exitCodeForPhases, rejectRetiredOnly, runPhase, } from './phase-utils.js';
22
27
  import { discoverSkillsFromConfig } from './skills/skill-discovery.js';
28
+ /**
29
+ * Measured full-run duration on the 90-skill / 1,041-document adopter, cited by
30
+ * the retired-`--only` message: resources 12.5s + skills 15.6s + marketplace
31
+ * 1.0s + consistency under a second.
32
+ */
33
+ const VERIFY_FULL_RUN_SECONDS = 32;
23
34
  export function createVerifyTopLevelCommand() {
24
35
  const command = new Command('verify');
25
- command
36
+ addRetiredOnlyOption(command)
26
37
  .description('Verify built artifacts (resources + skills + marketplace + consistency); marketplace/consistency read dist/ — run after vat build')
27
- .option('--only <phase>', 'Verify only a specific phase: resources, skills, marketplace, consistency')
38
+ .option('-v, --verbose', 'Show all inspected resources, including those without issues')
28
39
  .option('--debug', 'Enable debug logging')
29
40
  .action(verifyTopLevelCommand)
30
41
  .addHelpText('after', `
@@ -35,20 +46,51 @@ Description:
35
46
  For source-only validation that needs no build (resources + skills,
36
47
  suitable for pre-commit and CI-before-build), use 'vat validate'.
37
48
 
38
- Phases:
39
- resources → link integrity, collection frontmatter schemas
40
- skills → SKILL.md frontmatter and packaging validation
41
- marketplace → strict marketplace validation (when configured)
42
- consistency → skill distribution integrity (package.json, plugin assignment)
49
+ Config-driven, exactly like 'vat validate': a phase runs only when its
50
+ config block is present. There is no phase filter — the whole run takes
51
+ about as long as its slowest two phases, so a CI gate cannot lose coverage
52
+ by naming a phase whose config key was renamed out from under it.
53
+
54
+ Phases (subprocess):
55
+ resources → link integrity, collection frontmatter schemas (when 'resources:' configured)
56
+ skills → SKILL.md frontmatter and packaging validation (when 'skills:' configured)
57
+ marketplace → strict marketplace validation (when 'claude.marketplaces:' configured)
58
+
59
+ Phases (in-process, run after the above, when 'skills:' is configured):
60
+ files-config-dests → every 'files:' dest exists in the built output. Appears
61
+ in the document only when a dest is missing.
62
+ consistency → skill distribution integrity (package.json, plugin assignment)
63
+
64
+ A run with a 'skills:' block runs all three of skills, files-config-dests and
65
+ consistency: they read that same config block. Without it neither in-process
66
+ phase has anything to read, so neither runs.
67
+
68
+ The startup line on stderr names, in order, the phases that will inspect
69
+ something. A phase that would consult nothing is not listed; a phase that does
70
+ inspect its inputs is listed even when it finds nothing to report.
43
71
 
44
72
  Output:
45
- YAML summary for each phase → stdout
46
- Validation errors → stderr
73
+ ONE YAML document → stdout
74
+ per phase: status (success | warning | error | system-error). A subprocess
75
+ phase's own report is captured and nested under 'report', so the whole run
76
+ is a single parseable document (a phase's stdout is never streamed
77
+ through). A phase's status comes from the child's REPORTED status, not
78
+ from its exit code — an exit code cannot express 'warning'. In-process
79
+ phases also publish issueCounts {errors, warnings, info}; 'consistency'
80
+ carries its findings into the document too, while 'files-config-dests'
81
+ publishes counts only and lists the missing dests on stderr.
82
+ Progress and validation errors → stderr (streamed live)
83
+
84
+ By default each subprocess phase reports a per-asset summary plus the assets
85
+ that have findings. '--verbose' is forwarded to every subprocess phase, which
86
+ then also lists the assets it inspected and found nothing to report.
47
87
 
48
88
  Exit Codes:
49
- 0 - All phases passed
89
+ 0 - All phases passed (a warning does not fail the run — read status/issueCounts)
50
90
  1 - Validation errors found
51
- 2 - System error
91
+ 2 - System error (this command's own, or propagated from a phase that could
92
+ not run: exited 2, was killed by a signal, was never spawned, or wrote
93
+ output that could not be parsed)
52
94
 
53
95
  Requirements:
54
96
  projectRoot: required (errors if no vibe-agent-toolkit.config.yaml or .git/ ancestor)
@@ -57,9 +99,7 @@ Requirements:
57
99
  See docs/concepts/roots-and-config.md for terminology.
58
100
 
59
101
  Example:
60
- $ vat verify # Verify everything
61
- $ vat verify --only skills # Verify skills only
62
- $ vat verify --only marketplace # Verify marketplace only
102
+ $ vat verify # Verify every configured phase
63
103
  `);
64
104
  return command;
65
105
  }
@@ -149,26 +189,27 @@ export function checkFilesConfigDests(cwd) {
149
189
  }
150
190
  }
151
191
  /**
152
- * Check whether the current project has claude.marketplaces configured.
153
- * Returns the marketplace names if present, empty array otherwise.
192
+ * Load the project config without letting a broken one abort the command.
193
+ *
194
+ * A config that exists but does not parse is reported as `error` rather than
195
+ * swallowed as "no config": `vat verify` must not answer "that phase is not
196
+ * configured" when it could not read the configuration at all.
154
197
  */
155
- function getClaudeMarketplaceNames() {
198
+ function loadConfigTolerant(cwd) {
156
199
  try {
157
- const config = loadConfig(process.cwd());
158
- if (config?.claude?.marketplaces) {
159
- return Object.keys(config.claude.marketplaces);
160
- }
161
- return [];
200
+ return { config: loadConfig(cwd) };
162
201
  }
163
- catch {
164
- return [];
202
+ catch (error) {
203
+ return { config: undefined, error: error instanceof Error ? error.message : String(error) };
165
204
  }
166
205
  }
206
+ /** The in-process phase that checks `files:` dests against the built output. */
207
+ const FILES_CONFIG_DESTS = 'files-config-dests';
167
208
  /**
168
209
  * Log files-config-dests errors to stderr.
169
210
  */
170
211
  function reportFilesDestErrors(results, logger) {
171
- logger.error('\n▶ Phase: files-config-dests');
212
+ logger.error(`\n▶ Phase: ${FILES_CONFIG_DESTS}`);
172
213
  for (const { skillName, outputDir, missing } of results) {
173
214
  logger.error(` Skill '${skillName}': missing dest file(s) in ${outputDir}/:`);
174
215
  for (const dest of missing) {
@@ -196,92 +237,214 @@ function reportConsistencyIssues(issues, logger) {
196
237
  logger.info(` INFO [${issue.code}]: ${issue.message}`);
197
238
  }
198
239
  }
199
- function buildPhaseList(options) {
200
- const { only } = options;
240
+ /**
241
+ * Phases `vat verify` knows how to run, in stable execution order.
242
+ *
243
+ * `PhaseVocabulary.validNames` is what `--only` was checked against; with
244
+ * `--only` retired from this command it is documentation only — the arm that
245
+ * reads it in {@link decidePhaseSelection} is unreachable from here.
246
+ */
247
+ const VALID_PHASES = ['resources', 'skills', 'marketplace', 'consistency'];
248
+ const VERIFY_VOCABULARY = {
249
+ noun: 'Phase',
250
+ verb: 'verify',
251
+ validNames: VALID_PHASES,
252
+ noop: {
253
+ warning: 'No resources:, skills: or claude.marketplaces: block found in vibe-agent-toolkit.config.yaml — nothing to verify. If this is unexpected, check your config.',
254
+ note: 'No configured phases (no resources, skills or claude.marketplaces block in vibe-agent-toolkit.config.yaml).',
255
+ },
256
+ };
257
+ /**
258
+ * Decide which verification phases to run.
259
+ *
260
+ * Config-gated, exactly as `vat validate` is. It used to push `resources` and
261
+ * `skills` unconditionally, so `vat verify --only skills` in a project with no
262
+ * `skills:` block exited 0 while `vat validate --only skills` on the same
263
+ * project exited 1 — same question, opposite verdicts, and a CI gate pinned to
264
+ * the verify form stayed green forever the moment the config key was renamed.
265
+ *
266
+ * `--only` is gone from this command entirely. Measured on a 90-skill project a
267
+ * full `vat verify` is ~32s, of which the two slowest phases are ~28s — the
268
+ * filter bought at most ~18s and repeatedly bought a wrong answer with it. Every
269
+ * run is now a whole run, and `only` is passed to {@link decidePhaseSelection}
270
+ * as `undefined` (that helper still routes `--only` for `vat validate` and
271
+ * `vat build`).
272
+ *
273
+ * @param configError - The config-load failure, when the config could not be
274
+ * read. Every subprocess phase still runs so the CHILD reports the real
275
+ * config error (exit 2) instead of this command guessing.
276
+ * @param verbose - Forwarded to each subprocess phase as `--verbose`. The
277
+ * children own their own summarization; this command only relays the request.
278
+ */
279
+ export function selectVerifyPhases(config, configError, verbose) {
201
280
  const phases = [];
202
- if (!only || only === 'resources') {
203
- phases.push({ name: 'resources', args: ['resources', 'validate'] });
281
+ const unreadable = configError !== undefined;
282
+ const detail = verbose === true ? ['--verbose'] : [];
283
+ if (unreadable || config?.resources) {
284
+ phases.push({ name: 'resources', args: ['resources', 'validate', ...detail] });
204
285
  }
205
- if (!only || only === 'skills') {
206
- phases.push({ name: 'skills', args: ['skills', 'validate'] });
286
+ if (unreadable || config?.skills) {
287
+ phases.push({ name: 'skills', args: ['skills', 'validate', ...detail] });
207
288
  }
208
- if (!only || only === 'marketplace') {
209
- // Only add marketplace phase(s) when config exists and has marketplaces
210
- const marketplaceNames = getClaudeMarketplaceNames();
211
- for (const name of marketplaceNames) {
212
- const marketplaceBuildPath = `dist/.claude/plugins/marketplaces/${name}`;
213
- phases.push({
214
- name: `marketplace:${name}`,
215
- args: ['claude', 'marketplace', 'validate', marketplaceBuildPath],
216
- });
217
- }
289
+ for (const name of Object.keys(config?.claude?.marketplaces ?? {})) {
290
+ phases.push({
291
+ name: `marketplace:${name}`,
292
+ args: [
293
+ 'claude',
294
+ 'marketplace',
295
+ 'validate',
296
+ `dist/.claude/plugins/marketplaces/${name}`,
297
+ ...detail,
298
+ ],
299
+ });
218
300
  }
219
- return phases;
301
+ return decidePhaseSelection(undefined, phases, VERIFY_VOCABULARY, {
302
+ unreadableConfig: configError,
303
+ });
220
304
  }
221
305
  /**
222
- * Run the consistency check phase and return whether errors were found.
306
+ * Which in-process phases this run performs, given the config.
307
+ *
308
+ * The SINGLE source for that question: {@link verifyTopLevelCommand} gates
309
+ * execution on this list and {@link formatVerifyAnnouncement} announces the same
310
+ * list, so the printed phase list cannot drift from the phases that run. It used
311
+ * to be announced from the subprocess phases alone while these two were gated by
312
+ * hand-written conditions further down, so a run printed '(phases: skills)' and
313
+ * then also ran `consistency`, which put a second entry in the emitted document.
314
+ * A status that under-reports what it did is the same defect class as
315
+ * {@link selectVerifyPhases}' silent exit-0 pass.
316
+ *
317
+ * The contract is **the phases that will inspect something** — not "code paths
318
+ * this run enters". An earlier fix traded the under-reporting for
319
+ * over-reporting: on a project with `resources:` and no `skills:`, a run
320
+ * announced 'resources → files-config-dests → consistency' and emitted a
321
+ * document holding `resources` and nothing else, so an operator read a claim
322
+ * that distribution consistency had been checked. Both in-process phases read
323
+ * the same input, the `skills:` block — without it {@link checkFilesConfigDests}
324
+ * has no `files:` entry to resolve (both `defaults.files` and
325
+ * `config.<skill>.files` live under `skills:`, so every merge is empty) and
326
+ * {@link runConsistencyPhase} returns before its first lookup. Neither can
327
+ * produce a finding, so neither is named.
328
+ *
329
+ * This is a truthfulness change, not a behaviour change: the condition here is
330
+ * the one the phases already applied internally, hoisted so the announcement can
331
+ * see it.
332
+ *
333
+ * Note "will inspect something" is not a prediction of the findings:
334
+ * `files-config-dests` is named whenever a `skills:` block engages it, even
335
+ * though a clean run reports nothing.
223
336
  */
224
- async function runConsistencyPhase(logger, phaseResults) {
225
- const config = loadConfig(process.cwd());
337
+ function selectInProcessVerifyPhases(config) {
338
+ return config?.skills === undefined ? [] : [FILES_CONFIG_DESTS, 'consistency'];
339
+ }
340
+ /**
341
+ * The startup announcement: every phase this run will inspect something with,
342
+ * in order. A phase that would consult nothing is not named.
343
+ */
344
+ export function formatVerifyAnnouncement(subprocessPhaseNames, config) {
345
+ const all = [...subprocessPhaseNames, ...selectInProcessVerifyPhases(config)];
346
+ return `🔍 vat verify (phases: ${all.join(' → ')})`;
347
+ }
348
+ /**
349
+ * `ConsistencyIssue` speaks the same severity vocabulary as `ValidationIssue`
350
+ * but carries a free-form `code`, so it is counted through this projection —
351
+ * there must be exactly ONE issues→status/counts collapse in the codebase, and
352
+ * it lives in `@vibe-agent-toolkit/agent-schema`.
353
+ */
354
+ function asValidationIssues(issues) {
355
+ return issues.map((issue) => ({
356
+ code: issue.code,
357
+ severity: issue.severity,
358
+ message: issue.message,
359
+ fix: issue.fix,
360
+ }));
361
+ }
362
+ /**
363
+ * Run the in-process consistency check phase and record its outcome.
364
+ *
365
+ * The findings are published INTO the phase result, not merely logged: they used
366
+ * to go to stderr only, so the archived YAML — the artifact of record — said
367
+ * nothing happened. And a warning-only run reported `passed`, which is the
368
+ * reassuring answer to a question it could not represent.
369
+ */
370
+ async function runConsistencyPhase(logger, phaseResults, config, projectRoot) {
226
371
  if (!config?.skills) {
227
- return false;
228
- }
229
- const discoveredSkills = await discoverSkillsFromConfig(config.skills, process.cwd());
230
- const consistencyResult = runConsistencyChecks(discoveredSkills, config, process.cwd());
231
- if (consistencyResult.summary.errors > 0) {
232
- reportConsistencyIssues(consistencyResult.issues, logger);
233
- phaseResults.push({ name: 'consistency', status: 'failed' });
234
- return true;
372
+ // Nothing to cross-reference, so nothing to report: a run without a
373
+ // `skills:` block is a genuine no-op, and {@link selectInProcessVerifyPhases}
374
+ // has already decided not to name this phase. There used to be a second arm
375
+ // here that pushed an ERROR result instead — because `--only consistency`
376
+ // had asked for THIS phase specifically, and answering an explicit request
377
+ // with an empty phase list and `success` is the same silent pass
378
+ // `vat validate --only <unconfigured surface>` refuses to give. With
379
+ // `--only` retired from `vat verify` there is no way to ask for this phase
380
+ // specifically, so that arm went with it. This guard remains reachable only
381
+ // defensively (and narrows `config.skills` for the call below).
382
+ return;
235
383
  }
236
- if (consistencyResult.summary.warnings > 0 || consistencyResult.summary.infos > 0) {
237
- reportConsistencyIssues(consistencyResult.issues, logger);
384
+ const discoveredSkills = await discoverSkillsFromConfig(config.skills, projectRoot);
385
+ const consistencyResult = runConsistencyChecks(discoveredSkills, config, projectRoot);
386
+ const issues = consistencyResult.issues;
387
+ if (issues.length > 0) {
388
+ reportConsistencyIssues(issues, logger);
238
389
  }
239
- phaseResults.push({ name: 'consistency', status: 'passed' });
240
- return false;
390
+ const asValidation = asValidationIssues(issues);
391
+ const result = {
392
+ name: 'consistency',
393
+ status: calculateValidationStatus(asValidation),
394
+ issueCounts: countBySeverity(asValidation),
395
+ issues: issues.map(({ severity, code, message, fix }) => ({ severity, code, message, fix })),
396
+ };
397
+ phaseResults.push(result);
241
398
  }
242
399
  async function verifyTopLevelCommand(options) {
400
+ // Before requireProjectRoot: a retired flag is a usage error, and answering it
401
+ // with "no vibe-agent-toolkit.config.yaml found" would diagnose the wrong
402
+ // problem for anyone running the old invocation outside a project.
403
+ rejectRetiredOnly(options.only, 'vat verify', VERIFY_FULL_RUN_SECONDS);
243
404
  // Spec §7: `vat verify` requires a projectRoot.
244
- requireProjectRoot(process.cwd(), 'vat verify');
245
- const phases = buildPhaseList(options);
246
- // Consistency is an in-process phase, not a subprocess. Allow --only consistency
247
- // to produce an empty subprocess phase list without throwing.
248
- if (phases.length === 0 && options.only !== 'consistency') {
249
- throw new Error(`Unknown phase: ${options.only ?? ''}. Valid phases: resources, skills, marketplace, consistency`);
250
- }
251
- const logger = createLogger(options.debug ? { debug: true } : {});
252
- const startTime = Date.now();
253
- const binPath = resolveBinPath();
405
+ const projectRoot = requireProjectRoot(process.cwd(), 'vat verify');
406
+ const { logger, startTime, binPath } = createPhaseContext(options.debug);
254
407
  try {
255
- logger.info(`🔍 vat verify (phases: ${phases.map((p) => p.name).join(' → ')})`);
408
+ // Inside the try, deliberately: phase selection used to throw from out here
409
+ // (on an unroutable `--only`), so the user got a raw Node stack trace and
410
+ // zero bytes of the structured document a scripted caller parses.
411
+ const { config, error: configError } = loadConfigTolerant(projectRoot);
412
+ const phases = applyPhaseSelection(selectVerifyPhases(config, configError, options.verbose), logger, startTime);
413
+ // Announced from the same list the in-process gates below read, so the
414
+ // printed phases and the executed phases cannot disagree.
415
+ const inProcess = selectInProcessVerifyPhases(config);
416
+ logger.info(formatVerifyAnnouncement(phases.map((p) => p.name), config));
256
417
  const phaseResults = [];
257
418
  for (const phase of phases) {
258
419
  logger.info(`\n▶ Phase: ${phase.name}`);
259
420
  phaseResults.push(runPhase(binPath, phase));
260
421
  }
261
- let hasErrors = phaseResults.some((r) => r.status === 'failed');
262
422
  // Post-build files config check: verify all dest paths exist in built output
263
- if (!options.only || options.only === 'skills') {
264
- const filesDestResults = checkFilesConfigDests(process.cwd());
423
+ if (inProcess.includes(FILES_CONFIG_DESTS)) {
424
+ const filesDestResults = checkFilesConfigDests(projectRoot);
265
425
  if (filesDestResults.length > 0) {
266
- hasErrors = true;
267
426
  reportFilesDestErrors(filesDestResults, logger);
268
- phaseResults.push({ name: 'files-config-dests', status: 'failed' });
427
+ phaseResults.push({
428
+ name: FILES_CONFIG_DESTS,
429
+ status: 'error',
430
+ issueCounts: { errors: filesDestResults.length, warnings: 0, info: 0 },
431
+ });
269
432
  }
270
433
  }
271
434
  // Consistency check: cross-reference discovered skills vs package.json and plugin assignments
272
- if (!options.only || options.only === 'consistency' || options.only === 'skills') {
273
- const consistencyHasErrors = await runConsistencyPhase(logger, phaseResults);
274
- if (consistencyHasErrors) {
275
- hasErrors = true;
276
- }
435
+ if (inProcess.includes('consistency')) {
436
+ await runConsistencyPhase(logger, phaseResults, config, projectRoot);
277
437
  }
278
438
  const duration = Date.now() - startTime;
439
+ // Worst-wins across phases, with `system-error` outranking `error`: a phase
440
+ // that could not run exits 2, so a CI script can tell a broken config from
441
+ // a broken artifact.
279
442
  writeYamlOutput({
280
- status: hasErrors ? 'error' : 'success',
443
+ status: aggregatePhaseStatus(phaseResults),
281
444
  phases: phaseResults,
282
445
  duration: `${duration}ms`,
283
446
  });
284
- process.exit(hasErrors ? 1 : 0);
447
+ process.exit(exitCodeForPhases(phaseResults));
285
448
  }
286
449
  catch (error) {
287
450
  handleCommandError(error, logger, startTime, 'Verify');
@@ -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":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  */
7
7
  export { version, getVersionString, type VersionContext } from './version.js';
8
8
  export { createLogger, type Logger, type LoggerOptions } from './utils/logger.js';
9
- export { writeYamlOutput, flushStdout, writeTestFormatError } from './utils/output.js';
9
+ export { writeYamlOutput, writeTestFormatError, writeStdoutSync, } from './utils/output.js';
10
10
  export { loadConfig } from './utils/config-loader.js';
11
11
  export { ProjectConfigSchema, type ProjectConfig, type ResourcesConfig, type CollectionConfig as ResourceCollection, } from '@vibe-agent-toolkit/resources';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,IAAI,kBAAkB,GAC5C,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOlF,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,IAAI,kBAAkB,GAC5C,MAAM,+BAA+B,CAAC"}
package/dist/index.js CHANGED
@@ -8,7 +8,13 @@
8
8
  export { version, getVersionString } from './version.js';
9
9
  // Utilities (for programmatic use)
10
10
  export { createLogger } from './utils/logger.js';
11
- export { writeYamlOutput, flushStdout, writeTestFormatError } from './utils/output.js';
11
+ // A consumer that embeds these output helpers inherits the same `process.exit`
12
+ // truncation they were written to fix, and needs `makeStdioBlocking` to opt into
13
+ // the fix — it now lives in `@vibe-agent-toolkit/utils` (also reachable via the
14
+ // narrow `@vibe-agent-toolkit/utils/process` subpath), because the CLI sits at
15
+ // the top of the dependency chain and VAT's second published bin could not reach
16
+ // it here.
17
+ export { writeYamlOutput, writeTestFormatError, writeStdoutSync, } from './utils/output.js';
12
18
  export { loadConfig } from './utils/config-loader.js';
13
19
  export { ProjectConfigSchema, } from '@vibe-agent-toolkit/resources';
14
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAE9E,mCAAmC;AACnC,OAAO,EAAE,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,GAIpB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAE9E,mCAAmC;AACnC,OAAO,EAAE,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAClF,+EAA+E;AAC/E,iFAAiF;AACjF,gFAAgF;AAChF,+EAA+E;AAC/E,iFAAiF;AACjF,WAAW;AACX,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,GAIpB,MAAM,+BAA+B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { findDeclaredSkillForPath, findDeclaredSkillForSourceDir, resolveSkillReference, } from './resolve-skill-reference.js';
2
2
  export { classifyToken, parseSourceSpec } from './classify.js';
3
- export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
3
+ export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveProjectDeclaredEvalSuites, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
4
4
  export type { BuildableReference, DeclaredSkillLink, SkillDistribution, SkillReference } from './types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,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,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { findDeclaredSkillForPath, findDeclaredSkillForSourceDir, resolveSkillReference, } from './resolve-skill-reference.js';
2
2
  export { classifyToken, parseSourceSpec } from './classify.js';
3
- export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
3
+ export { getDiscoveredSkillsByPath, resetSkillDiscoveryCache, resolveProjectDeclaredEvalSuites, resolveSkillPackagingConfig, stripValidationAllowForDisplay, } from './packaging-config.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skill-resolution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,2BAA2B,EAC3B,8BAA8B,GAC/B,MAAM,uBAAuB,CAAC"}
@@ -9,10 +9,23 @@
9
9
  * Does NOT compose configs across VAT projects — only the nearest-ancestor
10
10
  * `vibe-agent-toolkit.config.yaml` contributes.
11
11
  */
12
- import type { SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
12
+ import type { DeclaredEvalSuite, SkillPackagingConfig } from '@vibe-agent-toolkit/agent-skills';
13
13
  import { type loadConfig } from '../utils/config-loader.js';
14
- /** Clear the per-root discovery cache (call when fixtures mutate between in-process runs). */
14
+ /** Clear the per-root discovery caches (call when fixtures mutate between in-process runs). */
15
15
  export declare function resetSkillDiscoveryCache(): void;
16
+ /**
17
+ * The project's declared eval suites for the config root governing `skillPath`.
18
+ *
19
+ * The single-skill counterpart to `collectDeclaredEvalSuites`: commands that resolve one
20
+ * SKILL.md at a time (`vat audit`, `vat skill review`, `vat skill test`) still need the
21
+ * WHOLE project's declarations, because test input is a project-wide rule — another
22
+ * skill's eval suite is an answer key no matter whose bundle is being built.
23
+ *
24
+ * Memoized per config root so a run over N skills under one root pays for discovery
25
+ * once, not N times. Returns `[]` when there is no governing config or no skills
26
+ * section — wild mode, where there is no project to enumerate.
27
+ */
28
+ export declare function resolveProjectDeclaredEvalSuites(skillPath: string): Promise<DeclaredEvalSuite[]>;
16
29
  export declare function getDiscoveredSkillsByPath(skillsSection: NonNullable<ReturnType<typeof loadConfig>>['skills'], configRoot: string): Promise<Map<string, string>>;
17
30
  /**
18
31
  * Resolve the merged packaging config for one SKILL.md by walking UP to its
@@ -1 +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"}
1
+ {"version":3,"file":"packaging-config.d.ts","sourceRoot":"","sources":["../../src/skill-resolution/packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAIhG,OAAO,EAAE,KAAK,UAAU,EAAoB,MAAM,2BAA2B,CAAC;AAS9E,+FAA+F;AAC/F,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsB9B;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"}