@claude-flow/cli 3.0.0-alpha.15 → 3.0.0-alpha.17
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/dist/src/commands/analyze.d.ts +19 -0
- package/dist/src/commands/analyze.d.ts.map +1 -0
- package/dist/src/commands/analyze.js +1819 -0
- package/dist/src/commands/analyze.js.map +1 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +325 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +2 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +12 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/mcp.js +3 -3
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/route.d.ts +16 -0
- package/dist/src/commands/route.d.ts.map +1 -0
- package/dist/src/commands/route.js +597 -0
- package/dist/src/commands/route.js.map +1 -0
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +218 -362
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +2 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/analyze-tools.js +317 -0
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -0
- package/dist/src/mcp-tools/index.d.ts +2 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +277 -0
- package/dist/src/ruvector/ast-analyzer.js.map +1 -0
- package/dist/src/ruvector/coverage-router.d.ts +145 -0
- package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-router.js +451 -0
- package/dist/src/ruvector/coverage-router.js.map +1 -0
- package/dist/src/ruvector/coverage-tools.d.ts +33 -0
- package/dist/src/ruvector/coverage-tools.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-tools.js +157 -0
- package/dist/src/ruvector/coverage-tools.js.map +1 -0
- package/dist/src/ruvector/diff-classifier.d.ts +154 -0
- package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
- package/dist/src/ruvector/diff-classifier.js +508 -0
- package/dist/src/ruvector/diff-classifier.js.map +1 -0
- package/dist/src/ruvector/graph-analyzer.d.ts +174 -0
- package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/graph-analyzer.js +878 -0
- package/dist/src/ruvector/graph-analyzer.js.map +1 -0
- package/dist/src/ruvector/index.d.ts +27 -0
- package/dist/src/ruvector/index.d.ts.map +1 -0
- package/dist/src/ruvector/index.js +47 -0
- package/dist/src/ruvector/index.js.map +1 -0
- package/dist/src/ruvector/q-learning-router.d.ts +211 -0
- package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
- package/dist/src/ruvector/q-learning-router.js +681 -0
- package/dist/src/ruvector/q-learning-router.js.map +1 -0
- package/dist/src/ruvector/vector-db.d.ts +69 -0
- package/dist/src/ruvector/vector-db.d.ts.map +1 -0
- package/dist/src/ruvector/vector-db.js +243 -0
- package/dist/src/ruvector/vector-db.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Route Command
|
|
3
|
+
* Intelligent task-to-agent routing using Q-Learning
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Q-Learning based agent selection
|
|
7
|
+
* - Semantic task understanding
|
|
8
|
+
* - Confidence scoring
|
|
9
|
+
* - Learning from feedback
|
|
10
|
+
*
|
|
11
|
+
* Created with love by ruv.io
|
|
12
|
+
*/
|
|
13
|
+
import type { Command } from '../types.js';
|
|
14
|
+
export declare const routeCommand: Command;
|
|
15
|
+
export default routeCommand;
|
|
16
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../src/commands/route.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAiC,MAAM,aAAa,CAAC;AAujB1E,eAAO,MAAM,YAAY,EAAE,OAuF1B,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,597 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 CLI Route Command
|
|
3
|
+
* Intelligent task-to-agent routing using Q-Learning
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Q-Learning based agent selection
|
|
7
|
+
* - Semantic task understanding
|
|
8
|
+
* - Confidence scoring
|
|
9
|
+
* - Learning from feedback
|
|
10
|
+
*
|
|
11
|
+
* Created with love by ruv.io
|
|
12
|
+
*/
|
|
13
|
+
import { output } from '../output.js';
|
|
14
|
+
import { createQLearningRouter, isRuvectorAvailable, } from '../ruvector/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* Available agent types for routing
|
|
17
|
+
*/
|
|
18
|
+
const AGENT_TYPES = [
|
|
19
|
+
{ id: 'coder', name: 'Coder', description: 'Implements features and writes code', capabilities: ['coding', 'implementation', 'refactoring'], priority: 1 },
|
|
20
|
+
{ id: 'tester', name: 'Tester', description: 'Creates tests and validates functionality', capabilities: ['testing', 'validation', 'quality'], priority: 2 },
|
|
21
|
+
{ id: 'reviewer', name: 'Reviewer', description: 'Reviews code quality and security', capabilities: ['review', 'security', 'best-practices'], priority: 3 },
|
|
22
|
+
{ id: 'architect', name: 'Architect', description: 'Designs system architecture', capabilities: ['design', 'architecture', 'planning'], priority: 4 },
|
|
23
|
+
{ id: 'researcher', name: 'Researcher', description: 'Researches requirements and patterns', capabilities: ['research', 'analysis', 'documentation'], priority: 5 },
|
|
24
|
+
{ id: 'optimizer', name: 'Optimizer', description: 'Optimizes performance and efficiency', capabilities: ['optimization', 'performance', 'profiling'], priority: 6 },
|
|
25
|
+
{ id: 'debugger', name: 'Debugger', description: 'Debugs issues and fixes bugs', capabilities: ['debugging', 'troubleshooting', 'fixing'], priority: 7 },
|
|
26
|
+
{ id: 'documenter', name: 'Documenter', description: 'Creates and updates documentation', capabilities: ['documentation', 'writing', 'explaining'], priority: 8 },
|
|
27
|
+
];
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Router Singleton
|
|
30
|
+
// ============================================================================
|
|
31
|
+
let routerInstance = null;
|
|
32
|
+
let routerInitialized = false;
|
|
33
|
+
/**
|
|
34
|
+
* Get or create the router instance
|
|
35
|
+
*/
|
|
36
|
+
async function getRouter() {
|
|
37
|
+
if (!routerInstance) {
|
|
38
|
+
routerInstance = createQLearningRouter();
|
|
39
|
+
}
|
|
40
|
+
if (!routerInitialized) {
|
|
41
|
+
await routerInstance.initialize();
|
|
42
|
+
routerInitialized = true;
|
|
43
|
+
}
|
|
44
|
+
return routerInstance;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get agent type by route name
|
|
48
|
+
*/
|
|
49
|
+
function getAgentType(route) {
|
|
50
|
+
return AGENT_TYPES.find(a => a.id === route);
|
|
51
|
+
}
|
|
52
|
+
// ============================================================================
|
|
53
|
+
// Route Subcommand
|
|
54
|
+
// ============================================================================
|
|
55
|
+
const routeTaskCommand = {
|
|
56
|
+
name: 'task',
|
|
57
|
+
description: 'Route a task to the optimal agent using Q-Learning',
|
|
58
|
+
options: [
|
|
59
|
+
{
|
|
60
|
+
name: 'q-learning',
|
|
61
|
+
short: 'q',
|
|
62
|
+
description: 'Use Q-Learning for agent selection (default: true)',
|
|
63
|
+
type: 'boolean',
|
|
64
|
+
default: true,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
name: 'agent',
|
|
68
|
+
short: 'a',
|
|
69
|
+
description: 'Force specific agent (bypasses Q-Learning)',
|
|
70
|
+
type: 'string',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'explore',
|
|
74
|
+
short: 'e',
|
|
75
|
+
description: 'Enable exploration (random selection chance)',
|
|
76
|
+
type: 'boolean',
|
|
77
|
+
default: true,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'json',
|
|
81
|
+
short: 'j',
|
|
82
|
+
description: 'Output in JSON format',
|
|
83
|
+
type: 'boolean',
|
|
84
|
+
default: false,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
examples: [
|
|
88
|
+
{ command: 'claude-flow route task "implement authentication"', description: 'Route task to best agent' },
|
|
89
|
+
{ command: 'claude-flow route task "write unit tests" --q-learning', description: 'Use Q-Learning routing' },
|
|
90
|
+
{ command: 'claude-flow route task "review code" --agent reviewer', description: 'Force specific agent' },
|
|
91
|
+
],
|
|
92
|
+
action: async (ctx) => {
|
|
93
|
+
const taskDescription = ctx.args[0];
|
|
94
|
+
const forceAgent = ctx.flags.agent;
|
|
95
|
+
const useExploration = ctx.flags.explore;
|
|
96
|
+
const jsonOutput = ctx.flags.json;
|
|
97
|
+
if (!taskDescription) {
|
|
98
|
+
output.printError('Task description is required');
|
|
99
|
+
output.writeln(output.dim('Usage: claude-flow route task "task description"'));
|
|
100
|
+
return { success: false, exitCode: 1 };
|
|
101
|
+
}
|
|
102
|
+
const spinner = output.createSpinner({ text: 'Analyzing task...', spinner: 'dots' });
|
|
103
|
+
spinner.start();
|
|
104
|
+
try {
|
|
105
|
+
if (forceAgent) {
|
|
106
|
+
// Bypass Q-Learning, use specified agent
|
|
107
|
+
const agent = getAgentType(forceAgent) ||
|
|
108
|
+
AGENT_TYPES.find(a => a.name.toLowerCase() === forceAgent.toLowerCase());
|
|
109
|
+
if (!agent) {
|
|
110
|
+
spinner.fail(`Agent "${forceAgent}" not found`);
|
|
111
|
+
output.writeln();
|
|
112
|
+
output.writeln('Available agents:');
|
|
113
|
+
output.printList(AGENT_TYPES.map(a => `${output.highlight(a.id)} - ${a.description}`));
|
|
114
|
+
return { success: false, exitCode: 1 };
|
|
115
|
+
}
|
|
116
|
+
spinner.succeed(`Routed to ${agent.name}`);
|
|
117
|
+
if (jsonOutput) {
|
|
118
|
+
output.printJson({
|
|
119
|
+
task: taskDescription,
|
|
120
|
+
agentId: agent.id,
|
|
121
|
+
agentName: agent.name,
|
|
122
|
+
confidence: 1.0,
|
|
123
|
+
method: 'forced',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
output.writeln();
|
|
128
|
+
output.printBox([
|
|
129
|
+
`Task: ${taskDescription}`,
|
|
130
|
+
`Agent: ${output.highlight(agent.name)} (${agent.id})`,
|
|
131
|
+
`Confidence: ${output.success('100%')} (forced)`,
|
|
132
|
+
`Description: ${agent.description}`,
|
|
133
|
+
].join('\n'), 'Routing Result');
|
|
134
|
+
}
|
|
135
|
+
return { success: true, data: { agentId: agent.id, agentName: agent.name } };
|
|
136
|
+
}
|
|
137
|
+
// Use Q-Learning routing
|
|
138
|
+
const router = await getRouter();
|
|
139
|
+
const result = router.route(taskDescription, useExploration);
|
|
140
|
+
const agent = getAgentType(result.route) || AGENT_TYPES[0];
|
|
141
|
+
spinner.succeed(`Routed to ${agent.name}`);
|
|
142
|
+
if (jsonOutput) {
|
|
143
|
+
output.printJson({
|
|
144
|
+
task: taskDescription,
|
|
145
|
+
agentId: result.route,
|
|
146
|
+
agentName: agent.name,
|
|
147
|
+
confidence: result.confidence,
|
|
148
|
+
qValues: result.qValues,
|
|
149
|
+
explored: result.explored,
|
|
150
|
+
alternatives: result.alternatives.map(a => ({
|
|
151
|
+
agentId: a.route,
|
|
152
|
+
agentName: getAgentType(a.route)?.name || a.route,
|
|
153
|
+
score: a.score,
|
|
154
|
+
})),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
output.writeln();
|
|
159
|
+
const confidenceColor = result.confidence >= 0.7
|
|
160
|
+
? output.success
|
|
161
|
+
: result.confidence >= 0.4
|
|
162
|
+
? output.warning
|
|
163
|
+
: output.error;
|
|
164
|
+
output.printBox([
|
|
165
|
+
`Task: ${taskDescription}`,
|
|
166
|
+
``,
|
|
167
|
+
`Agent: ${output.highlight(agent.name)} (${result.route})`,
|
|
168
|
+
`Confidence: ${confidenceColor(`${(result.confidence * 100).toFixed(1)}%`)}`,
|
|
169
|
+
`Q-Value: ${Math.max(...result.qValues).toFixed(3)}`,
|
|
170
|
+
`Exploration: ${result.explored ? output.warning('Yes') : 'No'}`,
|
|
171
|
+
``,
|
|
172
|
+
`Description: ${agent.description}`,
|
|
173
|
+
`Capabilities: ${agent.capabilities.join(', ')}`,
|
|
174
|
+
].join('\n'), 'Q-Learning Routing');
|
|
175
|
+
if (result.alternatives.length > 0) {
|
|
176
|
+
output.writeln();
|
|
177
|
+
output.writeln(output.bold('Alternatives:'));
|
|
178
|
+
output.printTable({
|
|
179
|
+
columns: [
|
|
180
|
+
{ key: 'agent', header: 'Agent', width: 20 },
|
|
181
|
+
{ key: 'score', header: 'Score', width: 12, align: 'right' },
|
|
182
|
+
],
|
|
183
|
+
data: result.alternatives.map(a => ({
|
|
184
|
+
agent: getAgentType(a.route)?.name || a.route,
|
|
185
|
+
score: a.score.toFixed(3),
|
|
186
|
+
})),
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return { success: true, data: { agentId: result.route, result } };
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
spinner.fail('Routing failed');
|
|
194
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
195
|
+
return { success: false, exitCode: 1 };
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
// ============================================================================
|
|
200
|
+
// List Agents Subcommand
|
|
201
|
+
// ============================================================================
|
|
202
|
+
const listAgentsCommand = {
|
|
203
|
+
name: 'list-agents',
|
|
204
|
+
aliases: ['agents', 'ls'],
|
|
205
|
+
description: 'List all available agent types for routing',
|
|
206
|
+
options: [
|
|
207
|
+
{
|
|
208
|
+
name: 'json',
|
|
209
|
+
short: 'j',
|
|
210
|
+
description: 'Output in JSON format',
|
|
211
|
+
type: 'boolean',
|
|
212
|
+
default: false,
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
examples: [
|
|
216
|
+
{ command: 'claude-flow route list-agents', description: 'List all agents' },
|
|
217
|
+
{ command: 'claude-flow route agents --json', description: 'List agents as JSON' },
|
|
218
|
+
],
|
|
219
|
+
action: async (ctx) => {
|
|
220
|
+
const jsonOutput = ctx.flags.json;
|
|
221
|
+
try {
|
|
222
|
+
if (jsonOutput) {
|
|
223
|
+
output.printJson(AGENT_TYPES);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
output.writeln();
|
|
227
|
+
output.writeln(output.bold('Available Agent Types'));
|
|
228
|
+
output.writeln(output.dim('Ordered by priority (highest first)'));
|
|
229
|
+
output.writeln();
|
|
230
|
+
output.printTable({
|
|
231
|
+
columns: [
|
|
232
|
+
{ key: 'id', header: 'ID', width: 15 },
|
|
233
|
+
{ key: 'name', header: 'Name', width: 15 },
|
|
234
|
+
{ key: 'priority', header: 'Priority', width: 10, align: 'right' },
|
|
235
|
+
{ key: 'description', header: 'Description', width: 45 },
|
|
236
|
+
],
|
|
237
|
+
data: AGENT_TYPES.map(a => ({
|
|
238
|
+
id: output.highlight(a.id),
|
|
239
|
+
name: a.name,
|
|
240
|
+
priority: String(a.priority),
|
|
241
|
+
description: a.description,
|
|
242
|
+
})),
|
|
243
|
+
});
|
|
244
|
+
output.writeln();
|
|
245
|
+
output.writeln(output.dim(`Total: ${AGENT_TYPES.length} agent types`));
|
|
246
|
+
}
|
|
247
|
+
return { success: true, data: AGENT_TYPES };
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
251
|
+
return { success: false, exitCode: 1 };
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
// ============================================================================
|
|
256
|
+
// Stats Subcommand
|
|
257
|
+
// ============================================================================
|
|
258
|
+
const statsCommand = {
|
|
259
|
+
name: 'stats',
|
|
260
|
+
description: 'Show Q-Learning router statistics',
|
|
261
|
+
options: [
|
|
262
|
+
{
|
|
263
|
+
name: 'json',
|
|
264
|
+
short: 'j',
|
|
265
|
+
description: 'Output in JSON format',
|
|
266
|
+
type: 'boolean',
|
|
267
|
+
default: false,
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
examples: [
|
|
271
|
+
{ command: 'claude-flow route stats', description: 'Show routing statistics' },
|
|
272
|
+
],
|
|
273
|
+
action: async (ctx) => {
|
|
274
|
+
const jsonOutput = ctx.flags.json;
|
|
275
|
+
try {
|
|
276
|
+
const router = await getRouter();
|
|
277
|
+
const stats = router.getStats();
|
|
278
|
+
const ruvectorAvailable = await isRuvectorAvailable();
|
|
279
|
+
const ruvectorStatus = {
|
|
280
|
+
available: ruvectorAvailable,
|
|
281
|
+
wasmAccelerated: stats.useNative === 1,
|
|
282
|
+
backend: stats.useNative === 1 ? 'ruvector-native' : 'fallback',
|
|
283
|
+
};
|
|
284
|
+
if (jsonOutput) {
|
|
285
|
+
output.printJson({ stats, ruvector: ruvectorStatus });
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
output.writeln();
|
|
289
|
+
output.writeln(output.bold('Q-Learning Router Statistics'));
|
|
290
|
+
output.writeln();
|
|
291
|
+
output.printTable({
|
|
292
|
+
columns: [
|
|
293
|
+
{ key: 'metric', header: 'Metric', width: 25 },
|
|
294
|
+
{ key: 'value', header: 'Value', width: 20, align: 'right' },
|
|
295
|
+
],
|
|
296
|
+
data: [
|
|
297
|
+
{ metric: 'Update Count', value: String(stats.updateCount) },
|
|
298
|
+
{ metric: 'Q-Table Size', value: String(stats.qTableSize) },
|
|
299
|
+
{ metric: 'Step Count', value: String(stats.stepCount) },
|
|
300
|
+
{ metric: 'Epsilon', value: stats.epsilon.toFixed(4) },
|
|
301
|
+
{ metric: 'Avg TD Error', value: stats.avgTDError.toFixed(4) },
|
|
302
|
+
{ metric: 'Native Backend', value: stats.useNative === 1 ? 'Yes' : 'No' },
|
|
303
|
+
],
|
|
304
|
+
});
|
|
305
|
+
output.writeln();
|
|
306
|
+
output.writeln(output.bold('RuVector Status'));
|
|
307
|
+
output.printList([
|
|
308
|
+
`Available: ${ruvectorStatus.available ? output.success('Yes') : output.warning('No (using fallback)')}`,
|
|
309
|
+
`WASM Accelerated: ${ruvectorStatus.wasmAccelerated ? output.success('Yes') : 'No'}`,
|
|
310
|
+
`Backend: ${ruvectorStatus.backend}`,
|
|
311
|
+
]);
|
|
312
|
+
}
|
|
313
|
+
return { success: true, data: { stats, ruvector: ruvectorStatus } };
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
317
|
+
return { success: false, exitCode: 1 };
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
// ============================================================================
|
|
322
|
+
// Feedback Subcommand
|
|
323
|
+
// ============================================================================
|
|
324
|
+
const feedbackCommand = {
|
|
325
|
+
name: 'feedback',
|
|
326
|
+
description: 'Provide feedback on a routing decision',
|
|
327
|
+
options: [
|
|
328
|
+
{
|
|
329
|
+
name: 'task',
|
|
330
|
+
short: 't',
|
|
331
|
+
description: 'Task description (context for learning)',
|
|
332
|
+
type: 'string',
|
|
333
|
+
required: true,
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
name: 'agent',
|
|
337
|
+
short: 'a',
|
|
338
|
+
description: 'Agent that was used',
|
|
339
|
+
type: 'string',
|
|
340
|
+
required: true,
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
name: 'reward',
|
|
344
|
+
short: 'r',
|
|
345
|
+
description: 'Reward value (-1 to 1, where 1 is best)',
|
|
346
|
+
type: 'number',
|
|
347
|
+
default: 0.8,
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: 'next-task',
|
|
351
|
+
short: 'n',
|
|
352
|
+
description: 'Next task description (for multi-step learning)',
|
|
353
|
+
type: 'string',
|
|
354
|
+
},
|
|
355
|
+
],
|
|
356
|
+
examples: [
|
|
357
|
+
{ command: 'claude-flow route feedback -t "implement auth" -a coder -r 0.9', description: 'Positive feedback' },
|
|
358
|
+
{ command: 'claude-flow route feedback -t "write tests" -a tester -r -0.5', description: 'Negative feedback' },
|
|
359
|
+
],
|
|
360
|
+
action: async (ctx) => {
|
|
361
|
+
const taskDescription = ctx.flags.task;
|
|
362
|
+
const agentId = ctx.flags.agent;
|
|
363
|
+
const reward = ctx.flags.reward;
|
|
364
|
+
const nextTask = ctx.flags['next-task'];
|
|
365
|
+
if (!taskDescription || !agentId) {
|
|
366
|
+
output.printError('Task description and agent are required');
|
|
367
|
+
return { success: false, exitCode: 1 };
|
|
368
|
+
}
|
|
369
|
+
// Validate agent
|
|
370
|
+
const agent = getAgentType(agentId);
|
|
371
|
+
if (!agent) {
|
|
372
|
+
output.printError(`Unknown agent: ${agentId}`);
|
|
373
|
+
output.writeln('Available agents:');
|
|
374
|
+
output.printList(AGENT_TYPES.map(a => a.id));
|
|
375
|
+
return { success: false, exitCode: 1 };
|
|
376
|
+
}
|
|
377
|
+
try {
|
|
378
|
+
const router = await getRouter();
|
|
379
|
+
const clampedReward = Math.max(-1, Math.min(1, reward));
|
|
380
|
+
const tdError = router.update(taskDescription, agentId, clampedReward, nextTask);
|
|
381
|
+
output.printSuccess(`Feedback recorded for agent "${agent.name}"`);
|
|
382
|
+
output.writeln();
|
|
383
|
+
output.printBox([
|
|
384
|
+
`Task: ${taskDescription}`,
|
|
385
|
+
`Agent: ${agent.name} (${agentId})`,
|
|
386
|
+
`Reward: ${clampedReward >= 0 ? output.success(clampedReward.toFixed(2)) : output.error(clampedReward.toFixed(2))}`,
|
|
387
|
+
`TD Error: ${Math.abs(tdError).toFixed(4)}`,
|
|
388
|
+
nextTask ? `Next Task: ${nextTask}` : '',
|
|
389
|
+
].filter(Boolean).join('\n'), 'Feedback Recorded');
|
|
390
|
+
return { success: true, data: { tdError } };
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
394
|
+
return { success: false, exitCode: 1 };
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
};
|
|
398
|
+
// ============================================================================
|
|
399
|
+
// Reset Subcommand
|
|
400
|
+
// ============================================================================
|
|
401
|
+
const resetCommand = {
|
|
402
|
+
name: 'reset',
|
|
403
|
+
description: 'Reset the Q-Learning router state',
|
|
404
|
+
options: [
|
|
405
|
+
{
|
|
406
|
+
name: 'force',
|
|
407
|
+
short: 'f',
|
|
408
|
+
description: 'Force reset without confirmation',
|
|
409
|
+
type: 'boolean',
|
|
410
|
+
default: false,
|
|
411
|
+
},
|
|
412
|
+
],
|
|
413
|
+
examples: [
|
|
414
|
+
{ command: 'claude-flow route reset', description: 'Reset router state' },
|
|
415
|
+
{ command: 'claude-flow route reset --force', description: 'Force reset' },
|
|
416
|
+
],
|
|
417
|
+
action: async (ctx) => {
|
|
418
|
+
const force = ctx.flags.force;
|
|
419
|
+
if (!force && ctx.interactive) {
|
|
420
|
+
output.printWarning('This will reset all learned Q-values and statistics.');
|
|
421
|
+
output.writeln(output.dim('Use --force to skip this confirmation.'));
|
|
422
|
+
return { success: false, exitCode: 1 };
|
|
423
|
+
}
|
|
424
|
+
try {
|
|
425
|
+
const router = await getRouter();
|
|
426
|
+
router.reset();
|
|
427
|
+
output.printSuccess('Q-Learning router state has been reset');
|
|
428
|
+
return { success: true };
|
|
429
|
+
}
|
|
430
|
+
catch (error) {
|
|
431
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
432
|
+
return { success: false, exitCode: 1 };
|
|
433
|
+
}
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
// ============================================================================
|
|
437
|
+
// Export/Import Subcommands
|
|
438
|
+
// ============================================================================
|
|
439
|
+
const exportCommand = {
|
|
440
|
+
name: 'export',
|
|
441
|
+
description: 'Export Q-table for persistence',
|
|
442
|
+
options: [
|
|
443
|
+
{
|
|
444
|
+
name: 'file',
|
|
445
|
+
short: 'f',
|
|
446
|
+
description: 'Output file path (outputs to stdout if not specified)',
|
|
447
|
+
type: 'string',
|
|
448
|
+
},
|
|
449
|
+
],
|
|
450
|
+
examples: [
|
|
451
|
+
{ command: 'claude-flow route export', description: 'Export Q-table to stdout' },
|
|
452
|
+
{ command: 'claude-flow route export -f qtable.json', description: 'Export to file' },
|
|
453
|
+
],
|
|
454
|
+
action: async (ctx) => {
|
|
455
|
+
const filePath = ctx.flags.file;
|
|
456
|
+
try {
|
|
457
|
+
const router = await getRouter();
|
|
458
|
+
const data = router.export();
|
|
459
|
+
if (filePath) {
|
|
460
|
+
const fs = await import('node:fs/promises');
|
|
461
|
+
await fs.writeFile(filePath, JSON.stringify(data, null, 2));
|
|
462
|
+
output.printSuccess(`Q-table exported to ${filePath}`);
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
output.printJson(data);
|
|
466
|
+
}
|
|
467
|
+
return { success: true, data };
|
|
468
|
+
}
|
|
469
|
+
catch (error) {
|
|
470
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
471
|
+
return { success: false, exitCode: 1 };
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
};
|
|
475
|
+
const importCommand = {
|
|
476
|
+
name: 'import',
|
|
477
|
+
description: 'Import Q-table from file',
|
|
478
|
+
options: [
|
|
479
|
+
{
|
|
480
|
+
name: 'file',
|
|
481
|
+
short: 'f',
|
|
482
|
+
description: 'Input file path',
|
|
483
|
+
type: 'string',
|
|
484
|
+
required: true,
|
|
485
|
+
},
|
|
486
|
+
],
|
|
487
|
+
examples: [
|
|
488
|
+
{ command: 'claude-flow route import -f qtable.json', description: 'Import Q-table from file' },
|
|
489
|
+
],
|
|
490
|
+
action: async (ctx) => {
|
|
491
|
+
const filePath = ctx.flags.file;
|
|
492
|
+
if (!filePath) {
|
|
493
|
+
output.printError('File path is required');
|
|
494
|
+
return { success: false, exitCode: 1 };
|
|
495
|
+
}
|
|
496
|
+
try {
|
|
497
|
+
const fs = await import('node:fs/promises');
|
|
498
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
499
|
+
const data = JSON.parse(content);
|
|
500
|
+
const router = await getRouter();
|
|
501
|
+
router.import(data);
|
|
502
|
+
output.printSuccess(`Q-table imported from ${filePath}`);
|
|
503
|
+
output.writeln(output.dim(`Loaded ${Object.keys(data).length} state entries`));
|
|
504
|
+
return { success: true };
|
|
505
|
+
}
|
|
506
|
+
catch (error) {
|
|
507
|
+
output.printError(error instanceof Error ? error.message : String(error));
|
|
508
|
+
return { success: false, exitCode: 1 };
|
|
509
|
+
}
|
|
510
|
+
},
|
|
511
|
+
};
|
|
512
|
+
// ============================================================================
|
|
513
|
+
// Main Route Command
|
|
514
|
+
// ============================================================================
|
|
515
|
+
export const routeCommand = {
|
|
516
|
+
name: 'route',
|
|
517
|
+
description: 'Intelligent task-to-agent routing using Q-Learning',
|
|
518
|
+
subcommands: [
|
|
519
|
+
routeTaskCommand,
|
|
520
|
+
listAgentsCommand,
|
|
521
|
+
statsCommand,
|
|
522
|
+
feedbackCommand,
|
|
523
|
+
resetCommand,
|
|
524
|
+
exportCommand,
|
|
525
|
+
importCommand,
|
|
526
|
+
],
|
|
527
|
+
options: [
|
|
528
|
+
{
|
|
529
|
+
name: 'q-learning',
|
|
530
|
+
short: 'q',
|
|
531
|
+
description: 'Use Q-Learning for agent selection',
|
|
532
|
+
type: 'boolean',
|
|
533
|
+
default: true,
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
name: 'agent',
|
|
537
|
+
short: 'a',
|
|
538
|
+
description: 'Force specific agent',
|
|
539
|
+
type: 'string',
|
|
540
|
+
},
|
|
541
|
+
],
|
|
542
|
+
examples: [
|
|
543
|
+
{ command: 'claude-flow route "implement feature"', description: 'Route task to best agent' },
|
|
544
|
+
{ command: 'claude-flow route "write tests" --q-learning', description: 'Use Q-Learning routing' },
|
|
545
|
+
{ command: 'claude-flow route --agent coder "fix bug"', description: 'Force specific agent' },
|
|
546
|
+
{ command: 'claude-flow route list-agents', description: 'List available agents' },
|
|
547
|
+
{ command: 'claude-flow route stats', description: 'Show routing statistics' },
|
|
548
|
+
],
|
|
549
|
+
action: async (ctx) => {
|
|
550
|
+
// If task description provided directly, route it
|
|
551
|
+
if (ctx.args.length > 0 && routeTaskCommand.action) {
|
|
552
|
+
const result = await routeTaskCommand.action(ctx);
|
|
553
|
+
if (result)
|
|
554
|
+
return result;
|
|
555
|
+
return { success: true };
|
|
556
|
+
}
|
|
557
|
+
// Show help
|
|
558
|
+
output.writeln();
|
|
559
|
+
output.writeln(output.bold('Q-Learning Agent Router'));
|
|
560
|
+
output.writeln(output.dim('Intelligent task-to-agent routing using reinforcement learning'));
|
|
561
|
+
output.writeln();
|
|
562
|
+
output.writeln('Usage: claude-flow route <task> [options]');
|
|
563
|
+
output.writeln(' claude-flow route <subcommand>');
|
|
564
|
+
output.writeln();
|
|
565
|
+
output.writeln(output.bold('Subcommands:'));
|
|
566
|
+
output.printList([
|
|
567
|
+
`${output.highlight('task')} - Route a task to optimal agent`,
|
|
568
|
+
`${output.highlight('list-agents')} - List available agent types`,
|
|
569
|
+
`${output.highlight('stats')} - Show router statistics`,
|
|
570
|
+
`${output.highlight('feedback')} - Provide routing feedback`,
|
|
571
|
+
`${output.highlight('reset')} - Reset router state`,
|
|
572
|
+
`${output.highlight('export')} - Export Q-table`,
|
|
573
|
+
`${output.highlight('import')} - Import Q-table`,
|
|
574
|
+
]);
|
|
575
|
+
output.writeln();
|
|
576
|
+
output.writeln(output.bold('How It Works:'));
|
|
577
|
+
output.printList([
|
|
578
|
+
'Analyzes task description using hash-based state encoding',
|
|
579
|
+
'Uses Q-Learning to learn from routing outcomes',
|
|
580
|
+
'Epsilon-greedy exploration for continuous improvement',
|
|
581
|
+
'Provides confidence scores and alternatives',
|
|
582
|
+
]);
|
|
583
|
+
output.writeln();
|
|
584
|
+
// Show quick status
|
|
585
|
+
const ruvectorAvailable = await isRuvectorAvailable();
|
|
586
|
+
output.writeln(output.bold('Backend Status:'));
|
|
587
|
+
output.printList([
|
|
588
|
+
`RuVector: ${ruvectorAvailable ? output.success('Available') : output.warning('Fallback mode')}`,
|
|
589
|
+
`Backend: ${ruvectorAvailable ? 'ruvector-native' : 'JavaScript fallback'}`,
|
|
590
|
+
]);
|
|
591
|
+
output.writeln();
|
|
592
|
+
output.writeln(output.dim('Run "claude-flow route <subcommand> --help" for more info'));
|
|
593
|
+
return { success: true };
|
|
594
|
+
},
|
|
595
|
+
};
|
|
596
|
+
export default routeCommand;
|
|
597
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../src/commands/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudemd-generator.d.ts","sourceRoot":"","sources":["../../../src/init/claudemd-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"claudemd-generator.d.ts","sourceRoot":"","sources":["../../../src/init/claudemd-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAia7D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAoDpE;AAED,eAAe,gBAAgB,CAAC"}
|