@vibe-agent-toolkit/cli 0.1.0-rc.9 → 0.1.1

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 (43) hide show
  1. package/README.md +67 -4
  2. package/dist/bin/vat.d.ts +13 -2
  3. package/dist/bin/vat.d.ts.map +1 -1
  4. package/dist/bin/vat.js +147 -25
  5. package/dist/bin/vat.js.map +1 -1
  6. package/dist/bin.js +22 -14
  7. package/dist/bin.js.map +1 -1
  8. package/dist/commands/agent/index.d.ts.map +1 -1
  9. package/dist/commands/agent/index.js +0 -37
  10. package/dist/commands/agent/index.js.map +1 -1
  11. package/dist/commands/audit/cache-detector.d.ts +32 -0
  12. package/dist/commands/audit/cache-detector.d.ts.map +1 -0
  13. package/dist/commands/audit/cache-detector.js +68 -0
  14. package/dist/commands/audit/cache-detector.js.map +1 -0
  15. package/dist/commands/audit/hierarchical-output.d.ts +41 -0
  16. package/dist/commands/audit/hierarchical-output.d.ts.map +1 -0
  17. package/dist/commands/audit/hierarchical-output.js +267 -0
  18. package/dist/commands/audit/hierarchical-output.js.map +1 -0
  19. package/dist/commands/audit.d.ts +18 -0
  20. package/dist/commands/audit.d.ts.map +1 -0
  21. package/dist/commands/audit.js +386 -0
  22. package/dist/commands/audit.js.map +1 -0
  23. package/dist/commands/doctor.d.ts +106 -0
  24. package/dist/commands/doctor.d.ts.map +1 -0
  25. package/dist/commands/doctor.js +499 -0
  26. package/dist/commands/doctor.js.map +1 -0
  27. package/dist/commands/resources/index.js +1 -1
  28. package/dist/commands/resources/index.js.map +1 -1
  29. package/dist/commands/resources/scan.d.ts.map +1 -1
  30. package/dist/commands/resources/scan.js +8 -0
  31. package/dist/commands/resources/scan.js.map +1 -1
  32. package/dist/utils/config-loader.d.ts +6 -0
  33. package/dist/utils/config-loader.d.ts.map +1 -1
  34. package/dist/utils/config-loader.js +18 -0
  35. package/dist/utils/config-loader.js.map +1 -1
  36. package/docs/audit.md +446 -0
  37. package/docs/doctor.md +268 -0
  38. package/docs/index.md +302 -26
  39. package/package.json +11 -8
  40. package/dist/commands/agent/audit.d.ts +0 -9
  41. package/dist/commands/agent/audit.d.ts.map +0 -1
  42. package/dist/commands/agent/audit.js +0 -139
  43. package/dist/commands/agent/audit.js.map +0 -1
package/README.md CHANGED
@@ -71,6 +71,69 @@ vat rag clear
71
71
  - 384-dimensional embeddings
72
72
  - No API key required
73
73
 
74
+ ### Doctor Command
75
+
76
+ Diagnose vat setup and environment health.
77
+
78
+ **Usage:**
79
+ ```bash
80
+ # Check environment and configuration
81
+ vat doctor
82
+
83
+ # Show all checks (including passing ones)
84
+ vat doctor --verbose
85
+ ```
86
+
87
+ **What it checks:**
88
+ - Node.js version (>=20 required)
89
+ - Git installation and repository
90
+ - Configuration file exists and is valid
91
+ - VAT version (checks for updates)
92
+ - CLI build status (in VAT source tree only)
93
+
94
+ **Exit codes:**
95
+ - `0` - All checks passed
96
+ - `1` - One or more checks failed
97
+
98
+ **Example output:**
99
+ ```
100
+ 🩺 vat doctor
101
+
102
+ Running diagnostic checks...
103
+
104
+ ✅ Node.js version
105
+ v22.0.0 (meets requirement: >=20.0.0)
106
+
107
+ ✅ Git installed
108
+ git version 2.43.0
109
+
110
+ ✅ Git repository
111
+ Current directory is a git repository
112
+
113
+ ✅ Configuration file
114
+ Found: vibe-agent-toolkit.config.yaml
115
+
116
+ ✅ Configuration valid
117
+ Configuration is valid
118
+
119
+ ✅ vat version
120
+ Current: 0.1.0 — up to date
121
+
122
+ 📊 Results: 6/6 checks passed
123
+
124
+ ✨ All checks passed! Your vat setup looks healthy.
125
+ ```
126
+
127
+ **Troubleshooting:**
128
+
129
+ If checks fail, doctor provides specific suggestions:
130
+
131
+ ```
132
+ ❌ Node.js version
133
+ v18.0.0 is too old. Node.js 20+ required.
134
+ 💡 Upgrade Node.js: https://nodejs.org/ or use nvm
135
+ ```
136
+
74
137
  ### Configuration
75
138
 
76
139
  Create `vibe-agent-toolkit.config.yaml` at project root:
@@ -111,10 +174,10 @@ vat --version # Shows: 0.1.0-dev (/path/to/vibe-agent-toolkit)
111
174
  # Build
112
175
  bun run build
113
176
 
114
- # Test
115
- bun test
116
- bun test:integration
117
- bun test:system
177
+ # Test (do NOT use 'bun test' directly)
178
+ bun run test:unit
179
+ bun run test:integration
180
+ bun run test:system
118
181
 
119
182
  # Prepare binaries after build
120
183
  bun run prepare-cli-bin
package/dist/bin/vat.d.ts CHANGED
@@ -1,7 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Smart wrapper for vat CLI
4
- * Detects context (dev/local/global) and spawns appropriate binary
3
+ * Smart vat wrapper with context-aware execution
4
+ *
5
+ * Automatically detects execution context and delegates to appropriate binary:
6
+ * - Developer mode: Inside vibe-agent-toolkit repo → packages/cli/dist/bin.js (unpackaged dev build)
7
+ * - Local install: Project has vibe-agent-toolkit → node_modules version (packaged)
8
+ * - Global install: Fallback → globally installed version (packaged)
9
+ *
10
+ * Features:
11
+ * - Version detection and comparison
12
+ * - Debug mode (VAT_DEBUG=1) shows resolution details
13
+ * - Works from any subdirectory within the repo
14
+ *
15
+ * Works in both git and non-git directories.
5
16
  */
6
17
  export {};
7
18
  //# sourceMappingURL=vat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vat.d.ts","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
1
+ {"version":3,"file":"vat.d.ts","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
package/dist/bin/vat.js CHANGED
@@ -1,10 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Smart wrapper for vat CLI
4
- * Detects context (dev/local/global) and spawns appropriate binary
3
+ * Smart vat wrapper with context-aware execution
4
+ *
5
+ * Automatically detects execution context and delegates to appropriate binary:
6
+ * - Developer mode: Inside vibe-agent-toolkit repo → packages/cli/dist/bin.js (unpackaged dev build)
7
+ * - Local install: Project has vibe-agent-toolkit → node_modules version (packaged)
8
+ * - Global install: Fallback → globally installed version (packaged)
9
+ *
10
+ * Features:
11
+ * - Version detection and comparison
12
+ * - Debug mode (VAT_DEBUG=1) shows resolution details
13
+ * - Works from any subdirectory within the repo
14
+ *
15
+ * Works in both git and non-git directories.
5
16
  */
6
17
  import { spawnSync } from 'node:child_process';
7
- import { existsSync } from 'node:fs';
18
+ import { existsSync, readFileSync } from 'node:fs';
8
19
  import { resolve, dirname, join } from 'node:path';
9
20
  import { fileURLToPath } from 'node:url';
10
21
  import { findProjectRoot } from '../utils/project-root.js';
@@ -22,31 +33,142 @@ function spawnCli(binPath, context, contextPath) {
22
33
  });
23
34
  process.exit(result.status ?? 1);
24
35
  }
25
- // 1. Explicit override via VAT_ROOT_DIR
26
- if (process.env['VAT_ROOT_DIR']) {
27
- const binPath = join(process.env['VAT_ROOT_DIR'], 'packages/cli/dist/bin.js');
28
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- dynamic path from env is expected
29
- if (existsSync(binPath)) {
30
- spawnCli(binPath, 'dev', process.env['VAT_ROOT_DIR']);
36
+ /**
37
+ * Check if we're in vibe-agent-toolkit repo (developer mode)
38
+ * Simple detection: both wrapper and bin.js must exist in project structure
39
+ *
40
+ * @param projectRoot - Root directory of the project
41
+ * @returns Path to bin.js if detected, null otherwise
42
+ */
43
+ function getDevModeBinary(projectRoot) {
44
+ const wrapperPath = join(projectRoot, 'packages/cli/dist/bin/vat.js');
45
+ const binPath = join(projectRoot, 'packages/cli/dist/bin.js');
46
+ if (process.env['VAT_DEBUG'] === '1') {
47
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- checking project structure files for debug
48
+ console.error(`[vat debug] Dev check - wrapper: ${wrapperPath} (${existsSync(wrapperPath)})`);
49
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- checking project structure files for debug
50
+ console.error(`[vat debug] Dev check - bin: ${binPath} (${existsSync(binPath)})`);
51
+ }
52
+ // Both files must exist to confirm we're in vibe-agent-toolkit repo
53
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- checking project structure files
54
+ if (existsSync(wrapperPath) && existsSync(binPath)) {
55
+ return binPath;
31
56
  }
57
+ return null;
32
58
  }
33
- // 2. Dev mode detection (running inside vibe-agent-toolkit repo)
34
- const devBinPath = resolve(__dirname, '../bin.js');
35
- const wrapperExists = existsSync(resolve(__dirname, '../../../../vibe-agent-toolkit/bin/vat'));
36
- if (existsSync(devBinPath) && wrapperExists) {
37
- const repoRoot = resolve(__dirname, '../../../..');
38
- spawnCli(devBinPath, 'dev', repoRoot);
59
+ /**
60
+ * Find local vibe-agent-toolkit installation in node_modules
61
+ * Walks up directory tree from project root
62
+ *
63
+ * @param projectRoot - Root directory to start searching from
64
+ * @returns Path to local bin.js if found, null otherwise
65
+ */
66
+ function findLocalInstall(projectRoot) {
67
+ let current = projectRoot;
68
+ while (true) {
69
+ const localBin = join(current, 'node_modules/@vibe-agent-toolkit/cli/dist/bin.js');
70
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- checking for local install
71
+ if (existsSync(localBin)) {
72
+ return localBin;
73
+ }
74
+ const parent = dirname(current);
75
+ if (parent === current) {
76
+ // Reached filesystem root
77
+ break;
78
+ }
79
+ current = parent;
80
+ }
81
+ return null;
39
82
  }
40
- // 3. Local project install
41
- const projectRoot = findProjectRoot(process.cwd());
42
- if (projectRoot) {
43
- const localBinPath = join(projectRoot, 'node_modules/@vibe-agent-toolkit/cli/dist/bin.js');
44
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- dynamic path from project root is expected
45
- if (existsSync(localBinPath)) {
46
- spawnCli(localBinPath, 'local', projectRoot);
83
+ /**
84
+ * Read version from package.json
85
+ * @param packageJsonPath - Path to package.json file
86
+ * @returns Version string or null if not found
87
+ */
88
+ function readVersion(packageJsonPath) {
89
+ try {
90
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- reading version from package.json
91
+ if (!existsSync(packageJsonPath)) {
92
+ return null;
93
+ }
94
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- reading version from package.json
95
+ const content = readFileSync(packageJsonPath, 'utf-8');
96
+ const pkg = JSON.parse(content);
97
+ return pkg.version ?? null;
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Main entry point - detects context and executes appropriate binary
105
+ */
106
+ function main() {
107
+ const cwd = process.cwd();
108
+ const args = process.argv.slice(2);
109
+ const debug = process.env['VAT_DEBUG'] === '1';
110
+ // Priority 1: Explicit override via VAT_ROOT_DIR
111
+ if (process.env['VAT_ROOT_DIR']) {
112
+ const binPath = join(process.env['VAT_ROOT_DIR'], 'packages/cli/dist/bin.js');
113
+ // eslint-disable-next-line security/detect-non-literal-fs-filename -- dynamic path from env is expected
114
+ if (existsSync(binPath)) {
115
+ if (debug) {
116
+ console.error('[vat debug] Using VAT_ROOT_DIR override');
117
+ console.error(`[vat debug] Binary: ${binPath}`);
118
+ }
119
+ spawnCli(binPath, 'dev', process.env['VAT_ROOT_DIR']);
120
+ }
121
+ }
122
+ // Find project root from current working directory
123
+ const projectRoot = findProjectRoot(cwd) ?? cwd;
124
+ let binPath;
125
+ let context;
126
+ let binDir;
127
+ // Priority 2: Check for developer mode (inside vibe-agent-toolkit repo)
128
+ const devBin = getDevModeBinary(projectRoot);
129
+ if (devBin) {
130
+ binPath = devBin;
131
+ context = 'dev';
132
+ binDir = dirname(dirname(devBin)); // packages/cli/dist -> packages/cli
133
+ }
134
+ // Priority 3: Check for local install (node_modules)
135
+ else {
136
+ const localBin = findLocalInstall(projectRoot);
137
+ if (localBin) {
138
+ binPath = localBin;
139
+ context = 'local';
140
+ binDir = dirname(dirname(localBin)); // node_modules/@vibe-agent-toolkit/cli/dist -> node_modules/@vibe-agent-toolkit/cli
141
+ }
142
+ // Priority 4: Use global install (this script's location)
143
+ else {
144
+ binPath = resolve(__dirname, '../bin.js');
145
+ context = 'global';
146
+ binDir = dirname(__dirname); // dist -> cli root
147
+ }
148
+ }
149
+ // Read versions for comparison
150
+ // __dirname = dist/bin, so go up twice to reach package.json at cli root
151
+ const globalPkgPath = join(dirname(dirname(__dirname)), 'package.json');
152
+ const globalVersion = readVersion(globalPkgPath);
153
+ let localVersion = null;
154
+ if (context === 'local') {
155
+ const localPkgPath = join(binDir, 'package.json');
156
+ localVersion = readVersion(localPkgPath);
157
+ }
158
+ // Debug output
159
+ if (debug) {
160
+ console.error(`[vat debug] CWD: ${cwd}`);
161
+ console.error(`[vat debug] Project root: ${projectRoot}`);
162
+ console.error(`[vat debug] Context: ${context}`);
163
+ console.error(`[vat debug] Binary: ${binPath}`);
164
+ console.error(`[vat debug] Global version: ${globalVersion ?? 'unknown'}`);
165
+ console.error(`[vat debug] Local version: ${localVersion ?? 'N/A'}`);
166
+ console.error(`[vat debug] Args: ${args.join(' ')}`);
47
167
  }
168
+ // Execute the binary with all arguments (only pass projectRoot for dev context)
169
+ const contextPath = context === 'dev' ? projectRoot : undefined;
170
+ spawnCli(binPath, context, contextPath);
48
171
  }
49
- // 4. Global install fallback
50
- const globalBinPath = resolve(__dirname, '../bin.js');
51
- spawnCli(globalBinPath, 'global');
172
+ // Run main function
173
+ main();
52
174
  //# sourceMappingURL=vat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vat.js","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAI1D,SAAS,QAAQ,CAAC,OAAe,EAAE,OAAgB,EAAE,WAAoB;IACvE,MAAM,GAAG,GAAG;QACV,GAAG,OAAO,CAAC,GAAG;QACd,WAAW,EAAE,OAAO;QACpB,gBAAgB,EAAE,WAAW;KAC9B,CAAC;IAEF,mGAAmG;IACnG,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QACpE,KAAK,EAAE,SAAS;QAChB,GAAG;KACJ,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,wCAAwC;AACxC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC,CAAC;IAC9E,wGAAwG;IACxG,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACnD,MAAM,aAAa,GAAG,UAAU,CAC9B,OAAO,CAAC,SAAS,EAAE,wCAAwC,CAAC,CAC7D,CAAC;AACF,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,aAAa,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,2BAA2B;AAC3B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,IAAI,WAAW,EAAE,CAAC;IAChB,MAAM,YAAY,GAAG,IAAI,CACvB,WAAW,EACX,kDAAkD,CACnD,CAAC;IACF,iHAAiH;IACjH,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACtD,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"vat.js","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":"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"}
package/dist/bin.js CHANGED
@@ -5,6 +5,8 @@
5
5
  */
6
6
  import { Command } from 'commander';
7
7
  import { createAgentCommand, showAgentVerboseHelp } from './commands/agent/index.js';
8
+ import { createAuditCommand } from './commands/audit.js';
9
+ import { doctorCommand } from './commands/doctor.js';
8
10
  import { createRagCommand, showRagVerboseHelp } from './commands/rag/index.js';
9
11
  import { createResourcesCommand, showResourcesVerboseHelp } from './commands/resources/index.js';
10
12
  import { loadVerboseHelp } from './utils/help-loader.js';
@@ -20,10 +22,9 @@ const context = process.env['VAT_CONTEXT']
20
22
  : null;
21
23
  program
22
24
  .name('vat')
23
- .description('Vibe Agent Toolkit - Build, test, and deploy portable AI agents')
25
+ .description('Agent-friendly toolkit for building, testing, and deploying portable AI agents')
24
26
  .version(getVersionString(version, context), '-v, --version', 'Output version number')
25
27
  .option('--debug', 'Enable debug logging')
26
- .option('--verbose', 'Show verbose help (markdown format)')
27
28
  .helpCommand(false) // Disable redundant 'help' command, use --help instead
28
29
  .showHelpAfterError()
29
30
  .configureOutput({
@@ -32,21 +33,25 @@ program
32
33
  })
33
34
  .addHelpText('after', `
34
35
  Example:
35
- $ vat resources validate docs/ # Validate markdown links
36
+ $ vat resources validate docs/ # Validate markdown links (run before commit)
37
+
38
+ Environment:
39
+ VAT_DEBUG=1 # Show context detection details
36
40
 
37
41
  For command details: vat resources --help
42
+ For comprehensive help: vat --help --verbose
43
+ For agent guidance: docs/cli/CLAUDE.md
38
44
  `);
39
- // Handle --help --verbose at root level only
40
- // Don't handle --verbose if a subcommand was specified
45
+ // Handle --help --verbose at root level before parsing
46
+ // Manually check process.argv since --verbose is not a root-level option
47
+ const hasHelp = process.argv.includes('--help') || process.argv.includes('-h');
48
+ const hasVerbose = process.argv.includes('--verbose');
41
49
  const hasSubcommand = process.argv.slice(2).some(arg => !arg.startsWith('-'));
42
- program.on('option:verbose', () => {
43
- const opts = program.opts();
44
- // Only show root verbose help if no subcommand is present
45
- if (opts['verbose'] && !hasSubcommand && program.args.length === 0) {
46
- showVerboseHelp();
47
- process.exit(0);
48
- }
49
- });
50
+ if (hasHelp && hasVerbose && !hasSubcommand) {
51
+ // Root level: vat --help --verbose
52
+ showVerboseHelp();
53
+ process.exit(0);
54
+ }
50
55
  // Special handling for "resources --verbose" before parsing
51
56
  if (process.argv.includes('resources') && process.argv.includes('--verbose')) {
52
57
  const argv = process.argv.slice(2);
@@ -83,10 +88,13 @@ if (process.argv.includes('agent') && process.argv.includes('--verbose')) {
83
88
  process.exit(0);
84
89
  }
85
90
  }
86
- // Add command groups
91
+ // Add command groups (audit is common, should be first)
92
+ program.addCommand(createAuditCommand());
87
93
  program.addCommand(createResourcesCommand());
88
94
  program.addCommand(createRagCommand());
89
95
  program.addCommand(createAgentCommand());
96
+ // Add standalone commands
97
+ doctorCommand(program);
90
98
  // Handle unknown commands
91
99
  program.on('command:*', (operands) => {
92
100
  const logger = createLogger();
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,kBAAkB,IAAI,OAAO,CAsT5C;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,kBAAkB,IAAI,OAAO,CA8Q5C;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -2,7 +2,6 @@
2
2
  * Agent command group
3
3
  */
4
4
  import { Command } from 'commander';
5
- import { auditCommand } from './audit.js';
6
5
  import { buildCommand } from './build.js';
7
6
  import { importCommand } from './import.js';
8
7
  import { installAgent } from './install.js';
@@ -138,42 +137,6 @@ Examples:
138
137
  $ vat agent validate agent-generator # Validate by name
139
138
  $ vat agent validate ./my-agent # Validate by path
140
139
  $ vat agent validate ./agent.yaml # Validate specific file
141
- `);
142
- agent
143
- .command('audit [path]')
144
- .description('Audit Claude Skills for quality and compatibility')
145
- .option('-r, --recursive', 'Scan directories recursively for SKILL.md files')
146
- .option('--debug', DEBUG_OPTION_DESC)
147
- .action(auditCommand)
148
- .addHelpText('after', `
149
- Description:
150
- Audits Claude Skills (SKILL.md files) for quality, correctness, and
151
- console compatibility. Validates frontmatter, links, naming conventions,
152
- and warns about console-incompatible features. Outputs YAML report to
153
- stdout, errors/warnings to stderr.
154
-
155
- Path can be: directory, single SKILL.md file, or VAT agent directory
156
- Default: current directory
157
-
158
- Validation Checks:
159
- Errors (must fix):
160
- - Missing or invalid frontmatter (name, description)
161
- - Broken links to other files
162
- - Reserved words in names (anthropic, claude)
163
- - XML tags in frontmatter fields
164
- - Windows-style backslashes in paths
165
-
166
- Warnings (should fix):
167
- - Skill exceeds recommended length (>5000 lines)
168
- - References console-incompatible tools (Write, Edit, Bash)
169
-
170
- Exit Codes:
171
- 0 - Success | 1 - Errors found | 2 - System error
172
-
173
- Examples:
174
- $ vat agent audit # Audit current directory
175
- $ vat agent audit ./my-skill/SKILL.md # Audit single skill
176
- $ vat agent audit ./skills --recursive # Audit all skills recursively
177
140
  `);
178
141
  agent
179
142
  .command('import <skillPath>')
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { ResourceMetadata } from '@vibe-agent-toolkit/resources';
2
+ export interface CacheStalenessResult {
3
+ fresh: FreshEntry[];
4
+ stale: StaleEntry[];
5
+ cacheOnly: ResourceMetadata[];
6
+ installedOnly: ResourceMetadata[];
7
+ }
8
+ export interface FreshEntry {
9
+ installed: ResourceMetadata;
10
+ cached: ResourceMetadata;
11
+ }
12
+ export interface StaleEntry {
13
+ installed: ResourceMetadata;
14
+ cached: ResourceMetadata;
15
+ }
16
+ /**
17
+ * Detect cache staleness by comparing checksums between installed and cached resources.
18
+ *
19
+ * Compares resources by filename and checksum to determine:
20
+ * - Fresh: Cache and installed have matching checksums
21
+ * - Stale: Cache and installed have different checksums
22
+ * - Cache-only: File exists in cache but not in installed
23
+ * - Installed-only: File exists in installed but not in cache
24
+ *
25
+ * Uses O(1) Map lookups for efficient matching.
26
+ *
27
+ * @param installed - Resources from installed plugin locations
28
+ * @param cached - Resources from ~/.claude/plugins/cache/
29
+ * @returns Categorized comparison results
30
+ */
31
+ export declare function detectCacheStaleness(installed: ResourceMetadata[], cached: ResourceMetadata[]): CacheStalenessResult;
32
+ //# sourceMappingURL=cache-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-detector.d.ts","sourceRoot":"","sources":["../../../src/commands/audit/cache-detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,aAAa,EAAE,gBAAgB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AASD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,gBAAgB,EAAE,EAC7B,MAAM,EAAE,gBAAgB,EAAE,GACzB,oBAAoB,CAmDtB"}
@@ -0,0 +1,68 @@
1
+ import path from 'node:path';
2
+ /**
3
+ * Extract filename from file path
4
+ */
5
+ function getFileName(filePath) {
6
+ return path.basename(filePath);
7
+ }
8
+ /**
9
+ * Detect cache staleness by comparing checksums between installed and cached resources.
10
+ *
11
+ * Compares resources by filename and checksum to determine:
12
+ * - Fresh: Cache and installed have matching checksums
13
+ * - Stale: Cache and installed have different checksums
14
+ * - Cache-only: File exists in cache but not in installed
15
+ * - Installed-only: File exists in installed but not in cache
16
+ *
17
+ * Uses O(1) Map lookups for efficient matching.
18
+ *
19
+ * @param installed - Resources from installed plugin locations
20
+ * @param cached - Resources from ~/.claude/plugins/cache/
21
+ * @returns Categorized comparison results
22
+ */
23
+ export function detectCacheStaleness(installed, cached) {
24
+ const fresh = [];
25
+ const stale = [];
26
+ const cacheOnly = [];
27
+ const installedOnly = [];
28
+ // Build index of installed resources by filename for O(1) lookup
29
+ const installedByName = new Map();
30
+ for (const resource of installed) {
31
+ const filename = getFileName(resource.filePath);
32
+ installedByName.set(filename, resource);
33
+ }
34
+ // Check each cached resource
35
+ const matchedInstalledNames = new Set();
36
+ for (const cachedResource of cached) {
37
+ const cachedFilename = getFileName(cachedResource.filePath);
38
+ const installedResource = installedByName.get(cachedFilename);
39
+ if (!installedResource) {
40
+ // Cache file has no corresponding installed file
41
+ cacheOnly.push(cachedResource);
42
+ continue;
43
+ }
44
+ matchedInstalledNames.add(cachedFilename);
45
+ if (cachedResource.checksum === installedResource.checksum) {
46
+ // Checksums match - cache is fresh
47
+ fresh.push({
48
+ installed: installedResource,
49
+ cached: cachedResource,
50
+ });
51
+ }
52
+ else {
53
+ // Checksums differ - cache is stale
54
+ stale.push({
55
+ installed: installedResource,
56
+ cached: cachedResource,
57
+ });
58
+ }
59
+ }
60
+ // Find installed resources with no cache entry
61
+ for (const [name, resource] of installedByName) {
62
+ if (!matchedInstalledNames.has(name)) {
63
+ installedOnly.push(resource);
64
+ }
65
+ }
66
+ return { fresh, stale, cacheOnly, installedOnly };
67
+ }
68
+ //# sourceMappingURL=cache-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-detector.js","sourceRoot":"","sources":["../../../src/commands/audit/cache-detector.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAqB7B;;GAEG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAA6B,EAC7B,MAA0B;IAE1B,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,aAAa,GAAuB,EAAE,CAAC;IAE7C,iEAAiE;IACjE,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAChD,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,6BAA6B;IAC7B,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,iDAAiD;YACjD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAE1C,IAAI,cAAc,CAAC,QAAQ,KAAK,iBAAiB,CAAC,QAAQ,EAAE,CAAC;YAC3D,mCAAmC;YACnC,KAAK,CAAC,IAAI,CAAC;gBACT,SAAS,EAAE,iBAAiB;gBAC5B,MAAM,EAAE,cAAc;aACvB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,oCAAoC;YACpC,KAAK,CAAC,IAAI,CAAC;gBACT,SAAS,EAAE,iBAAiB;gBAC5B,MAAM,EAAE,cAAc;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC;QAC/C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;AACpD,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { ValidationIssue, ValidationResult } from '@vibe-agent-toolkit/runtime-claude-skills';
2
+ export interface HierarchicalOutput {
3
+ marketplaces: MarketplaceGroup[];
4
+ cachedPlugins: PluginGroup[];
5
+ standalonePlugins: PluginGroup[];
6
+ standaloneSkills: SkillEntry[];
7
+ }
8
+ export interface MarketplaceGroup {
9
+ name: string;
10
+ plugins: PluginGroup[];
11
+ }
12
+ export interface PluginGroup {
13
+ name: string;
14
+ skills: SkillEntry[];
15
+ }
16
+ export type CacheStatus = 'stale' | 'orphaned' | 'fresh';
17
+ export interface SkillEntry {
18
+ name: string;
19
+ path: string;
20
+ status: 'success' | 'warning' | 'error';
21
+ issues: ValidationIssue[];
22
+ cacheStatus?: CacheStatus;
23
+ }
24
+ /**
25
+ * Build hierarchical output structure from validation results.
26
+ *
27
+ * Groups skills by:
28
+ * 1. Marketplace -> Plugin -> Skills (for marketplace-installed plugins)
29
+ * 2. Standalone Plugins -> Skills (for non-marketplace plugins)
30
+ * 3. Standalone Skills (for skills without plugins)
31
+ *
32
+ * By default, only includes skills with issues (terse principle).
33
+ * With verbose=true, includes all scanned skills regardless of status.
34
+ * Replaces home directory with ~ for cleaner display.
35
+ *
36
+ * @param results - Validation results from audit command
37
+ * @param verbose - If true, include all results; if false, only show results with issues
38
+ * @returns Hierarchical structure for display
39
+ */
40
+ export declare function buildHierarchicalOutput(results: ValidationResult[], verbose?: boolean): HierarchicalOutput;
41
+ //# sourceMappingURL=hierarchical-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchical-output.d.ts","sourceRoot":"","sources":["../../../src/commands/audit/hierarchical-output.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAGnG,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,gBAAgB,EAAE,UAAU,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA+RD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,OAAO,GAAE,OAAe,GAAG,kBAAkB,CAiCjH"}