@vibe-agent-toolkit/cli 0.1.0 → 0.1.2-rc.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 (54) hide show
  1. package/README.md +67 -4
  2. package/dist/bin.js +17 -12
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/agent/index.d.ts.map +1 -1
  5. package/dist/commands/agent/index.js +0 -37
  6. package/dist/commands/agent/index.js.map +1 -1
  7. package/dist/commands/audit/cache-detector.d.ts +32 -0
  8. package/dist/commands/audit/cache-detector.d.ts.map +1 -0
  9. package/dist/commands/audit/cache-detector.js +68 -0
  10. package/dist/commands/audit/cache-detector.js.map +1 -0
  11. package/dist/commands/audit/hierarchical-output.d.ts +41 -0
  12. package/dist/commands/audit/hierarchical-output.d.ts.map +1 -0
  13. package/dist/commands/audit/hierarchical-output.js +267 -0
  14. package/dist/commands/audit/hierarchical-output.js.map +1 -0
  15. package/dist/commands/audit.d.ts +19 -0
  16. package/dist/commands/audit.d.ts.map +1 -0
  17. package/dist/commands/audit.js +404 -0
  18. package/dist/commands/audit.js.map +1 -0
  19. package/dist/commands/doctor.d.ts +106 -0
  20. package/dist/commands/doctor.d.ts.map +1 -0
  21. package/dist/commands/doctor.js +499 -0
  22. package/dist/commands/doctor.js.map +1 -0
  23. package/dist/commands/mcp/collections.d.ts +48 -0
  24. package/dist/commands/mcp/collections.d.ts.map +1 -0
  25. package/dist/commands/mcp/collections.js +130 -0
  26. package/dist/commands/mcp/collections.js.map +1 -0
  27. package/dist/commands/mcp/index.d.ts +9 -0
  28. package/dist/commands/mcp/index.d.ts.map +1 -0
  29. package/dist/commands/mcp/index.js +80 -0
  30. package/dist/commands/mcp/index.js.map +1 -0
  31. package/dist/commands/mcp/list-collections.d.ts +11 -0
  32. package/dist/commands/mcp/list-collections.d.ts.map +1 -0
  33. package/dist/commands/mcp/list-collections.js +43 -0
  34. package/dist/commands/mcp/list-collections.js.map +1 -0
  35. package/dist/commands/mcp/serve.d.ts +12 -0
  36. package/dist/commands/mcp/serve.d.ts.map +1 -0
  37. package/dist/commands/mcp/serve.js +87 -0
  38. package/dist/commands/mcp/serve.js.map +1 -0
  39. package/dist/commands/resources/scan.d.ts.map +1 -1
  40. package/dist/commands/resources/scan.js +8 -0
  41. package/dist/commands/resources/scan.js.map +1 -1
  42. package/dist/utils/config-loader.d.ts +6 -0
  43. package/dist/utils/config-loader.d.ts.map +1 -1
  44. package/dist/utils/config-loader.js +18 -0
  45. package/dist/utils/config-loader.js.map +1 -1
  46. package/docs/audit.md +446 -0
  47. package/docs/doctor.md +268 -0
  48. package/docs/index.md +32 -0
  49. package/docs/mcp.md +317 -0
  50. package/package.json +14 -8
  51. package/dist/commands/agent/audit.d.ts +0 -9
  52. package/dist/commands/agent/audit.d.ts.map +0 -1
  53. package/dist/commands/agent/audit.js +0 -139
  54. package/dist/commands/agent/audit.js.map +0 -1
package/docs/index.md CHANGED
@@ -79,6 +79,38 @@ vat resources scan docs/ # Scan specific directory
79
79
 
80
80
  ---
81
81
 
82
+ ### `doctor`
83
+
84
+ Diagnose vat setup and environment health
85
+
86
+ **What it does:**
87
+
88
+ - Checks Node.js version (>=20 required)
89
+ - Checks Git installation and repository
90
+ - Validates configuration file exists and is valid
91
+ - Checks vat version and available updates
92
+ - Verifies CLI build status (in VAT source tree)
93
+
94
+ **When to use:** Before starting development, after updates, or debugging issues
95
+
96
+ **Exit codes:**
97
+
98
+ - `0` - All checks passed
99
+ - `1` - One or more checks failed
100
+
101
+ **Creates/modifies:** None (read-only diagnostics)
102
+
103
+ **Examples:**
104
+
105
+ ```bash
106
+ vat doctor # Run diagnostic checks
107
+ vat doctor --verbose # Show all checks (including passing)
108
+ ```
109
+
110
+ **More details:** `vat doctor --help` or see `packages/cli/docs/doctor.md`
111
+
112
+ ---
113
+
82
114
  ### `agent build`
83
115
 
84
116
  Build agent for deployment to target runtime
package/docs/mcp.md ADDED
@@ -0,0 +1,317 @@
1
+ # MCP Commands
2
+
3
+ Expose VAT agents via Model Context Protocol (MCP) for Claude Desktop and other MCP clients.
4
+
5
+ ## Overview
6
+
7
+ The MCP Gateway exposes VAT agents as tools that LLM systems can discover and invoke. This enables:
8
+
9
+ - **Claude Desktop integration** - Use agents through conversational UI
10
+ - **Agent orchestration** - LLMs coordinate multiple agents for complex tasks
11
+ - **Standardized discovery** - Clients can find and understand available tools
12
+
13
+ ## Commands
14
+
15
+ ### `vat mcp list-collections`
16
+
17
+ List known MCP agent packages.
18
+
19
+ **Usage:**
20
+ ```bash
21
+ vat mcp list-collections [options]
22
+ ```
23
+
24
+ **Options:**
25
+ - `--debug` - Enable debug logging
26
+
27
+ **Output:**
28
+ Lists all known packages that export MCP agent collections.
29
+
30
+ **Example:**
31
+ ```bash
32
+ $ vat mcp list-collections
33
+
34
+ Available MCP agent packages:
35
+
36
+ @vibe-agent-toolkit/vat-example-cat-agents
37
+ Example cat breeding agents (haiku validator, photo analyzer)
38
+
39
+ Usage:
40
+ vat mcp serve <package> # Start MCP server
41
+ vat mcp serve <package> --print-config # Show Claude Desktop config
42
+ ```
43
+
44
+ ### `vat mcp serve`
45
+
46
+ Start an MCP stdio server exposing agents from a package.
47
+
48
+ **Usage:**
49
+ ```bash
50
+ vat mcp serve <package> [options]
51
+ ```
52
+
53
+ **Arguments:**
54
+ - `<package>` - Package name or file path
55
+ - Package: `@scope/package` (from node_modules)
56
+ - File path: `./path` or `/abs/path` (local development)
57
+ - Collection suffix: `package:collection-name` (if multiple)
58
+
59
+ **Options:**
60
+ - `--debug` - Enable debug logging
61
+ - `--print-config` - Print Claude Desktop configuration and exit
62
+
63
+ **Behavior:**
64
+ - Runs until terminated (Ctrl+C)
65
+ - Writes MCP protocol messages to stdout
66
+ - Writes logs to stderr (does not interfere with protocol)
67
+
68
+ **Example - Production:**
69
+ ```bash
70
+ vat mcp serve @vibe-agent-toolkit/vat-example-cat-agents
71
+ ```
72
+
73
+ **Example - Local Development:**
74
+ ```bash
75
+ vat mcp serve ./packages/vat-example-cat-agents
76
+ ```
77
+
78
+ **Example - Show Configuration:**
79
+ ```bash
80
+ $ vat mcp serve @vibe-agent-toolkit/vat-example-cat-agents --print-config
81
+
82
+ Claude Desktop configuration for '@vibe-agent-toolkit/vat-example-cat-agents':
83
+
84
+ Add this to ~/.claude/config.json:
85
+
86
+ {
87
+ "mcpServers": {
88
+ "vat-example-cat-agents": {
89
+ "command": "vat",
90
+ "args": ["mcp", "serve", "@vibe-agent-toolkit/vat-example-cat-agents"]
91
+ }
92
+ }
93
+ }
94
+
95
+ Then restart Claude Desktop to load the MCP server.
96
+ ```
97
+
98
+ ## Claude Desktop Integration
99
+
100
+ ### Configuration File
101
+
102
+ MCP servers are configured in:
103
+ - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
104
+ - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
105
+ - **Linux:** `~/.config/Claude/claude_desktop_config.json`
106
+
107
+ ### Basic Setup
108
+
109
+ 1. **Generate configuration:**
110
+ ```bash
111
+ vat mcp serve <package> --print-config
112
+ ```
113
+
114
+ 2. **Add to Claude Desktop config:**
115
+ Copy the generated JSON to your `claude_desktop_config.json`
116
+
117
+ 3. **Restart Claude Desktop:**
118
+ Completely quit and reopen the application
119
+
120
+ 4. **Verify connection:**
121
+ Check Claude Desktop developer console (View → Developer → Toggle Developer Tools)
122
+
123
+ ### Development Setup
124
+
125
+ For local development with unreleased code:
126
+
127
+ ```json
128
+ {
129
+ "mcpServers": {
130
+ "my-agents-dev": {
131
+ "command": "node",
132
+ "args": [
133
+ "/path/to/vibe-agent-toolkit/packages/cli/dist/bin/vat",
134
+ "mcp",
135
+ "serve",
136
+ "@my-scope/my-agents"
137
+ ],
138
+ "env": {
139
+ "VAT_ROOT_DIR": "/path/to/vibe-agent-toolkit"
140
+ }
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ The `VAT_ROOT_DIR` environment variable tells the wrapper to use local development code.
147
+
148
+ ## Package Structure
149
+
150
+ MCP agent packages must export collections via the `/mcp-collections` entrypoint.
151
+
152
+ ### Example: `src/mcp-collections.ts`
153
+
154
+ ```typescript
155
+ import type { Agent, OneShotAgentOutput } from '@vibe-agent-toolkit/agent-schema';
156
+ import { createSuccess } from '@vibe-agent-toolkit/agent-schema';
157
+
158
+ export interface MCPAgentRegistration {
159
+ name: string;
160
+ agent: Agent<unknown, OneShotAgentOutput<unknown, string>>;
161
+ description: string;
162
+ }
163
+
164
+ export interface MCPCollection {
165
+ name: string;
166
+ description: string;
167
+ agents: MCPAgentRegistration[];
168
+ }
169
+
170
+ // Wrap stateless agents for MCP
171
+ function wrapStatelessAgent<TInput, TOutput>(
172
+ agent: { name: string; manifest: unknown; execute: (input: TInput) => TOutput | Promise<TOutput> }
173
+ ): Agent<TInput, OneShotAgentOutput<TOutput, string>> {
174
+ return {
175
+ name: agent.name,
176
+ manifest: agent.manifest as any,
177
+ execute: async (input: TInput) => {
178
+ const data = await Promise.resolve(agent.execute(input));
179
+ return {
180
+ result: createSuccess(data),
181
+ };
182
+ },
183
+ };
184
+ }
185
+
186
+ export const myAgents: MCPCollection = {
187
+ name: 'my-agents',
188
+ description: 'My agent collection',
189
+ agents: [
190
+ {
191
+ name: 'my-agent',
192
+ agent: wrapStatelessAgent(myAgent),
193
+ description: 'Agent description',
194
+ },
195
+ ],
196
+ };
197
+
198
+ export const collections: Record<string, MCPCollection> = {
199
+ 'my-agents': myAgents,
200
+ };
201
+
202
+ export const defaultCollection = myAgents;
203
+ ```
204
+
205
+ ### Example: `package.json`
206
+
207
+ ```json
208
+ {
209
+ "name": "@my-scope/my-agents",
210
+ "exports": {
211
+ ".": {
212
+ "types": "./dist/index.d.ts",
213
+ "default": "./dist/index.js"
214
+ },
215
+ "./mcp-collections": {
216
+ "types": "./dist/mcp-collections.d.ts",
217
+ "default": "./dist/mcp-collections.js"
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ ## Troubleshooting
224
+
225
+ ### Server Won't Start
226
+
227
+ **Check logs:**
228
+ - **macOS:** `~/Library/Logs/Claude/mcp-server-<name>.log`
229
+ - **Windows:** `%APPDATA%\Claude\logs\mcp-server-<name>.log`
230
+ - **Linux:** `~/.config/Claude/logs/mcp-server-<name>.log`
231
+
232
+ **Common issues:**
233
+ 1. **Package not installed:** Run `npm install <package>` or `bun install <package>`
234
+ 2. **Package not built:** Run `bun run build` in development workspace
235
+ 3. **Wrong path:** Verify command path in config matches your setup
236
+ 4. **Missing entrypoint:** Ensure package exports `/mcp-collections`
237
+
238
+ ### Tools Not Appearing
239
+
240
+ **Verify server is running:**
241
+ 1. Open Claude Desktop developer console
242
+ 2. Look for MCP connection logs
243
+ 3. Check for error messages
244
+
245
+ **Test server manually:**
246
+ ```bash
247
+ # Send initialize request
248
+ echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | vat mcp serve <package>
249
+ ```
250
+
251
+ Should receive JSON-RPC response on stdout.
252
+
253
+ ### Development Mode Not Working
254
+
255
+ **Ensure VAT_ROOT_DIR is set:**
256
+ ```bash
257
+ # Test in terminal first
258
+ VAT_ROOT_DIR=/path/to/workspace vat --version
259
+ # Should show "-dev" suffix
260
+ ```
261
+
262
+ **Check config includes env:**
263
+ ```json
264
+ {
265
+ "env": {
266
+ "VAT_ROOT_DIR": "/absolute/path/to/workspace"
267
+ }
268
+ }
269
+ ```
270
+
271
+ ## Architecture
272
+
273
+ ### Stdio Transport
274
+
275
+ The MCP server uses stdio transport for Claude Desktop:
276
+ - **stdin** - Receives JSON-RPC requests
277
+ - **stdout** - Sends JSON-RPC responses (protocol messages ONLY)
278
+ - **stderr** - Logs, debug output, errors
279
+
280
+ ### Process Lifetime
281
+
282
+ The server runs until stdin closes:
283
+ 1. Claude Desktop spawns the process
284
+ 2. Server waits for JSON-RPC messages on stdin
285
+ 3. Server sends responses on stdout
286
+ 4. When stdin closes, server terminates
287
+
288
+ ### Protocol Compliance
289
+
290
+ All implementations must:
291
+ - Write ONLY JSON-RPC to stdout
292
+ - Write all logs to stderr
293
+ - Handle stdio cleanup properly
294
+ - Support graceful shutdown on SIGINT
295
+
296
+ ## Current Implementation
297
+
298
+ **Supported:**
299
+ - ✅ Stateless agents (pure function tools, one-shot LLM analyzers)
300
+ - ✅ Package-scoped collections
301
+ - ✅ Claude Desktop integration
302
+ - ✅ Local development with VAT_ROOT_DIR
303
+
304
+ **Not Yet Supported:**
305
+ - ❌ Stateful agents (conversational assistants)
306
+ - ❌ Global discovery registry
307
+ - ❌ HTTP transport
308
+ - ❌ WebSocket transport
309
+ - ❌ Multi-session management
310
+
311
+ See [MCP Gateway README](../../gateway-mcp/README.md) for planned features.
312
+
313
+ ## See Also
314
+
315
+ - [MCP Gateway README](../../gateway-mcp/README.md)
316
+ - [Example Cat Agents](../../vat-example-cat-agents/README.md)
317
+ - [VAT Architecture](../../../docs/architecture/README.md)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibe-agent-toolkit/cli",
3
- "version": "0.1.0",
3
+ "version": "0.1.2-rc.1",
4
4
  "description": "Command-line interface for vibe-agent-toolkit",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,21 +40,27 @@
40
40
  "license": "MIT",
41
41
  "dependencies": {
42
42
  "@anthropic-ai/sdk": "^0.71.2",
43
- "@vibe-agent-toolkit/agent-config": "0.1.0",
44
- "@vibe-agent-toolkit/discovery": "0.1.0",
45
- "@vibe-agent-toolkit/rag": "0.1.0",
46
- "@vibe-agent-toolkit/rag-lancedb": "0.1.0",
47
- "@vibe-agent-toolkit/resources": "0.1.0",
48
- "@vibe-agent-toolkit/runtime-claude-skills": "0.1.0",
49
- "@vibe-agent-toolkit/utils": "0.1.0",
43
+ "@vibe-agent-toolkit/agent-config": "0.1.2-rc.1",
44
+ "@vibe-agent-toolkit/agent-schema": "0.1.2-rc.1",
45
+ "@vibe-agent-toolkit/discovery": "0.1.2-rc.1",
46
+ "@vibe-agent-toolkit/gateway-mcp": "0.1.2-rc.1",
47
+ "@vibe-agent-toolkit/rag": "0.1.2-rc.1",
48
+ "@vibe-agent-toolkit/rag-lancedb": "0.1.2-rc.1",
49
+ "@vibe-agent-toolkit/resources": "0.1.2-rc.1",
50
+ "@vibe-agent-toolkit/runtime-claude-skills": "0.1.2-rc.1",
51
+ "@vibe-agent-toolkit/utils": "0.1.2-rc.1",
52
+ "@vibe-agent-toolkit/vat-example-cat-agents": "0.1.2-rc.1",
50
53
  "commander": "^12.1.0",
51
54
  "js-yaml": "^4.1.0",
55
+ "semver": "^7.7.3",
52
56
  "zod": "^3.24.1"
53
57
  },
54
58
  "devDependencies": {
55
59
  "@types/js-yaml": "^4.0.9",
56
60
  "@types/node": "^22.10.5",
61
+ "@types/semver": "^7.7.1",
57
62
  "rimraf": "^6.0.1",
63
+ "tar": "^7.5.2",
58
64
  "typescript": "^5.7.3",
59
65
  "vitest": "^2.1.8"
60
66
  },
@@ -1,9 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,139 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/agent/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAyB,MAAM,2CAA2C,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAOxD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAA8B,EAC9B,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,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;QAEvD,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;QAEzF,+BAA+B;QAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrD,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzB,qCAAqC;QACrC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,QAAgB,EAChB,SAAkB,EAClB,MAAuC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,OAA2B,EAAE,SAAiB;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC5F,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAExF,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAmB,EAAE,EAAE,CACtE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAC7D,CAAC;IACF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAmB,EAAE,EAAE,CACxE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAC/D,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,CAAmB,EAAE,EAAE,CACpE,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAC5D,CAAC;IAEF,IAAI,MAAc,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;SAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO,EAAE;YACP,YAAY,EAAE,OAAO,CAAC,MAAM;YAC5B,OAAO,EAAE,YAAY;YACrB,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,UAAU;SACnB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,aAAa;YACvB,IAAI,EAAE,SAAS;SAChB;QACD,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,OAA2B,EAC3B,OAA2E,EAC3E,MAAuC;IAEvC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAE9F,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,qBAAqB,YAAY,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAChB,OAA2B,EAC3B,UAAkB,EAClB,MAAuC;IAEvC,MAAM,CAAC,KAAK,CAAC,iBAAiB,UAAU,sBAAsB,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAEnF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC9F,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,OAA2B,EAC3B,YAAoB,EACpB,MAAuC;IAEvC,MAAM,CAAC,IAAI,CAAC,+BAA+B,YAAY,UAAU,CAAC,CAAC;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAEvF,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACjC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAuB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;QAClG,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,MAAiF,EACjF,KAAgC;IAEhC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,KAAK,CAAC,WAAW,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,YAAY,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAe,EACf,SAAkB,EAClB,MAAuC;IAEvC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAuB,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,EAAE,CAAC;YAC5C,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}