snow-flow 1.1.89 → 1.1.90

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,611 @@
1
+ "use strict";
2
+ /**
3
+ * Intelligent Parallel Agent Engine
4
+ * Automatically detects parallelizable work and spawns optimized agent teams
5
+ * Integrates with Queen Agent for enhanced multi-agent coordination
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.ParallelAgentEngine = void 0;
42
+ const eventemitter3_1 = require("eventemitter3");
43
+ const crypto = __importStar(require("crypto"));
44
+ class ParallelAgentEngine extends eventemitter3_1.EventEmitter {
45
+ constructor(memory) {
46
+ super();
47
+ this.memory = memory;
48
+ this.activeExecutionPlans = new Map();
49
+ this.agentWorkloads = new Map();
50
+ this.parallelizationHistory = new Map();
51
+ this.initializeCapabilityMap();
52
+ this.setupLearningSystem();
53
+ }
54
+ /**
55
+ * Main entry point: Analyze todos and detect parallelization opportunities
56
+ */
57
+ async detectParallelizationOpportunities(todos, objectiveType, currentAgents) {
58
+ console.log('🧠 Analyzing parallelization opportunities...');
59
+ const opportunities = [];
60
+ // 1. Detect independent tasks (can run simultaneously)
61
+ const independentOpportunity = await this.detectIndependentTasks(todos);
62
+ if (independentOpportunity)
63
+ opportunities.push(independentOpportunity);
64
+ // 2. Detect specialized breakdown opportunities (split complex task)
65
+ const specializedOpportunity = await this.detectSpecializedBreakdown(todos, objectiveType);
66
+ if (specializedOpportunity)
67
+ opportunities.push(specializedOpportunity);
68
+ // 3. Detect load distribution opportunities (same type, multiple agents)
69
+ const loadOpportunity = await this.detectLoadDistribution(todos, currentAgents);
70
+ if (loadOpportunity)
71
+ opportunities.push(loadOpportunity);
72
+ // 4. Detect capability split opportunities (different skills needed)
73
+ const capabilityOpportunity = await this.detectCapabilitySplit(todos);
74
+ if (capabilityOpportunity)
75
+ opportunities.push(capabilityOpportunity);
76
+ // Filter and rank opportunities by confidence and speedup
77
+ const rankedOpportunities = opportunities
78
+ .filter(opp => opp.confidence > 0.6 && opp.estimatedSpeedup > 1.2)
79
+ .sort((a, b) => (b.confidence * b.estimatedSpeedup) - (a.confidence * a.estimatedSpeedup));
80
+ console.log(`🎯 Found ${rankedOpportunities.length} high-confidence parallelization opportunities`);
81
+ // Store opportunities for learning
82
+ await this.storeOpportunities(todos, rankedOpportunities);
83
+ return rankedOpportunities;
84
+ }
85
+ /**
86
+ * Create optimal execution plan based on opportunities
87
+ */
88
+ async createExecutionPlan(opportunities, todos, maxAgents = 8) {
89
+ const planId = this.generateId('plan');
90
+ // Calculate optimal agent team
91
+ const agentTeam = await this.calculateOptimalTeam(opportunities, todos, maxAgents);
92
+ // Determine execution strategy
93
+ const strategy = this.determineExecutionStrategy(opportunities, agentTeam);
94
+ // Estimate completion time
95
+ const estimatedCompletion = this.estimateCompletionTime(agentTeam, strategy);
96
+ const plan = {
97
+ planId,
98
+ opportunities,
99
+ agentTeam,
100
+ executionStrategy: strategy,
101
+ estimatedCompletion,
102
+ maxParallelism: Math.min(agentTeam.length, maxAgents),
103
+ failureRecovery: 'reassign'
104
+ };
105
+ this.activeExecutionPlans.set(planId, plan);
106
+ console.log(`📋 Created execution plan ${planId}:`);
107
+ console.log(` • Strategy: ${strategy}`);
108
+ console.log(` • Team size: ${agentTeam.length} agents`);
109
+ console.log(` • Est. completion: ${estimatedCompletion} minutes`);
110
+ console.log(` • Max parallelism: ${plan.maxParallelism} concurrent agents`);
111
+ return plan;
112
+ }
113
+ /**
114
+ * Execute parallel plan and coordinate agents
115
+ */
116
+ async executeParallelPlan(plan, spawnAgentCallback) {
117
+ console.log(`🚀 Executing parallel plan ${plan.planId}`);
118
+ const spawnedAgents = [];
119
+ // Spawn agents based on plan
120
+ for (const workload of plan.agentTeam) {
121
+ if (workload.agentId === 'new') {
122
+ // Spawn new agent with specialization
123
+ const specialization = this.determineAgentSpecialization(workload);
124
+ const agent = await spawnAgentCallback(workload.agentType, specialization);
125
+ spawnedAgents.push(agent);
126
+ // Update workload with actual agent ID
127
+ workload.agentId = agent.id;
128
+ this.agentWorkloads.set(agent.id, workload);
129
+ }
130
+ }
131
+ // Set up parallel coordination
132
+ await this.setupParallelCoordination(plan, spawnedAgents);
133
+ // Calculate speedup
134
+ const sequentialTime = plan.agentTeam.reduce((sum, w) => sum + w.estimatedDuration, 0);
135
+ const parallelTime = plan.estimatedCompletion;
136
+ const actualSpeedup = sequentialTime / parallelTime;
137
+ this.emit('parallel_execution_started', {
138
+ planId: plan.planId,
139
+ agentCount: spawnedAgents.length,
140
+ estimatedSpeedup: actualSpeedup
141
+ });
142
+ return {
143
+ spawnedAgents,
144
+ executionDetails: {
145
+ totalAgentsSpawned: spawnedAgents.length,
146
+ parallelWorkflows: plan.opportunities.length,
147
+ estimatedSpeedup: `${actualSpeedup.toFixed(1)}x faster`
148
+ }
149
+ };
150
+ }
151
+ /**
152
+ * Detect independent tasks that can run in parallel
153
+ */
154
+ async detectIndependentTasks(todos) {
155
+ const independentGroups = [];
156
+ const processed = new Set();
157
+ for (const todo of todos) {
158
+ if (processed.has(todo.id))
159
+ continue;
160
+ const group = [todo.id];
161
+ processed.add(todo.id);
162
+ // Find todos that can run with this one
163
+ for (const otherTodo of todos) {
164
+ if (processed.has(otherTodo.id))
165
+ continue;
166
+ if (this.areTasksIndependent(todo, otherTodo)) {
167
+ group.push(otherTodo.id);
168
+ processed.add(otherTodo.id);
169
+ }
170
+ }
171
+ if (group.length > 1) {
172
+ independentGroups.push(group);
173
+ }
174
+ }
175
+ if (independentGroups.length === 0)
176
+ return null;
177
+ // Find the largest independent group
178
+ const largestGroup = independentGroups.reduce((max, group) => group.length > max.length ? group : max);
179
+ return {
180
+ id: this.generateId('independent'),
181
+ type: 'independent_tasks',
182
+ todos: largestGroup,
183
+ suggestedAgents: this.suggestAgentsForTodos(largestGroup, todos),
184
+ estimatedSpeedup: largestGroup.length * 0.8, // Account for coordination overhead
185
+ confidence: 0.9, // High confidence for independent tasks
186
+ dependencies: [],
187
+ blockers: []
188
+ };
189
+ }
190
+ /**
191
+ * Detect opportunities to break down complex tasks into specialized agents
192
+ */
193
+ async detectSpecializedBreakdown(todos, objectiveType) {
194
+ // Look for complex todos that can be broken down
195
+ const complexTodos = todos.filter(todo => todo.content.length > 100 ||
196
+ todo.content.includes('and') ||
197
+ todo.content.includes('with') ||
198
+ todo.priority === 'high');
199
+ if (complexTodos.length === 0)
200
+ return null;
201
+ const breakdownMap = {
202
+ 'widget': ['widget-creator', 'script-writer', 'tester'],
203
+ 'flow': ['flow-builder', 'integration-specialist', 'tester'],
204
+ 'application': ['app-architect', 'widget-creator', 'flow-builder', 'integration-specialist'],
205
+ 'script': ['script-writer', 'tester'],
206
+ 'integration': ['integration-specialist', 'script-writer', 'tester']
207
+ };
208
+ const suggestedAgents = breakdownMap[objectiveType] || ['script-writer', 'tester'];
209
+ const todoIds = complexTodos.map(t => t.id);
210
+ return {
211
+ id: this.generateId('specialized'),
212
+ type: 'specialized_breakdown',
213
+ todos: todoIds,
214
+ suggestedAgents: suggestedAgents,
215
+ estimatedSpeedup: 2.0, // Specialized agents work faster
216
+ confidence: 0.8,
217
+ dependencies: [],
218
+ blockers: []
219
+ };
220
+ }
221
+ /**
222
+ * Detect load distribution opportunities (same work type, multiple agents)
223
+ */
224
+ async detectLoadDistribution(todos, currentAgents) {
225
+ // Group todos by capability requirement
226
+ const todoGroups = new Map();
227
+ for (const todo of todos) {
228
+ const capability = this.inferTodoCapability(todo);
229
+ if (!todoGroups.has(capability)) {
230
+ todoGroups.set(capability, []);
231
+ }
232
+ todoGroups.get(capability).push(todo.id);
233
+ }
234
+ // Find groups with multiple todos that can be distributed
235
+ for (const [capability, todoIds] of todoGroups) {
236
+ if (todoIds.length >= 3) { // Worth distributing if 3+ similar tasks
237
+ const agentType = this.capabilityToAgentType(capability);
238
+ return {
239
+ id: this.generateId('load'),
240
+ type: 'load_distribution',
241
+ todos: todoIds,
242
+ suggestedAgents: [agentType, agentType, agentType], // Multiple agents of same type
243
+ estimatedSpeedup: Math.min(todoIds.length, 3) * 0.75, // Account for coordination
244
+ confidence: 0.85,
245
+ dependencies: [],
246
+ blockers: []
247
+ };
248
+ }
249
+ }
250
+ return null;
251
+ }
252
+ /**
253
+ * Detect capability split opportunities (different skills for different parts)
254
+ */
255
+ async detectCapabilitySplit(todos) {
256
+ const capabilityGroups = new Map();
257
+ // Group todos by required capabilities
258
+ for (const todo of todos) {
259
+ const capabilities = this.analyzeTodoCapabilities(todo);
260
+ for (const capability of capabilities) {
261
+ if (!capabilityGroups.has(capability)) {
262
+ capabilityGroups.set(capability, []);
263
+ }
264
+ capabilityGroups.get(capability).push(todo.id);
265
+ }
266
+ }
267
+ // If we have multiple capability groups, we can split
268
+ if (capabilityGroups.size >= 2) {
269
+ const allTodos = Array.from(new Set(Array.from(capabilityGroups.values()).flat()));
270
+ const agentTypes = Array.from(capabilityGroups.keys())
271
+ .map(cap => this.capabilityToAgentType(cap));
272
+ return {
273
+ id: this.generateId('capability'),
274
+ type: 'capability_split',
275
+ todos: allTodos,
276
+ suggestedAgents: agentTypes,
277
+ estimatedSpeedup: 1.8,
278
+ confidence: 0.75,
279
+ dependencies: [],
280
+ blockers: []
281
+ };
282
+ }
283
+ return null;
284
+ }
285
+ /**
286
+ * Calculate optimal agent team for execution plan
287
+ */
288
+ async calculateOptimalTeam(opportunities, todos, maxAgents) {
289
+ const team = [];
290
+ const usedAgentTypes = new Set();
291
+ for (const opportunity of opportunities) {
292
+ for (const agentType of opportunity.suggestedAgents) {
293
+ if (team.length >= maxAgents)
294
+ break;
295
+ // Avoid duplicate agent types unless it's load distribution
296
+ if (usedAgentTypes.has(agentType) && opportunity.type !== 'load_distribution') {
297
+ continue;
298
+ }
299
+ const workload = {
300
+ agentId: 'new', // Will be assigned when spawned
301
+ agentType,
302
+ assignedTodos: opportunity.todos.filter(todoId => this.todoRequiresAgentType(todoId, agentType, todos)),
303
+ estimatedDuration: this.estimateTodoDuration(opportunity.todos, todos),
304
+ utilization: 0.8, // Start at 80% utilization
305
+ capabilities: this.getAgentCapabilities(agentType),
306
+ specializations: this.getAgentSpecializations(agentType, opportunity.type)
307
+ };
308
+ team.push(workload);
309
+ usedAgentTypes.add(agentType);
310
+ }
311
+ }
312
+ return team;
313
+ }
314
+ /**
315
+ * Determine execution strategy based on opportunities and team
316
+ */
317
+ determineExecutionStrategy(opportunities, agentTeam) {
318
+ const hasIndependent = opportunities.some(o => o.type === 'independent_tasks');
319
+ const hasSpecialized = opportunities.some(o => o.type === 'specialized_breakdown');
320
+ const hasLoadDistribution = opportunities.some(o => o.type === 'load_distribution');
321
+ if (hasIndependent && hasSpecialized) {
322
+ return 'hybrid'; // Mix of parallel and sequential
323
+ }
324
+ else if (hasLoadDistribution) {
325
+ return 'concurrent'; // All agents work simultaneously
326
+ }
327
+ else if (hasSpecialized) {
328
+ return 'pipeline'; // Sequential handoffs between specialists
329
+ }
330
+ else {
331
+ return 'wave_based'; // Waves of parallel execution
332
+ }
333
+ }
334
+ /**
335
+ * Estimate completion time for agent team
336
+ */
337
+ estimateCompletionTime(agentTeam, strategy) {
338
+ const coordinationOverhead = agentTeam.length * 2; // 2 minutes per agent for coordination
339
+ switch (strategy) {
340
+ case 'concurrent':
341
+ return Math.max(...agentTeam.map(w => w.estimatedDuration)) + coordinationOverhead;
342
+ case 'pipeline':
343
+ return agentTeam.reduce((sum, w) => sum + w.estimatedDuration, 0) * 0.7 + coordinationOverhead;
344
+ case 'wave_based':
345
+ const avgDuration = agentTeam.reduce((sum, w) => sum + w.estimatedDuration, 0) / agentTeam.length;
346
+ return avgDuration * 1.5 + coordinationOverhead;
347
+ case 'hybrid':
348
+ return agentTeam.reduce((sum, w) => sum + w.estimatedDuration, 0) * 0.6 + coordinationOverhead;
349
+ default:
350
+ return Math.max(...agentTeam.map(w => w.estimatedDuration)) + coordinationOverhead;
351
+ }
352
+ }
353
+ /**
354
+ * Set up coordination between parallel agents
355
+ */
356
+ async setupParallelCoordination(plan, agents) {
357
+ // Store coordination plan in memory for agents to access
358
+ await this.memory.store(`parallel_coordination_${plan.planId}`, {
359
+ planId: plan.planId,
360
+ strategy: plan.executionStrategy,
361
+ agentTeam: plan.agentTeam,
362
+ sharedContext: {
363
+ objectiveId: plan.planId,
364
+ coordinationMode: 'parallel',
365
+ checkpoints: this.createCoordinationCheckpoints(plan),
366
+ failureRecovery: plan.failureRecovery
367
+ },
368
+ timestamp: new Date().toISOString()
369
+ });
370
+ // Set up shared memory spaces for agent coordination
371
+ for (let i = 0; i < agents.length; i++) {
372
+ const agent = agents[i];
373
+ const workload = plan.agentTeam[i];
374
+ await this.memory.store(`agent_workload_${agent.id}`, {
375
+ agentId: agent.id,
376
+ assignedTodos: workload.assignedTodos,
377
+ specializations: workload.specializations,
378
+ coordinationKey: `parallel_coordination_${plan.planId}`,
379
+ peerAgents: agents.filter(a => a.id !== agent.id).map(a => a.id),
380
+ timestamp: new Date().toISOString()
381
+ });
382
+ }
383
+ }
384
+ /**
385
+ * Utility methods
386
+ */
387
+ areTasksIndependent(todo1, todo2) {
388
+ // Check if tasks have no direct dependencies
389
+ const todo1Keywords = todo1.content.toLowerCase().split(' ');
390
+ const todo2Keywords = todo2.content.toLowerCase().split(' ');
391
+ // Tasks are independent if they don't share critical keywords
392
+ const sharedCriticalKeywords = ['deploy', 'test', 'validate', 'create table', 'configure'].filter(keyword => todo1.content.toLowerCase().includes(keyword) && todo2.content.toLowerCase().includes(keyword));
393
+ return sharedCriticalKeywords.length === 0;
394
+ }
395
+ suggestAgentsForTodos(todoIds, todos) {
396
+ const agents = [];
397
+ const todoContents = todoIds.map(id => todos.find(t => t.id === id)?.content || '');
398
+ for (const content of todoContents) {
399
+ const agentType = this.inferBestAgentType(content);
400
+ if (!agents.includes(agentType)) {
401
+ agents.push(agentType);
402
+ }
403
+ }
404
+ return agents;
405
+ }
406
+ inferTodoCapability(todo) {
407
+ const content = todo.content.toLowerCase();
408
+ if (content.includes('widget') || content.includes('template'))
409
+ return 'widget_development';
410
+ if (content.includes('flow') || content.includes('workflow'))
411
+ return 'flow_creation';
412
+ if (content.includes('script') || content.includes('code'))
413
+ return 'scripting';
414
+ if (content.includes('test') || content.includes('validate'))
415
+ return 'testing';
416
+ if (content.includes('deploy') || content.includes('configuration'))
417
+ return 'deployment';
418
+ return 'general_development';
419
+ }
420
+ capabilityToAgentType(capability) {
421
+ const mapping = {
422
+ 'widget_development': 'widget-creator',
423
+ 'flow_creation': 'flow-builder',
424
+ 'scripting': 'script-writer',
425
+ 'testing': 'tester',
426
+ 'deployment': 'app-architect',
427
+ 'general_development': 'script-writer'
428
+ };
429
+ return mapping[capability] || 'script-writer';
430
+ }
431
+ analyzeTodoCapabilities(todo) {
432
+ const content = todo.content.toLowerCase();
433
+ const capabilities = [];
434
+ if (content.includes('widget') || content.includes('ui'))
435
+ capabilities.push('widget_development');
436
+ if (content.includes('script') || content.includes('code'))
437
+ capabilities.push('scripting');
438
+ if (content.includes('flow') || content.includes('workflow'))
439
+ capabilities.push('flow_creation');
440
+ if (content.includes('test') || content.includes('validate'))
441
+ capabilities.push('testing');
442
+ if (content.includes('deploy') || content.includes('install'))
443
+ capabilities.push('deployment');
444
+ if (content.includes('integrate') || content.includes('api'))
445
+ capabilities.push('integration');
446
+ return capabilities.length > 0 ? capabilities : ['general_development'];
447
+ }
448
+ todoRequiresAgentType(todoId, agentType, todos) {
449
+ const todo = todos.find(t => t.id === todoId);
450
+ if (!todo)
451
+ return false;
452
+ const requiredType = this.inferBestAgentType(todo.content);
453
+ return requiredType === agentType;
454
+ }
455
+ inferBestAgentType(content) {
456
+ const lower = content.toLowerCase();
457
+ if (lower.includes('widget') || lower.includes('template'))
458
+ return 'widget-creator';
459
+ if (lower.includes('flow') || lower.includes('workflow'))
460
+ return 'flow-builder';
461
+ if (lower.includes('script') || lower.includes('business rule'))
462
+ return 'script-writer';
463
+ if (lower.includes('test') || lower.includes('validate'))
464
+ return 'tester';
465
+ if (lower.includes('integrate') || lower.includes('api'))
466
+ return 'integration-specialist';
467
+ if (lower.includes('catalog') || lower.includes('item'))
468
+ return 'catalog-manager';
469
+ if (lower.includes('research') || lower.includes('analyze'))
470
+ return 'researcher';
471
+ return 'script-writer';
472
+ }
473
+ estimateTodoDuration(todoIds, todos) {
474
+ let totalDuration = 0;
475
+ for (const todoId of todoIds) {
476
+ const todo = todos.find(t => t.id === todoId);
477
+ if (!todo)
478
+ continue;
479
+ // Estimate based on content complexity
480
+ const words = todo.content.split(' ').length;
481
+ const baseDuration = 15; // 15 minutes base
482
+ const complexityMultiplier = todo.priority === 'high' ? 1.5 : 1.0;
483
+ totalDuration += baseDuration + (words * 2) * complexityMultiplier;
484
+ }
485
+ return Math.max(10, totalDuration); // Minimum 10 minutes
486
+ }
487
+ getAgentCapabilities(agentType) {
488
+ const capabilityMap = {
489
+ 'widget-creator': ['html_generation', 'css_styling', 'javascript_development'],
490
+ 'flow-builder': ['flow_design', 'trigger_configuration', 'action_creation'],
491
+ 'script-writer': ['glide_scripting', 'business_logic', 'error_handling'],
492
+ 'app-architect': ['system_design', 'architecture_planning', 'integration'],
493
+ 'integration-specialist': ['rest_api', 'soap_services', 'data_transformation'],
494
+ 'catalog-manager': ['catalog_creation', 'variable_management', 'workflow_linking'],
495
+ 'researcher': ['requirement_analysis', 'feasibility_study', 'solution_research'],
496
+ 'tester': ['test_planning', 'test_execution', 'mock_data_creation']
497
+ };
498
+ return capabilityMap[agentType] || ['general_development'];
499
+ }
500
+ getAgentSpecializations(agentType, opportunityType) {
501
+ const specializationMap = {
502
+ 'independent_tasks': {
503
+ 'widget-creator': ['parallel_ui_development', 'component_isolation'],
504
+ 'script-writer': ['parallel_scripting', 'independent_logic'],
505
+ 'tester': ['parallel_testing', 'test_isolation']
506
+ },
507
+ 'specialized_breakdown': {
508
+ 'widget-creator': ['ui_specialist', 'template_expert'],
509
+ 'script-writer': ['logic_specialist', 'performance_expert'],
510
+ 'flow-builder': ['workflow_specialist', 'integration_expert']
511
+ },
512
+ 'load_distribution': {
513
+ 'widget-creator': ['high_throughput_ui', 'batch_processing'],
514
+ 'script-writer': ['concurrent_scripting', 'load_handling'],
515
+ 'tester': ['bulk_testing', 'parallel_validation']
516
+ }
517
+ };
518
+ return specializationMap[opportunityType]?.[agentType] || ['general_specialist'];
519
+ }
520
+ determineAgentSpecialization(workload) {
521
+ return workload.specializations[0] || 'general';
522
+ }
523
+ createCoordinationCheckpoints(plan) {
524
+ return [
525
+ 'initialization_complete',
526
+ 'halfway_milestone',
527
+ 'integration_ready',
528
+ 'testing_phase',
529
+ 'deployment_ready'
530
+ ];
531
+ }
532
+ async storeOpportunities(todos, opportunities) {
533
+ await this.memory.store(`parallelization_analysis_${Date.now()}`, {
534
+ todoCount: todos.length,
535
+ opportunitiesFound: opportunities.length,
536
+ opportunities: opportunities.map(opp => ({
537
+ type: opp.type,
538
+ confidence: opp.confidence,
539
+ estimatedSpeedup: opp.estimatedSpeedup,
540
+ agentCount: opp.suggestedAgents.length
541
+ })),
542
+ timestamp: new Date().toISOString()
543
+ });
544
+ }
545
+ setupLearningSystem() {
546
+ this.on('parallel_execution_completed', async (data) => {
547
+ // Store execution results for learning
548
+ this.parallelizationHistory.set(data.planId, {
549
+ success: data.success,
550
+ speedup: data.actualSpeedup
551
+ });
552
+ await this.memory.store(`execution_result_${data.planId}`, {
553
+ planId: data.planId,
554
+ actualSpeedup: data.actualSpeedup,
555
+ success: data.success,
556
+ timestamp: new Date().toISOString()
557
+ });
558
+ });
559
+ }
560
+ initializeCapabilityMap() {
561
+ this.capabilityMap = {
562
+ 'widget.*template': {
563
+ primaryCapability: 'template_development',
564
+ requiredAgentTypes: ['widget-creator'],
565
+ parallelizable: true,
566
+ estimatedDuration: 20,
567
+ dependencies: []
568
+ },
569
+ 'server.*script': {
570
+ primaryCapability: 'server_development',
571
+ requiredAgentTypes: ['script-writer'],
572
+ parallelizable: true,
573
+ estimatedDuration: 25,
574
+ dependencies: ['template_development']
575
+ },
576
+ 'client.*script': {
577
+ primaryCapability: 'client_development',
578
+ requiredAgentTypes: ['script-writer'],
579
+ parallelizable: true,
580
+ estimatedDuration: 20,
581
+ dependencies: ['template_development']
582
+ },
583
+ 'css.*style': {
584
+ primaryCapability: 'styling',
585
+ requiredAgentTypes: ['widget-creator'],
586
+ parallelizable: true,
587
+ estimatedDuration: 15,
588
+ dependencies: ['template_development']
589
+ },
590
+ 'test.*validate': {
591
+ primaryCapability: 'testing',
592
+ requiredAgentTypes: ['tester'],
593
+ parallelizable: false,
594
+ estimatedDuration: 30,
595
+ dependencies: ['server_development', 'client_development', 'styling']
596
+ },
597
+ 'deploy': {
598
+ primaryCapability: 'deployment',
599
+ requiredAgentTypes: ['app-architect'],
600
+ parallelizable: false,
601
+ estimatedDuration: 10,
602
+ dependencies: ['testing']
603
+ }
604
+ };
605
+ }
606
+ generateId(prefix) {
607
+ return `${prefix}_${Date.now()}_${crypto.randomBytes(4).toString('hex')}`;
608
+ }
609
+ }
610
+ exports.ParallelAgentEngine = ParallelAgentEngine;
611
+ //# sourceMappingURL=parallel-agent-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-agent-engine.js","sourceRoot":"","sources":["../../src/queen/parallel-agent-engine.ts"],"names":[],"mappings":"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"}