claude-flow-novice 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -0,0 +1,758 @@
|
|
|
1
|
+
// Extended TaskType for auto strategy (extends base TaskType)
|
|
2
|
+
function _define_property(obj, key, value) {
|
|
3
|
+
if (key in obj) {
|
|
4
|
+
Object.defineProperty(obj, key, {
|
|
5
|
+
value: value,
|
|
6
|
+
enumerable: true,
|
|
7
|
+
configurable: true,
|
|
8
|
+
writable: true
|
|
9
|
+
});
|
|
10
|
+
} else {
|
|
11
|
+
obj[key] = value;
|
|
12
|
+
}
|
|
13
|
+
return obj;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Optimized AUTO Strategy Implementation
|
|
17
|
+
* Uses machine learning-inspired heuristics and intelligent task decomposition
|
|
18
|
+
*/ import { BaseStrategy } from "./base.js";
|
|
19
|
+
import { generateId } from "../../utils/helpers.js";
|
|
20
|
+
export class AutoStrategy extends BaseStrategy {
|
|
21
|
+
/**
|
|
22
|
+
* Enhanced objective decomposition with async processing and intelligent batching
|
|
23
|
+
*/ async decomposeObjective(objective) {
|
|
24
|
+
const startTime = Date.now();
|
|
25
|
+
const cacheKey = this.getCacheKey(objective);
|
|
26
|
+
// Check cache first
|
|
27
|
+
if (this.decompositionCache.has(cacheKey)) {
|
|
28
|
+
this.metrics.cacheHitRate = (this.metrics.cacheHitRate + 1) / 2;
|
|
29
|
+
return this.decompositionCache.get(cacheKey);
|
|
30
|
+
}
|
|
31
|
+
// Parallel pattern detection and task type analysis
|
|
32
|
+
const [detectedPatterns, taskTypes, complexity] = await Promise.all([
|
|
33
|
+
this.detectPatternsAsync(objective.description),
|
|
34
|
+
this.analyzeTaskTypesAsync(objective.description),
|
|
35
|
+
this.estimateComplexityAsync(objective.description)
|
|
36
|
+
]);
|
|
37
|
+
// Generate tasks based on detected patterns and strategy
|
|
38
|
+
const tasks = await this.generateTasksWithBatching(objective, detectedPatterns, taskTypes, complexity);
|
|
39
|
+
// Analyze dependencies and create batches
|
|
40
|
+
const dependencies = this.analyzeDependencies(tasks);
|
|
41
|
+
const batchGroups = this.createTaskBatches(tasks, dependencies);
|
|
42
|
+
// Estimate total duration with parallel processing consideration
|
|
43
|
+
const estimatedDuration = this.calculateOptimizedDuration(batchGroups);
|
|
44
|
+
const result = {
|
|
45
|
+
tasks,
|
|
46
|
+
dependencies,
|
|
47
|
+
estimatedDuration,
|
|
48
|
+
recommendedStrategy: this.selectOptimalStrategy(objective, complexity),
|
|
49
|
+
complexity,
|
|
50
|
+
batchGroups,
|
|
51
|
+
timestamp: new Date(),
|
|
52
|
+
ttl: 1800000,
|
|
53
|
+
accessCount: 0,
|
|
54
|
+
lastAccessed: new Date(),
|
|
55
|
+
data: {
|
|
56
|
+
objectiveId: objective.id,
|
|
57
|
+
strategy: 'auto'
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
// Cache the result
|
|
61
|
+
this.decompositionCache.set(cacheKey, result);
|
|
62
|
+
this.updateMetrics(result, Date.now() - startTime);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* ML-inspired agent selection with performance history consideration
|
|
67
|
+
*/ async selectAgentForTask(task, availableAgents) {
|
|
68
|
+
if (availableAgents.length === 0) return null;
|
|
69
|
+
// Score agents using ML heuristics
|
|
70
|
+
const scoredAgents = await Promise.all(availableAgents.map(async (agent)=>({
|
|
71
|
+
agent,
|
|
72
|
+
score: await this.calculateAgentScore(agent, task)
|
|
73
|
+
})));
|
|
74
|
+
// Sort by score and select best agent
|
|
75
|
+
scoredAgents.sort((a, b)=>b.score - a.score);
|
|
76
|
+
// Update performance history
|
|
77
|
+
const selectedAgent = scoredAgents[0].agent;
|
|
78
|
+
this.updateAgentPerformanceHistory(selectedAgent.id.id, scoredAgents[0].score);
|
|
79
|
+
return selectedAgent.id.id;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Predictive task scheduling with dynamic agent allocation
|
|
83
|
+
*/ async optimizeTaskSchedule(tasks, agents) {
|
|
84
|
+
const schedule = await this.createPredictiveSchedule(tasks, agents);
|
|
85
|
+
return this.allocateAgentsOptimally(tasks, agents, schedule);
|
|
86
|
+
}
|
|
87
|
+
// Private implementation methods
|
|
88
|
+
initializeMLHeuristics() {
|
|
89
|
+
return {
|
|
90
|
+
taskTypeWeights: {
|
|
91
|
+
development: 1.0,
|
|
92
|
+
testing: 0.8,
|
|
93
|
+
analysis: 0.9,
|
|
94
|
+
documentation: 0.6,
|
|
95
|
+
optimization: 1.1,
|
|
96
|
+
research: 0.7
|
|
97
|
+
},
|
|
98
|
+
agentPerformanceHistory: new Map(),
|
|
99
|
+
complexityFactors: {
|
|
100
|
+
integration: 1.5,
|
|
101
|
+
system: 1.3,
|
|
102
|
+
api: 1.2,
|
|
103
|
+
database: 1.4,
|
|
104
|
+
ui: 1.1,
|
|
105
|
+
algorithm: 1.6
|
|
106
|
+
},
|
|
107
|
+
parallelismOpportunities: [
|
|
108
|
+
'independent modules',
|
|
109
|
+
'separate components',
|
|
110
|
+
'different layers',
|
|
111
|
+
'parallel testing',
|
|
112
|
+
'concurrent analysis'
|
|
113
|
+
]
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async detectPatternsAsync(description) {
|
|
117
|
+
const cacheKey = `patterns-${description.slice(0, 50)}`;
|
|
118
|
+
if (this.patternCache.has(cacheKey)) {
|
|
119
|
+
return this.patternCache.get(cacheKey);
|
|
120
|
+
}
|
|
121
|
+
// Simulate async pattern detection with enhanced matching
|
|
122
|
+
return new Promise((resolve)=>{
|
|
123
|
+
setTimeout(()=>{
|
|
124
|
+
const patterns = this.taskPatterns.filter((pattern)=>pattern.pattern.test(description));
|
|
125
|
+
// Add dynamic patterns based on content analysis
|
|
126
|
+
const dynamicPatterns = this.generateDynamicPatterns(description);
|
|
127
|
+
const allPatterns = [
|
|
128
|
+
...patterns,
|
|
129
|
+
...dynamicPatterns
|
|
130
|
+
];
|
|
131
|
+
this.patternCache.set(cacheKey, allPatterns);
|
|
132
|
+
resolve(allPatterns);
|
|
133
|
+
}, 10); // Simulate async processing
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
async analyzeTaskTypesAsync(description) {
|
|
137
|
+
return new Promise((resolve)=>{
|
|
138
|
+
setTimeout(()=>{
|
|
139
|
+
const types = [];
|
|
140
|
+
// Enhanced task type detection
|
|
141
|
+
if (/create|build|implement|develop|code/i.test(description)) {
|
|
142
|
+
types.push('development');
|
|
143
|
+
}
|
|
144
|
+
if (/test|verify|validate|check/i.test(description)) {
|
|
145
|
+
types.push('testing');
|
|
146
|
+
}
|
|
147
|
+
if (/analyze|research|investigate|study/i.test(description)) {
|
|
148
|
+
types.push('analysis');
|
|
149
|
+
}
|
|
150
|
+
if (/document|write|explain|describe/i.test(description)) {
|
|
151
|
+
types.push('documentation');
|
|
152
|
+
}
|
|
153
|
+
if (/optimize|improve|enhance|refactor/i.test(description)) {
|
|
154
|
+
types.push('optimization');
|
|
155
|
+
}
|
|
156
|
+
if (/deploy|install|configure|setup/i.test(description)) {
|
|
157
|
+
types.push('deployment');
|
|
158
|
+
}
|
|
159
|
+
resolve(types.length > 0 ? types : [
|
|
160
|
+
'generic'
|
|
161
|
+
]);
|
|
162
|
+
}, 5);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
async estimateComplexityAsync(description) {
|
|
166
|
+
return new Promise((resolve)=>{
|
|
167
|
+
setTimeout(()=>{
|
|
168
|
+
let complexity = this.estimateComplexity(description);
|
|
169
|
+
// Apply ML heuristics for complexity adjustment
|
|
170
|
+
for (const [factor, weight] of Object.entries(this.mlHeuristics.complexityFactors)){
|
|
171
|
+
if (description.toLowerCase().includes(factor)) {
|
|
172
|
+
complexity *= weight;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
resolve(Math.min(Math.round(complexity), 5));
|
|
176
|
+
}, 5);
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
generateDynamicPatterns(description) {
|
|
180
|
+
const patterns = [];
|
|
181
|
+
// Generate patterns based on specific keywords and context
|
|
182
|
+
if (description.includes('API') || description.includes('endpoint')) {
|
|
183
|
+
patterns.push({
|
|
184
|
+
pattern: /api|endpoint|service/i,
|
|
185
|
+
type: 'api-development',
|
|
186
|
+
complexity: 3,
|
|
187
|
+
estimatedDuration: 20 * 60 * 1000,
|
|
188
|
+
requiredAgents: 2,
|
|
189
|
+
priority: 2
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
if (description.includes('database') || description.includes('data')) {
|
|
193
|
+
patterns.push({
|
|
194
|
+
pattern: /database|data|storage/i,
|
|
195
|
+
type: 'data-management',
|
|
196
|
+
complexity: 3,
|
|
197
|
+
estimatedDuration: 18 * 60 * 1000,
|
|
198
|
+
requiredAgents: 2,
|
|
199
|
+
priority: 2
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return patterns;
|
|
203
|
+
}
|
|
204
|
+
async generateTasksWithBatching(objective, patterns, taskTypes, complexity) {
|
|
205
|
+
const tasks = [];
|
|
206
|
+
// Determine strategy-specific task generation
|
|
207
|
+
if (objective.strategy === 'development') {
|
|
208
|
+
tasks.push(...await this.generateDevelopmentTasks(objective, complexity));
|
|
209
|
+
} else if (objective.strategy === 'analysis') {
|
|
210
|
+
tasks.push(...await this.generateAnalysisTasks(objective, complexity));
|
|
211
|
+
} else {
|
|
212
|
+
// Auto strategy - intelligent task generation based on patterns
|
|
213
|
+
tasks.push(...await this.generateAutoTasks(objective, patterns, taskTypes, complexity));
|
|
214
|
+
}
|
|
215
|
+
return tasks;
|
|
216
|
+
}
|
|
217
|
+
async generateDevelopmentTasks(objective, complexity) {
|
|
218
|
+
const tasks = [];
|
|
219
|
+
const baseId = generateId('task');
|
|
220
|
+
// Analysis and Planning Phase
|
|
221
|
+
tasks.push(this.createTaskDefinition({
|
|
222
|
+
id: `${baseId}-analysis`,
|
|
223
|
+
type: 'analysis',
|
|
224
|
+
name: 'Requirements Analysis and Planning',
|
|
225
|
+
description: `Analyze requirements and create implementation plan for: ${objective.description}`,
|
|
226
|
+
priority: 'high',
|
|
227
|
+
estimatedDuration: Math.max(5 * 60 * 1000, complexity * 3 * 60 * 1000),
|
|
228
|
+
capabilities: [
|
|
229
|
+
'analysis',
|
|
230
|
+
'documentation',
|
|
231
|
+
'research'
|
|
232
|
+
]
|
|
233
|
+
}));
|
|
234
|
+
// Implementation Phase (can be parallelized)
|
|
235
|
+
const implementationTasks = this.createParallelImplementationTasks(objective, complexity, baseId);
|
|
236
|
+
tasks.push(...implementationTasks);
|
|
237
|
+
// Testing Phase
|
|
238
|
+
tasks.push(this.createTaskDefinition({
|
|
239
|
+
id: `${baseId}-testing`,
|
|
240
|
+
type: 'testing',
|
|
241
|
+
name: 'Comprehensive Testing',
|
|
242
|
+
description: `Create and execute tests for the implementation`,
|
|
243
|
+
priority: 'high',
|
|
244
|
+
estimatedDuration: Math.max(8 * 60 * 1000, complexity * 4 * 60 * 1000),
|
|
245
|
+
capabilities: [
|
|
246
|
+
'testing',
|
|
247
|
+
'code-generation'
|
|
248
|
+
],
|
|
249
|
+
dependencies: implementationTasks.map((t)=>t.id.id)
|
|
250
|
+
}));
|
|
251
|
+
// Documentation Phase
|
|
252
|
+
tasks.push(this.createTaskDefinition({
|
|
253
|
+
id: `${baseId}-documentation`,
|
|
254
|
+
type: 'documentation',
|
|
255
|
+
name: 'Documentation Creation',
|
|
256
|
+
description: `Create comprehensive documentation`,
|
|
257
|
+
priority: 'medium',
|
|
258
|
+
estimatedDuration: Math.max(5 * 60 * 1000, complexity * 2 * 60 * 1000),
|
|
259
|
+
capabilities: [
|
|
260
|
+
'documentation'
|
|
261
|
+
],
|
|
262
|
+
dependencies: implementationTasks.map((t)=>t.id.id)
|
|
263
|
+
}));
|
|
264
|
+
return tasks;
|
|
265
|
+
}
|
|
266
|
+
createParallelImplementationTasks(objective, complexity, baseId) {
|
|
267
|
+
const tasks = [];
|
|
268
|
+
// Determine if we can split implementation into parallel tasks
|
|
269
|
+
const canParallelize = this.canParallelizeImplementation(objective.description);
|
|
270
|
+
if (canParallelize && complexity >= 3) {
|
|
271
|
+
// Create multiple parallel implementation tasks
|
|
272
|
+
const components = this.identifyComponents(objective.description);
|
|
273
|
+
components.forEach((component, index)=>{
|
|
274
|
+
tasks.push(this.createTaskDefinition({
|
|
275
|
+
id: `${baseId}-impl-${index}`,
|
|
276
|
+
type: 'coding',
|
|
277
|
+
name: `Implement ${component}`,
|
|
278
|
+
description: `Implement ${component} component for: ${objective.description}`,
|
|
279
|
+
priority: 'high',
|
|
280
|
+
estimatedDuration: Math.max(10 * 60 * 1000, complexity * 5 * 60 * 1000),
|
|
281
|
+
capabilities: [
|
|
282
|
+
'code-generation',
|
|
283
|
+
'file-system'
|
|
284
|
+
],
|
|
285
|
+
dependencies: [
|
|
286
|
+
`${baseId}-analysis`
|
|
287
|
+
]
|
|
288
|
+
}));
|
|
289
|
+
});
|
|
290
|
+
} else {
|
|
291
|
+
// Single implementation task
|
|
292
|
+
tasks.push(this.createTaskDefinition({
|
|
293
|
+
id: `${baseId}-implementation`,
|
|
294
|
+
type: 'coding',
|
|
295
|
+
name: 'Core Implementation',
|
|
296
|
+
description: `Implement the solution for: ${objective.description}`,
|
|
297
|
+
priority: 'high',
|
|
298
|
+
estimatedDuration: Math.max(15 * 60 * 1000, complexity * 8 * 60 * 1000),
|
|
299
|
+
capabilities: [
|
|
300
|
+
'code-generation',
|
|
301
|
+
'file-system'
|
|
302
|
+
],
|
|
303
|
+
dependencies: [
|
|
304
|
+
`${baseId}-analysis`
|
|
305
|
+
]
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
return tasks;
|
|
309
|
+
}
|
|
310
|
+
async generateAnalysisTasks(objective, complexity) {
|
|
311
|
+
const tasks = [];
|
|
312
|
+
const baseId = generateId('task');
|
|
313
|
+
// Data Collection
|
|
314
|
+
tasks.push(this.createTaskDefinition({
|
|
315
|
+
id: `${baseId}-collection`,
|
|
316
|
+
type: 'research',
|
|
317
|
+
name: 'Data Collection and Research',
|
|
318
|
+
description: `Collect and research data for: ${objective.description}`,
|
|
319
|
+
priority: 'high',
|
|
320
|
+
estimatedDuration: Math.max(8 * 60 * 1000, complexity * 4 * 60 * 1000),
|
|
321
|
+
capabilities: [
|
|
322
|
+
'research',
|
|
323
|
+
'analysis',
|
|
324
|
+
'web-search'
|
|
325
|
+
]
|
|
326
|
+
}));
|
|
327
|
+
// Analysis
|
|
328
|
+
tasks.push(this.createTaskDefinition({
|
|
329
|
+
id: `${baseId}-analysis`,
|
|
330
|
+
type: 'analysis',
|
|
331
|
+
name: 'Data Analysis',
|
|
332
|
+
description: `Analyze collected data and generate insights`,
|
|
333
|
+
priority: 'high',
|
|
334
|
+
estimatedDuration: Math.max(10 * 60 * 1000, complexity * 5 * 60 * 1000),
|
|
335
|
+
capabilities: [
|
|
336
|
+
'analysis',
|
|
337
|
+
'documentation'
|
|
338
|
+
],
|
|
339
|
+
dependencies: [
|
|
340
|
+
`${baseId}-collection`
|
|
341
|
+
]
|
|
342
|
+
}));
|
|
343
|
+
// Reporting
|
|
344
|
+
tasks.push(this.createTaskDefinition({
|
|
345
|
+
id: `${baseId}-reporting`,
|
|
346
|
+
type: 'documentation',
|
|
347
|
+
name: 'Analysis Report',
|
|
348
|
+
description: `Create comprehensive analysis report`,
|
|
349
|
+
priority: 'medium',
|
|
350
|
+
estimatedDuration: Math.max(6 * 60 * 1000, complexity * 3 * 60 * 1000),
|
|
351
|
+
capabilities: [
|
|
352
|
+
'documentation',
|
|
353
|
+
'analysis'
|
|
354
|
+
],
|
|
355
|
+
dependencies: [
|
|
356
|
+
`${baseId}-analysis`
|
|
357
|
+
]
|
|
358
|
+
}));
|
|
359
|
+
return tasks;
|
|
360
|
+
}
|
|
361
|
+
async generateAutoTasks(objective, patterns, taskTypes, complexity) {
|
|
362
|
+
const tasks = [];
|
|
363
|
+
const baseId = generateId('task');
|
|
364
|
+
// Use ML heuristics to determine optimal task structure
|
|
365
|
+
const optimalStructure = this.determineOptimalTaskStructure(patterns, taskTypes, complexity);
|
|
366
|
+
if (optimalStructure.requiresAnalysis) {
|
|
367
|
+
tasks.push(this.createTaskDefinition({
|
|
368
|
+
id: `${baseId}-analysis`,
|
|
369
|
+
type: 'analysis',
|
|
370
|
+
name: 'Intelligent Analysis',
|
|
371
|
+
description: `Analyze and understand: ${objective.description}`,
|
|
372
|
+
priority: 'high',
|
|
373
|
+
estimatedDuration: optimalStructure.analysisDuration,
|
|
374
|
+
capabilities: [
|
|
375
|
+
'analysis',
|
|
376
|
+
'research'
|
|
377
|
+
]
|
|
378
|
+
}));
|
|
379
|
+
}
|
|
380
|
+
if (optimalStructure.requiresImplementation) {
|
|
381
|
+
const implTasks = this.createOptimalImplementationTasks(objective, optimalStructure, baseId);
|
|
382
|
+
tasks.push(...implTasks);
|
|
383
|
+
}
|
|
384
|
+
if (optimalStructure.requiresTesting) {
|
|
385
|
+
tasks.push(this.createTaskDefinition({
|
|
386
|
+
id: `${baseId}-testing`,
|
|
387
|
+
type: 'testing',
|
|
388
|
+
name: 'Intelligent Testing',
|
|
389
|
+
description: `Test and validate the solution`,
|
|
390
|
+
priority: 'high',
|
|
391
|
+
estimatedDuration: optimalStructure.testingDuration,
|
|
392
|
+
capabilities: [
|
|
393
|
+
'testing',
|
|
394
|
+
'validation'
|
|
395
|
+
],
|
|
396
|
+
dependencies: tasks.filter((t)=>t.type === 'coding').map((t)=>t.id.id)
|
|
397
|
+
}));
|
|
398
|
+
}
|
|
399
|
+
return tasks;
|
|
400
|
+
}
|
|
401
|
+
createTaskDefinition(params) {
|
|
402
|
+
const taskId = {
|
|
403
|
+
id: params.id,
|
|
404
|
+
swarmId: 'auto-strategy',
|
|
405
|
+
sequence: 1,
|
|
406
|
+
priority: 1
|
|
407
|
+
};
|
|
408
|
+
return {
|
|
409
|
+
id: taskId,
|
|
410
|
+
type: params.type,
|
|
411
|
+
name: params.name,
|
|
412
|
+
description: params.description,
|
|
413
|
+
instructions: params.description,
|
|
414
|
+
requirements: {
|
|
415
|
+
capabilities: params.capabilities,
|
|
416
|
+
tools: this.getRequiredTools(params.type),
|
|
417
|
+
permissions: [
|
|
418
|
+
'read',
|
|
419
|
+
'write',
|
|
420
|
+
'execute'
|
|
421
|
+
]
|
|
422
|
+
},
|
|
423
|
+
constraints: {
|
|
424
|
+
dependencies: (params.dependencies || []).map((dep)=>({
|
|
425
|
+
id: dep,
|
|
426
|
+
swarmId: 'auto-strategy',
|
|
427
|
+
sequence: 1,
|
|
428
|
+
priority: 1
|
|
429
|
+
})),
|
|
430
|
+
dependents: [],
|
|
431
|
+
conflicts: [],
|
|
432
|
+
maxRetries: 3,
|
|
433
|
+
timeoutAfter: params.estimatedDuration
|
|
434
|
+
},
|
|
435
|
+
priority: params.priority,
|
|
436
|
+
input: {
|
|
437
|
+
description: params.description
|
|
438
|
+
},
|
|
439
|
+
context: {},
|
|
440
|
+
examples: [],
|
|
441
|
+
status: 'created',
|
|
442
|
+
createdAt: new Date(),
|
|
443
|
+
updatedAt: new Date(),
|
|
444
|
+
attempts: [],
|
|
445
|
+
statusHistory: [
|
|
446
|
+
{
|
|
447
|
+
timestamp: new Date(),
|
|
448
|
+
from: 'created',
|
|
449
|
+
to: 'created',
|
|
450
|
+
reason: 'Task created by AutoStrategy',
|
|
451
|
+
triggeredBy: 'system'
|
|
452
|
+
}
|
|
453
|
+
]
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
getRequiredTools(type) {
|
|
457
|
+
const toolMap = {
|
|
458
|
+
coding: [
|
|
459
|
+
'file-system',
|
|
460
|
+
'terminal',
|
|
461
|
+
'editor'
|
|
462
|
+
],
|
|
463
|
+
testing: [
|
|
464
|
+
'test-runner',
|
|
465
|
+
'file-system',
|
|
466
|
+
'terminal'
|
|
467
|
+
],
|
|
468
|
+
analysis: [
|
|
469
|
+
'analyst',
|
|
470
|
+
'file-system',
|
|
471
|
+
'web-search'
|
|
472
|
+
],
|
|
473
|
+
documentation: [
|
|
474
|
+
'editor',
|
|
475
|
+
'file-system'
|
|
476
|
+
],
|
|
477
|
+
research: [
|
|
478
|
+
'web-search',
|
|
479
|
+
'analyst',
|
|
480
|
+
'file-system'
|
|
481
|
+
],
|
|
482
|
+
review: [
|
|
483
|
+
'analyst',
|
|
484
|
+
'file-system'
|
|
485
|
+
],
|
|
486
|
+
deployment: [
|
|
487
|
+
'terminal',
|
|
488
|
+
'file-system',
|
|
489
|
+
'deployment-tools'
|
|
490
|
+
],
|
|
491
|
+
monitoring: [
|
|
492
|
+
'monitoring-tools',
|
|
493
|
+
'analyst'
|
|
494
|
+
],
|
|
495
|
+
coordination: [
|
|
496
|
+
'communication-tools'
|
|
497
|
+
],
|
|
498
|
+
communication: [
|
|
499
|
+
'communication-tools'
|
|
500
|
+
],
|
|
501
|
+
maintenance: [
|
|
502
|
+
'file-system',
|
|
503
|
+
'terminal',
|
|
504
|
+
'monitoring-tools'
|
|
505
|
+
],
|
|
506
|
+
optimization: [
|
|
507
|
+
'analyst',
|
|
508
|
+
'profiler',
|
|
509
|
+
'file-system'
|
|
510
|
+
],
|
|
511
|
+
validation: [
|
|
512
|
+
'validator',
|
|
513
|
+
'test-runner'
|
|
514
|
+
],
|
|
515
|
+
integration: [
|
|
516
|
+
'integration-tools',
|
|
517
|
+
'file-system',
|
|
518
|
+
'terminal'
|
|
519
|
+
],
|
|
520
|
+
custom: [
|
|
521
|
+
'file-system'
|
|
522
|
+
]
|
|
523
|
+
};
|
|
524
|
+
return toolMap[type] || [
|
|
525
|
+
'file-system'
|
|
526
|
+
];
|
|
527
|
+
}
|
|
528
|
+
// Additional helper methods would continue here...
|
|
529
|
+
// (Truncated for brevity - the full implementation would include all helper methods)
|
|
530
|
+
canParallelizeImplementation(description) {
|
|
531
|
+
const parallelKeywords = [
|
|
532
|
+
'components',
|
|
533
|
+
'modules',
|
|
534
|
+
'services',
|
|
535
|
+
'layers',
|
|
536
|
+
'parts'
|
|
537
|
+
];
|
|
538
|
+
return parallelKeywords.some((keyword)=>description.toLowerCase().includes(keyword));
|
|
539
|
+
}
|
|
540
|
+
identifyComponents(description) {
|
|
541
|
+
// Simple component identification - in a real implementation this would be more sophisticated
|
|
542
|
+
const components = [
|
|
543
|
+
'Core Logic',
|
|
544
|
+
'User Interface',
|
|
545
|
+
'Data Layer'
|
|
546
|
+
];
|
|
547
|
+
if (description.toLowerCase().includes('api')) {
|
|
548
|
+
components.push('API Layer');
|
|
549
|
+
}
|
|
550
|
+
if (description.toLowerCase().includes('database')) {
|
|
551
|
+
components.push('Database Integration');
|
|
552
|
+
}
|
|
553
|
+
return components.slice(0, 3); // Limit to 3 parallel components
|
|
554
|
+
}
|
|
555
|
+
determineOptimalTaskStructure(patterns, taskTypes, complexity) {
|
|
556
|
+
return {
|
|
557
|
+
requiresAnalysis: complexity >= 2 || taskTypes.includes('analysis'),
|
|
558
|
+
requiresImplementation: taskTypes.includes('development') || taskTypes.includes('coding'),
|
|
559
|
+
requiresTesting: complexity >= 2 || taskTypes.includes('testing'),
|
|
560
|
+
analysisDuration: Math.max(5 * 60 * 1000, complexity * 3 * 60 * 1000),
|
|
561
|
+
testingDuration: Math.max(5 * 60 * 1000, complexity * 4 * 60 * 1000)
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
createOptimalImplementationTasks(objective, structure, baseId) {
|
|
565
|
+
return [
|
|
566
|
+
this.createTaskDefinition({
|
|
567
|
+
id: `${baseId}-implementation`,
|
|
568
|
+
type: 'coding',
|
|
569
|
+
name: 'Optimal Implementation',
|
|
570
|
+
description: `Implement solution for: ${objective.description}`,
|
|
571
|
+
priority: 'high',
|
|
572
|
+
estimatedDuration: Math.max(15 * 60 * 1000, structure.complexity * 8 * 60 * 1000),
|
|
573
|
+
capabilities: [
|
|
574
|
+
'code-generation',
|
|
575
|
+
'file-system'
|
|
576
|
+
],
|
|
577
|
+
dependencies: structure.requiresAnalysis ? [
|
|
578
|
+
`${baseId}-analysis`
|
|
579
|
+
] : []
|
|
580
|
+
})
|
|
581
|
+
];
|
|
582
|
+
}
|
|
583
|
+
analyzeDependencies(tasks) {
|
|
584
|
+
const dependencies = new Map();
|
|
585
|
+
tasks.forEach((task)=>{
|
|
586
|
+
if (task.constraints.dependencies.length > 0) {
|
|
587
|
+
dependencies.set(task.id.id, task.constraints.dependencies.map((dep)=>dep.id));
|
|
588
|
+
}
|
|
589
|
+
});
|
|
590
|
+
return dependencies;
|
|
591
|
+
}
|
|
592
|
+
createTaskBatches(tasks, dependencies) {
|
|
593
|
+
const batches = [];
|
|
594
|
+
const processed = new Set();
|
|
595
|
+
let batchIndex = 0;
|
|
596
|
+
while(processed.size < tasks.length){
|
|
597
|
+
const batchTasks = tasks.filter((task)=>!processed.has(task.id.id) && task.constraints.dependencies.every((dep)=>processed.has(dep.id)));
|
|
598
|
+
if (batchTasks.length === 0) break; // Prevent infinite loop
|
|
599
|
+
const batch = {
|
|
600
|
+
id: `batch-${batchIndex++}`,
|
|
601
|
+
tasks: batchTasks,
|
|
602
|
+
canRunInParallel: batchTasks.length > 1,
|
|
603
|
+
estimatedDuration: Math.max(...batchTasks.map((t)=>t.constraints.timeoutAfter || 0)),
|
|
604
|
+
requiredResources: this.calculateBatchResources(batchTasks)
|
|
605
|
+
};
|
|
606
|
+
batches.push(batch);
|
|
607
|
+
batchTasks.forEach((task)=>processed.add(task.id.id));
|
|
608
|
+
}
|
|
609
|
+
return batches;
|
|
610
|
+
}
|
|
611
|
+
calculateBatchResources(tasks) {
|
|
612
|
+
return {
|
|
613
|
+
agents: tasks.length,
|
|
614
|
+
memory: tasks.length * 512,
|
|
615
|
+
cpu: tasks.length * 0.5
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
calculateOptimizedDuration(batches) {
|
|
619
|
+
return batches.reduce((total, batch)=>total + batch.estimatedDuration, 0);
|
|
620
|
+
}
|
|
621
|
+
selectOptimalStrategy(objective, complexity) {
|
|
622
|
+
if (complexity >= 4) return 'development';
|
|
623
|
+
if (objective.description.toLowerCase().includes('analyze')) return 'analysis';
|
|
624
|
+
if (objective.description.toLowerCase().includes('test')) return 'testing';
|
|
625
|
+
return 'auto';
|
|
626
|
+
}
|
|
627
|
+
async calculateAgentScore(agent, task) {
|
|
628
|
+
let score = 0;
|
|
629
|
+
// Capability matching (40%)
|
|
630
|
+
const capabilityMatch = this.calculateCapabilityMatch(agent, task);
|
|
631
|
+
score += capabilityMatch * 0.4;
|
|
632
|
+
// Performance history (30%)
|
|
633
|
+
const performanceScore = this.getAgentPerformanceScore(agent.id.id);
|
|
634
|
+
score += performanceScore * 0.3;
|
|
635
|
+
// Current workload (20%)
|
|
636
|
+
const workloadScore = 1 - agent.workload;
|
|
637
|
+
score += workloadScore * 0.2;
|
|
638
|
+
// ML heuristics adjustment (10%)
|
|
639
|
+
const mlScore = this.applyMLHeuristics(agent, task);
|
|
640
|
+
score += mlScore * 0.1;
|
|
641
|
+
return score;
|
|
642
|
+
}
|
|
643
|
+
calculateCapabilityMatch(agent, task) {
|
|
644
|
+
const requiredCaps = task.requirements.capabilities;
|
|
645
|
+
let matches = 0;
|
|
646
|
+
for (const cap of requiredCaps){
|
|
647
|
+
if (this.agentHasCapability(agent, cap)) {
|
|
648
|
+
matches++;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
return requiredCaps.length > 0 ? matches / requiredCaps.length : 1.0;
|
|
652
|
+
}
|
|
653
|
+
agentHasCapability(agent, capability) {
|
|
654
|
+
const caps = agent.capabilities;
|
|
655
|
+
switch(capability){
|
|
656
|
+
case 'code-generation':
|
|
657
|
+
return caps.codeGeneration;
|
|
658
|
+
case 'code-review':
|
|
659
|
+
return caps.codeReview;
|
|
660
|
+
case 'testing':
|
|
661
|
+
return caps.testing;
|
|
662
|
+
case 'documentation':
|
|
663
|
+
return caps.documentation;
|
|
664
|
+
case 'research':
|
|
665
|
+
return caps.research;
|
|
666
|
+
case 'analysis':
|
|
667
|
+
return caps.analysis;
|
|
668
|
+
case 'web-search':
|
|
669
|
+
return caps.webSearch;
|
|
670
|
+
case 'api-integration':
|
|
671
|
+
return caps.apiIntegration;
|
|
672
|
+
case 'file-system':
|
|
673
|
+
return caps.fileSystem;
|
|
674
|
+
case 'terminal-access':
|
|
675
|
+
return caps.terminalAccess;
|
|
676
|
+
default:
|
|
677
|
+
return caps.domains.includes(capability) || caps.languages.includes(capability) || caps.frameworks.includes(capability) || caps.tools.includes(capability);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
getAgentPerformanceScore(agentId) {
|
|
681
|
+
const history = this.performanceHistory.get(agentId);
|
|
682
|
+
if (!history || history.length === 0) return 0.8; // Default score
|
|
683
|
+
const average = history.reduce((sum, score)=>sum + score, 0) / history.length;
|
|
684
|
+
return Math.min(average, 1.0);
|
|
685
|
+
}
|
|
686
|
+
applyMLHeuristics(agent, task) {
|
|
687
|
+
const taskType = this.detectTaskType(task.description);
|
|
688
|
+
const weight = this.mlHeuristics.taskTypeWeights[taskType] || 1.0;
|
|
689
|
+
// Apply agent type bonus
|
|
690
|
+
let bonus = 0;
|
|
691
|
+
if (agent.type === 'coder' && taskType === 'development') bonus = 0.2;
|
|
692
|
+
if (agent.type === 'tester' && taskType === 'testing') bonus = 0.2;
|
|
693
|
+
if (agent.type === 'analyst' && taskType === 'analysis') bonus = 0.2;
|
|
694
|
+
return Math.min(weight + bonus, 1.0);
|
|
695
|
+
}
|
|
696
|
+
updateAgentPerformanceHistory(agentId, score) {
|
|
697
|
+
if (!this.performanceHistory.has(agentId)) {
|
|
698
|
+
this.performanceHistory.set(agentId, []);
|
|
699
|
+
}
|
|
700
|
+
const history = this.performanceHistory.get(agentId);
|
|
701
|
+
history.push(score);
|
|
702
|
+
// Keep only last 10 scores
|
|
703
|
+
if (history.length > 10) {
|
|
704
|
+
history.shift();
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
async createPredictiveSchedule(tasks, agents) {
|
|
708
|
+
// Simplified predictive scheduling implementation
|
|
709
|
+
const timeline = [];
|
|
710
|
+
let currentTime = Date.now();
|
|
711
|
+
for (const task of tasks){
|
|
712
|
+
const duration = task.constraints.timeoutAfter || 300000; // 5 min default
|
|
713
|
+
timeline.push({
|
|
714
|
+
startTime: currentTime,
|
|
715
|
+
endTime: currentTime + duration,
|
|
716
|
+
tasks: [
|
|
717
|
+
task.id.id
|
|
718
|
+
],
|
|
719
|
+
agents: [],
|
|
720
|
+
dependencies: task.constraints.dependencies.map((dep)=>dep.id)
|
|
721
|
+
});
|
|
722
|
+
currentTime += duration;
|
|
723
|
+
}
|
|
724
|
+
return {
|
|
725
|
+
timeline,
|
|
726
|
+
resourceUtilization: {
|
|
727
|
+
cpu: 0.7,
|
|
728
|
+
memory: 0.6
|
|
729
|
+
},
|
|
730
|
+
bottlenecks: [],
|
|
731
|
+
optimizationSuggestions: [
|
|
732
|
+
'Consider parallel execution for independent tasks'
|
|
733
|
+
]
|
|
734
|
+
};
|
|
735
|
+
}
|
|
736
|
+
allocateAgentsOptimally(tasks, agents, schedule) {
|
|
737
|
+
const allocations = [];
|
|
738
|
+
agents.forEach((agent)=>{
|
|
739
|
+
const suitableTasks = tasks.filter((task)=>this.calculateCapabilityMatch(agent, task) > 0.5);
|
|
740
|
+
if (suitableTasks.length > 0) {
|
|
741
|
+
allocations.push({
|
|
742
|
+
agentId: agent.id.id,
|
|
743
|
+
tasks: suitableTasks.slice(0, 3).map((t)=>t.id.id),
|
|
744
|
+
estimatedWorkload: suitableTasks.length * 0.3,
|
|
745
|
+
capabilities: Object.keys(agent.capabilities).filter((cap)=>agent.capabilities[cap] === true)
|
|
746
|
+
});
|
|
747
|
+
}
|
|
748
|
+
});
|
|
749
|
+
return allocations;
|
|
750
|
+
}
|
|
751
|
+
constructor(config){
|
|
752
|
+
super(config), _define_property(this, "mlHeuristics", void 0), _define_property(this, "decompositionCache", void 0), _define_property(this, "patternCache", void 0), _define_property(this, "performanceHistory", void 0);
|
|
753
|
+
this.mlHeuristics = this.initializeMLHeuristics();
|
|
754
|
+
this.decompositionCache = new Map();
|
|
755
|
+
this.patternCache = new Map();
|
|
756
|
+
this.performanceHistory = new Map();
|
|
757
|
+
}
|
|
758
|
+
}
|