@vibe-agent-toolkit/cli 0.1.0-rc.10
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 +18 -0
- package/dist/bin/vat.d.ts.map +1 -0
- package/dist/bin/vat.js +174 -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 +108 -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 +309 -0
- package/docs/rag.md +449 -0
- package/docs/resources.md +158 -0
- package/package.json +68 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,gBAAgB,IAAI,OAAO,CA8K1C;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG command group
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { clearCommand } from './clear-command.js';
|
|
6
|
+
import { indexCommand } from './index-command.js';
|
|
7
|
+
import { queryCommand } from './query-command.js';
|
|
8
|
+
import { statsCommand } from './stats-command.js';
|
|
9
|
+
// Common option descriptions
|
|
10
|
+
const DB_PATH_OPTION = '--db <path>';
|
|
11
|
+
const DB_PATH_DESC = 'Database path (default: .rag-db in project root)';
|
|
12
|
+
const DEBUG_OPTION_DESC = 'Enable debug logging';
|
|
13
|
+
export function createRagCommand() {
|
|
14
|
+
const rag = new Command('rag');
|
|
15
|
+
rag
|
|
16
|
+
.description('Semantic search over markdown documentation using vector embeddings')
|
|
17
|
+
.helpCommand(false) // Disable redundant 'help' command, use --help instead
|
|
18
|
+
.addHelpText('after', `
|
|
19
|
+
Description:
|
|
20
|
+
RAG enables semantic search over your documentation. Index markdown files
|
|
21
|
+
to create vector embeddings, then query using natural language to find
|
|
22
|
+
relevant content based on meaning (not just keyword matching).
|
|
23
|
+
|
|
24
|
+
Workflow:
|
|
25
|
+
1. Index markdown files → Creates vector database
|
|
26
|
+
2. Query database → Returns semantically similar content
|
|
27
|
+
3. Stats → Monitor database size and model info
|
|
28
|
+
4. Clear → Reset database when needed
|
|
29
|
+
|
|
30
|
+
Example:
|
|
31
|
+
$ vat rag index docs/ # Recursively index all *.md under docs/
|
|
32
|
+
$ vat rag query "error handling" # Search for relevant content
|
|
33
|
+
|
|
34
|
+
Configuration:
|
|
35
|
+
Create vibe-agent-toolkit.config.yaml in project root to control
|
|
36
|
+
which files are included/excluded from indexing.
|
|
37
|
+
`);
|
|
38
|
+
rag
|
|
39
|
+
.command('index [path]')
|
|
40
|
+
.description('Index markdown resources into vector database')
|
|
41
|
+
.option(DB_PATH_OPTION, DB_PATH_DESC)
|
|
42
|
+
.option('--debug', DEBUG_OPTION_DESC)
|
|
43
|
+
.action(indexCommand)
|
|
44
|
+
.addHelpText('after', `
|
|
45
|
+
Description:
|
|
46
|
+
Indexes markdown files into LanceDB vector database for semantic search.
|
|
47
|
+
Processes documents by chunking text, generating vector embeddings using
|
|
48
|
+
transformer models, and storing in a local vector database. Supports
|
|
49
|
+
incremental updates (skips unchanged files).
|
|
50
|
+
|
|
51
|
+
Path argument: base directory to crawl (defaults to current directory)
|
|
52
|
+
When path specified: recursively finds all *.md files (ignores config)
|
|
53
|
+
When no path: uses vibe-agent-toolkit.config.yaml include/exclude patterns
|
|
54
|
+
|
|
55
|
+
Output Structure (YAML):
|
|
56
|
+
status: success/error
|
|
57
|
+
resourcesIndexed: new/updated files
|
|
58
|
+
resourcesSkipped: unchanged files (content hash match)
|
|
59
|
+
resourcesUpdated: files with new content
|
|
60
|
+
chunksCreated: total chunks added
|
|
61
|
+
chunksDeleted: chunks removed from updated files
|
|
62
|
+
duration: total indexing time
|
|
63
|
+
|
|
64
|
+
Exit Codes:
|
|
65
|
+
0 - Success | 2 - System error
|
|
66
|
+
|
|
67
|
+
Example:
|
|
68
|
+
$ vat rag index docs/ # Recursively index all *.md under docs/
|
|
69
|
+
$ vat rag index # Recursively index from current directory
|
|
70
|
+
$ vat rag index --db custom.db # Use custom database path
|
|
71
|
+
`);
|
|
72
|
+
rag
|
|
73
|
+
.command('query <text>')
|
|
74
|
+
.description('Search RAG database with semantic query')
|
|
75
|
+
.option(DB_PATH_OPTION, DB_PATH_DESC)
|
|
76
|
+
.option('--limit <n>', 'Maximum results to return (default: 10)', Number.parseInt)
|
|
77
|
+
.option('--debug', DEBUG_OPTION_DESC)
|
|
78
|
+
.action(queryCommand)
|
|
79
|
+
.addHelpText('after', `
|
|
80
|
+
Description:
|
|
81
|
+
Searches vector database using semantic similarity. Converts your query
|
|
82
|
+
to a vector embedding and finds the most relevant document chunks based
|
|
83
|
+
on meaning (not just keywords). Returns full chunk content with metadata.
|
|
84
|
+
|
|
85
|
+
Output Structure (YAML):
|
|
86
|
+
status: success/error
|
|
87
|
+
query: original search text
|
|
88
|
+
stats:
|
|
89
|
+
totalMatches: number of results
|
|
90
|
+
searchDurationMs: query time
|
|
91
|
+
embedding.model: model used for embeddings
|
|
92
|
+
duration: total command time
|
|
93
|
+
chunks: array of matching document chunks with full content
|
|
94
|
+
|
|
95
|
+
Each chunk includes:
|
|
96
|
+
- chunkId, resourceId, filePath (identifiers)
|
|
97
|
+
- headingPath, headingLevel, startLine, endLine (location)
|
|
98
|
+
- title, type, tags (metadata)
|
|
99
|
+
- contentHash, tokenCount, embeddingModel, embeddedAt (technical)
|
|
100
|
+
- content (full text, not truncated)
|
|
101
|
+
|
|
102
|
+
Exit Codes:
|
|
103
|
+
0 - Success | 2 - System error (no database)
|
|
104
|
+
|
|
105
|
+
Example:
|
|
106
|
+
$ vat rag query "error handling" # Search for relevant content
|
|
107
|
+
$ vat rag query "configuration" --limit 5
|
|
108
|
+
`);
|
|
109
|
+
rag
|
|
110
|
+
.command('stats')
|
|
111
|
+
.description('Show RAG database statistics')
|
|
112
|
+
.option(DB_PATH_OPTION, DB_PATH_DESC)
|
|
113
|
+
.option('--debug', DEBUG_OPTION_DESC)
|
|
114
|
+
.action(statsCommand)
|
|
115
|
+
.addHelpText('after', `
|
|
116
|
+
Description:
|
|
117
|
+
Displays vector database statistics including indexed content count,
|
|
118
|
+
embedding model information, and database metadata. Use this to verify
|
|
119
|
+
indexing completed successfully and monitor database size.
|
|
120
|
+
|
|
121
|
+
Output Structure (YAML):
|
|
122
|
+
status: success/error
|
|
123
|
+
totalChunks: number of document chunks indexed
|
|
124
|
+
totalResources: number of unique documents indexed
|
|
125
|
+
dbSizeBytes: database size on disk (if available)
|
|
126
|
+
embeddingModel: model used for vector embeddings
|
|
127
|
+
lastIndexed: timestamp of most recent indexing
|
|
128
|
+
duration: command execution time
|
|
129
|
+
|
|
130
|
+
Exit Codes:
|
|
131
|
+
0 - Success | 2 - System error (no database)
|
|
132
|
+
|
|
133
|
+
Example:
|
|
134
|
+
$ vat rag stats # Show database statistics
|
|
135
|
+
$ vat rag stats --db custom.db # Stats for specific database
|
|
136
|
+
`);
|
|
137
|
+
rag
|
|
138
|
+
.command('clear')
|
|
139
|
+
.description('Delete entire RAG database directory')
|
|
140
|
+
.option(DB_PATH_OPTION, DB_PATH_DESC)
|
|
141
|
+
.option('--debug', DEBUG_OPTION_DESC)
|
|
142
|
+
.action(clearCommand)
|
|
143
|
+
.addHelpText('after', `
|
|
144
|
+
Description:
|
|
145
|
+
Deletes the entire RAG database directory and all indexed data.
|
|
146
|
+
Use this when changing embedding models, fixing corruption, or
|
|
147
|
+
starting fresh with a clean database.
|
|
148
|
+
|
|
149
|
+
Warning:
|
|
150
|
+
This operation cannot be undone. The database directory will be
|
|
151
|
+
permanently deleted. Re-run 'vat rag index' to rebuild from source.
|
|
152
|
+
|
|
153
|
+
Output Structure (YAML):
|
|
154
|
+
status: success/error
|
|
155
|
+
message: confirmation message
|
|
156
|
+
duration: command execution time
|
|
157
|
+
|
|
158
|
+
Exit Codes:
|
|
159
|
+
0 - Success | 2 - System error
|
|
160
|
+
|
|
161
|
+
Example:
|
|
162
|
+
$ vat rag clear # Clear default database (.rag-db/)
|
|
163
|
+
$ vat rag clear --db custom.db # Clear specific database
|
|
164
|
+
`);
|
|
165
|
+
return rag;
|
|
166
|
+
}
|
|
167
|
+
export { showRagVerboseHelp } from './help.js';
|
|
168
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/rag/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,6BAA6B;AAC7B,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,YAAY,GAAG,kDAAkD,CAAC;AACxE,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAEjD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAE/B,GAAG;SACA,WAAW,CAAC,qEAAqE,CAAC;SAClF,WAAW,CAAC,KAAK,CAAC,CAAC,uDAAuD;SAC1E,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;CAmBL,CACI,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACpC,MAAM,CAAC,YAAY,CAAC;SACpB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BL,CACI,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;SACpC,MAAM,CAAC,aAAa,EAAE,yCAAyC,EAAE,MAAM,CAAC,QAAQ,CAAC;SACjF,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACpC,MAAM,CAAC,YAAY,CAAC;SACpB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BL,CACI,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACpC,MAAM,CAAC,YAAY,CAAC;SACpB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;CAqBL,CACI,CAAC;IAEJ,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC;SACpC,MAAM,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACpC,MAAM,CAAC,YAAY,CAAC;SACpB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;CAqBL,CACI,CAAC;IAEJ,OAAO,GAAG,CAAC;AACb,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG query command - search the vector database
|
|
3
|
+
*/
|
|
4
|
+
interface QueryOptions {
|
|
5
|
+
db?: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function queryCommand(queryText: string, options: QueryOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=query-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-command.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/query-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG query command - search the vector database
|
|
3
|
+
*/
|
|
4
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
5
|
+
import { executeRagOperation, formatDuration } from './command-helpers.js';
|
|
6
|
+
export async function queryCommand(queryText, options) {
|
|
7
|
+
const startTime = Date.now();
|
|
8
|
+
const result = await executeRagOperation(options, async (ragProvider, logger) => {
|
|
9
|
+
logger.debug(`Querying for: "${queryText}"`);
|
|
10
|
+
// Execute query
|
|
11
|
+
const queryResult = await ragProvider.query({
|
|
12
|
+
text: queryText,
|
|
13
|
+
limit: options.limit ?? 10,
|
|
14
|
+
});
|
|
15
|
+
return queryResult;
|
|
16
|
+
}, 'Query');
|
|
17
|
+
const duration = Date.now() - startTime;
|
|
18
|
+
// Format chunks with explicit field order: short fields first, content last
|
|
19
|
+
const formattedChunks = result.chunks.map((chunk) => ({
|
|
20
|
+
// Identifiers
|
|
21
|
+
chunkId: chunk.chunkId,
|
|
22
|
+
resourceId: chunk.resourceId,
|
|
23
|
+
// Location metadata (short)
|
|
24
|
+
filePath: chunk.filePath,
|
|
25
|
+
...(chunk.headingPath ? { headingPath: chunk.headingPath } : {}),
|
|
26
|
+
...(chunk.headingLevel === undefined ? {} : { headingLevel: chunk.headingLevel }),
|
|
27
|
+
...(chunk.startLine === undefined ? {} : { startLine: chunk.startLine }),
|
|
28
|
+
...(chunk.endLine === undefined ? {} : { endLine: chunk.endLine }),
|
|
29
|
+
// Resource metadata (short)
|
|
30
|
+
...(chunk.title ? { title: chunk.title } : {}),
|
|
31
|
+
...(chunk.type ? { type: chunk.type } : {}),
|
|
32
|
+
...(chunk.tags && chunk.tags.length > 0 ? { tags: chunk.tags } : {}),
|
|
33
|
+
// Technical metadata (short)
|
|
34
|
+
contentHash: chunk.contentHash,
|
|
35
|
+
tokenCount: chunk.tokenCount,
|
|
36
|
+
embeddingModel: chunk.embeddingModel,
|
|
37
|
+
embeddedAt: chunk.embeddedAt,
|
|
38
|
+
// Context links (short)
|
|
39
|
+
...(chunk.previousChunkId ? { previousChunkId: chunk.previousChunkId } : {}),
|
|
40
|
+
...(chunk.nextChunkId ? { nextChunkId: chunk.nextChunkId } : {}),
|
|
41
|
+
// Content (long, last)
|
|
42
|
+
content: chunk.content,
|
|
43
|
+
}));
|
|
44
|
+
// Output with stats/duration before chunks (short fields first)
|
|
45
|
+
writeYamlOutput({
|
|
46
|
+
status: 'success',
|
|
47
|
+
query: queryText,
|
|
48
|
+
stats: result.stats,
|
|
49
|
+
duration: formatDuration(duration),
|
|
50
|
+
chunks: formattedChunks,
|
|
51
|
+
});
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=query-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-command.js","sourceRoot":"","sources":["../../../src/commands/rag/query-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-command.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/stats-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG stats command - show database statistics
|
|
3
|
+
*/
|
|
4
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
5
|
+
import { executeRagOperation, formatDuration } from './command-helpers.js';
|
|
6
|
+
export async function statsCommand(options) {
|
|
7
|
+
const startTime = Date.now();
|
|
8
|
+
const stats = await executeRagOperation(options, async (ragProvider) => {
|
|
9
|
+
// Get stats
|
|
10
|
+
return await ragProvider.getStats();
|
|
11
|
+
}, 'Stats');
|
|
12
|
+
const duration = Date.now() - startTime;
|
|
13
|
+
// Output stats as YAML
|
|
14
|
+
writeYamlOutput({
|
|
15
|
+
status: 'success',
|
|
16
|
+
totalChunks: stats.totalChunks,
|
|
17
|
+
totalResources: stats.totalResources,
|
|
18
|
+
dbSizeBytes: stats.dbSizeBytes,
|
|
19
|
+
embeddingModel: stats.embeddingModel,
|
|
20
|
+
lastIndexed: stats.lastIndexed.toISOString(),
|
|
21
|
+
duration: formatDuration(duration),
|
|
22
|
+
});
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=stats-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-command.js","sourceRoot":"","sources":["../../../src/commands/rag/stats-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,mBAAmB,CACrC,OAAO,EACP,KAAK,EAAE,WAAW,EAAE,EAAE;QACpB,YAAY;QACZ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC,EACD,OAAO,CACR,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,uBAAuB;IACvB,eAAe,CAAC;QACd,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE;QAC5C,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../../src/commands/resources/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verbose help for resources commands
|
|
3
|
+
*/
|
|
4
|
+
import { loadVerboseHelp } from '../../utils/help-loader.js';
|
|
5
|
+
export function showResourcesVerboseHelp() {
|
|
6
|
+
const helpContent = loadVerboseHelp('resources'); // Loads from docs/cli/resources.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/resources/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,UAAU,wBAAwB;IACtC,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,mCAAmC;IACrF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,IAAI,OAAO,CAoEhD;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources command group
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { scanCommand } from './scan.js';
|
|
6
|
+
import { validateCommand } from './validate.js';
|
|
7
|
+
export function createResourcesCommand() {
|
|
8
|
+
const resources = new Command('resources');
|
|
9
|
+
resources
|
|
10
|
+
.description('Markdown resource scanning and link validation (run before commit)')
|
|
11
|
+
.option('--verbose', 'Show verbose help')
|
|
12
|
+
.helpCommand(false) // Disable redundant 'help' command, use --help instead
|
|
13
|
+
.addHelpText('after', `
|
|
14
|
+
Example:
|
|
15
|
+
$ vat resources validate docs/ # Validate markdown in docs directory
|
|
16
|
+
|
|
17
|
+
Configuration:
|
|
18
|
+
Create vibe-agent-toolkit.config.yaml in project root. See --help --verbose for schema.
|
|
19
|
+
`);
|
|
20
|
+
resources
|
|
21
|
+
.command('scan [path]')
|
|
22
|
+
.description('Discover markdown resources in directory')
|
|
23
|
+
.option('--debug', 'Enable debug logging')
|
|
24
|
+
.action(scanCommand)
|
|
25
|
+
.addHelpText('after', `
|
|
26
|
+
Description:
|
|
27
|
+
Recursively scans for markdown files and reports statistics. Outputs YAML to stdout.
|
|
28
|
+
Path argument: base directory (defaults to current directory)
|
|
29
|
+
When path specified: recursively finds all *.md files (ignores config)
|
|
30
|
+
When no path: uses vibe-agent-toolkit.config.yaml include/exclude patterns
|
|
31
|
+
|
|
32
|
+
Output Fields:
|
|
33
|
+
status, filesScanned, linksFound, duration
|
|
34
|
+
|
|
35
|
+
Example:
|
|
36
|
+
$ vat resources scan docs/ # Recursively scan all *.md under docs/
|
|
37
|
+
`);
|
|
38
|
+
resources
|
|
39
|
+
.command('validate [path]')
|
|
40
|
+
.description('Validate markdown resources (link integrity, anchors)')
|
|
41
|
+
.option('--debug', 'Enable debug logging')
|
|
42
|
+
.action(validateCommand)
|
|
43
|
+
.addHelpText('after', `
|
|
44
|
+
Description:
|
|
45
|
+
Recursively validates internal links and anchors in markdown files.
|
|
46
|
+
Path argument: base directory (defaults to current directory)
|
|
47
|
+
When path specified: recursively finds all *.md files (ignores config)
|
|
48
|
+
When no path: uses vibe-agent-toolkit.config.yaml include/exclude patterns
|
|
49
|
+
Outputs YAML to stdout, errors to stderr.
|
|
50
|
+
External URLs are NOT validated (by design).
|
|
51
|
+
|
|
52
|
+
Checks:
|
|
53
|
+
Internal file links, anchor links (#heading), cross-file anchors (file.md#heading)
|
|
54
|
+
|
|
55
|
+
Exit Codes:
|
|
56
|
+
0 - Success | 1 - Validation errors | 2 - System error
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
$ vat resources validate docs/ # Recursively validate all *.md under docs/
|
|
60
|
+
`);
|
|
61
|
+
return resources;
|
|
62
|
+
}
|
|
63
|
+
export { showResourcesVerboseHelp } from './help.js';
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/resources/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAE3C,SAAS;SACN,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC;SACxC,WAAW,CAAC,KAAK,CAAC,CAAC,uDAAuD;SAC1E,WAAW,CACV,OAAO,EACP;;;;;;CAML,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,WAAW,CAAC;SACnB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI,CAAC;IAEJ,SAAS;SACN,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;SACzC,MAAM,CAAC,eAAe,CAAC;SACvB,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;CAiBL,CACI,CAAC;IAEJ,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources scan command - discover markdown resources
|
|
3
|
+
*/
|
|
4
|
+
interface ScanOptions {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function scanCommand(pathArg: string | undefined, options: ScanOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=scan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAiDf"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources scan command - discover markdown resources
|
|
3
|
+
*/
|
|
4
|
+
import { createLogger } from '../../utils/logger.js';
|
|
5
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
6
|
+
import { loadResourcesWithConfig } from '../../utils/resource-loader.js';
|
|
7
|
+
import { handleCommandError } from './command-helpers.js';
|
|
8
|
+
export async function scanCommand(pathArg, options) {
|
|
9
|
+
const logger = createLogger({ debug: options.debug ?? false });
|
|
10
|
+
const startTime = Date.now();
|
|
11
|
+
try {
|
|
12
|
+
// Load resources with config support
|
|
13
|
+
const { registry } = await loadResourcesWithConfig(pathArg, logger);
|
|
14
|
+
const stats = registry.getStats();
|
|
15
|
+
const duration = Date.now() - startTime;
|
|
16
|
+
// Get all resources
|
|
17
|
+
const allResources = registry.getAllResources();
|
|
18
|
+
const countHeadings = (headings) => {
|
|
19
|
+
let count = headings.length;
|
|
20
|
+
for (const heading of headings) {
|
|
21
|
+
if (heading.children) {
|
|
22
|
+
count += countHeadings(heading.children);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return count;
|
|
26
|
+
};
|
|
27
|
+
const totalHeadings = allResources.reduce((sum, resource) => sum + countHeadings(resource.headings), 0);
|
|
28
|
+
// Output results as YAML
|
|
29
|
+
writeYamlOutput({
|
|
30
|
+
status: 'success',
|
|
31
|
+
filesScanned: stats.totalResources,
|
|
32
|
+
linksFound: stats.totalLinks,
|
|
33
|
+
anchorsFound: totalHeadings,
|
|
34
|
+
files: allResources.map(resource => ({
|
|
35
|
+
path: resource.filePath,
|
|
36
|
+
links: resource.links.length,
|
|
37
|
+
anchors: countHeadings(resource.headings),
|
|
38
|
+
})),
|
|
39
|
+
duration: `${duration}ms`,
|
|
40
|
+
});
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
handleCommandError(error, logger, startTime, 'Scan');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=scan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/commands/resources/scan.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B,EAC3B,OAAoB;IAEpB,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,qCAAqC;QACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpE,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,oBAAoB;QACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QAIhD,MAAM,aAAa,GAAG,CAAC,QAA+B,EAAU,EAAE;YAChE,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACzD,CAAC,CACF,CAAC;QAEF,yBAAyB;QACzB,eAAe,CAAC;YACd,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,KAAK,CAAC,cAAc;YAClC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,aAAa;YAC3B,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;gBAC5B,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;aAC1C,CAAC,CAAC;YACH,QAAQ,EAAE,GAAG,QAAQ,IAAI;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources validate command - strict validation with error reporting
|
|
3
|
+
*/
|
|
4
|
+
interface ValidateOptions {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function validateCommand(pathArg: string | undefined, options: ValidateOptions): Promise<void>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resources validate command - strict validation with error reporting
|
|
3
|
+
*/
|
|
4
|
+
import { createLogger } from '../../utils/logger.js';
|
|
5
|
+
import { flushStdout, writeTestFormatError, writeYamlOutput } from '../../utils/output.js';
|
|
6
|
+
import { loadResourcesWithConfig } from '../../utils/resource-loader.js';
|
|
7
|
+
import { handleCommandError } from './command-helpers.js';
|
|
8
|
+
export async function validateCommand(pathArg, options) {
|
|
9
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
10
|
+
const startTime = Date.now();
|
|
11
|
+
try {
|
|
12
|
+
// Load resources with config support
|
|
13
|
+
const { registry } = await loadResourcesWithConfig(pathArg, logger);
|
|
14
|
+
// Validate all resources
|
|
15
|
+
const validationResult = await registry.validate();
|
|
16
|
+
const stats = registry.getStats();
|
|
17
|
+
const duration = Date.now() - startTime;
|
|
18
|
+
// Filter out external_url issues (informational only, not actual errors)
|
|
19
|
+
const actualErrors = validationResult.issues.filter(issue => issue.type !== 'external_url');
|
|
20
|
+
const hasErrors = actualErrors.length > 0;
|
|
21
|
+
if (hasErrors) {
|
|
22
|
+
// Failure - write YAML first, then test-format errors
|
|
23
|
+
const errors = actualErrors.map(issue => ({
|
|
24
|
+
file: issue.resourcePath,
|
|
25
|
+
line: issue.line ?? 1,
|
|
26
|
+
column: 1,
|
|
27
|
+
type: issue.type,
|
|
28
|
+
message: issue.message,
|
|
29
|
+
}));
|
|
30
|
+
writeYamlOutput({
|
|
31
|
+
status: 'failed',
|
|
32
|
+
filesScanned: stats.totalResources,
|
|
33
|
+
errorsFound: validationResult.errorCount,
|
|
34
|
+
warningsFound: validationResult.warningCount,
|
|
35
|
+
errors,
|
|
36
|
+
duration: `${duration}ms`,
|
|
37
|
+
});
|
|
38
|
+
// Flush stdout before writing to stderr
|
|
39
|
+
await flushStdout();
|
|
40
|
+
// Write test-format errors to stderr
|
|
41
|
+
for (const error of errors) {
|
|
42
|
+
writeTestFormatError(error.file, error.line, error.column, error.message);
|
|
43
|
+
}
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Success output
|
|
48
|
+
writeYamlOutput({
|
|
49
|
+
status: 'success',
|
|
50
|
+
filesScanned: stats.totalResources,
|
|
51
|
+
linksChecked: stats.totalLinks,
|
|
52
|
+
duration: `${duration}ms`,
|
|
53
|
+
});
|
|
54
|
+
process.exit(0);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
handleCommandError(error, logger, startTime, 'Validation');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/resources/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM1D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA2B,EAC3B,OAAwB;IAExB,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,qCAAqC;QACrC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEpE,yBAAyB;QACzB,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,yEAAyE;QACzE,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CACjD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CACvC,CAAC;QACF,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QAE1C,IAAI,SAAS,EAAE,CAAC;YACd,sDAAsD;YACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,KAAK,CAAC,YAAY;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC;gBACrB,MAAM,EAAE,CAAC;gBACT,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,CAAC;YAEJ,eAAe,CAAC;gBACd,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,KAAK,CAAC,cAAc;gBAClC,WAAW,EAAE,gBAAgB,CAAC,UAAU;gBACxC,aAAa,EAAE,gBAAgB,CAAC,YAAY;gBAC5C,MAAM;gBACN,QAAQ,EAAE,GAAG,QAAQ,IAAI;aAC1B,CAAC,CAAC;YAEH,wCAAwC;YACxC,MAAM,WAAW,EAAE,CAAC;YAEpB,qCAAqC;YACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,eAAe,CAAC;gBACd,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,KAAK,CAAC,cAAc;gBAClC,YAAY,EAAE,KAAK,CAAC,UAAU;gBAC9B,QAAQ,EAAE,GAAG,QAAQ,IAAI;aAC1B,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibe-agent-toolkit/cli
|
|
3
|
+
*
|
|
4
|
+
* Command-line interface for vibe-agent-toolkit.
|
|
5
|
+
* Provides resource scanning, validation, and future agent commands.
|
|
6
|
+
*/
|
|
7
|
+
export { version, getVersionString, type VersionContext } from './version.js';
|
|
8
|
+
export { createLogger, type Logger, type LoggerOptions } from './utils/logger.js';
|
|
9
|
+
export { findProjectRoot } from './utils/project-root.js';
|
|
10
|
+
export { writeYamlOutput, flushStdout, writeTestFormatError } from './utils/output.js';
|
|
11
|
+
export { loadConfig } from './utils/config-loader.js';
|
|
12
|
+
export { ProjectConfigSchema, ResourcesConfigSchema, ResourceCollectionSchema, AgentsConfigSchema, RAGConfigSchema, DEFAULT_CONFIG, } from './schemas/config.js';
|
|
13
|
+
export type { ProjectConfig, ResourcesConfig, ResourceCollection, AgentsConfig, RAGConfig, RAGStore, } from './schemas/config.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @vibe-agent-toolkit/cli
|
|
3
|
+
*
|
|
4
|
+
* Command-line interface for vibe-agent-toolkit.
|
|
5
|
+
* Provides resource scanning, validation, and future agent commands.
|
|
6
|
+
*/
|
|
7
|
+
// Public API exports (for programmatic use)
|
|
8
|
+
export { version, getVersionString } from './version.js';
|
|
9
|
+
// Utilities (for programmatic use)
|
|
10
|
+
export { createLogger } from './utils/logger.js';
|
|
11
|
+
export { findProjectRoot } from './utils/project-root.js';
|
|
12
|
+
export { writeYamlOutput, flushStdout, writeTestFormatError } from './utils/output.js';
|
|
13
|
+
export { loadConfig } from './utils/config-loader.js';
|
|
14
|
+
export { ProjectConfigSchema, ResourcesConfigSchema, ResourceCollectionSchema, AgentsConfigSchema, RAGConfigSchema, DEFAULT_CONFIG, } from './schemas/config.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,4CAA4C;AAC5C,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,cAAc,CAAC;AAE9E,mCAAmC;AACnC,OAAO,EAAE,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,qBAAqB,CAAC"}
|