@vibe-agent-toolkit/cli 0.1.41-rc.7 → 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 (149) hide show
  1. package/dist/bin/vat +24 -1
  2. package/dist/bin/vat.js +24 -1
  3. package/dist/bin/vat.js.map +1 -1
  4. package/dist/bin.js +12 -1
  5. package/dist/bin.js.map +1 -1
  6. package/dist/commands/agent/list.d.ts +11 -0
  7. package/dist/commands/agent/list.d.ts.map +1 -1
  8. package/dist/commands/agent/list.js +30 -11
  9. package/dist/commands/agent/list.js.map +1 -1
  10. package/dist/commands/audit.d.ts +34 -1
  11. package/dist/commands/audit.d.ts.map +1 -1
  12. package/dist/commands/audit.js +220 -88
  13. package/dist/commands/audit.js.map +1 -1
  14. package/dist/commands/build.d.ts +14 -0
  15. package/dist/commands/build.d.ts.map +1 -1
  16. package/dist/commands/build.js +89 -24
  17. package/dist/commands/build.js.map +1 -1
  18. package/dist/commands/claude/marketplace/validate.d.ts +97 -0
  19. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  20. package/dist/commands/claude/marketplace/validate.js +154 -40
  21. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  22. package/dist/commands/claude/org/stubs.d.ts +9 -1
  23. package/dist/commands/claude/org/stubs.d.ts.map +1 -1
  24. package/dist/commands/claude/org/stubs.js +11 -3
  25. package/dist/commands/claude/org/stubs.js.map +1 -1
  26. package/dist/commands/claude/plugin/build.d.ts +25 -2
  27. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  28. package/dist/commands/claude/plugin/build.js +99 -10
  29. package/dist/commands/claude/plugin/build.js.map +1 -1
  30. package/dist/commands/claude/plugin/plugin-json-merge.d.ts.map +1 -1
  31. package/dist/commands/claude/plugin/plugin-json-merge.js +15 -0
  32. package/dist/commands/claude/plugin/plugin-json-merge.js.map +1 -1
  33. package/dist/commands/corpus/report.d.ts +22 -4
  34. package/dist/commands/corpus/report.d.ts.map +1 -1
  35. package/dist/commands/corpus/report.js +1 -0
  36. package/dist/commands/corpus/report.js.map +1 -1
  37. package/dist/commands/corpus/runner.d.ts +16 -1
  38. package/dist/commands/corpus/runner.d.ts.map +1 -1
  39. package/dist/commands/corpus/runner.js +40 -22
  40. package/dist/commands/corpus/runner.js.map +1 -1
  41. package/dist/commands/inventory.d.ts +2 -0
  42. package/dist/commands/inventory.d.ts.map +1 -1
  43. package/dist/commands/inventory.js +45 -4
  44. package/dist/commands/inventory.js.map +1 -1
  45. package/dist/commands/phase-utils.d.ts +183 -14
  46. package/dist/commands/phase-utils.d.ts.map +1 -1
  47. package/dist/commands/phase-utils.js +294 -29
  48. package/dist/commands/phase-utils.js.map +1 -1
  49. package/dist/commands/rag/query-command.d.ts +40 -0
  50. package/dist/commands/rag/query-command.d.ts.map +1 -1
  51. package/dist/commands/rag/query-command.js +47 -20
  52. package/dist/commands/rag/query-command.js.map +1 -1
  53. package/dist/commands/resources/index.d.ts.map +1 -1
  54. package/dist/commands/resources/index.js +27 -9
  55. package/dist/commands/resources/index.js.map +1 -1
  56. package/dist/commands/resources/scan.d.ts +37 -0
  57. package/dist/commands/resources/scan.d.ts.map +1 -1
  58. package/dist/commands/resources/scan.js +47 -32
  59. package/dist/commands/resources/scan.js.map +1 -1
  60. package/dist/commands/resources/validate.d.ts +136 -1
  61. package/dist/commands/resources/validate.d.ts.map +1 -1
  62. package/dist/commands/resources/validate.js +105 -66
  63. package/dist/commands/resources/validate.js.map +1 -1
  64. package/dist/commands/skill/review.d.ts.map +1 -1
  65. package/dist/commands/skill/review.js +7 -3
  66. package/dist/commands/skill/review.js.map +1 -1
  67. package/dist/commands/skill/test/run.d.ts +1 -1
  68. package/dist/commands/skill/test/run.d.ts.map +1 -1
  69. package/dist/commands/skill/test/run.js +8 -6
  70. package/dist/commands/skill/test/run.js.map +1 -1
  71. package/dist/commands/skills/build.d.ts +96 -7
  72. package/dist/commands/skills/build.d.ts.map +1 -1
  73. package/dist/commands/skills/build.js +277 -60
  74. package/dist/commands/skills/build.js.map +1 -1
  75. package/dist/commands/skills/command-helpers.d.ts +6 -10
  76. package/dist/commands/skills/command-helpers.d.ts.map +1 -1
  77. package/dist/commands/skills/command-helpers.js +6 -22
  78. package/dist/commands/skills/command-helpers.js.map +1 -1
  79. package/dist/commands/skills/list.d.ts +18 -0
  80. package/dist/commands/skills/list.d.ts.map +1 -1
  81. package/dist/commands/skills/list.js +41 -15
  82. package/dist/commands/skills/list.js.map +1 -1
  83. package/dist/commands/skills/package.d.ts +15 -0
  84. package/dist/commands/skills/package.d.ts.map +1 -1
  85. package/dist/commands/skills/package.js +30 -20
  86. package/dist/commands/skills/package.js.map +1 -1
  87. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  88. package/dist/commands/skills/validate-command.js +22 -6
  89. package/dist/commands/skills/validate-command.js.map +1 -1
  90. package/dist/commands/skills/validate.d.ts +44 -3
  91. package/dist/commands/skills/validate.d.ts.map +1 -1
  92. package/dist/commands/skills/validate.js +180 -46
  93. package/dist/commands/skills/validate.js.map +1 -1
  94. package/dist/commands/validate.d.ts +18 -0
  95. package/dist/commands/validate.d.ts.map +1 -1
  96. package/dist/commands/validate.js +73 -66
  97. package/dist/commands/validate.js.map +1 -1
  98. package/dist/commands/verify.d.ts +38 -1
  99. package/dist/commands/verify.d.ts.map +1 -1
  100. package/dist/commands/verify.js +203 -83
  101. package/dist/commands/verify.js.map +1 -1
  102. package/dist/index.d.ts +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +7 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/skill-resolution/index.d.ts +1 -1
  107. package/dist/skill-resolution/index.d.ts.map +1 -1
  108. package/dist/skill-resolution/index.js +1 -1
  109. package/dist/skill-resolution/index.js.map +1 -1
  110. package/dist/skill-resolution/packaging-config.d.ts +15 -2
  111. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  112. package/dist/skill-resolution/packaging-config.js +39 -2
  113. package/dist/skill-resolution/packaging-config.js.map +1 -1
  114. package/dist/utils/command-error.d.ts +34 -1
  115. package/dist/utils/command-error.d.ts.map +1 -1
  116. package/dist/utils/command-error.js +32 -1
  117. package/dist/utils/command-error.js.map +1 -1
  118. package/dist/utils/help-loader.d.ts +6 -2
  119. package/dist/utils/help-loader.d.ts.map +1 -1
  120. package/dist/utils/help-loader.js +9 -16
  121. package/dist/utils/help-loader.js.map +1 -1
  122. package/dist/utils/issue-rendering.d.ts +88 -0
  123. package/dist/utils/issue-rendering.d.ts.map +1 -1
  124. package/dist/utils/issue-rendering.js +94 -0
  125. package/dist/utils/issue-rendering.js.map +1 -1
  126. package/dist/utils/output.d.ts +54 -5
  127. package/dist/utils/output.d.ts.map +1 -1
  128. package/dist/utils/output.js +111 -17
  129. package/dist/utils/output.js.map +1 -1
  130. package/dist/utils/relativize-paths.d.ts +45 -0
  131. package/dist/utils/relativize-paths.d.ts.map +1 -0
  132. package/dist/utils/relativize-paths.js +67 -0
  133. package/dist/utils/relativize-paths.js.map +1 -0
  134. package/dist/utils/resource-loader.d.ts +21 -2
  135. package/dist/utils/resource-loader.d.ts.map +1 -1
  136. package/dist/utils/resource-loader.js +85 -11
  137. package/dist/utils/resource-loader.js.map +1 -1
  138. package/dist/utils/skill-packaging-config.d.ts +22 -1
  139. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  140. package/dist/utils/skill-packaging-config.js +26 -0
  141. package/dist/utils/skill-packaging-config.js.map +1 -1
  142. package/dist/utils/verdict-helpers.d.ts +4 -3
  143. package/dist/utils/verdict-helpers.d.ts.map +1 -1
  144. package/dist/utils/verdict-helpers.js +6 -13
  145. package/dist/utils/verdict-helpers.js.map +1 -1
  146. package/docs/rag.md +9 -4
  147. package/docs/resources.md +30 -14
  148. package/docs/skills.md +9 -5
  149. package/package.json +12 -12
@@ -28,24 +28,45 @@ import { loadConfig } from '../utils/config-loader.js';
28
28
  import { createLogger } from '../utils/logger.js';
29
29
  import { writeYamlOutput } from '../utils/output.js';
30
30
  import { requireProjectRoot } from '../utils/project-root-policy.js';
31
- import { aggregatePhaseStatus, exitCodeForPhases, resolveBinPath, runPhase, } from './phase-utils.js';
31
+ import { addRetiredOnlyOption, aggregatePhaseIssueCounts, aggregatePhaseStatus, applyPhaseSelection, decidePhaseSelection, exitCodeForPhases, rejectRetiredOnly, resolveBinPath, runPhase, } from './phase-utils.js';
32
32
  /** Surfaces `vat validate` knows how to run, in stable execution order. */
33
33
  const VALID_SURFACES = ['resources', 'skills'];
34
+ const VALIDATE_VOCABULARY = {
35
+ noun: 'Surface',
36
+ verb: 'validate',
37
+ validNames: VALID_SURFACES,
38
+ noop: {
39
+ // A bare run with nothing configured is a clean no-op (exit 0, per issue
40
+ // #128's "doesn't check what it doesn't know about") — but silent success
41
+ // on stdout alone is indistinguishable, to anyone watching only the exit
42
+ // code, from a run that actually validated something. Warn on stderr so a
43
+ // config typo (e.g. `recources:`) doesn't masquerade as "all good."
44
+ warning: 'No resources: or skills: block found in vibe-agent-toolkit.config.yaml — nothing to validate. If this is unexpected, check your config.',
45
+ note: 'No configured validators (no resources or skills block in vibe-agent-toolkit.config.yaml).',
46
+ },
47
+ };
48
+ /**
49
+ * Measured full-run duration on the 90-skill / 1,041-document adopter, cited by
50
+ * the retired-`--only` message: resources 13.9s + skills 19.3s.
51
+ */
52
+ const VALIDATE_FULL_RUN_SECONDS = 35;
34
53
  export function createValidateTopLevelCommand() {
35
54
  const command = new Command('validate');
36
- command
55
+ addRetiredOnlyOption(command)
37
56
  .description('Validate configured surfaces from source (resources + skills) — no build required')
38
- .option('--only <surface>', 'Validate only a specific surface: resources, skills')
39
57
  .option('--debug', 'Enable debug logging')
58
+ .option('-v, --verbose', 'Show every finding, not just the collapsed counts')
40
59
  .action(validateTopLevelCommand)
41
60
  .addHelpText('after', `
42
61
  Description:
43
62
  Runs the source-level validators (resources, skills) the project's config
44
63
  declares — and only those. A surface whose config block is absent is skipped
45
64
  (a project with no skills block does not run skill validation; no error, no
46
- noise, but a stderr warning if nothing at all is configured). An explicit
47
- '--only <surface>' fails for a surface that is unrecognized or unconfigured,
48
- so a CI gate cannot silently lose coverage.
65
+ noise, but a stderr warning if nothing at all is configured).
66
+
67
+ A run is a WHOLE run: '--only' was removed (a full run is ~35s, and the flag
68
+ let a renamed config key silently drop a CI gate's coverage). 'vat build'
69
+ keeps its '--only', where a phase costs minutes rather than seconds.
49
70
 
50
71
  Source-level only. Unlike 'vat verify', this never inspects built dist
51
72
  artifacts and never requires a build.
@@ -55,17 +76,22 @@ Description:
55
76
  skills → SKILL.md frontmatter and packaging validation (when 'skills:' configured)
56
77
 
57
78
  Output:
58
- YAML summary for each surface → stdout
59
- per surface: status (success | error | system-error) plus the child's
60
- exitCode, signal, or spawn error — a surface that could not run is never
61
- reported as a surface that failed validation.
62
- Validation errors → stderr
79
+ ONE YAML document → stdout
80
+ per surface: status (success | warning | error | system-error) plus the
81
+ child's exitCode, signal, or spawn error — a surface that could not run is
82
+ never reported as a surface that failed validation. The validator's own
83
+ report is captured and nested under 'report', so the whole run stays a
84
+ single parseable document ('vat validate | jq' works). A surface's status
85
+ comes from the validator's REPORTED status, not from its exit code — an
86
+ exit code cannot express 'warning'.
87
+ Progress and validation errors → stderr (streamed live)
63
88
 
64
89
  Exit Codes:
65
90
  0 - All configured validators passed (or nothing configured to validate)
66
- 1 - Validation errors found, or --only named a surface that is unrecognized or unconfigured
91
+ 1 - Validation errors found, or the retired '--only' flag was passed
67
92
  2 - System error (this command's own, or propagated from a validator that
68
- could not run: exited 2, was killed by a signal, or never spawned)
93
+ could not run: exited 2, was killed by a signal, was never spawned, or
94
+ wrote output that could not be parsed)
69
95
 
70
96
  Requirements:
71
97
  projectRoot: required (errors if no vibe-agent-toolkit.config.yaml or .git/ ancestor)
@@ -75,76 +101,49 @@ Requirements:
75
101
 
76
102
  Example:
77
103
  $ vat validate # Validate every configured surface
78
- $ vat validate --only skills # Validate skills only
79
104
  `);
80
105
  return command;
81
106
  }
82
107
  /**
83
- * Build the ordered list of validation phases from the project's config.
108
+ * Decide which validation surfaces to run.
109
+ *
84
110
  * A surface is included only when its config block is present, so coverage is
85
- * discovered rather than hand-composed. Config is read from the resolved
86
- * project root (not the invocation cwd) so a run from a subdirectory still
87
- * discovers the project's surfaces instead of silently finding nothing.
111
+ * discovered rather than hand-composed — and with `--only` retired, config
112
+ * presence is now the ONLY input. There is no longer a way for a caller to
113
+ * narrow the run, so there is no longer a way for a CI gate to ask for coverage
114
+ * it cannot get; the class of silent-coverage-loss bug the `--only` failure arms
115
+ * existed to catch is now unreachable by construction rather than guarded.
116
+ *
117
+ * `only` is still passed to {@link decidePhaseSelection} as `undefined`: that
118
+ * helper is shared with `vat build`, which keeps its own `--only`.
88
119
  */
89
- function buildPhaseList(only, projectRoot) {
90
- const config = loadConfig(projectRoot);
120
+ export function selectValidateSurfaces(config, verbose = false) {
121
+ // Forwarded to every surface, exactly as `vat verify` forwards its own. Both
122
+ // child validators already accept `-v, --verbose`; only this command lacked
123
+ // the flag, which made the collapsed warning/info detail unreachable HERE
124
+ // while the same findings were one `vat skills validate` away.
125
+ const detail = verbose ? ['--verbose'] : [];
91
126
  const phases = [];
92
- if ((!only || only === 'resources') && config?.resources) {
93
- phases.push({ name: 'resources', args: ['resources', 'validate'] });
127
+ if (config?.resources) {
128
+ phases.push({ name: 'resources', args: ['resources', 'validate', ...detail] });
94
129
  }
95
- if ((!only || only === 'skills') && config?.skills) {
96
- phases.push({ name: 'skills', args: ['skills', 'validate'] });
130
+ if (config?.skills) {
131
+ phases.push({ name: 'skills', args: ['skills', 'validate', ...detail] });
97
132
  }
98
- return phases;
133
+ return decidePhaseSelection(undefined, phases, VALIDATE_VOCABULARY);
99
134
  }
100
135
  async function validateTopLevelCommand(options) {
136
+ // Before requireProjectRoot: a retired flag is a usage error, and answering it
137
+ // with "no vibe-agent-toolkit.config.yaml found" would diagnose the wrong
138
+ // problem for anyone running the old invocation outside a project.
139
+ rejectRetiredOnly(options.only, 'vat validate', VALIDATE_FULL_RUN_SECONDS);
101
140
  // requireProjectRoot returns the discovered root; read config from there so a
102
141
  // subdirectory invocation doesn't load an empty config and falsely pass.
103
142
  const projectRoot = requireProjectRoot(process.cwd(), 'vat validate');
104
143
  const logger = createLogger(options.debug ? { debug: true } : {});
105
144
  const startTime = Date.now();
106
- // `--only` failures — an unrecognized surface name, or a recognized name
107
- // that just isn't configured — are both "you asked for a surface that
108
- // can't run." Both must exit 1 (not fall through to the generic exit-2
109
- // system-error path), so a CI gate differentiating "validation failed"
110
- // from "system error" doesn't miss one of the two.
111
- const failOnly = (message) => {
112
- logger.error(message);
113
- writeYamlOutput({
114
- status: 'error',
115
- phases: [],
116
- error: message,
117
- duration: `${Date.now() - startTime}ms`,
118
- });
119
- return process.exit(1);
120
- };
121
145
  try {
122
- if (options.only && !VALID_SURFACES.includes(options.only)) {
123
- failOnly(`Unknown surface: ${options.only}. Valid surfaces: ${VALID_SURFACES.join(', ')}`);
124
- }
125
- const phases = buildPhaseList(options.only, projectRoot);
126
- if (phases.length === 0) {
127
- // An explicit `--only <surface>` that isn't configured is a failure: the
128
- // caller asked for a specific validator that can't run, so a CI gate must
129
- // not stay green.
130
- if (options.only) {
131
- failOnly(`Surface '${options.only}' is not configured in vibe-agent-toolkit.config.yaml — nothing to validate.`);
132
- }
133
- // A bare run with nothing configured is a clean no-op (exit 0, per
134
- // issue #128's "doesn't check what it doesn't know about") — but silent
135
- // success on stdout alone is indistinguishable, to anyone watching only
136
- // the exit code, from a run that actually validated something. Warn on
137
- // stderr so a config typo (e.g. `recources:`) doesn't masquerade as
138
- // "all good."
139
- logger.warn('No resources: or skills: block found in vibe-agent-toolkit.config.yaml — nothing to validate. If this is unexpected, check your config.');
140
- writeYamlOutput({
141
- status: 'success',
142
- phases: [],
143
- note: 'No configured validators (no resources or skills block in vibe-agent-toolkit.config.yaml).',
144
- duration: `${Date.now() - startTime}ms`,
145
- });
146
- process.exit(0);
147
- }
146
+ const phases = applyPhaseSelection(selectValidateSurfaces(loadConfig(projectRoot), options.verbose === true), logger, startTime);
148
147
  logger.info(`✅ vat validate (surfaces: ${phases.map((p) => p.name).join(' → ')})`);
149
148
  const binPath = resolveBinPath();
150
149
  const phaseResults = [];
@@ -155,8 +154,16 @@ async function validateTopLevelCommand(options) {
155
154
  // A surface whose validator could not RUN (exit 2, killed, never spawned)
156
155
  // is not a surface that failed validation: it exits 2, so a CI gate can
157
156
  // tell a broken config from a broken link.
157
+ // `issueCounts` beside `status` because a status alone cannot express a
158
+ // three-valued distribution, and this document published none at all: a
159
+ // consumer that wanted "did anything need acting on" had to either trust a
160
+ // bare `status` or hand-sum the phases. `status: warning` on a warnings-only
161
+ // repo is correct and deliberate — `success` means "nothing to act on", not
162
+ // "nothing to see" — so gate on `issueCounts.errors` or the exit code, both
163
+ // of which stay 0 through any number of warnings.
158
164
  writeYamlOutput({
159
165
  status: aggregatePhaseStatus(phaseResults),
166
+ issueCounts: aggregatePhaseIssueCounts(phaseResults),
160
167
  phases: phaseResults,
161
168
  duration: `${Date.now() - startTime}ms`,
162
169
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,20 @@
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
  */
15
+ import type { ProjectConfig } from '@vibe-agent-toolkit/resources';
10
16
  import { Command } from 'commander';
17
+ import { type PhaseSelection } from './phase-utils.js';
11
18
  export interface VerifyCommandOptions {
19
+ /** Retired; declared only so {@link rejectRetiredOnly} can explain the removal. */
12
20
  only?: string;
21
+ verbose?: boolean;
13
22
  debug?: boolean;
14
23
  }
15
24
  export declare function createVerifyTopLevelCommand(): Command;
@@ -33,4 +42,32 @@ export interface FilesDestCheckResult {
33
42
  * @returns One result per (skill, outputDir) pair where dests are absent.
34
43
  */
35
44
  export declare function checkFilesConfigDests(cwd: string): FilesDestCheckResult[];
45
+ /**
46
+ * Decide which verification phases to run.
47
+ *
48
+ * Config-gated, exactly as `vat validate` is. It used to push `resources` and
49
+ * `skills` unconditionally, so `vat verify --only skills` in a project with no
50
+ * `skills:` block exited 0 while `vat validate --only skills` on the same
51
+ * project exited 1 — same question, opposite verdicts, and a CI gate pinned to
52
+ * the verify form stayed green forever the moment the config key was renamed.
53
+ *
54
+ * `--only` is gone from this command entirely. Measured on a 90-skill project a
55
+ * full `vat verify` is ~32s, of which the two slowest phases are ~28s — the
56
+ * filter bought at most ~18s and repeatedly bought a wrong answer with it. Every
57
+ * run is now a whole run, and `only` is passed to {@link decidePhaseSelection}
58
+ * as `undefined` (that helper still routes `--only` for `vat validate` and
59
+ * `vat build`).
60
+ *
61
+ * @param configError - The config-load failure, when the config could not be
62
+ * read. Every subprocess phase still runs so the CHILD reports the real
63
+ * config error (exit 2) instead of this command guessing.
64
+ * @param verbose - Forwarded to each subprocess phase as `--verbose`. The
65
+ * children own their own summarization; this command only relays the request.
66
+ */
67
+ export declare function selectVerifyPhases(config: ProjectConfig | undefined, configError?: string, verbose?: boolean): PhaseSelection;
68
+ /**
69
+ * The startup announcement: every phase this run will inspect something with,
70
+ * in order. A phase that would consult nothing is not named.
71
+ */
72
+ export declare function formatVerifyAnnouncement(subprocessPhaseNames: readonly string[], config: ProjectConfig | undefined): string;
36
73
  //# sourceMappingURL=verify.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAqDrD;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,CAkDzE"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,OAAO,EAWL,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD,wBAAgB,2BAA2B,IAAI,OAAO,CA4ErD;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,CAkDzE;AAkFD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,cAAc,CA6BhB;AAyCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,oBAAoB,EAAE,SAAS,MAAM,EAAE,EACvC,MAAM,EAAE,aAAa,GAAG,SAAS,GAChC,MAAM,CAGR"}