ai-devkit 0.9.0 → 0.11.0
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 +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +143 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +47 -2
- package/dist/commands/skill.js.map +1 -1
- package/dist/lib/AgentManager.d.ts +104 -0
- package/dist/lib/AgentManager.d.ts.map +1 -0
- package/dist/lib/AgentManager.js +185 -0
- package/dist/lib/AgentManager.js.map +1 -0
- package/dist/lib/SkillManager.d.ts +39 -0
- package/dist/lib/SkillManager.d.ts.map +1 -1
- package/dist/lib/SkillManager.js +204 -25
- package/dist/lib/SkillManager.js.map +1 -1
- package/dist/lib/TerminalFocusManager.d.ts +22 -0
- package/dist/lib/TerminalFocusManager.d.ts.map +1 -0
- package/dist/lib/TerminalFocusManager.js +195 -0
- package/dist/lib/TerminalFocusManager.js.map +1 -0
- package/dist/lib/adapters/AgentAdapter.d.ts +92 -0
- package/dist/lib/adapters/AgentAdapter.d.ts.map +1 -0
- package/dist/lib/adapters/AgentAdapter.js +29 -0
- package/dist/lib/adapters/AgentAdapter.js.map +1 -0
- package/dist/lib/adapters/ClaudeCodeAdapter.d.ts +66 -0
- package/dist/lib/adapters/ClaudeCodeAdapter.d.ts.map +1 -0
- package/dist/lib/adapters/ClaudeCodeAdapter.js +306 -0
- package/dist/lib/adapters/ClaudeCodeAdapter.js.map +1 -0
- package/dist/util/file.d.ts +52 -0
- package/dist/util/file.d.ts.map +1 -0
- package/dist/util/file.js +135 -0
- package/dist/util/file.js.map +1 -0
- package/dist/util/git.d.ts +7 -0
- package/dist/util/git.d.ts.map +1 -1
- package/dist/util/git.js +20 -0
- package/dist/util/git.js.map +1 -1
- package/dist/util/github.d.ts +27 -0
- package/dist/util/github.d.ts.map +1 -0
- package/dist/util/github.js +49 -0
- package/dist/util/github.js.map +1 -0
- package/dist/util/process.d.ts +61 -0
- package/dist/util/process.d.ts.map +1 -0
- package/dist/util/process.js +166 -0
- package/dist/util/process.js.map +1 -0
- package/dist/util/skill.d.ts +6 -0
- package/dist/util/skill.d.ts.map +1 -1
- package/dist/util/skill.js +28 -0
- package/dist/util/skill.js.map +1 -1
- package/dist/util/terminal-ui.d.ts.map +1 -1
- package/dist/util/terminal-ui.js +1 -0
- package/dist/util/terminal-ui.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The official command-line interface for **AI DevKit**.
|
|
2
2
|
|
|
3
|
-
This tool orchestrates the setup and management of AI-assisted development environments, ensuring your project is ready for agents like Cursor, Claude Code, and more.
|
|
3
|
+
This tool orchestrates the setup and management of AI-assisted development environments, ensuring your project is ready for agents like Cursor, Claude Code, Antigravity, and more.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/ai-devkit)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
package/dist/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ const phase_1 = require("./commands/phase");
|
|
|
7
7
|
const setup_1 = require("./commands/setup");
|
|
8
8
|
const memory_1 = require("./commands/memory");
|
|
9
9
|
const skill_1 = require("./commands/skill");
|
|
10
|
+
const agent_1 = require("./commands/agent");
|
|
10
11
|
const program = new commander_1.Command();
|
|
11
12
|
program
|
|
12
13
|
.name('ai-devkit')
|
|
@@ -30,5 +31,6 @@ program
|
|
|
30
31
|
.action(setup_1.setupCommand);
|
|
31
32
|
(0, memory_1.registerMemoryCommand)(program);
|
|
32
33
|
(0, skill_1.registerSkillCommand)(program);
|
|
34
|
+
(0, agent_1.registerAgentCommand)(program);
|
|
33
35
|
program.parse();
|
|
34
36
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAA0D;AAC1D,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,yBAAyB,EAAE,8CAA8C,CAAC;KACjF,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;KAC/E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,2GAA2G,CAAC;KACxH,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,gDAAgD,CAAC;KACxE,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAA8C;AAC9C,4CAAgD;AAChD,4CAAgD;AAChD,8CAA0D;AAC1D,4CAAwD;AACxD,4CAAwD;AAExD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,yBAAyB,EAAE,8CAA8C,CAAC;KACjF,MAAM,CAAC,WAAW,EAAE,uBAAuB,CAAC;KAC5C,MAAM,CAAC,uBAAuB,EAAE,8CAA8C,CAAC;KAC/E,MAAM,CAAC,kBAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,2GAA2G,CAAC;KACxH,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,gDAAgD,CAAC;KACxE,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,IAAA,8BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkJ3D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerAgentCommand = registerAgentCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
9
|
+
const AgentManager_1 = require("../lib/AgentManager");
|
|
10
|
+
const ClaudeCodeAdapter_1 = require("../lib/adapters/ClaudeCodeAdapter");
|
|
11
|
+
const AgentAdapter_1 = require("../lib/adapters/AgentAdapter");
|
|
12
|
+
const TerminalFocusManager_1 = require("../lib/TerminalFocusManager");
|
|
13
|
+
const terminal_ui_1 = require("../util/terminal-ui");
|
|
14
|
+
function registerAgentCommand(program) {
|
|
15
|
+
const agentCommand = program
|
|
16
|
+
.command('agent')
|
|
17
|
+
.description('Manage AI Agents');
|
|
18
|
+
agentCommand
|
|
19
|
+
.command('list')
|
|
20
|
+
.description('List all running AI agents')
|
|
21
|
+
.option('-j, --json', 'Output as JSON')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
try {
|
|
24
|
+
const manager = new AgentManager_1.AgentManager();
|
|
25
|
+
// Register adapters
|
|
26
|
+
// In the future, we might load these dynamically or based on config
|
|
27
|
+
manager.registerAdapter(new ClaudeCodeAdapter_1.ClaudeCodeAdapter());
|
|
28
|
+
const agents = await manager.listAgents();
|
|
29
|
+
if (options.json) {
|
|
30
|
+
console.log(JSON.stringify(agents, null, 2));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (agents.length === 0) {
|
|
34
|
+
terminal_ui_1.ui.info('No running agents detected.');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
terminal_ui_1.ui.text('Running Agents:', { breakline: true });
|
|
38
|
+
const rows = agents.map(agent => [
|
|
39
|
+
agent.name,
|
|
40
|
+
agent.statusDisplay,
|
|
41
|
+
agent.summary || 'No active task',
|
|
42
|
+
agent.lastActiveDisplay
|
|
43
|
+
]);
|
|
44
|
+
terminal_ui_1.ui.table({
|
|
45
|
+
headers: ['Agent', 'Status', 'Working On', 'Active'],
|
|
46
|
+
rows: rows,
|
|
47
|
+
// Custom column styling
|
|
48
|
+
// 0: Name (cyan)
|
|
49
|
+
// 1: Status (dynamic based on content)
|
|
50
|
+
// 2: Working On (standard)
|
|
51
|
+
// 3: Active (dim)
|
|
52
|
+
columnStyles: [
|
|
53
|
+
(text) => chalk_1.default.cyan(text),
|
|
54
|
+
(text) => {
|
|
55
|
+
// Extract status keyword to determine color
|
|
56
|
+
if (text.includes(AgentAdapter_1.STATUS_CONFIG[AgentAdapter_1.AgentStatus.RUNNING].label))
|
|
57
|
+
return chalk_1.default.green(text);
|
|
58
|
+
if (text.includes(AgentAdapter_1.STATUS_CONFIG[AgentAdapter_1.AgentStatus.WAITING].label))
|
|
59
|
+
return chalk_1.default.yellow(text);
|
|
60
|
+
if (text.includes(AgentAdapter_1.STATUS_CONFIG[AgentAdapter_1.AgentStatus.IDLE].label))
|
|
61
|
+
return chalk_1.default.dim(text);
|
|
62
|
+
return chalk_1.default.gray(text);
|
|
63
|
+
},
|
|
64
|
+
(text) => text,
|
|
65
|
+
(text) => chalk_1.default.dim(text)
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
// Add summary footer if there are waiting agents
|
|
69
|
+
const waitingCount = agents.filter(a => a.status === AgentAdapter_1.AgentStatus.WAITING).length;
|
|
70
|
+
if (waitingCount > 0) {
|
|
71
|
+
terminal_ui_1.ui.breakline();
|
|
72
|
+
terminal_ui_1.ui.warning(`${waitingCount} agent(s) waiting for input.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
terminal_ui_1.ui.error(`Failed to list agents: ${error.message}`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
agentCommand
|
|
81
|
+
.command('open <name>')
|
|
82
|
+
.description('Focus a running agent terminal')
|
|
83
|
+
.action(async (name) => {
|
|
84
|
+
try {
|
|
85
|
+
const manager = new AgentManager_1.AgentManager();
|
|
86
|
+
const focusManager = new TerminalFocusManager_1.TerminalFocusManager();
|
|
87
|
+
manager.registerAdapter(new ClaudeCodeAdapter_1.ClaudeCodeAdapter());
|
|
88
|
+
const agents = await manager.listAgents();
|
|
89
|
+
if (agents.length === 0) {
|
|
90
|
+
terminal_ui_1.ui.error('No running agents found.');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const resolved = manager.resolveAgent(name, agents);
|
|
94
|
+
if (!resolved) {
|
|
95
|
+
terminal_ui_1.ui.error(`No agent found matching "${name}".`);
|
|
96
|
+
terminal_ui_1.ui.info('Available agents:');
|
|
97
|
+
agents.forEach(a => console.log(` - ${a.name}`));
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
let targetAgent = resolved;
|
|
101
|
+
if (Array.isArray(resolved)) {
|
|
102
|
+
terminal_ui_1.ui.warning(`Multiple agents match "${name}":`);
|
|
103
|
+
const { selectedAgent } = await inquirer_1.default.prompt([
|
|
104
|
+
{
|
|
105
|
+
type: 'list',
|
|
106
|
+
name: 'selectedAgent',
|
|
107
|
+
message: 'Select an agent to open:',
|
|
108
|
+
choices: resolved.map(a => ({
|
|
109
|
+
name: `${a.name} (${a.statusDisplay}) - ${a.summary}`,
|
|
110
|
+
value: a
|
|
111
|
+
}))
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
targetAgent = selectedAgent;
|
|
115
|
+
}
|
|
116
|
+
// Focus terminal
|
|
117
|
+
const agent = targetAgent;
|
|
118
|
+
if (!agent.pid) {
|
|
119
|
+
terminal_ui_1.ui.error(`Cannot focus agent "${agent.name}" (No PID found).`);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const spinner = terminal_ui_1.ui.spinner(`Switching focus to ${agent.name}...`);
|
|
123
|
+
spinner.start();
|
|
124
|
+
const location = await focusManager.findTerminal(agent.pid);
|
|
125
|
+
if (!location) {
|
|
126
|
+
spinner.fail(`Could not find terminal window for agent "${agent.name}" (PID: ${agent.pid}).`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const success = await focusManager.focusTerminal(location);
|
|
130
|
+
if (success) {
|
|
131
|
+
spinner.succeed(`Focused ${agent.name}!`);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
spinner.fail(`Failed to switch focus to ${agent.name}.`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
terminal_ui_1.ui.error(`Failed to open agent: ${error.message}`);
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -11,7 +11,7 @@ const TemplateManager_1 = require("../lib/TemplateManager");
|
|
|
11
11
|
const EnvironmentSelector_1 = require("../lib/EnvironmentSelector");
|
|
12
12
|
const PhaseSelector_1 = require("../lib/PhaseSelector");
|
|
13
13
|
const types_1 = require("../types");
|
|
14
|
-
const
|
|
14
|
+
const env_1 = require("../util/env");
|
|
15
15
|
const terminal_ui_1 = require("../util/terminal-ui");
|
|
16
16
|
function isGitAvailable() {
|
|
17
17
|
try {
|
|
@@ -70,7 +70,7 @@ async function initCommand(options) {
|
|
|
70
70
|
return;
|
|
71
71
|
}
|
|
72
72
|
for (const envCode of selectedEnvironments) {
|
|
73
|
-
if (!(0,
|
|
73
|
+
if (!(0, env_1.isValidEnvironmentCode)(envCode)) {
|
|
74
74
|
terminal_ui_1.ui.error(`Invalid environment code: ${envCode}`);
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AA+CA,kCAqHC;AApKD,iDAAyC;AACzC,wDAAgC;AAChC,0CAA8C;AAC9C,4DAAyD;AACzD,oEAAiE;AACjE,wDAAqD;AACrD,oCAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwI3D"}
|
package/dist/commands/skill.js
CHANGED
|
@@ -37,7 +37,7 @@ function registerSkillCommand(program) {
|
|
|
37
37
|
if (skills.length === 0) {
|
|
38
38
|
terminal_ui_1.ui.warning('No skills installed in this project.');
|
|
39
39
|
terminal_ui_1.ui.info('Install a skill with: ai-devkit skill add <registry>/<repo> <skill-name>');
|
|
40
|
-
|
|
40
|
+
return;
|
|
41
41
|
}
|
|
42
42
|
terminal_ui_1.ui.text('Installed Skills:', { breakline: true });
|
|
43
43
|
terminal_ui_1.ui.table({
|
|
@@ -50,7 +50,6 @@ function registerSkillCommand(program) {
|
|
|
50
50
|
columnStyles: [chalk_1.default.cyan, chalk_1.default.dim, chalk_1.default.green]
|
|
51
51
|
});
|
|
52
52
|
terminal_ui_1.ui.text(`Total: ${skills.length} skill(s)`, { breakline: true });
|
|
53
|
-
process.exit(0);
|
|
54
53
|
}
|
|
55
54
|
catch (error) {
|
|
56
55
|
terminal_ui_1.ui.error(`Failed to list skills: ${error.message}`);
|
|
@@ -85,5 +84,51 @@ function registerSkillCommand(program) {
|
|
|
85
84
|
process.exit(1);
|
|
86
85
|
}
|
|
87
86
|
});
|
|
87
|
+
skillCommand
|
|
88
|
+
.command('find <keyword>')
|
|
89
|
+
.description('Search for skills across all registries')
|
|
90
|
+
.option('--refresh', 'Force rebuild the skill index')
|
|
91
|
+
.action(async (keyword, options) => {
|
|
92
|
+
try {
|
|
93
|
+
const configManager = new Config_1.ConfigManager();
|
|
94
|
+
const skillManager = new SkillManager_1.SkillManager(configManager);
|
|
95
|
+
const results = await skillManager.findSkills(keyword, { refresh: options.refresh });
|
|
96
|
+
if (results.length === 0) {
|
|
97
|
+
terminal_ui_1.ui.warning(`No skills found matching "${keyword}"`);
|
|
98
|
+
terminal_ui_1.ui.info('Try a different keyword or use --refresh to update the skill index');
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
terminal_ui_1.ui.text(`Found ${results.length} skill(s) matching "${keyword}":`, { breakline: true });
|
|
102
|
+
terminal_ui_1.ui.table({
|
|
103
|
+
headers: ['Skill Name', 'Registry', 'Description'],
|
|
104
|
+
rows: results.map(skill => [
|
|
105
|
+
skill.name,
|
|
106
|
+
skill.registry,
|
|
107
|
+
skill.description.length > 60 ? skill.description.substring(0, 57) + '...' : skill.description
|
|
108
|
+
]),
|
|
109
|
+
columnStyles: [chalk_1.default.cyan, chalk_1.default.dim, chalk_1.default.white]
|
|
110
|
+
});
|
|
111
|
+
terminal_ui_1.ui.text(`\nInstall with: ai-devkit skill add <registry> <skill-name>`, { breakline: true });
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
terminal_ui_1.ui.error(`Failed to search skills: ${error.message}`);
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
skillCommand
|
|
119
|
+
.command('rebuild-index')
|
|
120
|
+
.description('Rebuild the skill index from all registries (for CI use)')
|
|
121
|
+
.option('--output <path>', 'Output path for the index file')
|
|
122
|
+
.action(async (options) => {
|
|
123
|
+
try {
|
|
124
|
+
const configManager = new Config_1.ConfigManager();
|
|
125
|
+
const skillManager = new SkillManager_1.SkillManager(configManager);
|
|
126
|
+
await skillManager.rebuildIndex(options.output);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
terminal_ui_1.ui.error(`Failed to rebuild index: ${error.message}`);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
88
133
|
}
|
|
89
134
|
//# sourceMappingURL=skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":";;;;;AAMA,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Manager
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates agent detection across multiple adapter types.
|
|
5
|
+
* Manages adapter registration and aggregates results from all adapters.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentAdapter, AgentInfo } from './adapters/AgentAdapter';
|
|
8
|
+
/**
|
|
9
|
+
* Agent Manager Class
|
|
10
|
+
*
|
|
11
|
+
* Central manager for detecting AI agents across different types.
|
|
12
|
+
* Supports multiple adapters (Claude Code, Gemini CLI, etc.)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const manager = new AgentManager();
|
|
17
|
+
* manager.registerAdapter(new ClaudeCodeAdapter());
|
|
18
|
+
*
|
|
19
|
+
* const agents = await manager.listAgents();
|
|
20
|
+
* console.log(`Found ${agents.length} agents`);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare class AgentManager {
|
|
24
|
+
private adapters;
|
|
25
|
+
/**
|
|
26
|
+
* Register an adapter for a specific agent type
|
|
27
|
+
*
|
|
28
|
+
* @param adapter Agent adapter to register
|
|
29
|
+
* @throws Error if an adapter for this type is already registered
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* manager.registerAdapter(new ClaudeCodeAdapter());
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
registerAdapter(adapter: AgentAdapter): void;
|
|
37
|
+
/**
|
|
38
|
+
* Unregister an adapter by type
|
|
39
|
+
*
|
|
40
|
+
* @param type Agent type to unregister
|
|
41
|
+
* @returns True if adapter was removed, false if not found
|
|
42
|
+
*/
|
|
43
|
+
unregisterAdapter(type: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Get all registered adapters
|
|
46
|
+
*
|
|
47
|
+
* @returns Array of registered adapters
|
|
48
|
+
*/
|
|
49
|
+
getAdapters(): AgentAdapter[];
|
|
50
|
+
/**
|
|
51
|
+
* Check if an adapter is registered for a specific type
|
|
52
|
+
*
|
|
53
|
+
* @param type Agent type to check
|
|
54
|
+
* @returns True if adapter is registered
|
|
55
|
+
*/
|
|
56
|
+
hasAdapter(type: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* List all running AI agents detected by registered adapters
|
|
59
|
+
*
|
|
60
|
+
* Queries all registered adapters and aggregates results.
|
|
61
|
+
* Handles errors gracefully - if one adapter fails, others still run.
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of detected agents from all adapters
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const agents = await manager.listAgents();
|
|
68
|
+
*
|
|
69
|
+
* agents.forEach(agent => {
|
|
70
|
+
* console.log(`${agent.name}: ${agent.status}`);
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
listAgents(): Promise<AgentInfo[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Sort agents by status priority
|
|
77
|
+
*
|
|
78
|
+
* Priority order: waiting > running > idle > unknown
|
|
79
|
+
* This ensures agents that need attention appear first.
|
|
80
|
+
*
|
|
81
|
+
* @param agents Array of agents to sort
|
|
82
|
+
* @returns Sorted array of agents
|
|
83
|
+
*/
|
|
84
|
+
private sortAgentsByStatus;
|
|
85
|
+
/**
|
|
86
|
+
* Get count of registered adapters
|
|
87
|
+
*
|
|
88
|
+
* @returns Number of registered adapters
|
|
89
|
+
*/
|
|
90
|
+
getAdapterCount(): number;
|
|
91
|
+
/**
|
|
92
|
+
* Clear all registered adapters
|
|
93
|
+
*/
|
|
94
|
+
clear(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Resolve an agent by name (exact or partial match)
|
|
97
|
+
*
|
|
98
|
+
* @param input Name to search for
|
|
99
|
+
* @param agents List of agents to search within
|
|
100
|
+
* @returns Matched agent (unique), array of agents (ambiguous), or null (none)
|
|
101
|
+
*/
|
|
102
|
+
resolveAgent(input: string, agents: AgentInfo[]): AgentInfo | AgentInfo[] | null;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=AgentManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentManager.d.ts","sourceRoot":"","sources":["../../src/lib/AgentManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGvE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAwC;IAExD;;;;;;;;;;OAUG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAU5C;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;OAIG;IACH,WAAW,IAAI,YAAY,EAAE;IAI7B;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;;;;;;;;;;;;;OAgBG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAsCxC;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;;;OAIG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;;;OAMG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,IAAI;CAiBnF"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Manager
|
|
4
|
+
*
|
|
5
|
+
* Orchestrates agent detection across multiple adapter types.
|
|
6
|
+
* Manages adapter registration and aggregates results from all adapters.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AgentManager = void 0;
|
|
10
|
+
const AgentAdapter_1 = require("./adapters/AgentAdapter");
|
|
11
|
+
/**
|
|
12
|
+
* Agent Manager Class
|
|
13
|
+
*
|
|
14
|
+
* Central manager for detecting AI agents across different types.
|
|
15
|
+
* Supports multiple adapters (Claude Code, Gemini CLI, etc.)
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const manager = new AgentManager();
|
|
20
|
+
* manager.registerAdapter(new ClaudeCodeAdapter());
|
|
21
|
+
*
|
|
22
|
+
* const agents = await manager.listAgents();
|
|
23
|
+
* console.log(`Found ${agents.length} agents`);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
class AgentManager {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.adapters = new Map();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register an adapter for a specific agent type
|
|
32
|
+
*
|
|
33
|
+
* @param adapter Agent adapter to register
|
|
34
|
+
* @throws Error if an adapter for this type is already registered
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* manager.registerAdapter(new ClaudeCodeAdapter());
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
registerAdapter(adapter) {
|
|
42
|
+
const adapterKey = adapter.type;
|
|
43
|
+
if (this.adapters.has(adapterKey)) {
|
|
44
|
+
throw new Error(`Adapter for type "${adapterKey}" is already registered`);
|
|
45
|
+
}
|
|
46
|
+
this.adapters.set(adapterKey, adapter);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Unregister an adapter by type
|
|
50
|
+
*
|
|
51
|
+
* @param type Agent type to unregister
|
|
52
|
+
* @returns True if adapter was removed, false if not found
|
|
53
|
+
*/
|
|
54
|
+
unregisterAdapter(type) {
|
|
55
|
+
return this.adapters.delete(type);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get all registered adapters
|
|
59
|
+
*
|
|
60
|
+
* @returns Array of registered adapters
|
|
61
|
+
*/
|
|
62
|
+
getAdapters() {
|
|
63
|
+
return Array.from(this.adapters.values());
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if an adapter is registered for a specific type
|
|
67
|
+
*
|
|
68
|
+
* @param type Agent type to check
|
|
69
|
+
* @returns True if adapter is registered
|
|
70
|
+
*/
|
|
71
|
+
hasAdapter(type) {
|
|
72
|
+
return this.adapters.has(type);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* List all running AI agents detected by registered adapters
|
|
76
|
+
*
|
|
77
|
+
* Queries all registered adapters and aggregates results.
|
|
78
|
+
* Handles errors gracefully - if one adapter fails, others still run.
|
|
79
|
+
*
|
|
80
|
+
* @returns Array of detected agents from all adapters
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* const agents = await manager.listAgents();
|
|
85
|
+
*
|
|
86
|
+
* agents.forEach(agent => {
|
|
87
|
+
* console.log(`${agent.name}: ${agent.status}`);
|
|
88
|
+
* });
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
async listAgents() {
|
|
92
|
+
const allAgents = [];
|
|
93
|
+
const errors = [];
|
|
94
|
+
// Query all adapters in parallel
|
|
95
|
+
const adapterPromises = Array.from(this.adapters.values()).map(async (adapter) => {
|
|
96
|
+
try {
|
|
97
|
+
const agents = await adapter.detectAgents();
|
|
98
|
+
return { type: adapter.type, agents, error: null };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Capture error but don't throw - allow other adapters to continue
|
|
102
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
103
|
+
errors.push({ type: adapter.type, error: err });
|
|
104
|
+
return { type: adapter.type, agents: [], error: err };
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const results = await Promise.all(adapterPromises);
|
|
108
|
+
// Aggregate all successful results
|
|
109
|
+
for (const result of results) {
|
|
110
|
+
if (result.error === null) {
|
|
111
|
+
allAgents.push(...result.agents);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Log errors if any (but don't throw - partial results are useful)
|
|
115
|
+
if (errors.length > 0) {
|
|
116
|
+
console.error(`Warning: ${errors.length} adapter(s) failed:`);
|
|
117
|
+
errors.forEach(({ type, error }) => {
|
|
118
|
+
console.error(` - ${type}: ${error.message}`);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// Sort by status priority (waiting first, then running, then idle)
|
|
122
|
+
return this.sortAgentsByStatus(allAgents);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Sort agents by status priority
|
|
126
|
+
*
|
|
127
|
+
* Priority order: waiting > running > idle > unknown
|
|
128
|
+
* This ensures agents that need attention appear first.
|
|
129
|
+
*
|
|
130
|
+
* @param agents Array of agents to sort
|
|
131
|
+
* @returns Sorted array of agents
|
|
132
|
+
*/
|
|
133
|
+
sortAgentsByStatus(agents) {
|
|
134
|
+
const statusPriority = {
|
|
135
|
+
[AgentAdapter_1.AgentStatus.WAITING]: 0,
|
|
136
|
+
[AgentAdapter_1.AgentStatus.RUNNING]: 1,
|
|
137
|
+
[AgentAdapter_1.AgentStatus.IDLE]: 2,
|
|
138
|
+
[AgentAdapter_1.AgentStatus.UNKNOWN]: 3,
|
|
139
|
+
};
|
|
140
|
+
return agents.sort((a, b) => {
|
|
141
|
+
const priorityA = statusPriority[a.status] ?? 999;
|
|
142
|
+
const priorityB = statusPriority[b.status] ?? 999;
|
|
143
|
+
return priorityA - priorityB;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get count of registered adapters
|
|
148
|
+
*
|
|
149
|
+
* @returns Number of registered adapters
|
|
150
|
+
*/
|
|
151
|
+
getAdapterCount() {
|
|
152
|
+
return this.adapters.size;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Clear all registered adapters
|
|
156
|
+
*/
|
|
157
|
+
clear() {
|
|
158
|
+
this.adapters.clear();
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Resolve an agent by name (exact or partial match)
|
|
162
|
+
*
|
|
163
|
+
* @param input Name to search for
|
|
164
|
+
* @param agents List of agents to search within
|
|
165
|
+
* @returns Matched agent (unique), array of agents (ambiguous), or null (none)
|
|
166
|
+
*/
|
|
167
|
+
resolveAgent(input, agents) {
|
|
168
|
+
if (!input || agents.length === 0)
|
|
169
|
+
return null;
|
|
170
|
+
const lowerInput = input.toLowerCase();
|
|
171
|
+
// 1. Exact match (case-insensitive)
|
|
172
|
+
const exactMatch = agents.find(a => a.name.toLowerCase() === lowerInput);
|
|
173
|
+
if (exactMatch)
|
|
174
|
+
return exactMatch;
|
|
175
|
+
// 2. Partial match (prefix or contains)
|
|
176
|
+
const matches = agents.filter(a => a.name.toLowerCase().includes(lowerInput));
|
|
177
|
+
if (matches.length === 1)
|
|
178
|
+
return matches[0];
|
|
179
|
+
if (matches.length > 1)
|
|
180
|
+
return matches;
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.AgentManager = AgentManager;
|
|
185
|
+
//# sourceMappingURL=AgentManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentManager.js","sourceRoot":"","sources":["../../src/lib/AgentManager.ts"],"names":[],"mappings":"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"}
|