snow-flow 1.1.75 → 1.1.76

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.
Files changed (161) hide show
  1. package/.claude-flow/queen/queen-memory.db +0 -0
  2. package/.claude-flow/queen-test/test-memory.db +0 -0
  3. package/.claude-flow/queen-test/test-memory.db-agents +0 -0
  4. package/.claude-flow/queen-test/test-memory.db-import +0 -0
  5. package/.claude-flow/queen-test/test-memory.db-memory +0 -0
  6. package/.claude-flow/queen-test/test-memory.db-neural +0 -0
  7. package/CLAUDE.md +111 -8
  8. package/README.md +117 -50
  9. package/deploy.sh +366 -0
  10. package/dist/cli.js +226 -0
  11. package/dist/cli.js.map +1 -1
  12. package/dist/mcp/http-transport-wrapper.d.ts +29 -0
  13. package/dist/mcp/http-transport-wrapper.d.ts.map +1 -0
  14. package/dist/mcp/http-transport-wrapper.js +318 -0
  15. package/dist/mcp/http-transport-wrapper.js.map +1 -0
  16. package/dist/mcp/service-discovery-client.d.ts +83 -0
  17. package/dist/mcp/service-discovery-client.d.ts.map +1 -0
  18. package/dist/mcp/service-discovery-client.js +211 -0
  19. package/dist/mcp/service-discovery-client.js.map +1 -0
  20. package/dist/mcp/servicenow-deployment-mcp.js +116 -23
  21. package/dist/mcp/servicenow-deployment-mcp.js.map +1 -1
  22. package/dist/mcp/servicenow-intelligent-mcp.js +252 -18
  23. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
  24. package/dist/mcp/servicenow-operations-mcp.js +170 -32
  25. package/dist/mcp/servicenow-operations-mcp.js.map +1 -1
  26. package/dist/orchestration/discovery/service-discovery.d.ts +81 -0
  27. package/dist/orchestration/discovery/service-discovery.d.ts.map +1 -0
  28. package/dist/orchestration/discovery/service-discovery.js +808 -0
  29. package/dist/orchestration/discovery/service-discovery.js.map +1 -0
  30. package/dist/orchestration/distributed-orchestrator.d.ts +131 -0
  31. package/dist/orchestration/distributed-orchestrator.d.ts.map +1 -0
  32. package/dist/orchestration/distributed-orchestrator.js +712 -0
  33. package/dist/orchestration/distributed-orchestrator.js.map +1 -0
  34. package/dist/orchestration/distribution/task-distribution-engine.d.ts +53 -0
  35. package/dist/orchestration/distribution/task-distribution-engine.d.ts.map +1 -0
  36. package/dist/orchestration/distribution/task-distribution-engine.js +586 -0
  37. package/dist/orchestration/distribution/task-distribution-engine.js.map +1 -0
  38. package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts +606 -0
  39. package/dist/orchestration/interfaces/distributed-orchestration.interface.d.ts.map +1 -0
  40. package/dist/orchestration/interfaces/distributed-orchestration.interface.js +65 -0
  41. package/dist/orchestration/interfaces/distributed-orchestration.interface.js.map +1 -0
  42. package/dist/orchestration/protocols/mcpx-protocol.d.ts +71 -0
  43. package/dist/orchestration/protocols/mcpx-protocol.d.ts.map +1 -0
  44. package/dist/orchestration/protocols/mcpx-protocol.js +668 -0
  45. package/dist/orchestration/protocols/mcpx-protocol.js.map +1 -0
  46. package/dist/orchestration/state/distributed-state-manager.d.ts +89 -0
  47. package/dist/orchestration/state/distributed-state-manager.d.ts.map +1 -0
  48. package/dist/orchestration/state/distributed-state-manager.js +716 -0
  49. package/dist/orchestration/state/distributed-state-manager.js.map +1 -0
  50. package/dist/queen/advanced-integration-test.d.ts +48 -0
  51. package/dist/queen/advanced-integration-test.d.ts.map +1 -0
  52. package/dist/queen/advanced-integration-test.js +474 -0
  53. package/dist/queen/advanced-integration-test.js.map +1 -0
  54. package/dist/queen/agent-factory.d.ts +40 -0
  55. package/dist/queen/agent-factory.d.ts.map +1 -0
  56. package/dist/queen/agent-factory.js +433 -0
  57. package/dist/queen/agent-factory.js.map +1 -0
  58. package/dist/queen/index.d.ts +58 -0
  59. package/dist/queen/index.d.ts.map +1 -0
  60. package/dist/queen/index.js +79 -0
  61. package/dist/queen/index.js.map +1 -0
  62. package/dist/queen/integration-example.d.ts +82 -0
  63. package/dist/queen/integration-example.d.ts.map +1 -0
  64. package/dist/queen/integration-example.js +220 -0
  65. package/dist/queen/integration-example.js.map +1 -0
  66. package/dist/queen/integration-test.d.ts +72 -0
  67. package/dist/queen/integration-test.d.ts.map +1 -0
  68. package/dist/queen/integration-test.js +564 -0
  69. package/dist/queen/integration-test.js.map +1 -0
  70. package/dist/queen/mock-mcp-client.d.ts +66 -0
  71. package/dist/queen/mock-mcp-client.d.ts.map +1 -0
  72. package/dist/queen/mock-mcp-client.js +297 -0
  73. package/dist/queen/mock-mcp-client.js.map +1 -0
  74. package/dist/queen/neural-learning.d.ts +28 -0
  75. package/dist/queen/neural-learning.d.ts.map +1 -0
  76. package/dist/queen/neural-learning.js +244 -0
  77. package/dist/queen/neural-learning.js.map +1 -0
  78. package/dist/queen/queen-memory.d.ts +25 -0
  79. package/dist/queen/queen-memory.d.ts.map +1 -0
  80. package/dist/queen/queen-memory.js +273 -0
  81. package/dist/queen/queen-memory.js.map +1 -0
  82. package/dist/queen/run-integration-tests.d.ts +9 -0
  83. package/dist/queen/run-integration-tests.d.ts.map +1 -0
  84. package/dist/queen/run-integration-tests.js +28 -0
  85. package/dist/queen/run-integration-tests.js.map +1 -0
  86. package/dist/queen/servicenow-queen.d.ts +56 -0
  87. package/dist/queen/servicenow-queen.d.ts.map +1 -0
  88. package/dist/queen/servicenow-queen.js +659 -0
  89. package/dist/queen/servicenow-queen.js.map +1 -0
  90. package/dist/queen/types.d.ts +58 -0
  91. package/dist/queen/types.d.ts.map +1 -0
  92. package/dist/queen/types.js +7 -0
  93. package/dist/queen/types.js.map +1 -0
  94. package/dist/version.d.ts +2 -1
  95. package/dist/version.d.ts.map +1 -1
  96. package/dist/version.js +16 -2
  97. package/dist/version.js.map +1 -1
  98. package/docker/base/Dockerfile.base +45 -0
  99. package/docker/generate-services.js +244 -0
  100. package/docker/nginx/Dockerfile +71 -0
  101. package/docker/nginx/consul-template.hcl +64 -0
  102. package/docker/nginx/healthcheck.sh +178 -0
  103. package/docker/nginx/nginx.conf +210 -0
  104. package/docker/nginx/supervisord.conf +57 -0
  105. package/docker/nginx/templates/upstreams.conf.tpl +48 -0
  106. package/docker/services/automation-mcp/Dockerfile +32 -0
  107. package/docker/services/automation-mcp/config/service.json +28 -0
  108. package/docker/services/automation-mcp/entrypoint.js +51 -0
  109. package/docker/services/deployment-mcp/Dockerfile +32 -0
  110. package/docker/services/deployment-mcp/entrypoint.js +51 -0
  111. package/docker/services/flow-composer-mcp/Dockerfile +32 -0
  112. package/docker/services/flow-composer-mcp/config/service.json +28 -0
  113. package/docker/services/flow-composer-mcp/entrypoint.js +51 -0
  114. package/docker/services/graph-memory-mcp/Dockerfile +32 -0
  115. package/docker/services/graph-memory-mcp/config/service.json +28 -0
  116. package/docker/services/graph-memory-mcp/entrypoint.js +51 -0
  117. package/docker/services/integration-mcp/Dockerfile +32 -0
  118. package/docker/services/integration-mcp/config/service.json +28 -0
  119. package/docker/services/integration-mcp/entrypoint.js +51 -0
  120. package/docker/services/intelligent-mcp/Dockerfile +32 -0
  121. package/docker/services/intelligent-mcp/config/service.json +28 -0
  122. package/docker/services/intelligent-mcp/entrypoint.js +51 -0
  123. package/docker/services/operations-mcp/Dockerfile +32 -0
  124. package/docker/services/operations-mcp/config/service.json +28 -0
  125. package/docker/services/operations-mcp/entrypoint.js +51 -0
  126. package/docker/services/platform-development-mcp/Dockerfile +32 -0
  127. package/docker/services/platform-development-mcp/config/service.json +28 -0
  128. package/docker/services/platform-development-mcp/entrypoint.js +51 -0
  129. package/docker/services/reporting-analytics-mcp/Dockerfile +32 -0
  130. package/docker/services/reporting-analytics-mcp/config/service.json +28 -0
  131. package/docker/services/reporting-analytics-mcp/entrypoint.js +51 -0
  132. package/docker/services/security-compliance-mcp/Dockerfile +32 -0
  133. package/docker/services/security-compliance-mcp/config/service.json +28 -0
  134. package/docker/services/security-compliance-mcp/entrypoint.js +51 -0
  135. package/docker/services/update-set-mcp/Dockerfile +32 -0
  136. package/docker/services/update-set-mcp/config/service.json +28 -0
  137. package/docker/services/update-set-mcp/entrypoint.js +51 -0
  138. package/docker-compose.override.yml +132 -0
  139. package/docker-compose.prod.yml +340 -0
  140. package/docker-compose.yml +579 -0
  141. package/k8s/automation-mcp.yaml +232 -0
  142. package/k8s/configmap.yaml +237 -0
  143. package/k8s/deployment-mcp.yaml +232 -0
  144. package/k8s/flow-composer-mcp.yaml +232 -0
  145. package/k8s/generate-k8s-manifests.js +453 -0
  146. package/k8s/graph-memory-mcp.yaml +232 -0
  147. package/k8s/infrastructure.yaml +456 -0
  148. package/k8s/ingress.yaml +361 -0
  149. package/k8s/integration-mcp.yaml +232 -0
  150. package/k8s/intelligent-mcp.yaml +232 -0
  151. package/k8s/kustomization.yaml +111 -0
  152. package/k8s/mcp-services.yaml +2552 -0
  153. package/k8s/monitoring.yaml +515 -0
  154. package/k8s/namespace.yaml +80 -0
  155. package/k8s/operations-mcp.yaml +232 -0
  156. package/k8s/platform-development-mcp.yaml +232 -0
  157. package/k8s/rbac.yaml +140 -0
  158. package/k8s/reporting-analytics-mcp.yaml +232 -0
  159. package/k8s/security-compliance-mcp.yaml +232 -0
  160. package/k8s/update-set-mcp.yaml +232 -0
  161. package/package.json +2 -2
@@ -0,0 +1,586 @@
1
+ "use strict";
2
+ /**
3
+ * Intelligent Task Distribution Engine
4
+ *
5
+ * Distributes tasks across external Claude Code instances using advanced algorithms
6
+ * for optimal performance, load balancing, and resource utilization.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TaskDistributionError = exports.IntelligentTaskDistributor = void 0;
10
+ const events_1 = require("events");
11
+ const distributed_orchestration_interface_js_1 = require("../interfaces/distributed-orchestration.interface.js");
12
+ const logger_js_1 = require("../../utils/logger.js");
13
+ class IntelligentTaskDistributor extends events_1.EventEmitter {
14
+ constructor() {
15
+ super();
16
+ this.agentPool = new ExternalAgentPool();
17
+ this.loadBalancers = this.initializeLoadBalancers();
18
+ this.taskAnalyzer = new TaskAnalyzer();
19
+ this.affinityManager = new AffinityManager();
20
+ this.performanceTracker = new PerformanceTracker();
21
+ this.costOptimizer = new CostOptimizer();
22
+ }
23
+ // ========================================
24
+ // Main Distribution Logic
25
+ // ========================================
26
+ async distributeTask(task) {
27
+ logger_js_1.logger.info(`🎯 Starting task distribution for: ${task.name}`, {
28
+ taskId: task.id,
29
+ type: task.type
30
+ });
31
+ try {
32
+ // 1. Analyze task requirements and complexity
33
+ const analysis = await this.taskAnalyzer.analyze(task);
34
+ logger_js_1.logger.info(`📊 Task analysis completed`, {
35
+ complexity: analysis.complexity,
36
+ requiredCapabilities: analysis.requirements.capabilities.length,
37
+ estimatedAgents: analysis.estimatedAgentCount
38
+ });
39
+ // 2. Find suitable agents based on capabilities
40
+ const candidates = await this.findSuitableAgents(analysis.requirements);
41
+ if (candidates.length === 0) {
42
+ throw new TaskDistributionError(`No suitable agents found for task: ${task.id}`);
43
+ }
44
+ logger_js_1.logger.info(`🔍 Found ${candidates.length} suitable agents`);
45
+ // 3. Apply load balancing to optimize distribution
46
+ const loadBalancer = this.selectLoadBalancer(task, analysis);
47
+ const loadBalancedAssignments = await loadBalancer.optimize(candidates, task);
48
+ // 4. Apply affinity rules and constraints
49
+ const affinityOptimized = await this.affinityManager.apply(loadBalancedAssignments, task.affinityRules || []);
50
+ // 5. Optimize for cost if specified
51
+ const costOptimized = await this.costOptimizer.optimize(affinityOptimized, task);
52
+ // 6. Create execution plan with phases
53
+ const executionPlan = await this.createExecutionPlan(costOptimized, analysis);
54
+ // 7. Generate fallback plan
55
+ const fallbackPlan = await this.generateFallbackPlan(task, candidates);
56
+ const distributionPlan = {
57
+ taskId: task.id,
58
+ assignments: costOptimized,
59
+ executionOrder: executionPlan.phases,
60
+ estimated: {
61
+ totalDuration: executionPlan.estimatedDuration,
62
+ parallelization: executionPlan.parallelizationScore,
63
+ resourceUsage: executionPlan.resourceUsage
64
+ },
65
+ fallbackPlan
66
+ };
67
+ // 8. Validate distribution plan
68
+ await this.validateDistributionPlan(distributionPlan, task);
69
+ logger_js_1.logger.info(`✅ Task distribution completed`, {
70
+ taskId: task.id,
71
+ assignments: distributionPlan.assignments.length,
72
+ estimatedDuration: distributionPlan.estimated.totalDuration,
73
+ parallelization: distributionPlan.estimated.parallelization
74
+ });
75
+ this.emit('task:distributed', { task, plan: distributionPlan });
76
+ return distributionPlan;
77
+ }
78
+ catch (error) {
79
+ logger_js_1.logger.error(`❌ Task distribution failed for: ${task.id}`, {
80
+ error: error.message
81
+ });
82
+ this.emit('task:distribution_failed', { task, error });
83
+ throw error;
84
+ }
85
+ }
86
+ // ========================================
87
+ // Agent Discovery and Matching
88
+ // ========================================
89
+ async findSuitableAgents(requirements) {
90
+ const allAgents = await this.agentPool.getAvailableAgents();
91
+ const suitableAgents = allAgents
92
+ .filter(agent => this.meetsCapabilityRequirements(agent, requirements))
93
+ .filter(agent => this.meetsResourceRequirements(agent, requirements))
94
+ .filter(agent => this.meetsConstraints(agent, requirements))
95
+ .filter(agent => this.isHealthy(agent));
96
+ // Score and sort agents by suitability
97
+ const scoredAgents = suitableAgents
98
+ .map(agent => ({
99
+ agent,
100
+ score: this.scoreAgent(agent, requirements)
101
+ }))
102
+ .sort((a, b) => b.score - a.score)
103
+ .map(item => item.agent);
104
+ return scoredAgents;
105
+ }
106
+ meetsCapabilityRequirements(agent, requirements) {
107
+ const agentCapabilities = agent.capabilities.flatMap(cap => cap.specialization);
108
+ return requirements.capabilities.every(req => agentCapabilities.some(cap => cap.toLowerCase().includes(req.toLowerCase()) ||
109
+ req.toLowerCase().includes(cap.toLowerCase())));
110
+ }
111
+ meetsResourceRequirements(agent, requirements) {
112
+ for (const requirement of requirements.resources) {
113
+ const agentResource = agent.capabilities.find(cap => cap.resourceRequirements.some(res => res.type === requirement.type));
114
+ if (!agentResource && requirement.amount && requirement.amount > 0) {
115
+ return false;
116
+ }
117
+ }
118
+ return true;
119
+ }
120
+ meetsConstraints(agent, requirements) {
121
+ for (const constraint of requirements.constraints) {
122
+ if (!this.evaluateConstraint(agent, constraint)) {
123
+ return false;
124
+ }
125
+ }
126
+ return true;
127
+ }
128
+ isHealthy(agent) {
129
+ return agent.status === distributed_orchestration_interface_js_1.InstanceStatus.ACTIVE || agent.status === distributed_orchestration_interface_js_1.InstanceStatus.IDLE;
130
+ }
131
+ // ========================================
132
+ // Agent Scoring Algorithm
133
+ // ========================================
134
+ scoreAgent(agent, requirements) {
135
+ let score = 0;
136
+ // Capability match score (40% weight)
137
+ const capabilityScore = this.calculateCapabilityScore(agent, requirements);
138
+ score += capabilityScore * 0.4;
139
+ // Performance score (25% weight)
140
+ const performanceScore = this.calculatePerformanceScore(agent);
141
+ score += performanceScore * 0.25;
142
+ // Load score (20% weight) - inverse of current load
143
+ const loadScore = this.calculateLoadScore(agent);
144
+ score += loadScore * 0.2;
145
+ // Geographic proximity score (10% weight)
146
+ const proximityScore = this.calculateProximityScore(agent);
147
+ score += proximityScore * 0.1;
148
+ // Cost efficiency score (5% weight)
149
+ const costScore = this.calculateCostScore(agent);
150
+ score += costScore * 0.05;
151
+ return Math.min(Math.max(score, 0), 1); // Normalize to 0-1
152
+ }
153
+ calculateCapabilityScore(agent, requirements) {
154
+ const requiredCapabilities = requirements.capabilities;
155
+ const agentCapabilities = agent.capabilities.flatMap(cap => cap.specialization);
156
+ let matches = 0;
157
+ for (const required of requiredCapabilities) {
158
+ const bestMatch = agentCapabilities.find(agentCap => this.calculateCapabilityMatch(required, agentCap) > 0.7);
159
+ if (bestMatch)
160
+ matches++;
161
+ }
162
+ return requiredCapabilities.length > 0 ? matches / requiredCapabilities.length : 0;
163
+ }
164
+ calculateCapabilityMatch(required, available) {
165
+ // Simple string similarity - in production, would use more sophisticated matching
166
+ const similarity = this.stringSimilarity(required.toLowerCase(), available.toLowerCase());
167
+ return similarity;
168
+ }
169
+ calculatePerformanceScore(agent) {
170
+ const metrics = agent.metadata.performanceMetrics;
171
+ // Normalize metrics to 0-1 scores
172
+ const responseTimeScore = Math.max(0, 1 - (metrics.averageResponseTime / 10000)); // 10s max
173
+ const throughputScore = Math.min(1, metrics.throughput / 100); // 100 tasks/hour max
174
+ const errorRateScore = Math.max(0, 1 - (metrics.errorRate * 10)); // 10% max error rate
175
+ const completionRateScore = metrics.taskCompletionRate;
176
+ return (responseTimeScore + throughputScore + errorRateScore + completionRateScore) / 4;
177
+ }
178
+ calculateLoadScore(agent) {
179
+ const currentTasks = this.performanceTracker.getCurrentTaskCount(agent.id);
180
+ const maxTasks = agent.metadata.maxConcurrentTasks;
181
+ return Math.max(0, 1 - (currentTasks / maxTasks));
182
+ }
183
+ calculateProximityScore(agent) {
184
+ // Would calculate based on geographic distance, network latency, etc.
185
+ // For now, return neutral score
186
+ return 0.5;
187
+ }
188
+ calculateCostScore(agent) {
189
+ // Would calculate based on compute costs, data transfer costs, etc.
190
+ // For now, return neutral score
191
+ return 0.5;
192
+ }
193
+ // ========================================
194
+ // Load Balancer Selection
195
+ // ========================================
196
+ selectLoadBalancer(task, analysis) {
197
+ // Select based on task characteristics
198
+ if (analysis.complexity > 0.8) {
199
+ return new CapabilityWeightedLoadBalancer(this.performanceTracker);
200
+ }
201
+ else if (analysis.hasGeographicRequirements) {
202
+ return new GeographicAffinityLoadBalancer();
203
+ }
204
+ else if (analysis.estimatedAgentCount > 5) {
205
+ return new AIOptimizedLoadBalancer(this.performanceTracker);
206
+ }
207
+ else {
208
+ return new RoundRobinLoadBalancer();
209
+ }
210
+ }
211
+ // ========================================
212
+ // Execution Plan Creation
213
+ // ========================================
214
+ async createExecutionPlan(assignments, analysis) {
215
+ const phases = await this.identifyExecutionPhases(assignments, analysis);
216
+ const estimatedDuration = this.calculateTotalDuration(phases);
217
+ const parallelizationScore = this.calculateParallelizationScore(phases);
218
+ const resourceUsage = this.calculateResourceUsage(assignments);
219
+ return {
220
+ phases,
221
+ estimatedDuration,
222
+ parallelizationScore,
223
+ resourceUsage
224
+ };
225
+ }
226
+ async identifyExecutionPhases(assignments, analysis) {
227
+ const phases = [];
228
+ const dependencyGraph = this.buildDependencyGraph(assignments);
229
+ // Topological sort to identify execution order
230
+ const sortedLevels = this.topologicalSort(dependencyGraph);
231
+ for (let level = 0; level < sortedLevels.length; level++) {
232
+ const tasksAtLevel = sortedLevels[level];
233
+ const canRunInParallel = tasksAtLevel.length > 1 && !analysis.hasStrictOrdering;
234
+ phases.push({
235
+ id: `phase_${level}`,
236
+ type: canRunInParallel ? 'parallel' : 'sequential',
237
+ tasks: tasksAtLevel.map(task => task.taskPortion.id),
238
+ estimatedDuration: Math.max(...tasksAtLevel.map(t => t.estimatedEnd.getTime() - t.estimatedStart.getTime())),
239
+ dependencies: level > 0 ? [`phase_${level - 1}`] : []
240
+ });
241
+ }
242
+ return phases;
243
+ }
244
+ // ========================================
245
+ // Fallback Planning
246
+ // ========================================
247
+ async generateFallbackPlan(task, availableAgents) {
248
+ // Create a simpler, more conservative fallback plan
249
+ const fallbackAgents = availableAgents
250
+ .filter(agent => agent.status === distributed_orchestration_interface_js_1.InstanceStatus.ACTIVE)
251
+ .sort((a, b) => this.calculateReliabilityScore(b) - this.calculateReliabilityScore(a))
252
+ .slice(0, Math.min(3, availableAgents.length)); // Max 3 agents for fallback
253
+ const loadBalancer = new RoundRobinLoadBalancer();
254
+ const assignments = await loadBalancer.optimize(fallbackAgents, task);
255
+ return {
256
+ taskId: task.id,
257
+ assignments,
258
+ executionOrder: [{
259
+ id: 'fallback_phase',
260
+ type: 'sequential',
261
+ tasks: assignments.map(a => a.taskPortion.id),
262
+ estimatedDuration: Math.max(...assignments.map(a => a.estimatedEnd.getTime() - a.estimatedStart.getTime())),
263
+ dependencies: []
264
+ }],
265
+ estimated: {
266
+ totalDuration: Math.max(...assignments.map(a => a.estimatedEnd.getTime() - a.estimatedStart.getTime())),
267
+ parallelization: 0.3, // Conservative parallelization
268
+ resourceUsage: this.calculateResourceUsage(assignments)
269
+ }
270
+ };
271
+ }
272
+ // ========================================
273
+ // Validation
274
+ // ========================================
275
+ async validateDistributionPlan(plan, task) {
276
+ const validations = [
277
+ this.validateResourceAllocation(plan, task),
278
+ this.validateDeadlines(plan, task),
279
+ this.validateCapabilities(plan, task),
280
+ this.validateConstraints(plan, task)
281
+ ];
282
+ const results = await Promise.all(validations);
283
+ const failures = results.filter(r => !r.valid);
284
+ if (failures.length > 0) {
285
+ throw new TaskDistributionError(`Distribution plan validation failed: ${failures.map(f => f.reason).join(', ')}`);
286
+ }
287
+ }
288
+ // ========================================
289
+ // Load Balancing Implementations
290
+ // ========================================
291
+ initializeLoadBalancers() {
292
+ const balancers = new Map();
293
+ balancers.set('round_robin', {
294
+ name: 'round_robin',
295
+ type: 'round_robin',
296
+ parameters: {}
297
+ });
298
+ balancers.set('capability_weighted', {
299
+ name: 'capability_weighted',
300
+ type: 'capability_based',
301
+ parameters: { weightFactor: 0.8 }
302
+ });
303
+ balancers.set('geographic_affinity', {
304
+ name: 'geographic_affinity',
305
+ type: 'geographic',
306
+ parameters: { maxLatency: 100 }
307
+ });
308
+ return balancers;
309
+ }
310
+ // ========================================
311
+ // Utility Methods
312
+ // ========================================
313
+ stringSimilarity(str1, str2) {
314
+ // Simple Levenshtein distance-based similarity
315
+ const len1 = str1.length;
316
+ const len2 = str2.length;
317
+ const matrix = Array(len2 + 1).fill(null).map(() => Array(len1 + 1).fill(null));
318
+ for (let i = 0; i <= len1; i++)
319
+ matrix[0][i] = i;
320
+ for (let j = 0; j <= len2; j++)
321
+ matrix[j][0] = j;
322
+ for (let j = 1; j <= len2; j++) {
323
+ for (let i = 1; i <= len1; i++) {
324
+ const substitutionCost = str1[i - 1] === str2[j - 1] ? 0 : 1;
325
+ matrix[j][i] = Math.min(matrix[j][i - 1] + 1, // deletion
326
+ matrix[j - 1][i] + 1, // insertion
327
+ matrix[j - 1][i - 1] + substitutionCost // substitution
328
+ );
329
+ }
330
+ }
331
+ const maxLen = Math.max(len1, len2);
332
+ return maxLen === 0 ? 1 : (maxLen - matrix[len2][len1]) / maxLen;
333
+ }
334
+ evaluateConstraint(agent, constraint) {
335
+ // Implementation would evaluate specific constraint types
336
+ return true; // Simplified for now
337
+ }
338
+ calculateReliabilityScore(agent) {
339
+ const metrics = agent.metadata.performanceMetrics;
340
+ const healthScore = agent.healthcheck.consecutiveFailures === 0 ? 1 :
341
+ Math.max(0, 1 - (agent.healthcheck.consecutiveFailures * 0.1));
342
+ return (metrics.taskCompletionRate + healthScore) / 2;
343
+ }
344
+ buildDependencyGraph(assignments) {
345
+ // Build dependency graph from task assignments
346
+ // Implementation would create actual dependency relationships
347
+ return new Map();
348
+ }
349
+ topologicalSort(graph) {
350
+ // Topological sort implementation
351
+ // Returns assignments grouped by execution level
352
+ return [];
353
+ }
354
+ calculateTotalDuration(phases) {
355
+ return phases.reduce((total, phase) => total + phase.estimatedDuration, 0);
356
+ }
357
+ calculateParallelizationScore(phases) {
358
+ const parallelPhases = phases.filter(p => p.type === 'parallel').length;
359
+ return phases.length > 0 ? parallelPhases / phases.length : 0;
360
+ }
361
+ calculateResourceUsage(assignments) {
362
+ return {
363
+ cpu: assignments.reduce((total, a) => total + (a.resourceAllocation.find(r => r.type === 'cpu')?.amount || 0), 0),
364
+ memory: assignments.reduce((total, a) => total + (a.resourceAllocation.find(r => r.type === 'memory')?.amount || 0), 0),
365
+ network: 0, // Would calculate network usage
366
+ storage: 0, // Would calculate storage usage
367
+ apiCalls: 0 // Would estimate API calls
368
+ };
369
+ }
370
+ async validateResourceAllocation(plan, task) {
371
+ // Validate that resource allocation is realistic
372
+ return { valid: true };
373
+ }
374
+ async validateDeadlines(plan, task) {
375
+ // Validate that deadlines can be met
376
+ if (task.deadline) {
377
+ const estimatedCompletion = new Date(Date.now() + plan.estimated.totalDuration);
378
+ if (estimatedCompletion > task.deadline) {
379
+ return {
380
+ valid: false,
381
+ reason: `Estimated completion (${estimatedCompletion}) exceeds deadline (${task.deadline})`
382
+ };
383
+ }
384
+ }
385
+ return { valid: true };
386
+ }
387
+ async validateCapabilities(plan, task) {
388
+ // Validate that all required capabilities are covered
389
+ const requiredCapabilities = task.requirements.capabilities;
390
+ const assignedCapabilities = new Set();
391
+ for (const assignment of plan.assignments) {
392
+ const agent = await this.agentPool.getAgent(assignment.agentId);
393
+ if (agent) {
394
+ agent.capabilities.forEach(cap => {
395
+ cap.specialization.forEach(spec => assignedCapabilities.add(spec));
396
+ });
397
+ }
398
+ }
399
+ const missingCapabilities = requiredCapabilities.filter(req => !Array.from(assignedCapabilities).some(assigned => assigned.toLowerCase().includes(req.toLowerCase())));
400
+ if (missingCapabilities.length > 0) {
401
+ return {
402
+ valid: false,
403
+ reason: `Missing required capabilities: ${missingCapabilities.join(', ')}`
404
+ };
405
+ }
406
+ return { valid: true };
407
+ }
408
+ async validateConstraints(plan, task) {
409
+ // Validate that all constraints are satisfied
410
+ return { valid: true };
411
+ }
412
+ }
413
+ exports.IntelligentTaskDistributor = IntelligentTaskDistributor;
414
+ // ========================================
415
+ // Supporting Classes
416
+ // ========================================
417
+ class ExternalAgentPool {
418
+ constructor() {
419
+ this.agents = new Map();
420
+ }
421
+ async getAvailableAgents() {
422
+ return Array.from(this.agents.values())
423
+ .filter(agent => agent.status === distributed_orchestration_interface_js_1.InstanceStatus.ACTIVE || agent.status === distributed_orchestration_interface_js_1.InstanceStatus.IDLE);
424
+ }
425
+ async getAgent(agentId) {
426
+ return this.agents.get(agentId);
427
+ }
428
+ async addAgent(agent) {
429
+ this.agents.set(agent.id, agent);
430
+ }
431
+ async removeAgent(agentId) {
432
+ this.agents.delete(agentId);
433
+ }
434
+ }
435
+ class TaskAnalyzer {
436
+ async analyze(task) {
437
+ const complexity = this.calculateComplexity(task);
438
+ const estimatedAgentCount = this.estimateAgentCount(task, complexity);
439
+ const hasGeographicRequirements = this.checkGeographicRequirements(task);
440
+ const hasStrictOrdering = this.checkStrictOrdering(task);
441
+ return {
442
+ complexity,
443
+ estimatedAgentCount,
444
+ hasGeographicRequirements,
445
+ hasStrictOrdering,
446
+ requirements: task.requirements
447
+ };
448
+ }
449
+ calculateComplexity(task) {
450
+ let complexity = 0.3; // Base complexity
451
+ // Factor in number of dependencies
452
+ complexity += Math.min(task.dependencies.length * 0.1, 0.3);
453
+ // Factor in number of required capabilities
454
+ complexity += Math.min(task.requirements.capabilities.length * 0.05, 0.2);
455
+ // Factor in resource requirements
456
+ complexity += Math.min(task.requirements.resources.length * 0.1, 0.2);
457
+ return Math.min(complexity, 1.0);
458
+ }
459
+ estimateAgentCount(task, complexity) {
460
+ const baseAgents = 1;
461
+ const complexityAgents = Math.ceil(complexity * 3);
462
+ const capabilityAgents = Math.ceil(task.requirements.capabilities.length / 2);
463
+ return Math.min(Math.max(baseAgents, complexityAgents, capabilityAgents), 8);
464
+ }
465
+ checkGeographicRequirements(task) {
466
+ return task.requirements.constraints.some(constraint => constraint.type === 'resource' &&
467
+ constraint.description.toLowerCase().includes('geographic'));
468
+ }
469
+ checkStrictOrdering(task) {
470
+ return task.dependencies.length > 0 ||
471
+ task.requirements.constraints.some(constraint => constraint.type === 'dependency');
472
+ }
473
+ }
474
+ class AffinityManager {
475
+ async apply(assignments, rules) {
476
+ if (rules.length === 0)
477
+ return assignments;
478
+ let optimizedAssignments = [...assignments];
479
+ for (const rule of rules) {
480
+ optimizedAssignments = await this.applyAffinityRule(optimizedAssignments, rule);
481
+ }
482
+ return optimizedAssignments;
483
+ }
484
+ async applyAffinityRule(assignments, rule) {
485
+ // Implementation would apply specific affinity rules
486
+ // For now, return unchanged assignments
487
+ return assignments;
488
+ }
489
+ }
490
+ class PerformanceTracker {
491
+ constructor() {
492
+ this.taskCounts = new Map();
493
+ }
494
+ getCurrentTaskCount(agentId) {
495
+ return this.taskCounts.get(agentId) || 0;
496
+ }
497
+ incrementTaskCount(agentId) {
498
+ const current = this.getCurrentTaskCount(agentId);
499
+ this.taskCounts.set(agentId, current + 1);
500
+ }
501
+ decrementTaskCount(agentId) {
502
+ const current = this.getCurrentTaskCount(agentId);
503
+ this.taskCounts.set(agentId, Math.max(0, current - 1));
504
+ }
505
+ }
506
+ class CostOptimizer {
507
+ async optimize(assignments, task) {
508
+ // Implementation would optimize for cost efficiency
509
+ // For now, return unchanged assignments
510
+ return assignments;
511
+ }
512
+ }
513
+ // ========================================
514
+ // Load Balancer Implementations
515
+ // ========================================
516
+ class IntelligentLoadBalancer {
517
+ }
518
+ class RoundRobinLoadBalancer extends IntelligentLoadBalancer {
519
+ async optimize(candidates, task) {
520
+ const assignments = [];
521
+ const agentCount = Math.min(candidates.length, 3); // Limit to 3 agents for round-robin
522
+ for (let i = 0; i < agentCount; i++) {
523
+ const agent = candidates[i];
524
+ assignments.push({
525
+ agentId: agent.id,
526
+ taskPortion: {
527
+ id: `portion_${i}`,
528
+ parentTaskId: task.id,
529
+ work: this.createWorkPortion(task, i, agentCount),
530
+ inputs: task.requirements.inputs,
531
+ expectedOutputs: task.outputs,
532
+ dependencies: task.dependencies
533
+ },
534
+ priority: 1,
535
+ estimatedStart: new Date(),
536
+ estimatedEnd: new Date(Date.now() + (task.estimatedDuration || 300000)),
537
+ resourceAllocation: []
538
+ });
539
+ }
540
+ return assignments;
541
+ }
542
+ createWorkPortion(task, index, total) {
543
+ return {
544
+ type: task.type,
545
+ portion: `${index + 1}/${total}`,
546
+ description: `${task.description} (Part ${index + 1} of ${total})`
547
+ };
548
+ }
549
+ }
550
+ class CapabilityWeightedLoadBalancer extends IntelligentLoadBalancer {
551
+ constructor(performanceTracker) {
552
+ super();
553
+ this.performanceTracker = performanceTracker;
554
+ }
555
+ async optimize(candidates, task) {
556
+ // Implementation would weight assignments based on capabilities
557
+ return new RoundRobinLoadBalancer().optimize(candidates, task);
558
+ }
559
+ }
560
+ class GeographicAffinityLoadBalancer extends IntelligentLoadBalancer {
561
+ async optimize(candidates, task) {
562
+ // Implementation would optimize for geographic proximity
563
+ return new RoundRobinLoadBalancer().optimize(candidates, task);
564
+ }
565
+ }
566
+ class AIOptimizedLoadBalancer extends IntelligentLoadBalancer {
567
+ constructor(performanceTracker) {
568
+ super();
569
+ this.performanceTracker = performanceTracker;
570
+ }
571
+ async optimize(candidates, task) {
572
+ // Implementation would use ML models for optimization
573
+ return new RoundRobinLoadBalancer().optimize(candidates, task);
574
+ }
575
+ }
576
+ // ========================================
577
+ // Error Classes
578
+ // ========================================
579
+ class TaskDistributionError extends Error {
580
+ constructor(message) {
581
+ super(message);
582
+ this.name = 'TaskDistributionError';
583
+ }
584
+ }
585
+ exports.TaskDistributionError = TaskDistributionError;
586
+ //# sourceMappingURL=task-distribution-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-distribution-engine.js","sourceRoot":"","sources":["../../../src/orchestration/distribution/task-distribution-engine.ts"],"names":[],"mappings":"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"}