@gotza02/smartagent 1.2.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/LICENSE +21 -0
- package/README.md +422 -0
- package/dist/config/index.d.ts +72 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +329 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/agent-manager.d.ts +116 -0
- package/dist/core/agent-manager.d.ts.map +1 -0
- package/dist/core/agent-manager.js +460 -0
- package/dist/core/agent-manager.js.map +1 -0
- package/dist/core/context-manager.d.ts +107 -0
- package/dist/core/context-manager.d.ts.map +1 -0
- package/dist/core/context-manager.js +467 -0
- package/dist/core/context-manager.js.map +1 -0
- package/dist/core/database.d.ts +82 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +751 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/event-emitter.d.ts +110 -0
- package/dist/core/event-emitter.d.ts.map +1 -0
- package/dist/core/event-emitter.js +240 -0
- package/dist/core/event-emitter.js.map +1 -0
- package/dist/core/metrics.d.ts +108 -0
- package/dist/core/metrics.d.ts.map +1 -0
- package/dist/core/metrics.js +281 -0
- package/dist/core/metrics.js.map +1 -0
- package/dist/core/middleware.d.ts +63 -0
- package/dist/core/middleware.d.ts.map +1 -0
- package/dist/core/middleware.js +194 -0
- package/dist/core/middleware.js.map +1 -0
- package/dist/core/plugin-system.d.ts +86 -0
- package/dist/core/plugin-system.d.ts.map +1 -0
- package/dist/core/plugin-system.js +251 -0
- package/dist/core/plugin-system.js.map +1 -0
- package/dist/core/task-scheduler.d.ts +130 -0
- package/dist/core/task-scheduler.d.ts.map +1 -0
- package/dist/core/task-scheduler.js +401 -0
- package/dist/core/task-scheduler.js.map +1 -0
- package/dist/engines/auto-router.d.ts +76 -0
- package/dist/engines/auto-router.d.ts.map +1 -0
- package/dist/engines/auto-router.js +445 -0
- package/dist/engines/auto-router.js.map +1 -0
- package/dist/engines/parallel-execution.d.ts +104 -0
- package/dist/engines/parallel-execution.d.ts.map +1 -0
- package/dist/engines/parallel-execution.js +591 -0
- package/dist/engines/parallel-execution.js.map +1 -0
- package/dist/engines/sequential-thinking.d.ts +88 -0
- package/dist/engines/sequential-thinking.d.ts.map +1 -0
- package/dist/engines/sequential-thinking.js +406 -0
- package/dist/engines/sequential-thinking.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1101 -0
- package/dist/index.js.map +1 -0
- package/dist/security/validation.d.ts +87 -0
- package/dist/security/validation.d.ts.map +1 -0
- package/dist/security/validation.js +465 -0
- package/dist/security/validation.js.map +1 -0
- package/dist/tools/filesystem.d.ts +90 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +292 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/terminal.d.ts +99 -0
- package/dist/tools/terminal.d.ts.map +1 -0
- package/dist/tools/terminal.js +363 -0
- package/dist/tools/terminal.js.map +1 -0
- package/dist/types/index.d.ts +306 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +54 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +189 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task Scheduler & Dependencies
|
|
3
|
+
* Advanced task scheduling with dependency management
|
|
4
|
+
*/
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
import { logger } from "../utils/logger.js";
|
|
7
|
+
import { eventEmitter } from "./event-emitter.js";
|
|
8
|
+
/**
|
|
9
|
+
* Task Scheduler
|
|
10
|
+
* Manages task dependencies and execution order
|
|
11
|
+
*/
|
|
12
|
+
export class TaskScheduler {
|
|
13
|
+
graph = {
|
|
14
|
+
tasks: new Map(),
|
|
15
|
+
dependencies: new Map(),
|
|
16
|
+
};
|
|
17
|
+
executionQueue = [];
|
|
18
|
+
runningTasks = new Set();
|
|
19
|
+
maxConcurrentTasks = 5;
|
|
20
|
+
/**
|
|
21
|
+
* Schedule a new task with dependencies
|
|
22
|
+
*/
|
|
23
|
+
scheduleTask(agentId, type, description, options = {}) {
|
|
24
|
+
const taskId = uuidv4();
|
|
25
|
+
const now = new Date().toISOString();
|
|
26
|
+
const task = {
|
|
27
|
+
id: taskId,
|
|
28
|
+
agentId,
|
|
29
|
+
type,
|
|
30
|
+
description,
|
|
31
|
+
context: {},
|
|
32
|
+
status: "pending",
|
|
33
|
+
priority: options.priority || 5,
|
|
34
|
+
timeout: 60,
|
|
35
|
+
createdAt: now,
|
|
36
|
+
dependencies: options.dependencies || [],
|
|
37
|
+
dependents: [],
|
|
38
|
+
retryCount: 0,
|
|
39
|
+
maxRetries: options.maxRetries || 3,
|
|
40
|
+
retryDelay: options.retryDelay || 5000,
|
|
41
|
+
};
|
|
42
|
+
// Validate dependencies
|
|
43
|
+
for (const depId of task.dependencies) {
|
|
44
|
+
if (!this.graph.tasks.has(depId)) {
|
|
45
|
+
throw new Error(`Dependency task not found: ${depId}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Add to graph
|
|
49
|
+
this.graph.tasks.set(taskId, task);
|
|
50
|
+
this.graph.dependencies.set(taskId, {
|
|
51
|
+
taskId,
|
|
52
|
+
dependsOn: task.dependencies,
|
|
53
|
+
dependentTasks: [],
|
|
54
|
+
});
|
|
55
|
+
// Update dependent tasks
|
|
56
|
+
for (const depId of task.dependencies) {
|
|
57
|
+
const dep = this.graph.dependencies.get(depId);
|
|
58
|
+
if (dep) {
|
|
59
|
+
dep.dependentTasks.push(taskId);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Check if ready to execute
|
|
63
|
+
if (this.isTaskReady(taskId)) {
|
|
64
|
+
this.addToQueue(taskId);
|
|
65
|
+
}
|
|
66
|
+
logger.info("Task scheduled", {
|
|
67
|
+
taskId,
|
|
68
|
+
agentId,
|
|
69
|
+
type,
|
|
70
|
+
dependencies: task.dependencies,
|
|
71
|
+
});
|
|
72
|
+
eventEmitter.emit("task:scheduled", { taskId, agentId, type });
|
|
73
|
+
return task;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if task is ready to execute (all dependencies completed)
|
|
77
|
+
*/
|
|
78
|
+
isTaskReady(taskId) {
|
|
79
|
+
const task = this.graph.tasks.get(taskId);
|
|
80
|
+
if (!task)
|
|
81
|
+
return false;
|
|
82
|
+
if (task.status !== "pending")
|
|
83
|
+
return false;
|
|
84
|
+
// Check all dependencies are completed
|
|
85
|
+
for (const depId of task.dependencies) {
|
|
86
|
+
const depTask = this.graph.tasks.get(depId);
|
|
87
|
+
if (!depTask || depTask.status !== "completed") {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Add task to execution queue
|
|
95
|
+
*/
|
|
96
|
+
addToQueue(taskId) {
|
|
97
|
+
const task = this.graph.tasks.get(taskId);
|
|
98
|
+
if (!task)
|
|
99
|
+
return;
|
|
100
|
+
// Insert based on priority
|
|
101
|
+
const insertIndex = this.executionQueue.findIndex((id) => {
|
|
102
|
+
const t = this.graph.tasks.get(id);
|
|
103
|
+
return t && t.priority < task.priority;
|
|
104
|
+
});
|
|
105
|
+
if (insertIndex === -1) {
|
|
106
|
+
this.executionQueue.push(taskId);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.executionQueue.splice(insertIndex, 0, taskId);
|
|
110
|
+
}
|
|
111
|
+
logger.debug("Task added to queue", { taskId, priority: task.priority });
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get next task from queue
|
|
115
|
+
*/
|
|
116
|
+
getNextTask() {
|
|
117
|
+
// Check concurrent limit
|
|
118
|
+
if (this.runningTasks.size >= this.maxConcurrentTasks) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
while (this.executionQueue.length > 0) {
|
|
122
|
+
const taskId = this.executionQueue.shift();
|
|
123
|
+
const task = this.graph.tasks.get(taskId);
|
|
124
|
+
if (task && this.isTaskReady(taskId)) {
|
|
125
|
+
return task;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Mark task as started
|
|
132
|
+
*/
|
|
133
|
+
startTask(taskId) {
|
|
134
|
+
const task = this.graph.tasks.get(taskId);
|
|
135
|
+
if (!task)
|
|
136
|
+
return null;
|
|
137
|
+
task.status = "in_progress";
|
|
138
|
+
task.startedAt = new Date().toISOString();
|
|
139
|
+
this.runningTasks.add(taskId);
|
|
140
|
+
logger.info("Task started", { taskId, agentId: task.agentId });
|
|
141
|
+
eventEmitter.emit("task:started", { taskId, agentId: task.agentId });
|
|
142
|
+
return task;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Mark task as completed
|
|
146
|
+
*/
|
|
147
|
+
completeTask(taskId, result) {
|
|
148
|
+
const task = this.graph.tasks.get(taskId);
|
|
149
|
+
if (!task)
|
|
150
|
+
return null;
|
|
151
|
+
task.status = "completed";
|
|
152
|
+
task.result = result;
|
|
153
|
+
task.completedAt = new Date().toISOString();
|
|
154
|
+
this.runningTasks.delete(taskId);
|
|
155
|
+
logger.info("Task completed", { taskId, agentId: task.agentId });
|
|
156
|
+
eventEmitter.emit("task:completed", { taskId, agentId: task.agentId, result });
|
|
157
|
+
// Check dependent tasks
|
|
158
|
+
this.checkDependentTasks(taskId);
|
|
159
|
+
return task;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Mark task as failed
|
|
163
|
+
*/
|
|
164
|
+
failTask(taskId, error) {
|
|
165
|
+
const task = this.graph.tasks.get(taskId);
|
|
166
|
+
if (!task)
|
|
167
|
+
return null;
|
|
168
|
+
task.status = "failed";
|
|
169
|
+
task.error = error;
|
|
170
|
+
task.completedAt = new Date().toISOString();
|
|
171
|
+
this.runningTasks.delete(taskId);
|
|
172
|
+
logger.error("Task failed", { taskId, agentId: task.agentId, error });
|
|
173
|
+
eventEmitter.emit("task:failed", { taskId, agentId: task.agentId, error });
|
|
174
|
+
// Check if should retry
|
|
175
|
+
if (task.retryCount < task.maxRetries) {
|
|
176
|
+
this.scheduleRetry(taskId);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Fail dependent tasks
|
|
180
|
+
this.failDependentTasks(taskId, `Dependency task failed: ${taskId}`);
|
|
181
|
+
}
|
|
182
|
+
return task;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Schedule task retry with exponential backoff and jitter
|
|
186
|
+
*/
|
|
187
|
+
scheduleRetry(taskId) {
|
|
188
|
+
const task = this.graph.tasks.get(taskId);
|
|
189
|
+
if (!task)
|
|
190
|
+
return;
|
|
191
|
+
task.retryCount++;
|
|
192
|
+
task.status = "pending";
|
|
193
|
+
task.error = undefined;
|
|
194
|
+
task.completedAt = undefined;
|
|
195
|
+
// Exponential backoff with jitter
|
|
196
|
+
const baseDelay = task.retryDelay;
|
|
197
|
+
const exponentialDelay = baseDelay * Math.pow(2, task.retryCount - 1);
|
|
198
|
+
const jitter = Math.random() * 1000; // 0-1000ms random jitter
|
|
199
|
+
const delay = Math.min(exponentialDelay + jitter, 30000); // Max 30s
|
|
200
|
+
setTimeout(() => {
|
|
201
|
+
logger.info("Retrying task", {
|
|
202
|
+
taskId,
|
|
203
|
+
retryCount: task.retryCount,
|
|
204
|
+
delay: Math.round(delay),
|
|
205
|
+
});
|
|
206
|
+
this.addToQueue(taskId);
|
|
207
|
+
}, delay);
|
|
208
|
+
eventEmitter.emit("task:retry-scheduled", {
|
|
209
|
+
taskId,
|
|
210
|
+
retryCount: task.retryCount,
|
|
211
|
+
delay: Math.round(delay),
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check and queue dependent tasks
|
|
216
|
+
*/
|
|
217
|
+
checkDependentTasks(completedTaskId) {
|
|
218
|
+
const depInfo = this.graph.dependencies.get(completedTaskId);
|
|
219
|
+
if (!depInfo)
|
|
220
|
+
return;
|
|
221
|
+
for (const dependentId of depInfo.dependentTasks) {
|
|
222
|
+
if (this.isTaskReady(dependentId)) {
|
|
223
|
+
this.addToQueue(dependentId);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Fail all dependent tasks
|
|
229
|
+
*/
|
|
230
|
+
failDependentTasks(failedTaskId, error) {
|
|
231
|
+
const depInfo = this.graph.dependencies.get(failedTaskId);
|
|
232
|
+
if (!depInfo)
|
|
233
|
+
return;
|
|
234
|
+
for (const dependentId of depInfo.dependentTasks) {
|
|
235
|
+
const dependentTask = this.graph.tasks.get(dependentId);
|
|
236
|
+
if (dependentTask && dependentTask.status === "pending") {
|
|
237
|
+
this.failTask(dependentId, error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get task by ID
|
|
243
|
+
*/
|
|
244
|
+
getTask(taskId) {
|
|
245
|
+
return this.graph.tasks.get(taskId) || null;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get all tasks
|
|
249
|
+
*/
|
|
250
|
+
getAllTasks() {
|
|
251
|
+
return Array.from(this.graph.tasks.values());
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get tasks by status
|
|
255
|
+
*/
|
|
256
|
+
getTasksByStatus(status) {
|
|
257
|
+
return this.getAllTasks().filter((t) => t.status === status);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Get tasks by agent
|
|
261
|
+
*/
|
|
262
|
+
getTasksByAgent(agentId) {
|
|
263
|
+
return this.getAllTasks().filter((t) => t.agentId === agentId);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get execution order (topological sort)
|
|
267
|
+
*/
|
|
268
|
+
getExecutionOrder() {
|
|
269
|
+
const visited = new Set();
|
|
270
|
+
const result = [];
|
|
271
|
+
const visit = (taskId) => {
|
|
272
|
+
if (visited.has(taskId))
|
|
273
|
+
return;
|
|
274
|
+
visited.add(taskId);
|
|
275
|
+
const depInfo = this.graph.dependencies.get(taskId);
|
|
276
|
+
if (depInfo) {
|
|
277
|
+
for (const depId of depInfo.dependsOn) {
|
|
278
|
+
visit(depId);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
result.push(taskId);
|
|
282
|
+
};
|
|
283
|
+
for (const taskId of this.graph.tasks.keys()) {
|
|
284
|
+
visit(taskId);
|
|
285
|
+
}
|
|
286
|
+
return result;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Detect circular dependencies
|
|
290
|
+
*/
|
|
291
|
+
detectCircularDependencies() {
|
|
292
|
+
const cycles = [];
|
|
293
|
+
const visited = new Set();
|
|
294
|
+
const recursionStack = new Set();
|
|
295
|
+
const dfs = (taskId, path) => {
|
|
296
|
+
if (recursionStack.has(taskId)) {
|
|
297
|
+
// Found cycle
|
|
298
|
+
const cycleStart = path.indexOf(taskId);
|
|
299
|
+
cycles.push(path.slice(cycleStart));
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
if (visited.has(taskId))
|
|
303
|
+
return;
|
|
304
|
+
visited.add(taskId);
|
|
305
|
+
recursionStack.add(taskId);
|
|
306
|
+
const depInfo = this.graph.dependencies.get(taskId);
|
|
307
|
+
if (depInfo) {
|
|
308
|
+
for (const depId of depInfo.dependsOn) {
|
|
309
|
+
dfs(depId, [...path, taskId]);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
recursionStack.delete(taskId);
|
|
313
|
+
};
|
|
314
|
+
for (const taskId of this.graph.tasks.keys()) {
|
|
315
|
+
if (!visited.has(taskId)) {
|
|
316
|
+
dfs(taskId, []);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return cycles;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Cancel a task
|
|
323
|
+
*/
|
|
324
|
+
cancelTask(taskId) {
|
|
325
|
+
const task = this.graph.tasks.get(taskId);
|
|
326
|
+
if (!task)
|
|
327
|
+
return false;
|
|
328
|
+
if (task.status === "in_progress") {
|
|
329
|
+
this.runningTasks.delete(taskId);
|
|
330
|
+
}
|
|
331
|
+
if (task.status === "pending" || task.status === "in_progress") {
|
|
332
|
+
task.status = "cancelled";
|
|
333
|
+
task.completedAt = new Date().toISOString();
|
|
334
|
+
// Remove from queue
|
|
335
|
+
const queueIndex = this.executionQueue.indexOf(taskId);
|
|
336
|
+
if (queueIndex > -1) {
|
|
337
|
+
this.executionQueue.splice(queueIndex, 1);
|
|
338
|
+
}
|
|
339
|
+
// Cancel dependent tasks
|
|
340
|
+
this.failDependentTasks(taskId, `Dependency task cancelled: ${taskId}`);
|
|
341
|
+
logger.info("Task cancelled", { taskId });
|
|
342
|
+
eventEmitter.emit("task:cancelled", { taskId });
|
|
343
|
+
return true;
|
|
344
|
+
}
|
|
345
|
+
return false;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get task statistics
|
|
349
|
+
*/
|
|
350
|
+
getStats() {
|
|
351
|
+
const tasks = this.getAllTasks();
|
|
352
|
+
return {
|
|
353
|
+
total: tasks.length,
|
|
354
|
+
pending: tasks.filter((t) => t.status === "pending").length,
|
|
355
|
+
inProgress: tasks.filter((t) => t.status === "in_progress").length,
|
|
356
|
+
completed: tasks.filter((t) => t.status === "completed").length,
|
|
357
|
+
failed: tasks.filter((t) => t.status === "failed").length,
|
|
358
|
+
cancelled: tasks.filter((t) => t.status === "cancelled").length,
|
|
359
|
+
queued: this.executionQueue.length,
|
|
360
|
+
running: this.runningTasks.size,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Set max concurrent tasks
|
|
365
|
+
*/
|
|
366
|
+
setMaxConcurrentTasks(max) {
|
|
367
|
+
this.maxConcurrentTasks = Math.max(1, max);
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* Clear completed tasks
|
|
371
|
+
*/
|
|
372
|
+
cleanup(maxAgeHours = 24) {
|
|
373
|
+
const now = Date.now();
|
|
374
|
+
const maxAgeMs = maxAgeHours * 60 * 60 * 1000;
|
|
375
|
+
let cleaned = 0;
|
|
376
|
+
for (const [taskId, task] of this.graph.tasks.entries()) {
|
|
377
|
+
const isTerminal = ["completed", "failed", "cancelled"].includes(task.status);
|
|
378
|
+
const age = task.completedAt ? now - new Date(task.completedAt).getTime() : 0;
|
|
379
|
+
if (isTerminal && age > maxAgeMs) {
|
|
380
|
+
this.graph.tasks.delete(taskId);
|
|
381
|
+
this.graph.dependencies.delete(taskId);
|
|
382
|
+
cleaned++;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
logger.info("Task scheduler cleanup completed", { cleaned, maxAgeHours });
|
|
386
|
+
return cleaned;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Reset scheduler
|
|
390
|
+
*/
|
|
391
|
+
reset() {
|
|
392
|
+
this.graph.tasks.clear();
|
|
393
|
+
this.graph.dependencies.clear();
|
|
394
|
+
this.executionQueue = [];
|
|
395
|
+
this.runningTasks.clear();
|
|
396
|
+
logger.info("Task scheduler reset");
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Export singleton instance
|
|
400
|
+
export const taskScheduler = new TaskScheduler();
|
|
401
|
+
//# sourceMappingURL=task-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-scheduler.js","sourceRoot":"","sources":["../../src/core/task-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Routing Engine
|
|
3
|
+
* Intent classification and intelligent agent selection
|
|
4
|
+
*/
|
|
5
|
+
import type { AgentType, AgentMode, IntentClassification, RoutingDecision, AutoRouterConfig } from "../types/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Auto-Routing Engine
|
|
8
|
+
* Classifies intent and routes to appropriate agent
|
|
9
|
+
*/
|
|
10
|
+
export declare class AutoRouter {
|
|
11
|
+
private config;
|
|
12
|
+
constructor(config?: Partial<AutoRouterConfig>);
|
|
13
|
+
/**
|
|
14
|
+
* Classify intent from input text
|
|
15
|
+
*/
|
|
16
|
+
classifyIntent(input: string): IntentClassification;
|
|
17
|
+
/**
|
|
18
|
+
* Route to appropriate agent based on intent
|
|
19
|
+
*/
|
|
20
|
+
route(input: string, context?: {
|
|
21
|
+
preferredAgent?: AgentType;
|
|
22
|
+
availableAgents?: AgentType[];
|
|
23
|
+
currentMode?: AgentMode;
|
|
24
|
+
}): RoutingDecision;
|
|
25
|
+
/**
|
|
26
|
+
* Batch route multiple inputs
|
|
27
|
+
*/
|
|
28
|
+
batchRoute(inputs: string[], context?: {
|
|
29
|
+
availableAgents?: AgentType[];
|
|
30
|
+
}): Array<{
|
|
31
|
+
input: string;
|
|
32
|
+
decision: RoutingDecision;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Get agent recommendation with explanation
|
|
36
|
+
*/
|
|
37
|
+
getRecommendation(input: string, targetAgent: AgentType): {
|
|
38
|
+
suitable: boolean;
|
|
39
|
+
confidence: number;
|
|
40
|
+
explanation: string;
|
|
41
|
+
suggestions: string[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Assess complexity of input
|
|
45
|
+
*/
|
|
46
|
+
private assessComplexity;
|
|
47
|
+
/**
|
|
48
|
+
* Extract required capabilities from input
|
|
49
|
+
*/
|
|
50
|
+
private extractCapabilities;
|
|
51
|
+
/**
|
|
52
|
+
* Calculate agent score based on intent and capabilities
|
|
53
|
+
*/
|
|
54
|
+
private calculateAgentScore;
|
|
55
|
+
/**
|
|
56
|
+
* Convert intent to primary capability
|
|
57
|
+
*/
|
|
58
|
+
private intentToCapability;
|
|
59
|
+
/**
|
|
60
|
+
* Calculate complexity score (0-10)
|
|
61
|
+
*/
|
|
62
|
+
private calculateComplexityScore;
|
|
63
|
+
/**
|
|
64
|
+
* Generate reasoning for routing decision
|
|
65
|
+
*/
|
|
66
|
+
private generateReasoning;
|
|
67
|
+
/**
|
|
68
|
+
* Update router configuration
|
|
69
|
+
*/
|
|
70
|
+
updateConfig(config: Partial<AutoRouterConfig>): void;
|
|
71
|
+
/**
|
|
72
|
+
* Get current configuration
|
|
73
|
+
*/
|
|
74
|
+
getConfig(): AutoRouterConfig;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=auto-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-router.d.ts","sourceRoot":"","sources":["../../src/engines/auto-router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAgK3B;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAIlD;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IAuDnD;;OAEG;IACH,KAAK,CACH,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,SAAS,CAAC;QAC3B,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,EAAE,SAAS,CAAC;KACzB,GACA,eAAe;IAuElB;;OAEG;IACH,UAAU,CACR,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;KAC/B,GACA,KAAK,CAAC;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,eAAe,CAAC;KAC3B,CAAC;IAOF;;OAEG;IACH,iBAAiB,CACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,SAAS,GACrB;QACD,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IA8CD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA4ChC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACH,SAAS,IAAI,gBAAgB;CAG9B"}
|