@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,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* List installed agents command
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'node:fs/promises';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import yaml from 'yaml';
|
|
7
|
+
import { handleCommandError } from '../../utils/command-error.js';
|
|
8
|
+
import { createLogger } from '../../utils/logger.js';
|
|
9
|
+
import { SCOPE_LOCATIONS } from '../../utils/scope-locations.js';
|
|
10
|
+
/**
|
|
11
|
+
* List installed agents command
|
|
12
|
+
*/
|
|
13
|
+
export async function installedCommand(options) {
|
|
14
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
15
|
+
const startTime = Date.now();
|
|
16
|
+
try {
|
|
17
|
+
const { runtime = 'claude-skill', scope = 'all' } = options;
|
|
18
|
+
const scopeLocations = SCOPE_LOCATIONS[runtime];
|
|
19
|
+
if (!scopeLocations) {
|
|
20
|
+
throw new Error(`Runtime '${runtime}' not implemented`);
|
|
21
|
+
}
|
|
22
|
+
// Determine which scopes to scan
|
|
23
|
+
const scopesToScan = scope === 'all' ? Object.keys(scopeLocations) : [scope];
|
|
24
|
+
const skills = await scanForInstalledSkills(scopeLocations, scopesToScan);
|
|
25
|
+
if (skills.length === 0) {
|
|
26
|
+
logger.info('No installed skills found');
|
|
27
|
+
const duration = Date.now() - startTime;
|
|
28
|
+
logger.debug(`List completed in ${duration}ms`);
|
|
29
|
+
// Output YAML for programmatic parsing
|
|
30
|
+
const output = {
|
|
31
|
+
status: 'success',
|
|
32
|
+
skills: [],
|
|
33
|
+
scanned: scopesToScan,
|
|
34
|
+
duration,
|
|
35
|
+
};
|
|
36
|
+
console.log(yaml.stringify(output));
|
|
37
|
+
process.exit(0);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Output to stderr (human-readable)
|
|
41
|
+
logger.info('\nInstalled Skills:\n');
|
|
42
|
+
for (const skill of skills) {
|
|
43
|
+
const typeIndicator = skill.type === 'symlink' ? '→' : '✓';
|
|
44
|
+
logger.info(` ${typeIndicator} ${skill.name} (${skill.scope})`);
|
|
45
|
+
if (skill.type === 'symlink') {
|
|
46
|
+
logger.info(` ${skill.path}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
logger.info('');
|
|
50
|
+
const duration = Date.now() - startTime;
|
|
51
|
+
logger.debug(`List completed in ${duration}ms`);
|
|
52
|
+
// Output YAML to stdout for programmatic parsing
|
|
53
|
+
const output = {
|
|
54
|
+
status: 'success',
|
|
55
|
+
skills: skills.map((s) => ({
|
|
56
|
+
name: s.name,
|
|
57
|
+
scope: s.scope,
|
|
58
|
+
type: s.type,
|
|
59
|
+
path: s.path,
|
|
60
|
+
})),
|
|
61
|
+
scanned: scopesToScan,
|
|
62
|
+
duration,
|
|
63
|
+
};
|
|
64
|
+
console.log(yaml.stringify(output));
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
handleCommandError(error, logger, startTime, 'Installed');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Scan locations for installed skills
|
|
73
|
+
*/
|
|
74
|
+
async function scanForInstalledSkills(scopeLocations, scopesToScan) {
|
|
75
|
+
const skills = [];
|
|
76
|
+
for (const currentScope of scopesToScan) {
|
|
77
|
+
const location = scopeLocations[currentScope];
|
|
78
|
+
if (!location)
|
|
79
|
+
continue;
|
|
80
|
+
try {
|
|
81
|
+
await fs.access(location);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Directory doesn't exist, skip
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Path from validated scope location
|
|
88
|
+
const entries = await fs.readdir(location, { withFileTypes: true });
|
|
89
|
+
for (const entry of entries) {
|
|
90
|
+
if (!entry.isDirectory() && !entry.isSymbolicLink())
|
|
91
|
+
continue;
|
|
92
|
+
const skillPath = path.join(location, entry.name);
|
|
93
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Path from validated scope + entry name
|
|
94
|
+
const stats = await fs.lstat(skillPath);
|
|
95
|
+
const isSymlink = stats.isSymbolicLink();
|
|
96
|
+
skills.push({
|
|
97
|
+
name: entry.name,
|
|
98
|
+
scope: currentScope,
|
|
99
|
+
type: isSymlink ? 'symlink' : 'installed',
|
|
100
|
+
path: skillPath,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return skills;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=installed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installed.js","sourceRoot":"","sources":["../../../src/commands/agent/installed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC5E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent list command - discovers and lists all agents
|
|
3
|
+
*/
|
|
4
|
+
import { discoverAgents } from '../../utils/agent-discovery.js';
|
|
5
|
+
import { handleCommandError } from '../../utils/command-error.js';
|
|
6
|
+
import { createLogger } from '../../utils/logger.js';
|
|
7
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
8
|
+
export async function listCommand(options) {
|
|
9
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
10
|
+
const startTime = Date.now();
|
|
11
|
+
try {
|
|
12
|
+
logger.debug('Discovering agents...');
|
|
13
|
+
logger.debug(`Search paths: packages/vat-development-agents/agents, agents, .`);
|
|
14
|
+
const agents = await discoverAgents();
|
|
15
|
+
const output = {
|
|
16
|
+
status: 'success',
|
|
17
|
+
agents: agents.map(agent => ({
|
|
18
|
+
name: agent.name,
|
|
19
|
+
version: agent.version,
|
|
20
|
+
path: agent.path,
|
|
21
|
+
})),
|
|
22
|
+
count: agents.length,
|
|
23
|
+
duration: `${Date.now() - startTime}ms`,
|
|
24
|
+
};
|
|
25
|
+
writeYamlOutput(output);
|
|
26
|
+
if (agents.length === 0) {
|
|
27
|
+
logger.info('No agents discovered');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
logger.info(`Found ${agents.length} agent(s):`);
|
|
31
|
+
for (const agent of agents) {
|
|
32
|
+
logger.info(` ${agent.name} (${agent.version}) - ${agent.path}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
process.exit(0);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
handleCommandError(error, logger, startTime, 'AgentList');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/agent/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAMxD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,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,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;QAEtC,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;aACjB,CAAC,CAAC;YACH,KAAK,EAAE,MAAM,CAAC,MAAM;YACpB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;SACxC,CAAC;QAEF,eAAe,CAAC,MAAM,CAAC,CAAC;QAExB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vat agent run command
|
|
3
|
+
*
|
|
4
|
+
* Executes an agent with user input and displays the response.
|
|
5
|
+
*/
|
|
6
|
+
export interface RunCommandOptions {
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Run an agent with user input
|
|
11
|
+
*
|
|
12
|
+
* @param pathOrName - Agent name or path to agent manifest
|
|
13
|
+
* @param userInput - Input text for the agent
|
|
14
|
+
* @param options - Command options
|
|
15
|
+
*/
|
|
16
|
+
export declare function runCommand(pathOrName: string, userInput: string, options: RunCommandOptions): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* vat agent run command
|
|
3
|
+
*
|
|
4
|
+
* Executes an agent with user input and displays the response.
|
|
5
|
+
*/
|
|
6
|
+
import { resolveAgentPath } from '../../utils/agent-discovery.js';
|
|
7
|
+
import { runAgent } from '../../utils/agent-runner.js';
|
|
8
|
+
import { handleCommandError } from '../../utils/command-error.js';
|
|
9
|
+
import { createLogger } from '../../utils/logger.js';
|
|
10
|
+
/**
|
|
11
|
+
* Run an agent with user input
|
|
12
|
+
*
|
|
13
|
+
* @param pathOrName - Agent name or path to agent manifest
|
|
14
|
+
* @param userInput - Input text for the agent
|
|
15
|
+
* @param options - Command options
|
|
16
|
+
*/
|
|
17
|
+
export async function runCommand(pathOrName, userInput, options) {
|
|
18
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
19
|
+
const startTime = Date.now();
|
|
20
|
+
try {
|
|
21
|
+
const targetPath = await resolveAgentPath(pathOrName, logger);
|
|
22
|
+
logger.info(`Running agent: ${targetPath}`);
|
|
23
|
+
logger.info('');
|
|
24
|
+
// Run the agent
|
|
25
|
+
const result = await runAgent(targetPath, {
|
|
26
|
+
userInput,
|
|
27
|
+
debug: options.debug ?? false,
|
|
28
|
+
});
|
|
29
|
+
// Output response to stdout
|
|
30
|
+
process.stdout.write(result.response);
|
|
31
|
+
process.stdout.write('\n');
|
|
32
|
+
// Log usage statistics to stderr
|
|
33
|
+
if (result.usage) {
|
|
34
|
+
const duration = Date.now() - startTime;
|
|
35
|
+
logger.info('');
|
|
36
|
+
logger.info(`Completed in ${duration}ms (tokens: ${result.usage.inputTokens} in, ${result.usage.outputTokens} out)`);
|
|
37
|
+
}
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
handleCommandError(error, logger, startTime, 'AgentRun');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/agent/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAMrD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,SAAiB,EACjB,OAA0B;IAE1B,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,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhB,gBAAgB;QAChB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE;YACxC,SAAS;YACT,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;SAC9B,CAAC,CAAC;QAEH,4BAA4B;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE3B,iCAAiC;QACjC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CACT,gBAAgB,QAAQ,eAAe,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,CACxG,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall agent from Claude Skills directory
|
|
3
|
+
*/
|
|
4
|
+
export interface UninstallOptions {
|
|
5
|
+
scope?: 'user' | 'project';
|
|
6
|
+
runtime?: string;
|
|
7
|
+
debug?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Uninstall agent command
|
|
11
|
+
*/
|
|
12
|
+
export declare function uninstallAgent(agentName: string, options: UninstallOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=uninstall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/uninstall.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uninstall agent from Claude Skills directory
|
|
3
|
+
*/
|
|
4
|
+
import fs from 'node:fs/promises';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { handleCommandError } from '../../utils/command-error.js';
|
|
7
|
+
import { createLogger } from '../../utils/logger.js';
|
|
8
|
+
import { validateAndGetScopeLocation } from '../../utils/scope-locations.js';
|
|
9
|
+
/**
|
|
10
|
+
* Uninstall agent command
|
|
11
|
+
*/
|
|
12
|
+
export async function uninstallAgent(agentName, options) {
|
|
13
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
14
|
+
const startTime = Date.now();
|
|
15
|
+
try {
|
|
16
|
+
const { runtime = 'claude-skill', scope = 'user' } = options;
|
|
17
|
+
// Validate scope and get target location
|
|
18
|
+
const targetLocation = validateAndGetScopeLocation(runtime, scope);
|
|
19
|
+
const installPath = path.join(targetLocation, agentName);
|
|
20
|
+
// Check if installed
|
|
21
|
+
try {
|
|
22
|
+
await fs.access(installPath);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
logger.error(`\n${agentName} is not installed at ${installPath}\n`);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
// Check if symlink
|
|
29
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- Path from validated scope + agent name
|
|
30
|
+
const stats = await fs.lstat(installPath);
|
|
31
|
+
const isSymlink = stats.isSymbolicLink();
|
|
32
|
+
// Remove installation
|
|
33
|
+
await fs.rm(installPath, { recursive: true, force: true });
|
|
34
|
+
if (isSymlink) {
|
|
35
|
+
logger.info(`✓ Removed symlink for ${agentName} from ${installPath}`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger.info(`✓ Uninstalled ${agentName} from ${installPath}`);
|
|
39
|
+
}
|
|
40
|
+
const duration = Date.now() - startTime;
|
|
41
|
+
logger.debug(`Uninstall completed in ${duration}ms`);
|
|
42
|
+
process.exit(0);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
handleCommandError(error, logger, startTime, 'Uninstall');
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/agent/uninstall.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAQ7E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,OAAyB;IAEzB,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,EAAE,OAAO,GAAG,cAAc,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QAE7D,yCAAyC;QACzC,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QAEzD,qBAAqB;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,wBAAwB,WAAW,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,6GAA6G;QAC7G,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAEzC,sBAAsB;QACtB,MAAM,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,yBAAyB,SAAS,SAAS,WAAW,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,SAAS,WAAW,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,0BAA0B,QAAQ,IAAI,CAAC,CAAC;QAErD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent validate command - validates agent manifest and prerequisites
|
|
3
|
+
*/
|
|
4
|
+
export interface ValidateCommandOptions {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function validateCommand(pathOrName: string, options: ValidateCommandOptions): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent validate command - validates agent manifest and prerequisites
|
|
3
|
+
*/
|
|
4
|
+
import { validateAgent } from '@vibe-agent-toolkit/agent-config';
|
|
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
|
+
export async function validateCommand(pathOrName, options) {
|
|
10
|
+
const logger = createLogger(options.debug ? { debug: true } : {});
|
|
11
|
+
const startTime = Date.now();
|
|
12
|
+
try {
|
|
13
|
+
// Resolve agent name to path if needed
|
|
14
|
+
const targetPath = await resolveAgentPath(pathOrName, logger);
|
|
15
|
+
logger.debug(`Validating agent: ${targetPath}`);
|
|
16
|
+
// Validate agent
|
|
17
|
+
const result = await validateAgent(targetPath);
|
|
18
|
+
// Prepare output
|
|
19
|
+
const output = {
|
|
20
|
+
status: result.valid ? 'success' : 'error',
|
|
21
|
+
manifest: result.manifest,
|
|
22
|
+
validation: {
|
|
23
|
+
errors: result.errors,
|
|
24
|
+
warnings: result.warnings,
|
|
25
|
+
},
|
|
26
|
+
duration: `${Date.now() - startTime}ms`,
|
|
27
|
+
};
|
|
28
|
+
writeYamlOutput(output);
|
|
29
|
+
if (!result.valid) {
|
|
30
|
+
logger.error('Agent validation failed');
|
|
31
|
+
for (const error of result.errors) {
|
|
32
|
+
logger.error(` - ${error}`);
|
|
33
|
+
}
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
if (result.warnings.length > 0) {
|
|
37
|
+
logger.info('Validation passed with warnings:');
|
|
38
|
+
for (const warning of result.warnings) {
|
|
39
|
+
logger.info(` - ${warning}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
logger.info('Agent validation successful');
|
|
44
|
+
}
|
|
45
|
+
process.exit(0);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
handleCommandError(error, logger, startTime, 'AgentValidate');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/agent/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,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;AAMxD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,OAA+B;IAE/B,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,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAE9D,MAAM,CAAC,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAEhD,iBAAiB;QACjB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;QAE/C,iBAAiB;QACjB,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YAC1C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B;YACD,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;SACxC,CAAC;QAEF,eAAe,CAAC,MAAM,CAAC,CAAC;QAExB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG clear command - remove all indexed data from database
|
|
3
|
+
*/
|
|
4
|
+
interface ClearOptions {
|
|
5
|
+
db?: string;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function clearCommand(options: ClearOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=clear-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-command.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/clear-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,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,CAsBvE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG clear command - remove all indexed data from database
|
|
3
|
+
*/
|
|
4
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
5
|
+
import { executeRagOperation, formatDuration } from './command-helpers.js';
|
|
6
|
+
export async function clearCommand(options) {
|
|
7
|
+
const startTime = Date.now();
|
|
8
|
+
await executeRagOperation({ ...options, readonly: false }, // Admin mode for write operations
|
|
9
|
+
async (ragProvider) => {
|
|
10
|
+
// Clear database (cast to RAGAdminProvider since readonly: false)
|
|
11
|
+
await ragProvider.clear();
|
|
12
|
+
}, 'Clear');
|
|
13
|
+
const duration = Date.now() - startTime;
|
|
14
|
+
// Output success
|
|
15
|
+
writeYamlOutput({
|
|
16
|
+
status: 'success',
|
|
17
|
+
message: 'Database cleared',
|
|
18
|
+
duration: formatDuration(duration),
|
|
19
|
+
});
|
|
20
|
+
process.exit(0);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=clear-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-command.js","sourceRoot":"","sources":["../../../src/commands/rag/clear-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,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,mBAAmB,CACvB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kCAAkC;IACnE,KAAK,EAAE,WAAW,EAAE,EAAE;QACpB,kEAAkE;QAClE,MAAO,WAAgC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC,EACD,OAAO,CACR,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,iBAAiB;IACjB,eAAe,CAAC;QACd,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;KACnC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper functions for RAG commands
|
|
3
|
+
*/
|
|
4
|
+
import type { RAGQueryProvider } from '@vibe-agent-toolkit/rag';
|
|
5
|
+
import { type Logger } from '../../utils/logger.js';
|
|
6
|
+
export { formatDuration, handleCommandError } from '../../utils/command-error.js';
|
|
7
|
+
/**
|
|
8
|
+
* Resolve database path (explicit flag or default in project)
|
|
9
|
+
* @param explicitDb - Database path from --db flag
|
|
10
|
+
* @param projectRoot - Project root directory (from findProjectRoot)
|
|
11
|
+
* @returns Resolved database path
|
|
12
|
+
* @throws Error if no path can be determined
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveDbPath(explicitDb: string | undefined, projectRoot: string | undefined): string;
|
|
15
|
+
/**
|
|
16
|
+
* Execute a RAG operation with standard setup/teardown pattern
|
|
17
|
+
* @param options - Command options (db path, debug flag, readonly mode)
|
|
18
|
+
* @param operation - The operation to execute with the RAG provider
|
|
19
|
+
* @param commandName - Name of the command (for error reporting)
|
|
20
|
+
* @returns Result of the operation
|
|
21
|
+
*/
|
|
22
|
+
export declare function executeRagOperation<T>(options: {
|
|
23
|
+
db?: string;
|
|
24
|
+
debug?: boolean;
|
|
25
|
+
readonly?: boolean;
|
|
26
|
+
}, operation: (provider: RAGQueryProvider, logger: Logger) => Promise<T>, commandName: string): Promise<T>;
|
|
27
|
+
//# sourceMappingURL=command-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIlE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B,MAAM,CAUR;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC7D,SAAS,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACrE,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper functions for RAG commands
|
|
3
|
+
*/
|
|
4
|
+
import { LanceDBRAGProvider } from '@vibe-agent-toolkit/rag-lancedb';
|
|
5
|
+
import { createLogger } from '../../utils/logger.js';
|
|
6
|
+
import { findProjectRoot } from '../../utils/project-root.js';
|
|
7
|
+
// Re-export shared utilities for convenience
|
|
8
|
+
export { formatDuration, handleCommandError } from '../../utils/command-error.js';
|
|
9
|
+
/**
|
|
10
|
+
* Resolve database path (explicit flag or default in project)
|
|
11
|
+
* @param explicitDb - Database path from --db flag
|
|
12
|
+
* @param projectRoot - Project root directory (from findProjectRoot)
|
|
13
|
+
* @returns Resolved database path
|
|
14
|
+
* @throws Error if no path can be determined
|
|
15
|
+
*/
|
|
16
|
+
export function resolveDbPath(explicitDb, projectRoot) {
|
|
17
|
+
if (explicitDb) {
|
|
18
|
+
return explicitDb;
|
|
19
|
+
}
|
|
20
|
+
if (projectRoot) {
|
|
21
|
+
return `${projectRoot}/.rag-db`;
|
|
22
|
+
}
|
|
23
|
+
throw new Error('No database path specified and no project root found. Use --db <path>');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Execute a RAG operation with standard setup/teardown pattern
|
|
27
|
+
* @param options - Command options (db path, debug flag, readonly mode)
|
|
28
|
+
* @param operation - The operation to execute with the RAG provider
|
|
29
|
+
* @param commandName - Name of the command (for error reporting)
|
|
30
|
+
* @returns Result of the operation
|
|
31
|
+
*/
|
|
32
|
+
export async function executeRagOperation(options, operation, commandName) {
|
|
33
|
+
const logger = createLogger({ debug: options.debug ?? false });
|
|
34
|
+
const startTime = Date.now();
|
|
35
|
+
try {
|
|
36
|
+
// Resolve database path
|
|
37
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
38
|
+
const dbPath = resolveDbPath(options.db, projectRoot ?? undefined);
|
|
39
|
+
logger.debug(`Database path: ${dbPath}`);
|
|
40
|
+
// Create RAG provider (readonly mode by default, can be overridden)
|
|
41
|
+
const ragProvider = await LanceDBRAGProvider.create({
|
|
42
|
+
dbPath,
|
|
43
|
+
readonly: options.readonly ?? true,
|
|
44
|
+
});
|
|
45
|
+
// Execute operation
|
|
46
|
+
const result = await operation(ragProvider, logger);
|
|
47
|
+
// Close provider
|
|
48
|
+
await ragProvider.close();
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
// Use handleCommandError from re-export
|
|
53
|
+
const { handleCommandError } = await import('../../utils/command-error.js');
|
|
54
|
+
handleCommandError(error, logger, startTime, commandName);
|
|
55
|
+
throw error; // Never reached due to process.exit in handleCommandError
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=command-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-helpers.js","sourceRoot":"","sources":["../../../src/commands/rag/command-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,YAAY,EAAe,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,6CAA6C;AAC7C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,UAA8B,EAC9B,WAA+B;IAE/B,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,GAAG,WAAW,UAAU,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAA6D,EAC7D,SAAqE,EACrE,WAAmB;IAEnB,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,wBAAwB;QACxB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAEzC,oEAAoE;QACpE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;YAClD,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAEpD,iBAAiB;QACjB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wCAAwC;QACxC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC5E,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC,CAAC,0DAA0D;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verbose help for RAG commands
|
|
3
|
+
*/
|
|
4
|
+
import { loadVerboseHelp } from '../../utils/help-loader.js';
|
|
5
|
+
export function showRagVerboseHelp() {
|
|
6
|
+
const helpContent = loadVerboseHelp('rag'); // Loads from docs/rag.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/rag/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;IACrE,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
|
+
* RAG index command - index markdown resources into vector database
|
|
3
|
+
*/
|
|
4
|
+
interface IndexOptions {
|
|
5
|
+
db?: string;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function indexCommand(pathArg: string | undefined, options: IndexOptions): Promise<void>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=index-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-command.d.ts","sourceRoot":"","sources":["../../../src/commands/rag/index-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Cf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RAG index command - index markdown resources into vector database
|
|
3
|
+
*/
|
|
4
|
+
import { LanceDBRAGProvider } from '@vibe-agent-toolkit/rag-lancedb';
|
|
5
|
+
import { createLogger } from '../../utils/logger.js';
|
|
6
|
+
import { writeYamlOutput } from '../../utils/output.js';
|
|
7
|
+
import { loadResourcesWithConfig } from '../../utils/resource-loader.js';
|
|
8
|
+
import { formatDuration, handleCommandError, resolveDbPath } from './command-helpers.js';
|
|
9
|
+
export async function indexCommand(pathArg, options) {
|
|
10
|
+
const logger = createLogger({ debug: options.debug ?? false });
|
|
11
|
+
const startTime = Date.now();
|
|
12
|
+
try {
|
|
13
|
+
// Load resources with config support
|
|
14
|
+
const { registry, projectRoot } = await loadResourcesWithConfig(pathArg, logger);
|
|
15
|
+
// Resolve database path
|
|
16
|
+
const dbPath = resolveDbPath(options.db, projectRoot ?? undefined);
|
|
17
|
+
logger.debug(`Database path: ${dbPath}`);
|
|
18
|
+
const allResources = registry.getAllResources();
|
|
19
|
+
logger.debug(`Found ${allResources.length} resources to index`);
|
|
20
|
+
// Create RAG provider in admin mode (readonly: false)
|
|
21
|
+
const ragProvider = await LanceDBRAGProvider.create({
|
|
22
|
+
dbPath,
|
|
23
|
+
readonly: false,
|
|
24
|
+
});
|
|
25
|
+
// Index all resources
|
|
26
|
+
const indexResult = await ragProvider.indexResources(allResources);
|
|
27
|
+
// Close provider
|
|
28
|
+
await ragProvider.close();
|
|
29
|
+
const duration = Date.now() - startTime;
|
|
30
|
+
// Output results as YAML
|
|
31
|
+
writeYamlOutput({
|
|
32
|
+
status: 'success',
|
|
33
|
+
resourcesIndexed: indexResult.resourcesIndexed,
|
|
34
|
+
resourcesSkipped: indexResult.resourcesSkipped,
|
|
35
|
+
resourcesUpdated: indexResult.resourcesUpdated,
|
|
36
|
+
chunksCreated: indexResult.chunksCreated,
|
|
37
|
+
chunksDeleted: indexResult.chunksDeleted,
|
|
38
|
+
duration: formatDuration(duration),
|
|
39
|
+
...(indexResult.errors && indexResult.errors.length > 0
|
|
40
|
+
? { errors: indexResult.errors }
|
|
41
|
+
: {}),
|
|
42
|
+
});
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
handleCommandError(error, logger, startTime, 'Index');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=index-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-command.js","sourceRoot":"","sources":["../../../src/commands/rag/index-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,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,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOzF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA2B,EAC3B,OAAqB;IAErB,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,WAAW,EAAE,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjF,wBAAwB;QACxB,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,IAAI,SAAS,CAAC,CAAC;QACnE,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,CAAC,KAAK,CAAC,SAAS,YAAY,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAEhE,sDAAsD;QACtD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC;YAClD,MAAM;YACN,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAEnE,iBAAiB;QACjB,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAExC,yBAAyB;QACzB,eAAe,CAAC;YACd,MAAM,EAAE,SAAS;YACjB,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;YAC9C,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;YAC9C,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;YAC9C,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,aAAa,EAAE,WAAW,CAAC,aAAa;YACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC;YAClC,GAAG,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACrD,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE;gBAChC,CAAC,CAAC,EAAE,CAAC;SACR,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,OAAO,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
|