universal-agent-memory 1.0.16 → 1.0.18

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.
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Task Executor
3
+ *
4
+ * Tier 2 of the Multi-Model Architecture.
5
+ * Responsible for:
6
+ * - Executing subtasks following planner specifications
7
+ * - Managing retries and fallbacks
8
+ * - Tracking execution results and costs
9
+ */
10
+ const DEFAULT_OPTIONS = {
11
+ maxRetries: 2,
12
+ retryDelayMs: 1000,
13
+ stepTimeout: 120000,
14
+ enableFallback: true,
15
+ parallelExecution: true,
16
+ maxParallel: 3,
17
+ };
18
+ /**
19
+ * Task Executor - executes plans created by the planner
20
+ */
21
+ export class TaskExecutor {
22
+ router;
23
+ config;
24
+ client;
25
+ options;
26
+ results;
27
+ constructor(router, config, client, options = {}) {
28
+ this.router = router;
29
+ this.config = config;
30
+ this.client = client;
31
+ this.options = { ...DEFAULT_OPTIONS, ...options };
32
+ this.results = new Map();
33
+ }
34
+ /**
35
+ * Execute a complete plan
36
+ */
37
+ async executePlan(plan, planner, onProgress) {
38
+ const allResults = [];
39
+ const outputs = new Map();
40
+ // Get execution order from planner
41
+ const executionOrder = planner.getExecutionOrder(plan);
42
+ for (const levelTasks of executionOrder) {
43
+ if (this.options.parallelExecution && levelTasks.length > 1) {
44
+ // Execute level in parallel
45
+ const levelResults = await this.executeParallel(plan, levelTasks, outputs, onProgress);
46
+ allResults.push(...levelResults);
47
+ // Update outputs
48
+ for (const result of levelResults) {
49
+ if (result.success) {
50
+ outputs.set(result.subtaskId, result.output);
51
+ }
52
+ }
53
+ }
54
+ else {
55
+ // Execute sequentially
56
+ for (const taskId of levelTasks) {
57
+ const result = await this.executeSubtask(plan, taskId, outputs);
58
+ allResults.push(result);
59
+ onProgress?.(result);
60
+ if (result.success) {
61
+ outputs.set(taskId, result.output);
62
+ }
63
+ }
64
+ }
65
+ }
66
+ // Store results
67
+ this.results.set(plan.id, allResults);
68
+ return allResults;
69
+ }
70
+ /**
71
+ * Execute multiple subtasks in parallel
72
+ */
73
+ async executeParallel(plan, taskIds, inputs, onProgress) {
74
+ const maxParallel = this.options.maxParallel || 3;
75
+ const results = [];
76
+ // Process in batches
77
+ for (let i = 0; i < taskIds.length; i += maxParallel) {
78
+ const batch = taskIds.slice(i, i + maxParallel);
79
+ const batchResults = await Promise.all(batch.map(taskId => this.executeSubtask(plan, taskId, inputs)));
80
+ for (const result of batchResults) {
81
+ results.push(result);
82
+ onProgress?.(result);
83
+ }
84
+ }
85
+ return results;
86
+ }
87
+ /**
88
+ * Execute a single subtask with retry logic
89
+ */
90
+ async executeSubtask(plan, subtaskId, inputs) {
91
+ const subtask = plan.subtasks.find(s => s.id === subtaskId);
92
+ if (!subtask) {
93
+ return this.createErrorResult(plan.id, subtaskId, 'Subtask not found');
94
+ }
95
+ const modelId = plan.modelAssignments.get(subtaskId);
96
+ const model = modelId ? this.router.getModel(modelId) : undefined;
97
+ if (!model) {
98
+ return this.createErrorResult(plan.id, subtaskId, 'No model assigned');
99
+ }
100
+ const context = {
101
+ planId: plan.id,
102
+ subtaskId,
103
+ inputs,
104
+ constraints: subtask.constraints,
105
+ previousAttempts: [],
106
+ };
107
+ let lastError;
108
+ let retryCount = 0;
109
+ // Try with primary model
110
+ for (let attempt = 0; attempt <= (this.options.maxRetries || 0); attempt++) {
111
+ try {
112
+ const result = await this.attemptExecution(model, subtask, context);
113
+ result.retryCount = retryCount;
114
+ return result;
115
+ }
116
+ catch (error) {
117
+ lastError = error instanceof Error ? error.message : String(error);
118
+ retryCount++;
119
+ if (attempt < (this.options.maxRetries || 0)) {
120
+ await this.delay(this.options.retryDelayMs || 1000);
121
+ }
122
+ }
123
+ }
124
+ // Try fallback if enabled
125
+ if (this.options.enableFallback) {
126
+ const fallbackModel = this.router.getModelForRole('fallback');
127
+ if (fallbackModel && fallbackModel.id !== model.id) {
128
+ try {
129
+ const result = await this.attemptExecution(fallbackModel, subtask, context);
130
+ result.retryCount = retryCount;
131
+ result.modelUsed = fallbackModel.id;
132
+ return result;
133
+ }
134
+ catch (error) {
135
+ lastError = error instanceof Error ? error.message : String(error);
136
+ }
137
+ }
138
+ }
139
+ return this.createErrorResult(plan.id, subtaskId, lastError || 'Execution failed', retryCount);
140
+ }
141
+ /**
142
+ * Attempt to execute a subtask with a specific model
143
+ */
144
+ async attemptExecution(model, subtask, context) {
145
+ const startTime = Date.now();
146
+ // Build prompt
147
+ const prompt = this.buildPrompt(subtask, context);
148
+ // Execute
149
+ const response = await this.client.complete(model, prompt, {
150
+ maxTokens: this.getMaxTokens(subtask),
151
+ timeout: this.options.stepTimeout,
152
+ });
153
+ const duration = Date.now() - startTime;
154
+ // Calculate cost
155
+ const cost = this.router.estimateCost(model, response.tokensUsed.input, response.tokensUsed.output);
156
+ return {
157
+ planId: context.planId,
158
+ subtaskId: context.subtaskId,
159
+ modelUsed: model.id,
160
+ success: true,
161
+ output: response.content,
162
+ tokensUsed: response.tokensUsed,
163
+ cost,
164
+ duration,
165
+ retryCount: 0,
166
+ };
167
+ }
168
+ /**
169
+ * Build the prompt for a subtask
170
+ */
171
+ buildPrompt(subtask, context) {
172
+ const parts = [
173
+ `## Task: ${subtask.title}`,
174
+ '',
175
+ subtask.description,
176
+ '',
177
+ ];
178
+ // Add inputs
179
+ if (context.inputs.size > 0) {
180
+ parts.push('## Available Context:');
181
+ for (const [key, value] of context.inputs) {
182
+ if (subtask.inputs.includes(key)) {
183
+ parts.push(`### ${key}:`);
184
+ parts.push('```');
185
+ parts.push(value.slice(0, 2000)); // Limit input size
186
+ parts.push('```');
187
+ parts.push('');
188
+ }
189
+ }
190
+ }
191
+ // Add constraints
192
+ if (context.constraints.length > 0) {
193
+ parts.push('## Constraints:');
194
+ for (const constraint of context.constraints) {
195
+ parts.push(`- ${constraint}`);
196
+ }
197
+ parts.push('');
198
+ }
199
+ // Add expected outputs
200
+ parts.push('## Expected Outputs:');
201
+ for (const output of subtask.outputs) {
202
+ parts.push(`- ${output}`);
203
+ }
204
+ parts.push('');
205
+ // Add instructions based on type
206
+ parts.push('## Instructions:');
207
+ switch (subtask.type) {
208
+ case 'coding':
209
+ parts.push('Provide working code that satisfies the requirements.');
210
+ parts.push('Include proper error handling and types.');
211
+ break;
212
+ case 'planning':
213
+ parts.push('Provide a detailed plan with clear steps.');
214
+ parts.push('Identify risks and dependencies.');
215
+ break;
216
+ case 'review':
217
+ parts.push('Review the provided code/content critically.');
218
+ parts.push('Identify issues, security concerns, and improvements.');
219
+ break;
220
+ case 'documentation':
221
+ parts.push('Write clear, comprehensive documentation.');
222
+ parts.push('Include examples and usage instructions.');
223
+ break;
224
+ default:
225
+ parts.push('Complete the task as specified.');
226
+ }
227
+ // Add retry context if applicable
228
+ if (context.previousAttempts.length > 0) {
229
+ parts.push('');
230
+ parts.push('## Previous Attempt Failed:');
231
+ const lastAttempt = context.previousAttempts[context.previousAttempts.length - 1];
232
+ if (lastAttempt.error) {
233
+ parts.push(`Error: ${lastAttempt.error}`);
234
+ }
235
+ parts.push('Please address the issue and try again.');
236
+ }
237
+ return parts.join('\n');
238
+ }
239
+ /**
240
+ * Get max tokens based on subtask complexity
241
+ */
242
+ getMaxTokens(subtask) {
243
+ const baseTokens = {
244
+ low: 2000,
245
+ medium: 4000,
246
+ high: 8000,
247
+ critical: 12000,
248
+ };
249
+ return baseTokens[subtask.complexity] || 4000;
250
+ }
251
+ /**
252
+ * Create an error result
253
+ */
254
+ createErrorResult(planId, subtaskId, error, retryCount = 0) {
255
+ return {
256
+ planId,
257
+ subtaskId,
258
+ modelUsed: 'none',
259
+ success: false,
260
+ output: '',
261
+ error,
262
+ tokensUsed: { input: 0, output: 0 },
263
+ cost: 0,
264
+ duration: 0,
265
+ retryCount,
266
+ };
267
+ }
268
+ /**
269
+ * Helper to delay
270
+ */
271
+ delay(ms) {
272
+ return new Promise(resolve => setTimeout(resolve, ms));
273
+ }
274
+ /**
275
+ * Get results for a plan
276
+ */
277
+ getResults(planId) {
278
+ return this.results.get(planId);
279
+ }
280
+ /**
281
+ * Get total cost for a plan
282
+ */
283
+ getTotalCost(planId) {
284
+ const results = this.results.get(planId);
285
+ if (!results)
286
+ return 0;
287
+ return results.reduce((sum, r) => sum + r.cost, 0);
288
+ }
289
+ /**
290
+ * Get success rate for a plan
291
+ */
292
+ getSuccessRate(planId) {
293
+ const results = this.results.get(planId);
294
+ if (!results || results.length === 0)
295
+ return 0;
296
+ const successful = results.filter(r => r.success).length;
297
+ return (successful / results.length) * 100;
298
+ }
299
+ /**
300
+ * Generate execution summary
301
+ */
302
+ generateSummary(planId) {
303
+ const results = this.results.get(planId);
304
+ if (!results)
305
+ return 'No results found for plan';
306
+ const successful = results.filter(r => r.success);
307
+ const failed = results.filter(r => !r.success);
308
+ const totalCost = this.getTotalCost(planId);
309
+ const totalDuration = results.reduce((sum, r) => sum + r.duration, 0);
310
+ const totalTokens = results.reduce((sum, r) => sum + r.tokensUsed.input + r.tokensUsed.output, 0);
311
+ const lines = [
312
+ `=== Execution Summary: ${planId.slice(0, 8)} ===`,
313
+ '',
314
+ `Total Subtasks: ${results.length}`,
315
+ `Successful: ${successful.length}`,
316
+ `Failed: ${failed.length}`,
317
+ `Success Rate: ${this.getSuccessRate(planId).toFixed(1)}%`,
318
+ '',
319
+ `Total Cost: $${totalCost.toFixed(4)}`,
320
+ `Total Duration: ${(totalDuration / 1000).toFixed(1)}s`,
321
+ `Total Tokens: ${totalTokens.toLocaleString()}`,
322
+ '',
323
+ ];
324
+ if (failed.length > 0) {
325
+ lines.push('Failed Subtasks:');
326
+ for (const result of failed) {
327
+ lines.push(` - ${result.subtaskId}: ${result.error || 'Unknown error'}`);
328
+ }
329
+ lines.push('');
330
+ }
331
+ // Model usage breakdown
332
+ const modelUsage = new Map();
333
+ for (const result of results) {
334
+ const existing = modelUsage.get(result.modelUsed) || { count: 0, cost: 0, tokens: 0 };
335
+ existing.count++;
336
+ existing.cost += result.cost;
337
+ existing.tokens += result.tokensUsed.input + result.tokensUsed.output;
338
+ modelUsage.set(result.modelUsed, existing);
339
+ }
340
+ lines.push('Model Usage:');
341
+ for (const [model, usage] of modelUsage) {
342
+ lines.push(` ${model}: ${usage.count} tasks, $${usage.cost.toFixed(4)}, ${usage.tokens.toLocaleString()} tokens`);
343
+ }
344
+ return lines.join('\n');
345
+ }
346
+ }
347
+ /**
348
+ * Create an executor instance
349
+ */
350
+ export function createExecutor(router, config, client, options) {
351
+ return new TaskExecutor(router, config, client, options);
352
+ }
353
+ /**
354
+ * Mock client for testing
355
+ */
356
+ export class MockModelClient {
357
+ responses;
358
+ latency;
359
+ constructor(responses, latency = 1000) {
360
+ this.responses = new Map(Object.entries(responses || {}));
361
+ this.latency = latency;
362
+ }
363
+ async complete(model, prompt) {
364
+ await new Promise(resolve => setTimeout(resolve, this.latency));
365
+ // Find matching response or generate default
366
+ let content = `Mock response from ${model.name}`;
367
+ for (const [key, value] of this.responses) {
368
+ if (prompt.toLowerCase().includes(key.toLowerCase())) {
369
+ content = value;
370
+ break;
371
+ }
372
+ }
373
+ return {
374
+ content,
375
+ tokensUsed: {
376
+ input: Math.ceil(prompt.length / 4),
377
+ output: Math.ceil(content.length / 4),
378
+ },
379
+ latencyMs: this.latency,
380
+ };
381
+ }
382
+ }
383
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/models/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Multi-Model Architecture
3
+ *
4
+ * Exports for the two-tier agentic architecture:
5
+ * - Router: Task classification and model selection
6
+ * - Planner: Task decomposition and execution planning
7
+ * - Executor: Subtask execution with retry/fallback
8
+ */
9
+ export * from './types.js';
10
+ export { ModelRouter, createRouter, createCostOptimizedRouter, createPerformanceRouter, } from './router.js';
11
+ export { TaskPlanner, createPlanner, } from './planner.js';
12
+ export type { PlannerOptions } from './planner.js';
13
+ export { TaskExecutor, createExecutor, MockModelClient, } from './executor.js';
14
+ export type { ModelClient, ExecutionContext, ExecutorOptions, } from './executor.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Multi-Model Architecture
3
+ *
4
+ * Exports for the two-tier agentic architecture:
5
+ * - Router: Task classification and model selection
6
+ * - Planner: Task decomposition and execution planning
7
+ * - Executor: Subtask execution with retry/fallback
8
+ */
9
+ // Types
10
+ export * from './types.js';
11
+ // Router
12
+ export { ModelRouter, createRouter, createCostOptimizedRouter, createPerformanceRouter, } from './router.js';
13
+ // Planner
14
+ export { TaskPlanner, createPlanner, } from './planner.js';
15
+ // Executor
16
+ export { TaskExecutor, createExecutor, MockModelClient, } from './executor.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,SAAS;AACT,OAAO,EACL,WAAW,EACX,YAAY,EACZ,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,UAAU;AACV,OAAO,EACL,WAAW,EACX,aAAa,GACd,MAAM,cAAc,CAAC;AAGtB,WAAW;AACX,OAAO,EACL,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Task Planner
3
+ *
4
+ * Tier 1 of the Multi-Model Architecture.
5
+ * Responsible for:
6
+ * - Task decomposition into subtasks
7
+ * - Dependency analysis
8
+ * - Model assignment for each subtask
9
+ * - Quality assurance routing
10
+ */
11
+ import { ExecutionPlan, MultiModelConfig } from './types.js';
12
+ import { ModelRouter } from './router.js';
13
+ /**
14
+ * Planner configuration options
15
+ */
16
+ export interface PlannerOptions {
17
+ maxSubtasks?: number;
18
+ maxDepth?: number;
19
+ enableParallelization?: boolean;
20
+ estimateTokenBudget?: boolean;
21
+ }
22
+ /**
23
+ * Task Planner - decomposes tasks and creates execution plans
24
+ */
25
+ export declare class TaskPlanner {
26
+ private router;
27
+ readonly config: MultiModelConfig;
28
+ private options;
29
+ constructor(router: ModelRouter, config: MultiModelConfig, options?: PlannerOptions);
30
+ /**
31
+ * Create an execution plan for a task
32
+ */
33
+ createPlan(taskDescription: string): ExecutionPlan;
34
+ /**
35
+ * Decompose a complex task into subtasks
36
+ */
37
+ private decomposeTask;
38
+ /**
39
+ * Create a single subtask for simple tasks
40
+ */
41
+ private createSingleSubtask;
42
+ /**
43
+ * Analyze dependencies between subtasks
44
+ */
45
+ private analyzeDependencies;
46
+ /**
47
+ * Assign models to subtasks based on routing
48
+ */
49
+ private assignModels;
50
+ /**
51
+ * Estimate total cost for the plan
52
+ */
53
+ private estimateTotalCost;
54
+ /**
55
+ * Estimate duration considering parallelization
56
+ */
57
+ private estimateDuration;
58
+ /**
59
+ * Get execution order respecting dependencies
60
+ */
61
+ getExecutionOrder(plan: ExecutionPlan): string[][];
62
+ /**
63
+ * Visualize the plan as text
64
+ */
65
+ visualizePlan(plan: ExecutionPlan): string;
66
+ }
67
+ /**
68
+ * Create a planner instance
69
+ */
70
+ export declare function createPlanner(router: ModelRouter, config: MultiModelConfig, options?: PlannerOptions): TaskPlanner;
71
+ //# sourceMappingURL=planner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/models/planner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,aAAa,EAGb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AASD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAc;IAC5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,OAAO,CAAC,OAAO,CAAiB;gBAG9B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,cAAmB;IAO9B;;OAEG;IACH,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa;IAiClD;;OAEG;IACH,OAAO,CAAC,aAAa;IAyFrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0DxB;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,EAAE;IAoClD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;CAgC3C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,WAAW,CAEb"}