@vibe-agent-toolkit/cli 0.1.0-rc.7

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 (162) hide show
  1. package/README.md +125 -0
  2. package/dist/bin/vat.d.ts +7 -0
  3. package/dist/bin/vat.d.ts.map +1 -0
  4. package/dist/bin/vat.js +52 -0
  5. package/dist/bin/vat.js.map +1 -0
  6. package/dist/bin.d.ts +7 -0
  7. package/dist/bin.d.ts.map +1 -0
  8. package/dist/bin.js +103 -0
  9. package/dist/bin.js.map +1 -0
  10. package/dist/commands/agent/audit.d.ts +9 -0
  11. package/dist/commands/agent/audit.d.ts.map +1 -0
  12. package/dist/commands/agent/audit.js +139 -0
  13. package/dist/commands/agent/audit.js.map +1 -0
  14. package/dist/commands/agent/build.d.ts +13 -0
  15. package/dist/commands/agent/build.d.ts.map +1 -0
  16. package/dist/commands/agent/build.js +52 -0
  17. package/dist/commands/agent/build.js.map +1 -0
  18. package/dist/commands/agent/help.d.ts +5 -0
  19. package/dist/commands/agent/help.d.ts.map +1 -0
  20. package/dist/commands/agent/help.js +10 -0
  21. package/dist/commands/agent/help.js.map +1 -0
  22. package/dist/commands/agent/import.d.ts +10 -0
  23. package/dist/commands/agent/import.d.ts.map +1 -0
  24. package/dist/commands/agent/import.js +50 -0
  25. package/dist/commands/agent/import.js.map +1 -0
  26. package/dist/commands/agent/index.d.ts +7 -0
  27. package/dist/commands/agent/index.d.ts.map +1 -0
  28. package/dist/commands/agent/index.js +293 -0
  29. package/dist/commands/agent/index.js.map +1 -0
  30. package/dist/commands/agent/install.d.ts +15 -0
  31. package/dist/commands/agent/install.d.ts.map +1 -0
  32. package/dist/commands/agent/install.js +107 -0
  33. package/dist/commands/agent/install.js.map +1 -0
  34. package/dist/commands/agent/installed.d.ts +13 -0
  35. package/dist/commands/agent/installed.d.ts.map +1 -0
  36. package/dist/commands/agent/installed.js +106 -0
  37. package/dist/commands/agent/installed.js.map +1 -0
  38. package/dist/commands/agent/list.d.ts +8 -0
  39. package/dist/commands/agent/list.d.ts.map +1 -0
  40. package/dist/commands/agent/list.js +41 -0
  41. package/dist/commands/agent/list.js.map +1 -0
  42. package/dist/commands/agent/run.d.ts +17 -0
  43. package/dist/commands/agent/run.d.ts.map +1 -0
  44. package/dist/commands/agent/run.js +44 -0
  45. package/dist/commands/agent/run.js.map +1 -0
  46. package/dist/commands/agent/uninstall.d.ts +13 -0
  47. package/dist/commands/agent/uninstall.d.ts.map +1 -0
  48. package/dist/commands/agent/uninstall.js +48 -0
  49. package/dist/commands/agent/uninstall.js.map +1 -0
  50. package/dist/commands/agent/validate.d.ts +8 -0
  51. package/dist/commands/agent/validate.d.ts.map +1 -0
  52. package/dist/commands/agent/validate.js +51 -0
  53. package/dist/commands/agent/validate.js.map +1 -0
  54. package/dist/commands/rag/clear-command.d.ts +10 -0
  55. package/dist/commands/rag/clear-command.d.ts.map +1 -0
  56. package/dist/commands/rag/clear-command.js +22 -0
  57. package/dist/commands/rag/clear-command.js.map +1 -0
  58. package/dist/commands/rag/command-helpers.d.ts +27 -0
  59. package/dist/commands/rag/command-helpers.d.ts.map +1 -0
  60. package/dist/commands/rag/command-helpers.js +58 -0
  61. package/dist/commands/rag/command-helpers.js.map +1 -0
  62. package/dist/commands/rag/help.d.ts +5 -0
  63. package/dist/commands/rag/help.d.ts.map +1 -0
  64. package/dist/commands/rag/help.js +10 -0
  65. package/dist/commands/rag/help.js.map +1 -0
  66. package/dist/commands/rag/index-command.d.ts +10 -0
  67. package/dist/commands/rag/index-command.d.ts.map +1 -0
  68. package/dist/commands/rag/index-command.js +49 -0
  69. package/dist/commands/rag/index-command.js.map +1 -0
  70. package/dist/commands/rag/index.d.ts +7 -0
  71. package/dist/commands/rag/index.d.ts.map +1 -0
  72. package/dist/commands/rag/index.js +168 -0
  73. package/dist/commands/rag/index.js.map +1 -0
  74. package/dist/commands/rag/query-command.d.ts +11 -0
  75. package/dist/commands/rag/query-command.d.ts.map +1 -0
  76. package/dist/commands/rag/query-command.js +54 -0
  77. package/dist/commands/rag/query-command.js.map +1 -0
  78. package/dist/commands/rag/stats-command.d.ts +10 -0
  79. package/dist/commands/rag/stats-command.d.ts.map +1 -0
  80. package/dist/commands/rag/stats-command.js +25 -0
  81. package/dist/commands/rag/stats-command.js.map +1 -0
  82. package/dist/commands/resources/command-helpers.d.ts +5 -0
  83. package/dist/commands/resources/command-helpers.d.ts.map +1 -0
  84. package/dist/commands/resources/command-helpers.js +6 -0
  85. package/dist/commands/resources/command-helpers.js.map +1 -0
  86. package/dist/commands/resources/help.d.ts +5 -0
  87. package/dist/commands/resources/help.d.ts.map +1 -0
  88. package/dist/commands/resources/help.js +10 -0
  89. package/dist/commands/resources/help.js.map +1 -0
  90. package/dist/commands/resources/index.d.ts +7 -0
  91. package/dist/commands/resources/index.d.ts.map +1 -0
  92. package/dist/commands/resources/index.js +64 -0
  93. package/dist/commands/resources/index.js.map +1 -0
  94. package/dist/commands/resources/scan.d.ts +9 -0
  95. package/dist/commands/resources/scan.d.ts.map +1 -0
  96. package/dist/commands/resources/scan.js +47 -0
  97. package/dist/commands/resources/scan.js.map +1 -0
  98. package/dist/commands/resources/validate.d.ts +9 -0
  99. package/dist/commands/resources/validate.d.ts.map +1 -0
  100. package/dist/commands/resources/validate.js +61 -0
  101. package/dist/commands/resources/validate.js.map +1 -0
  102. package/dist/index.d.ts +14 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +15 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/schemas/config.d.ts +1034 -0
  107. package/dist/schemas/config.d.ts.map +1 -0
  108. package/dist/schemas/config.js +135 -0
  109. package/dist/schemas/config.js.map +1 -0
  110. package/dist/utils/agent-discovery.d.ts +32 -0
  111. package/dist/utils/agent-discovery.d.ts.map +1 -0
  112. package/dist/utils/agent-discovery.js +108 -0
  113. package/dist/utils/agent-discovery.js.map +1 -0
  114. package/dist/utils/agent-runner.d.ts +22 -0
  115. package/dist/utils/agent-runner.d.ts.map +1 -0
  116. package/dist/utils/agent-runner.js +120 -0
  117. package/dist/utils/agent-runner.js.map +1 -0
  118. package/dist/utils/command-error.d.ts +19 -0
  119. package/dist/utils/command-error.d.ts.map +1 -0
  120. package/dist/utils/command-error.js +36 -0
  121. package/dist/utils/command-error.js.map +1 -0
  122. package/dist/utils/config-loader.d.ts +12 -0
  123. package/dist/utils/config-loader.d.ts.map +1 -0
  124. package/dist/utils/config-loader.js +39 -0
  125. package/dist/utils/config-loader.js.map +1 -0
  126. package/dist/utils/help-loader.d.ts +12 -0
  127. package/dist/utils/help-loader.d.ts.map +1 -0
  128. package/dist/utils/help-loader.js +39 -0
  129. package/dist/utils/help-loader.js.map +1 -0
  130. package/dist/utils/logger.d.ts +14 -0
  131. package/dist/utils/logger.d.ts.map +1 -0
  132. package/dist/utils/logger.js +21 -0
  133. package/dist/utils/logger.js.map +1 -0
  134. package/dist/utils/output.d.ts +20 -0
  135. package/dist/utils/output.d.ts.map +1 -0
  136. package/dist/utils/output.js +40 -0
  137. package/dist/utils/output.js.map +1 -0
  138. package/dist/utils/project-root.d.ts +11 -0
  139. package/dist/utils/project-root.d.ts.map +1 -0
  140. package/dist/utils/project-root.js +35 -0
  141. package/dist/utils/project-root.js.map +1 -0
  142. package/dist/utils/resource-loader.d.ts +30 -0
  143. package/dist/utils/resource-loader.d.ts.map +1 -0
  144. package/dist/utils/resource-loader.js +63 -0
  145. package/dist/utils/resource-loader.js.map +1 -0
  146. package/dist/utils/scope-locations.d.ts +17 -0
  147. package/dist/utils/scope-locations.d.ts.map +1 -0
  148. package/dist/utils/scope-locations.js +40 -0
  149. package/dist/utils/scope-locations.js.map +1 -0
  150. package/dist/utils/validate-help-files.d.ts +14 -0
  151. package/dist/utils/validate-help-files.d.ts.map +1 -0
  152. package/dist/utils/validate-help-files.js +61 -0
  153. package/dist/utils/validate-help-files.js.map +1 -0
  154. package/dist/version.d.ts +13 -0
  155. package/dist/version.d.ts.map +1 -0
  156. package/dist/version.js +27 -0
  157. package/dist/version.js.map +1 -0
  158. package/docs/agent.md +100 -0
  159. package/docs/index.md +65 -0
  160. package/docs/rag.md +449 -0
  161. package/docs/resources.md +158 -0
  162. package/package.json +68 -0
package/README.md ADDED
@@ -0,0 +1,125 @@
1
+ # @vibe-agent-toolkit/cli
2
+
3
+ Command-line interface for the Vibe Agent Toolkit.
4
+
5
+ ## Installation
6
+
7
+ Install the umbrella package globally:
8
+
9
+ ```bash
10
+ npm install -g vibe-agent-toolkit
11
+ ```
12
+
13
+ Or install CLI package directly in a project:
14
+
15
+ ```bash
16
+ npm install @vibe-agent-toolkit/cli
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ### Basic Commands
22
+
23
+ ```bash
24
+ # Show version (with context)
25
+ vat --version
26
+
27
+ # Show help
28
+ vat --help
29
+
30
+ # Show comprehensive help
31
+ vat --help --verbose
32
+ ```
33
+
34
+ ### Resources Commands
35
+
36
+ ```bash
37
+ # Scan markdown resources
38
+ vat resources scan docs/
39
+
40
+ # Validate link integrity
41
+ vat resources validate docs/
42
+
43
+ # Show resources help
44
+ vat resources --help --verbose
45
+ ```
46
+
47
+ ### RAG Commands
48
+
49
+ Index and query markdown documents using vector search:
50
+
51
+ ```bash
52
+ # Index markdown files into RAG database
53
+ vat rag index docs/
54
+
55
+ # Search the database
56
+ vat rag query "authentication methods"
57
+
58
+ # View database statistics
59
+ vat rag stats
60
+
61
+ # Clear database (rebuild required after)
62
+ vat rag clear
63
+ ```
64
+
65
+ **Database Options:**
66
+ - Default: `.rag-db` in project root
67
+ - Custom: `--db <path>` flag on any command
68
+
69
+ **Embedding Model:**
70
+ - Uses transformers.js with `all-MiniLM-L6-v2` (local, fast, free)
71
+ - 384-dimensional embeddings
72
+ - No API key required
73
+
74
+ ### Configuration
75
+
76
+ Create `vibe-agent-toolkit.config.yaml` at project root:
77
+
78
+ ```yaml
79
+ version: 1
80
+ resources:
81
+ include:
82
+ - "docs/**/*.md"
83
+ - "agents/**/README.md"
84
+ exclude:
85
+ - "node_modules/**"
86
+ - "**/test/fixtures/**"
87
+ validation:
88
+ checkLinks: true
89
+ checkAnchors: true
90
+ allowExternal: true
91
+ ```
92
+
93
+ ### Development Mode
94
+
95
+ Set `VAT_ROOT_DIR` to run from source:
96
+
97
+ ```bash
98
+ export VAT_ROOT_DIR=/path/to/vibe-agent-toolkit
99
+ vat --version # Shows: 0.1.0-dev (/path/to/vibe-agent-toolkit)
100
+ ```
101
+
102
+ ## Documentation
103
+
104
+ - [CLI Reference](./docs/) - Complete command documentation (markdown source)
105
+ - Run `vat --help --verbose` for the same documentation at runtime
106
+ - [Architecture](../../docs/architecture/README.md) - Package structure
107
+
108
+ ## Development
109
+
110
+ ```bash
111
+ # Build
112
+ bun run build
113
+
114
+ # Test
115
+ bun test
116
+ bun test:integration
117
+ bun test:system
118
+
119
+ # Prepare binaries after build
120
+ bun run prepare-cli-bin
121
+ ```
122
+
123
+ ## License
124
+
125
+ MIT © Jeff Dutton
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Smart wrapper for vat CLI
4
+ * Detects context (dev/local/global) and spawns appropriate binary
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=vat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vat.d.ts","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Smart wrapper for vat CLI
4
+ * Detects context (dev/local/global) and spawns appropriate binary
5
+ */
6
+ import { spawnSync } from 'node:child_process';
7
+ import { existsSync } from 'node:fs';
8
+ import { resolve, dirname, join } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { findProjectRoot } from '../utils/project-root.js';
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ function spawnCli(binPath, context, contextPath) {
13
+ const env = {
14
+ ...process.env,
15
+ VAT_CONTEXT: context,
16
+ VAT_CONTEXT_PATH: contextPath,
17
+ };
18
+ // eslint-disable-next-line sonarjs/no-os-command-from-path -- node is always in PATH for CLI usage
19
+ const result = spawnSync('node', [binPath, ...process.argv.slice(2)], {
20
+ stdio: 'inherit',
21
+ env,
22
+ });
23
+ process.exit(result.status ?? 1);
24
+ }
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']);
31
+ }
32
+ }
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);
39
+ }
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);
47
+ }
48
+ }
49
+ // 4. Global install fallback
50
+ const globalBinPath = resolve(__dirname, '../bin.js');
51
+ spawnCli(globalBinPath, 'global');
52
+ //# sourceMappingURL=vat.js.map
@@ -0,0 +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"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main entry point for vat CLI
4
+ * Uses Commander.js for command structure
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
package/dist/bin.js ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main entry point for vat CLI
4
+ * Uses Commander.js for command structure
5
+ */
6
+ import { Command } from 'commander';
7
+ import { createAgentCommand, showAgentVerboseHelp } from './commands/agent/index.js';
8
+ import { createRagCommand, showRagVerboseHelp } from './commands/rag/index.js';
9
+ import { createResourcesCommand, showResourcesVerboseHelp } from './commands/resources/index.js';
10
+ import { loadVerboseHelp } from './utils/help-loader.js';
11
+ import { createLogger } from './utils/logger.js';
12
+ import { version, getVersionString } from './version.js';
13
+ const program = new Command();
14
+ // Context detection from environment
15
+ const context = process.env['VAT_CONTEXT']
16
+ ? {
17
+ type: process.env['VAT_CONTEXT'],
18
+ path: process.env['VAT_CONTEXT_PATH'],
19
+ }
20
+ : null;
21
+ program
22
+ .name('vat')
23
+ .description('Vibe Agent Toolkit - Build, test, and deploy portable AI agents')
24
+ .version(getVersionString(version, context), '-v, --version', 'Output version number')
25
+ .option('--debug', 'Enable debug logging')
26
+ .option('--verbose', 'Show verbose help (markdown format)')
27
+ .helpCommand(false) // Disable redundant 'help' command, use --help instead
28
+ .showHelpAfterError()
29
+ .configureOutput({
30
+ writeOut: (str) => process.stdout.write(str), // Help goes to stdout (pipeable)
31
+ writeErr: (str) => process.stderr.write(str), // Errors go to stderr
32
+ })
33
+ .addHelpText('after', `
34
+ Example:
35
+ $ vat resources validate docs/ # Validate markdown links
36
+
37
+ For command details: vat resources --help
38
+ `);
39
+ // Handle --help --verbose at root level only
40
+ // Don't handle --verbose if a subcommand was specified
41
+ 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
+ // Special handling for "resources --verbose" before parsing
51
+ if (process.argv.includes('resources') && process.argv.includes('--verbose')) {
52
+ const argv = process.argv.slice(2);
53
+ const resourcesIndex = argv.indexOf('resources');
54
+ // Check if there's no subcommand after 'resources'
55
+ const afterResources = argv.slice(resourcesIndex + 1);
56
+ const hasSubcommand = afterResources.some(arg => !arg.startsWith('-'));
57
+ if (!hasSubcommand) {
58
+ showResourcesVerboseHelp();
59
+ process.exit(0);
60
+ }
61
+ }
62
+ // Special handling for "rag --verbose" before parsing
63
+ if (process.argv.includes('rag') && process.argv.includes('--verbose')) {
64
+ const argv = process.argv.slice(2);
65
+ const ragIndex = argv.indexOf('rag');
66
+ // Check if there's no subcommand after 'rag'
67
+ const afterRag = argv.slice(ragIndex + 1);
68
+ const hasSubcommand = afterRag.some(arg => !arg.startsWith('-'));
69
+ if (!hasSubcommand) {
70
+ showRagVerboseHelp();
71
+ process.exit(0);
72
+ }
73
+ }
74
+ // Special handling for "agent --verbose" before parsing
75
+ if (process.argv.includes('agent') && process.argv.includes('--verbose')) {
76
+ const argv = process.argv.slice(2);
77
+ const agentIndex = argv.indexOf('agent');
78
+ // Check if there's no subcommand after 'agent'
79
+ const afterAgent = argv.slice(agentIndex + 1);
80
+ const hasSubcommand = afterAgent.some(arg => !arg.startsWith('-'));
81
+ if (!hasSubcommand) {
82
+ showAgentVerboseHelp();
83
+ process.exit(0);
84
+ }
85
+ }
86
+ // Add command groups
87
+ program.addCommand(createResourcesCommand());
88
+ program.addCommand(createRagCommand());
89
+ program.addCommand(createAgentCommand());
90
+ // Handle unknown commands
91
+ program.on('command:*', (operands) => {
92
+ const logger = createLogger();
93
+ logger.error(`error: unknown command '${operands[0]}'`);
94
+ logger.error('');
95
+ program.help({ error: true });
96
+ });
97
+ program.parse();
98
+ function showVerboseHelp() {
99
+ const helpContent = loadVerboseHelp(); // Loads from docs/cli/index.md
100
+ process.stdout.write(helpContent);
101
+ process.stdout.write('\n');
102
+ }
103
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Agent audit command - audits Claude Skills for quality and compatibility
3
+ */
4
+ export interface AuditCommandOptions {
5
+ debug?: boolean;
6
+ recursive?: boolean;
7
+ }
8
+ export declare function auditCommand(targetPath: string | undefined, options: AuditCommandOptions): Promise<void>;
9
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Agent audit command - audits Claude Skills for quality and compatibility
3
+ */
4
+ import * as path from 'node:path';
5
+ import { detectFormat } from '@vibe-agent-toolkit/discovery';
6
+ import { validateSkill } from '@vibe-agent-toolkit/runtime-claude-skills';
7
+ import { handleCommandError } from '../../utils/command-error.js';
8
+ import { createLogger } from '../../utils/logger.js';
9
+ import { writeYamlOutput } from '../../utils/output.js';
10
+ export async function auditCommand(targetPath, options) {
11
+ const logger = createLogger(options.debug ? { debug: true } : {});
12
+ const startTime = Date.now();
13
+ try {
14
+ const scanPath = targetPath ? path.resolve(targetPath) : process.cwd();
15
+ logger.debug(`Auditing Claude Skills at: ${scanPath}`);
16
+ // Get validation results
17
+ const results = await getValidationResults(scanPath, options.recursive ?? false, logger);
18
+ // Calculate and output summary
19
+ const summary = calculateSummary(results, startTime);
20
+ writeYamlOutput(summary);
21
+ // Log human-readable output and exit
22
+ handleAuditResults(results, summary, logger);
23
+ }
24
+ catch (error) {
25
+ handleCommandError(error, logger, startTime, 'AgentAudit');
26
+ }
27
+ }
28
+ async function getValidationResults(scanPath, recursive, logger) {
29
+ const format = detectFormat(scanPath);
30
+ if (format === 'claude-skill') {
31
+ logger.debug('Detected single Claude Skill');
32
+ const result = await validateSkill({ skillPath: scanPath });
33
+ return [result];
34
+ }
35
+ if (format === 'vat-agent') {
36
+ const skillPath = path.join(scanPath, 'SKILL.md');
37
+ logger.debug('Detected VAT agent, validating SKILL.md');
38
+ const result = await validateSkill({ skillPath, isVATGenerated: true });
39
+ return [result];
40
+ }
41
+ logger.debug('Scanning directory for Claude Skills');
42
+ return scanDirectory(scanPath, recursive, logger);
43
+ }
44
+ function calculateSummary(results, startTime) {
45
+ const successCount = results.filter((r) => r.status === 'success').length;
46
+ const warningCount = results.filter((r) => r.status === 'warning').length;
47
+ const errorCount = results.filter((r) => r.status === 'error').length;
48
+ const totalErrors = results.reduce((sum, r) => sum + r.issues.filter(i => i.severity === 'error').length, 0);
49
+ const totalWarnings = results.reduce((sum, r) => sum + r.issues.filter(i => i.severity === 'warning').length, 0);
50
+ const totalInfo = results.reduce((sum, r) => sum + r.issues.filter(i => i.severity === 'info').length, 0);
51
+ let status;
52
+ if (errorCount > 0) {
53
+ status = 'error';
54
+ }
55
+ else if (warningCount > 0) {
56
+ status = 'warning';
57
+ }
58
+ else {
59
+ status = 'success';
60
+ }
61
+ return {
62
+ status,
63
+ summary: {
64
+ filesScanned: results.length,
65
+ success: successCount,
66
+ warnings: warningCount,
67
+ errors: errorCount,
68
+ },
69
+ issues: {
70
+ errors: totalErrors,
71
+ warnings: totalWarnings,
72
+ info: totalInfo,
73
+ },
74
+ files: results,
75
+ duration: `${Date.now() - startTime}ms`,
76
+ };
77
+ }
78
+ function handleAuditResults(results, summary, logger) {
79
+ const { errors: errorCount, warnings: warningCount, success: successCount } = summary.summary;
80
+ if (errorCount > 0) {
81
+ logErrors(results, errorCount, logger);
82
+ process.exit(1);
83
+ }
84
+ if (warningCount > 0) {
85
+ logWarnings(results, warningCount, logger);
86
+ }
87
+ else {
88
+ logger.info(`Audit successful: ${successCount} file(s) passed`);
89
+ }
90
+ process.exit(0);
91
+ }
92
+ function logErrors(results, errorCount, logger) {
93
+ logger.error(`Audit failed: ${errorCount} file(s) with errors`);
94
+ const errorResults = results.filter((r) => r.status === 'error');
95
+ for (const result of errorResults) {
96
+ logger.error(`\n${result.path}:`);
97
+ const errorIssues = result.issues.filter((i) => i.severity === 'error');
98
+ logIssues(errorIssues, logger.error.bind(logger));
99
+ }
100
+ }
101
+ function logWarnings(results, warningCount, logger) {
102
+ logger.info(`Audit passed with warnings: ${warningCount} file(s)`);
103
+ const warningResults = results.filter((r) => r.status === 'warning');
104
+ for (const result of warningResults) {
105
+ logger.info(`\n${result.path}:`);
106
+ const warningIssues = result.issues.filter((i) => i.severity === 'warning');
107
+ logIssues(warningIssues, logger.info.bind(logger));
108
+ }
109
+ }
110
+ function logIssues(issues, logFn) {
111
+ for (const issue of issues) {
112
+ logFn(` [${issue.code}] ${issue.message}`);
113
+ if (issue.location) {
114
+ logFn(` at: ${issue.location}`);
115
+ }
116
+ if (issue.fix) {
117
+ logFn(` fix: ${issue.fix}`);
118
+ }
119
+ }
120
+ }
121
+ async function scanDirectory(dirPath, recursive, logger) {
122
+ const fs = await import('node:fs/promises');
123
+ const results = [];
124
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
125
+ for (const entry of entries) {
126
+ const fullPath = path.join(dirPath, entry.name);
127
+ if (entry.isFile() && entry.name === 'SKILL.md') {
128
+ logger.debug(`Validating: ${fullPath}`);
129
+ const result = await validateSkill({ skillPath: fullPath });
130
+ results.push(result);
131
+ }
132
+ else if (entry.isDirectory() && recursive) {
133
+ const subResults = await scanDirectory(fullPath, recursive, logger);
134
+ results.push(...subResults);
135
+ }
136
+ }
137
+ return results;
138
+ }
139
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/agent/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Agent build command - Package agents for deployment targets
3
+ */
4
+ export interface BuildCommandOptions {
5
+ target?: string;
6
+ output?: string;
7
+ debug?: boolean;
8
+ }
9
+ /**
10
+ * Build an agent for a specific deployment target
11
+ */
12
+ export declare function buildCommand(pathOrName: string, options: BuildCommandOptions): Promise<void>;
13
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/build.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Agent build command - Package agents for deployment targets
3
+ */
4
+ import { buildClaudeSkill } from '@vibe-agent-toolkit/runtime-claude-skills';
5
+ import { resolveAgentPath } from '../../utils/agent-discovery.js';
6
+ import { handleCommandError } from '../../utils/command-error.js';
7
+ import { createLogger } from '../../utils/logger.js';
8
+ import { writeYamlOutput } from '../../utils/output.js';
9
+ /**
10
+ * Build an agent for a specific deployment target
11
+ */
12
+ export async function buildCommand(pathOrName, options) {
13
+ const logger = createLogger(options.debug ? { debug: true } : {});
14
+ const startTime = Date.now();
15
+ try {
16
+ const target = options.target ?? 'skill';
17
+ logger.debug(`Building agent for target: ${target}`);
18
+ // Resolve agent path
19
+ const agentPath = await resolveAgentPath(pathOrName, logger);
20
+ logger.debug(`Agent path resolved: ${agentPath}`);
21
+ // Build based on target
22
+ let result;
23
+ if (target === 'skill') {
24
+ logger.info('Building Claude Skill...');
25
+ // Only pass outputPath if explicitly provided by user
26
+ const buildOptions = options.output
27
+ ? { agentPath, target, outputPath: options.output }
28
+ : { agentPath, target };
29
+ result = await buildClaudeSkill(buildOptions);
30
+ }
31
+ else {
32
+ throw new Error(`Unsupported build target: ${target}`);
33
+ }
34
+ const duration = Date.now() - startTime;
35
+ // Output success result
36
+ writeYamlOutput({
37
+ status: 'success',
38
+ agent: result.agent.name,
39
+ target,
40
+ output: result.outputPath,
41
+ files: result.files,
42
+ duration: `${duration}ms`,
43
+ });
44
+ logger.info(`Build completed in ${duration}ms`);
45
+ logger.info(`Output: ${result.outputPath}`);
46
+ process.exit(0);
47
+ }
48
+ catch (error) {
49
+ handleCommandError(error, logger, startTime, 'AgentBuild');
50
+ }
51
+ }
52
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/agent/build.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAE7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,OAA4B;IAE5B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC;QAElD,wBAAwB;QACxB,IAAI,MAAM,CAAC;QACX,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACxC,sDAAsD;YACtD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM;gBACjC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE;gBACnD,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC1B,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,wBAAwB;QACxB,eAAe,CAAC;YACd,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;YACxB,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,UAAU;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,GAAG,QAAQ,IAAI;SAC1B,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,sBAAsB,QAAQ,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Verbose help for agent commands
3
+ */
4
+ export declare function showAgentVerboseHelp(): void;
5
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Verbose help for agent commands
3
+ */
4
+ import { loadVerboseHelp } from '../../utils/help-loader.js';
5
+ export function showAgentVerboseHelp() {
6
+ const helpContent = loadVerboseHelp('agent'); // Loads from docs/agent.md
7
+ process.stdout.write(helpContent);
8
+ process.stdout.write('\n');
9
+ }
10
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/commands/agent/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,UAAU,oBAAoB;IAClC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;IACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Agent import command - convert SKILL.md to agent.yaml
3
+ */
4
+ export interface ImportCommandOptions {
5
+ debug?: boolean;
6
+ output?: string;
7
+ force?: boolean;
8
+ }
9
+ export declare function importCommand(skillPath: string, options: ImportCommandOptions): Promise<void>;
10
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Agent import command - convert SKILL.md to agent.yaml
3
+ */
4
+ import * as path from 'node:path';
5
+ import { importSkillToAgent } from '@vibe-agent-toolkit/runtime-claude-skills';
6
+ import { handleCommandError } from '../../utils/command-error.js';
7
+ import { createLogger } from '../../utils/logger.js';
8
+ import { writeYamlOutput } from '../../utils/output.js';
9
+ export async function importCommand(skillPath, options) {
10
+ const logger = createLogger(options.debug ? { debug: true } : {});
11
+ const startTime = Date.now();
12
+ try {
13
+ // Resolve path
14
+ const resolvedSkillPath = path.resolve(skillPath);
15
+ logger.debug(`Importing Claude Skill: ${resolvedSkillPath}`);
16
+ // Import SKILL.md to agent.yaml
17
+ const importOptions = {
18
+ skillPath: resolvedSkillPath,
19
+ force: options.force ?? false,
20
+ };
21
+ if (options.output) {
22
+ importOptions.outputPath = path.resolve(options.output);
23
+ }
24
+ const result = await importSkillToAgent(importOptions);
25
+ if (!result.success) {
26
+ // Import failed
27
+ const output = {
28
+ status: 'error',
29
+ error: result.error,
30
+ duration: `${Date.now() - startTime}ms`,
31
+ };
32
+ writeYamlOutput(output);
33
+ logger.error(`Import failed: ${result.error}`);
34
+ process.exit(1);
35
+ }
36
+ // Import successful
37
+ const output = {
38
+ status: 'success',
39
+ agentPath: result.agentPath,
40
+ duration: `${Date.now() - startTime}ms`,
41
+ };
42
+ writeYamlOutput(output);
43
+ logger.info(`Successfully imported Claude Skill to: ${result.agentPath}`);
44
+ process.exit(0);
45
+ }
46
+ catch (error) {
47
+ handleCommandError(error, logger, startTime, 'AgentImport');
48
+ }
49
+ }
50
+ //# sourceMappingURL=import.js.map