@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.
- package/README.md +125 -0
- package/dist/bin/vat.d.ts +7 -0
- package/dist/bin/vat.d.ts.map +1 -0
- package/dist/bin/vat.js +52 -0
- package/dist/bin/vat.js.map +1 -0
- package/dist/bin.d.ts +7 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +103 -0
- package/dist/bin.js.map +1 -0
- package/dist/commands/agent/audit.d.ts +9 -0
- package/dist/commands/agent/audit.d.ts.map +1 -0
- package/dist/commands/agent/audit.js +139 -0
- package/dist/commands/agent/audit.js.map +1 -0
- package/dist/commands/agent/build.d.ts +13 -0
- package/dist/commands/agent/build.d.ts.map +1 -0
- package/dist/commands/agent/build.js +52 -0
- package/dist/commands/agent/build.js.map +1 -0
- package/dist/commands/agent/help.d.ts +5 -0
- package/dist/commands/agent/help.d.ts.map +1 -0
- package/dist/commands/agent/help.js +10 -0
- package/dist/commands/agent/help.js.map +1 -0
- package/dist/commands/agent/import.d.ts +10 -0
- package/dist/commands/agent/import.d.ts.map +1 -0
- package/dist/commands/agent/import.js +50 -0
- package/dist/commands/agent/import.js.map +1 -0
- package/dist/commands/agent/index.d.ts +7 -0
- package/dist/commands/agent/index.d.ts.map +1 -0
- package/dist/commands/agent/index.js +293 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/install.d.ts +15 -0
- package/dist/commands/agent/install.d.ts.map +1 -0
- package/dist/commands/agent/install.js +107 -0
- package/dist/commands/agent/install.js.map +1 -0
- package/dist/commands/agent/installed.d.ts +13 -0
- package/dist/commands/agent/installed.d.ts.map +1 -0
- package/dist/commands/agent/installed.js +106 -0
- package/dist/commands/agent/installed.js.map +1 -0
- package/dist/commands/agent/list.d.ts +8 -0
- package/dist/commands/agent/list.d.ts.map +1 -0
- package/dist/commands/agent/list.js +41 -0
- package/dist/commands/agent/list.js.map +1 -0
- package/dist/commands/agent/run.d.ts +17 -0
- package/dist/commands/agent/run.d.ts.map +1 -0
- package/dist/commands/agent/run.js +44 -0
- package/dist/commands/agent/run.js.map +1 -0
- package/dist/commands/agent/uninstall.d.ts +13 -0
- package/dist/commands/agent/uninstall.d.ts.map +1 -0
- package/dist/commands/agent/uninstall.js +48 -0
- package/dist/commands/agent/uninstall.js.map +1 -0
- package/dist/commands/agent/validate.d.ts +8 -0
- package/dist/commands/agent/validate.d.ts.map +1 -0
- package/dist/commands/agent/validate.js +51 -0
- package/dist/commands/agent/validate.js.map +1 -0
- package/dist/commands/rag/clear-command.d.ts +10 -0
- package/dist/commands/rag/clear-command.d.ts.map +1 -0
- package/dist/commands/rag/clear-command.js +22 -0
- package/dist/commands/rag/clear-command.js.map +1 -0
- package/dist/commands/rag/command-helpers.d.ts +27 -0
- package/dist/commands/rag/command-helpers.d.ts.map +1 -0
- package/dist/commands/rag/command-helpers.js +58 -0
- package/dist/commands/rag/command-helpers.js.map +1 -0
- package/dist/commands/rag/help.d.ts +5 -0
- package/dist/commands/rag/help.d.ts.map +1 -0
- package/dist/commands/rag/help.js +10 -0
- package/dist/commands/rag/help.js.map +1 -0
- package/dist/commands/rag/index-command.d.ts +10 -0
- package/dist/commands/rag/index-command.d.ts.map +1 -0
- package/dist/commands/rag/index-command.js +49 -0
- package/dist/commands/rag/index-command.js.map +1 -0
- package/dist/commands/rag/index.d.ts +7 -0
- package/dist/commands/rag/index.d.ts.map +1 -0
- package/dist/commands/rag/index.js +168 -0
- package/dist/commands/rag/index.js.map +1 -0
- package/dist/commands/rag/query-command.d.ts +11 -0
- package/dist/commands/rag/query-command.d.ts.map +1 -0
- package/dist/commands/rag/query-command.js +54 -0
- package/dist/commands/rag/query-command.js.map +1 -0
- package/dist/commands/rag/stats-command.d.ts +10 -0
- package/dist/commands/rag/stats-command.d.ts.map +1 -0
- package/dist/commands/rag/stats-command.js +25 -0
- package/dist/commands/rag/stats-command.js.map +1 -0
- package/dist/commands/resources/command-helpers.d.ts +5 -0
- package/dist/commands/resources/command-helpers.d.ts.map +1 -0
- package/dist/commands/resources/command-helpers.js +6 -0
- package/dist/commands/resources/command-helpers.js.map +1 -0
- package/dist/commands/resources/help.d.ts +5 -0
- package/dist/commands/resources/help.d.ts.map +1 -0
- package/dist/commands/resources/help.js +10 -0
- package/dist/commands/resources/help.js.map +1 -0
- package/dist/commands/resources/index.d.ts +7 -0
- package/dist/commands/resources/index.d.ts.map +1 -0
- package/dist/commands/resources/index.js +64 -0
- package/dist/commands/resources/index.js.map +1 -0
- package/dist/commands/resources/scan.d.ts +9 -0
- package/dist/commands/resources/scan.d.ts.map +1 -0
- package/dist/commands/resources/scan.js +47 -0
- package/dist/commands/resources/scan.js.map +1 -0
- package/dist/commands/resources/validate.d.ts +9 -0
- package/dist/commands/resources/validate.d.ts.map +1 -0
- package/dist/commands/resources/validate.js +61 -0
- package/dist/commands/resources/validate.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/config.d.ts +1034 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +135 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/utils/agent-discovery.d.ts +32 -0
- package/dist/utils/agent-discovery.d.ts.map +1 -0
- package/dist/utils/agent-discovery.js +108 -0
- package/dist/utils/agent-discovery.js.map +1 -0
- package/dist/utils/agent-runner.d.ts +22 -0
- package/dist/utils/agent-runner.d.ts.map +1 -0
- package/dist/utils/agent-runner.js +120 -0
- package/dist/utils/agent-runner.js.map +1 -0
- package/dist/utils/command-error.d.ts +19 -0
- package/dist/utils/command-error.d.ts.map +1 -0
- package/dist/utils/command-error.js +36 -0
- package/dist/utils/command-error.js.map +1 -0
- package/dist/utils/config-loader.d.ts +12 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +39 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/help-loader.d.ts +12 -0
- package/dist/utils/help-loader.d.ts.map +1 -0
- package/dist/utils/help-loader.js +39 -0
- package/dist/utils/help-loader.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +21 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output.d.ts +20 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +40 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/project-root.d.ts +11 -0
- package/dist/utils/project-root.d.ts.map +1 -0
- package/dist/utils/project-root.js +35 -0
- package/dist/utils/project-root.js.map +1 -0
- package/dist/utils/resource-loader.d.ts +30 -0
- package/dist/utils/resource-loader.d.ts.map +1 -0
- package/dist/utils/resource-loader.js +63 -0
- package/dist/utils/resource-loader.js.map +1 -0
- package/dist/utils/scope-locations.d.ts +17 -0
- package/dist/utils/scope-locations.d.ts.map +1 -0
- package/dist/utils/scope-locations.js +40 -0
- package/dist/utils/scope-locations.js.map +1 -0
- package/dist/utils/validate-help-files.d.ts +14 -0
- package/dist/utils/validate-help-files.d.ts.map +1 -0
- package/dist/utils/validate-help-files.js +61 -0
- package/dist/utils/validate-help-files.js.map +1 -0
- package/dist/version.d.ts +13 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +27 -0
- package/dist/version.js.map +1 -0
- package/docs/agent.md +100 -0
- package/docs/index.md +65 -0
- package/docs/rag.md +449 -0
- package/docs/resources.md +158 -0
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"vat.d.ts","sourceRoot":"","sources":["../../src/bin/vat.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
package/dist/bin/vat.js
ADDED
|
@@ -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 @@
|
|
|
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
|
package/dist/bin.js.map
ADDED
|
@@ -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 @@
|
|
|
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
|