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
|
@@ -1,501 +1,513 @@
|
|
|
1
|
-
import { printSuccess, printError, printWarning } from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
loadWorkflowFromFile,
|
|
5
|
-
getMLEStarWorkflowPath,
|
|
6
|
-
} from './automation-executor.js';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
|
|
1
|
+
import { printSuccess, printError, printWarning } from "../utils.js";
|
|
2
|
+
import { WorkflowExecutor, loadWorkflowFromFile, getMLEStarWorkflowPath } from "./automation-executor.js";
|
|
3
|
+
import { existsSync } from "fs";
|
|
10
4
|
// Simple ID generator
|
|
11
5
|
function generateId(prefix = 'id') {
|
|
12
|
-
|
|
6
|
+
return `${prefix}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
13
7
|
}
|
|
14
|
-
|
|
15
8
|
export async function automationAction(subArgs, flags) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (options.help || options.h || !subcommand) {
|
|
20
|
-
showAutomationHelp();
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
switch (subcommand) {
|
|
26
|
-
case 'auto-agent':
|
|
27
|
-
await autoAgentCommand(subArgs, flags);
|
|
28
|
-
break;
|
|
29
|
-
case 'smart-spawn':
|
|
30
|
-
await smartSpawnCommand(subArgs, flags);
|
|
31
|
-
break;
|
|
32
|
-
case 'workflow-select':
|
|
33
|
-
await workflowSelectCommand(subArgs, flags);
|
|
34
|
-
break;
|
|
35
|
-
case 'run-workflow':
|
|
36
|
-
await runWorkflowCommand(subArgs, flags);
|
|
37
|
-
break;
|
|
38
|
-
case 'mle-star':
|
|
39
|
-
await mleStarCommand(subArgs, flags);
|
|
40
|
-
break;
|
|
41
|
-
default:
|
|
42
|
-
printError(`Unknown automation command: ${subcommand}`);
|
|
9
|
+
const subcommand = subArgs[0];
|
|
10
|
+
const options = flags;
|
|
11
|
+
if (options.help || options.h || !subcommand) {
|
|
43
12
|
showAutomationHelp();
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
switch(subcommand){
|
|
17
|
+
case 'auto-agent':
|
|
18
|
+
await autoAgentCommand(subArgs, flags);
|
|
19
|
+
break;
|
|
20
|
+
case 'smart-spawn':
|
|
21
|
+
await smartSpawnCommand(subArgs, flags);
|
|
22
|
+
break;
|
|
23
|
+
case 'workflow-select':
|
|
24
|
+
await workflowSelectCommand(subArgs, flags);
|
|
25
|
+
break;
|
|
26
|
+
case 'run-workflow':
|
|
27
|
+
await runWorkflowCommand(subArgs, flags);
|
|
28
|
+
break;
|
|
29
|
+
case 'mle-star':
|
|
30
|
+
await mleStarCommand(subArgs, flags);
|
|
31
|
+
break;
|
|
32
|
+
default:
|
|
33
|
+
printError(`Unknown automation command: ${subcommand}`);
|
|
34
|
+
showAutomationHelp();
|
|
35
|
+
}
|
|
36
|
+
} catch (err) {
|
|
37
|
+
printError(`Automation command failed: ${err.message}`);
|
|
44
38
|
}
|
|
45
|
-
} catch (err) {
|
|
46
|
-
printError(`Automation command failed: ${err.message}`);
|
|
47
|
-
}
|
|
48
39
|
}
|
|
49
|
-
|
|
50
40
|
async function autoAgentCommand(subArgs, flags) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
41
|
+
const options = flags;
|
|
42
|
+
const complexity = options['task-complexity'] || options.complexity || 'medium';
|
|
43
|
+
const swarmId = options['swarm-id'] || options.swarmId || generateId('swarm');
|
|
44
|
+
console.log(`š¤ Auto-spawning agents based on task complexity...`);
|
|
45
|
+
console.log(`š Task complexity: ${complexity}`);
|
|
46
|
+
console.log(`š Swarm ID: ${swarmId}`);
|
|
47
|
+
// Determine optimal agent configuration based on complexity
|
|
48
|
+
let agentConfig;
|
|
49
|
+
switch(complexity.toLowerCase()){
|
|
50
|
+
case 'low':
|
|
51
|
+
case 'simple':
|
|
52
|
+
agentConfig = {
|
|
53
|
+
coordinator: 1,
|
|
54
|
+
developer: 1,
|
|
55
|
+
total: 2
|
|
56
|
+
};
|
|
57
|
+
break;
|
|
58
|
+
case 'medium':
|
|
59
|
+
case 'moderate':
|
|
60
|
+
agentConfig = {
|
|
61
|
+
coordinator: 1,
|
|
62
|
+
developer: 2,
|
|
63
|
+
researcher: 1,
|
|
64
|
+
total: 4
|
|
65
|
+
};
|
|
66
|
+
break;
|
|
67
|
+
case 'high':
|
|
68
|
+
case 'complex':
|
|
69
|
+
agentConfig = {
|
|
70
|
+
coordinator: 2,
|
|
71
|
+
developer: 3,
|
|
72
|
+
researcher: 2,
|
|
73
|
+
analyzer: 1,
|
|
74
|
+
total: 8
|
|
75
|
+
};
|
|
76
|
+
break;
|
|
77
|
+
case 'enterprise':
|
|
78
|
+
case 'massive':
|
|
79
|
+
agentConfig = {
|
|
80
|
+
coordinator: 3,
|
|
81
|
+
developer: 5,
|
|
82
|
+
researcher: 3,
|
|
83
|
+
analyzer: 2,
|
|
84
|
+
tester: 2,
|
|
85
|
+
total: 15
|
|
86
|
+
};
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
agentConfig = {
|
|
90
|
+
coordinator: 1,
|
|
91
|
+
developer: 2,
|
|
92
|
+
researcher: 1,
|
|
93
|
+
total: 4
|
|
94
|
+
};
|
|
93
95
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
96
|
+
console.log(`\nšÆ OPTIMAL AGENT CONFIGURATION:`);
|
|
97
|
+
Object.entries(agentConfig).forEach(([type, count])=>{
|
|
98
|
+
if (type !== 'total') {
|
|
99
|
+
console.log(` š¤ ${type}: ${count} agents`);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
console.log(` š Total agents: ${agentConfig.total}`);
|
|
103
|
+
// Simulate auto-spawning
|
|
104
|
+
await new Promise((resolve)=>setTimeout(resolve, 1500));
|
|
105
|
+
printSuccess(`ā
Auto-agent spawning completed`);
|
|
106
|
+
console.log(`š ${agentConfig.total} agents spawned and configured for ${complexity} complexity tasks`);
|
|
107
|
+
console.log(`š¾ Agent configuration saved to swarm memory: ${swarmId}`);
|
|
108
|
+
console.log(`š Agents ready for task assignment`);
|
|
106
109
|
}
|
|
107
|
-
|
|
108
110
|
async function smartSpawnCommand(subArgs, flags) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
111
|
+
const options = flags;
|
|
112
|
+
const requirement = options.requirement || 'general-development';
|
|
113
|
+
const maxAgents = parseInt(options['max-agents'] || options.maxAgents || '10');
|
|
114
|
+
console.log(`š§ Smart spawning agents based on requirements...`);
|
|
115
|
+
console.log(`š Requirement: ${requirement}`);
|
|
116
|
+
console.log(`š¢ Max agents: ${maxAgents}`);
|
|
117
|
+
// Analyze requirements and suggest optimal agent mix
|
|
118
|
+
let recommendedAgents = [];
|
|
119
|
+
if (requirement.includes('development') || requirement.includes('coding')) {
|
|
120
|
+
recommendedAgents.push({
|
|
121
|
+
type: 'coordinator',
|
|
122
|
+
count: 1,
|
|
123
|
+
reason: 'Task orchestration'
|
|
124
|
+
}, {
|
|
125
|
+
type: 'coder',
|
|
126
|
+
count: 3,
|
|
127
|
+
reason: 'Core development work'
|
|
128
|
+
}, {
|
|
129
|
+
type: 'tester',
|
|
130
|
+
count: 1,
|
|
131
|
+
reason: 'Quality assurance'
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
if (requirement.includes('research') || requirement.includes('analysis')) {
|
|
135
|
+
recommendedAgents.push({
|
|
136
|
+
type: 'researcher',
|
|
137
|
+
count: 2,
|
|
138
|
+
reason: 'Information gathering'
|
|
139
|
+
}, {
|
|
140
|
+
type: 'analyst',
|
|
141
|
+
count: 1,
|
|
142
|
+
reason: 'Data analysis'
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (requirement.includes('enterprise') || requirement.includes('production')) {
|
|
146
|
+
recommendedAgents.push({
|
|
147
|
+
type: 'coordinator',
|
|
148
|
+
count: 2,
|
|
149
|
+
reason: 'Multi-tier coordination'
|
|
150
|
+
}, {
|
|
151
|
+
type: 'coder',
|
|
152
|
+
count: 4,
|
|
153
|
+
reason: 'Parallel development'
|
|
154
|
+
}, {
|
|
155
|
+
type: 'researcher',
|
|
156
|
+
count: 2,
|
|
157
|
+
reason: 'Requirements analysis'
|
|
158
|
+
}, {
|
|
159
|
+
type: 'analyst',
|
|
160
|
+
count: 1,
|
|
161
|
+
reason: 'Performance monitoring'
|
|
162
|
+
}, {
|
|
163
|
+
type: 'tester',
|
|
164
|
+
count: 2,
|
|
165
|
+
reason: 'Comprehensive testing'
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
// Default fallback
|
|
169
|
+
if (recommendedAgents.length === 0) {
|
|
170
|
+
recommendedAgents = [
|
|
171
|
+
{
|
|
172
|
+
type: 'coordinator',
|
|
173
|
+
count: 1,
|
|
174
|
+
reason: 'General coordination'
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'coder',
|
|
178
|
+
count: 2,
|
|
179
|
+
reason: 'General development'
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
type: 'researcher',
|
|
183
|
+
count: 1,
|
|
184
|
+
reason: 'Support research'
|
|
185
|
+
}
|
|
186
|
+
];
|
|
187
|
+
}
|
|
188
|
+
await new Promise((resolve)=>setTimeout(resolve, 1000));
|
|
189
|
+
printSuccess(`ā
Smart spawn analysis completed`);
|
|
190
|
+
console.log(`\nšÆ RECOMMENDED AGENT CONFIGURATION:`);
|
|
191
|
+
let totalRecommended = 0;
|
|
192
|
+
recommendedAgents.forEach((agent)=>{
|
|
193
|
+
console.log(` š¤ ${agent.type}: ${agent.count} agents - ${agent.reason}`);
|
|
194
|
+
totalRecommended += agent.count;
|
|
195
|
+
});
|
|
196
|
+
console.log(`\nš SUMMARY:`);
|
|
197
|
+
console.log(` š Total recommended: ${totalRecommended} agents`);
|
|
198
|
+
console.log(` š¢ Max allowed: ${maxAgents} agents`);
|
|
199
|
+
console.log(` ā
Configuration: ${totalRecommended <= maxAgents ? 'Within limits' : 'Exceeds limits - scaling down required'}`);
|
|
200
|
+
if (totalRecommended > maxAgents) {
|
|
201
|
+
printWarning(`ā ļø Recommended configuration exceeds max agents. Consider increasing limit or simplifying requirements.`);
|
|
202
|
+
}
|
|
177
203
|
}
|
|
178
|
-
|
|
179
204
|
async function workflowSelectCommand(subArgs, flags) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
205
|
+
const options = flags;
|
|
206
|
+
const projectType = options['project-type'] || options.project || 'general';
|
|
207
|
+
const priority = options.priority || 'balanced';
|
|
208
|
+
console.log(`š Selecting optimal workflow configuration...`);
|
|
209
|
+
console.log(`š Project type: ${projectType}`);
|
|
210
|
+
console.log(`ā” Priority: ${priority}`);
|
|
211
|
+
// Define workflow templates
|
|
212
|
+
const workflows = {
|
|
213
|
+
'web-app': {
|
|
214
|
+
phases: [
|
|
215
|
+
'planning',
|
|
216
|
+
'design',
|
|
217
|
+
'frontend',
|
|
218
|
+
'backend',
|
|
219
|
+
'testing',
|
|
220
|
+
'deployment'
|
|
221
|
+
],
|
|
222
|
+
agents: {
|
|
223
|
+
coordinator: 1,
|
|
224
|
+
developer: 3,
|
|
225
|
+
tester: 1,
|
|
226
|
+
researcher: 1
|
|
227
|
+
},
|
|
228
|
+
duration: '2-4 weeks'
|
|
229
|
+
},
|
|
230
|
+
api: {
|
|
231
|
+
phases: [
|
|
232
|
+
'specification',
|
|
233
|
+
'design',
|
|
234
|
+
'implementation',
|
|
235
|
+
'testing',
|
|
236
|
+
'documentation'
|
|
237
|
+
],
|
|
238
|
+
agents: {
|
|
239
|
+
coordinator: 1,
|
|
240
|
+
developer: 2,
|
|
241
|
+
tester: 1,
|
|
242
|
+
researcher: 1
|
|
243
|
+
},
|
|
244
|
+
duration: '1-2 weeks'
|
|
245
|
+
},
|
|
246
|
+
'data-analysis': {
|
|
247
|
+
phases: [
|
|
248
|
+
'collection',
|
|
249
|
+
'cleaning',
|
|
250
|
+
'analysis',
|
|
251
|
+
'visualization',
|
|
252
|
+
'reporting'
|
|
253
|
+
],
|
|
254
|
+
agents: {
|
|
255
|
+
coordinator: 1,
|
|
256
|
+
researcher: 2,
|
|
257
|
+
analyzer: 2,
|
|
258
|
+
developer: 1
|
|
259
|
+
},
|
|
260
|
+
duration: '1-3 weeks'
|
|
261
|
+
},
|
|
262
|
+
enterprise: {
|
|
263
|
+
phases: [
|
|
264
|
+
'requirements',
|
|
265
|
+
'architecture',
|
|
266
|
+
'development',
|
|
267
|
+
'integration',
|
|
268
|
+
'testing',
|
|
269
|
+
'deployment',
|
|
270
|
+
'monitoring'
|
|
271
|
+
],
|
|
272
|
+
agents: {
|
|
273
|
+
coordinator: 2,
|
|
274
|
+
developer: 5,
|
|
275
|
+
researcher: 2,
|
|
276
|
+
analyzer: 1,
|
|
277
|
+
tester: 2
|
|
278
|
+
},
|
|
279
|
+
duration: '2-6 months'
|
|
280
|
+
},
|
|
281
|
+
general: {
|
|
282
|
+
phases: [
|
|
283
|
+
'planning',
|
|
284
|
+
'implementation',
|
|
285
|
+
'testing',
|
|
286
|
+
'delivery'
|
|
287
|
+
],
|
|
288
|
+
agents: {
|
|
289
|
+
coordinator: 1,
|
|
290
|
+
developer: 2,
|
|
291
|
+
researcher: 1
|
|
292
|
+
},
|
|
293
|
+
duration: '1-2 weeks'
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
const selectedWorkflow = workflows[projectType] || workflows['general'];
|
|
297
|
+
await new Promise((resolve)=>setTimeout(resolve, 800));
|
|
298
|
+
printSuccess(`ā
Workflow selection completed`);
|
|
299
|
+
console.log(`\nš SELECTED WORKFLOW: ${projectType.toUpperCase()}`);
|
|
300
|
+
console.log(`ā±ļø Estimated duration: ${selectedWorkflow.duration}`);
|
|
301
|
+
console.log(`\nš WORKFLOW PHASES:`);
|
|
302
|
+
selectedWorkflow.phases.forEach((phase, index)=>{
|
|
303
|
+
console.log(` ${index + 1}. ${phase.charAt(0).toUpperCase() + phase.slice(1)}`);
|
|
304
|
+
});
|
|
305
|
+
console.log(`\nš¤ RECOMMENDED AGENTS:`);
|
|
306
|
+
Object.entries(selectedWorkflow.agents).forEach(([type, count])=>{
|
|
307
|
+
console.log(` ⢠${type}: ${count} agent${count > 1 ? 's' : ''}`);
|
|
308
|
+
});
|
|
309
|
+
console.log(`\nā” PRIORITY OPTIMIZATIONS:`);
|
|
310
|
+
switch(priority){
|
|
311
|
+
case 'speed':
|
|
312
|
+
console.log(` š Speed-optimized: +50% agents, parallel execution`);
|
|
313
|
+
break;
|
|
314
|
+
case 'quality':
|
|
315
|
+
console.log(` šÆ Quality-focused: +100% testing, code review stages`);
|
|
316
|
+
break;
|
|
317
|
+
case 'cost':
|
|
318
|
+
console.log(` š° Cost-efficient: Minimal agents, sequential execution`);
|
|
319
|
+
break;
|
|
320
|
+
default:
|
|
321
|
+
console.log(` āļø Balanced approach: Optimal speed/quality/cost ratio`);
|
|
322
|
+
}
|
|
323
|
+
console.log(`\nš Workflow template saved for project: ${projectType}`);
|
|
259
324
|
}
|
|
260
|
-
|
|
261
325
|
/**
|
|
262
326
|
* Execute a workflow from file - NEW IMPLEMENTATION
|
|
263
|
-
*/
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
console.log(' claude-flow-novice automation run-workflow workflow.json --claude --non-interactive');
|
|
272
|
-
return;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
if (!existsSync(workflowFile)) {
|
|
276
|
-
printError(`Workflow file not found: ${workflowFile}`);
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
try {
|
|
281
|
-
console.log(`š Loading workflow: ${workflowFile}`);
|
|
282
|
-
|
|
283
|
-
// Load workflow definition
|
|
284
|
-
const workflowData = await loadWorkflowFromFile(workflowFile);
|
|
285
|
-
|
|
286
|
-
// Create executor with options
|
|
287
|
-
const executor = new WorkflowExecutor({
|
|
288
|
-
enableClaude: options.claude || false,
|
|
289
|
-
nonInteractive: options['non-interactive'] || options.nonInteractive || false,
|
|
290
|
-
outputFormat:
|
|
291
|
-
options['output-format'] ||
|
|
292
|
-
(options['non-interactive'] || options.nonInteractive ? 'stream-json' : 'text'),
|
|
293
|
-
maxConcurrency: parseInt(options['max-concurrency']) || 3,
|
|
294
|
-
timeout: parseInt(options.timeout) || 3600000,
|
|
295
|
-
logLevel: options.verbose ? 'debug' : 'info',
|
|
296
|
-
workflowName: workflowData.name,
|
|
297
|
-
workflowType:
|
|
298
|
-
workflowData.type || (workflowData.name?.toLowerCase().includes('ml') ? 'ml' : 'general'),
|
|
299
|
-
enableChaining: options.chaining !== false, // Default to true for stream-json chaining
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
// Apply variable overrides if provided
|
|
303
|
-
const variables = {};
|
|
304
|
-
if (options.variables) {
|
|
305
|
-
try {
|
|
306
|
-
Object.assign(variables, JSON.parse(options.variables));
|
|
307
|
-
} catch (error) {
|
|
308
|
-
printWarning(`Invalid variables JSON: ${error.message}`);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Execute workflow
|
|
313
|
-
const result = await executor.executeWorkflow(workflowData, variables);
|
|
314
|
-
|
|
315
|
-
if (options['output-format'] === 'json') {
|
|
316
|
-
console.log(JSON.stringify(result, null, 2));
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
printSuccess(`Workflow execution ${result.success ? 'completed' : 'failed'}`);
|
|
320
|
-
|
|
321
|
-
if (!result.success && result.errors.length > 0) {
|
|
322
|
-
console.log('\nā Errors encountered:');
|
|
323
|
-
result.errors.forEach((error) => {
|
|
324
|
-
console.log(` ⢠${error.type}: ${error.error}`);
|
|
325
|
-
});
|
|
327
|
+
*/ async function runWorkflowCommand(subArgs, flags) {
|
|
328
|
+
const workflowFile = subArgs[1];
|
|
329
|
+
const options = flags;
|
|
330
|
+
if (!workflowFile) {
|
|
331
|
+
printError('Usage: automation run-workflow <workflow-file> [options]');
|
|
332
|
+
console.log('\nExample:');
|
|
333
|
+
console.log(' claude-flow-novice automation run-workflow workflow.json --claude --non-interactive');
|
|
334
|
+
return;
|
|
326
335
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
process.exit(result.success ? 0 : 1);
|
|
336
|
+
if (!existsSync(workflowFile)) {
|
|
337
|
+
printError(`Workflow file not found: ${workflowFile}`);
|
|
338
|
+
return;
|
|
331
339
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
340
|
+
try {
|
|
341
|
+
console.log(`š Loading workflow: ${workflowFile}`);
|
|
342
|
+
// Load workflow definition
|
|
343
|
+
const workflowData = await loadWorkflowFromFile(workflowFile);
|
|
344
|
+
// Create executor with options
|
|
345
|
+
const executor = new WorkflowExecutor({
|
|
346
|
+
enableClaude: options.claude || false,
|
|
347
|
+
nonInteractive: options['non-interactive'] || options.nonInteractive || false,
|
|
348
|
+
outputFormat: options['output-format'] || (options['non-interactive'] || options.nonInteractive ? 'stream-json' : 'text'),
|
|
349
|
+
maxConcurrency: parseInt(options['max-concurrency']) || 3,
|
|
350
|
+
timeout: parseInt(options.timeout) || 3600000,
|
|
351
|
+
logLevel: options.verbose ? 'debug' : 'info',
|
|
352
|
+
workflowName: workflowData.name,
|
|
353
|
+
workflowType: workflowData.type || (workflowData.name?.toLowerCase().includes('ml') ? 'ml' : 'general'),
|
|
354
|
+
enableChaining: options.chaining !== false
|
|
355
|
+
});
|
|
356
|
+
// Apply variable overrides if provided
|
|
357
|
+
const variables = {};
|
|
358
|
+
if (options.variables) {
|
|
359
|
+
try {
|
|
360
|
+
Object.assign(variables, JSON.parse(options.variables));
|
|
361
|
+
} catch (error) {
|
|
362
|
+
printWarning(`Invalid variables JSON: ${error.message}`);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
// Execute workflow
|
|
366
|
+
const result = await executor.executeWorkflow(workflowData, variables);
|
|
367
|
+
if (options['output-format'] === 'json') {
|
|
368
|
+
console.log(JSON.stringify(result, null, 2));
|
|
369
|
+
}
|
|
370
|
+
printSuccess(`Workflow execution ${result.success ? 'completed' : 'failed'}`);
|
|
371
|
+
if (!result.success && result.errors.length > 0) {
|
|
372
|
+
console.log('\nā Errors encountered:');
|
|
373
|
+
result.errors.forEach((error)=>{
|
|
374
|
+
console.log(` ⢠${error.type}: ${error.error}`);
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
// Ensure process exits properly in non-interactive mode
|
|
378
|
+
if (options['non-interactive'] || options.nonInteractive) {
|
|
379
|
+
process.exit(result.success ? 0 : 1);
|
|
380
|
+
}
|
|
381
|
+
} catch (error) {
|
|
382
|
+
printError(`Failed to execute workflow: ${error.message}`);
|
|
383
|
+
if (options['non-interactive'] || options.nonInteractive) {
|
|
384
|
+
process.exit(1);
|
|
385
|
+
}
|
|
336
386
|
}
|
|
337
|
-
}
|
|
338
387
|
}
|
|
339
|
-
|
|
340
388
|
/**
|
|
341
389
|
* Run MLE-STAR workflow - NEW FLAGSHIP COMMAND
|
|
342
|
-
*/
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
console.log(`š§ MLE-STAR: Machine Learning Engineering via Search and Targeted Refinement`);
|
|
347
|
-
console.log(`šÆ This is the flagship automation workflow for ML engineering tasks`);
|
|
348
|
-
console.log();
|
|
349
|
-
|
|
350
|
-
try {
|
|
351
|
-
// Get the built-in MLE-STAR workflow
|
|
352
|
-
const workflowPath = getMLEStarWorkflowPath();
|
|
353
|
-
|
|
354
|
-
if (!existsSync(workflowPath)) {
|
|
355
|
-
printError('MLE-STAR workflow template not found');
|
|
356
|
-
console.log('Please ensure the template is installed at:');
|
|
357
|
-
console.log(workflowPath);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
// Load MLE-STAR workflow
|
|
362
|
-
const workflowData = await loadWorkflowFromFile(workflowPath);
|
|
363
|
-
|
|
364
|
-
console.log(`š Workflow: ${workflowData.name}`);
|
|
365
|
-
console.log(`š Description: ${workflowData.description}`);
|
|
366
|
-
console.log(`š Methodology: Search ā Foundation ā Refinement ā Ensemble ā Validation`);
|
|
367
|
-
console.log(`ā±ļø Expected Runtime: ${workflowData.metadata.expected_runtime}`);
|
|
390
|
+
*/ async function mleStarCommand(subArgs, flags) {
|
|
391
|
+
const options = flags;
|
|
392
|
+
console.log(`š§ MLE-STAR: Machine Learning Engineering via Search and Targeted Refinement`);
|
|
393
|
+
console.log(`šÆ This is the flagship automation workflow for ML engineering tasks`);
|
|
368
394
|
console.log();
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
? false // If --interactive is explicitly set, use interactive mode
|
|
378
|
-
: options['non-interactive'] !== undefined
|
|
379
|
-
? options['non-interactive'] || options.nonInteractive
|
|
380
|
-
: true; // Default to true for MLE-STAR to avoid multiple interactive sessions
|
|
381
|
-
|
|
382
|
-
const executor = new WorkflowExecutor({
|
|
383
|
-
enableClaude: options.claude !== false, // Default to true for MLE-STAR
|
|
384
|
-
nonInteractive: isNonInteractive,
|
|
385
|
-
outputFormat: options['output-format'] || (isNonInteractive ? 'stream-json' : 'text'),
|
|
386
|
-
maxConcurrency: parseInt(options['max-agents']) || 6,
|
|
387
|
-
timeout: parseInt(options.timeout) || 14400000, // 4 hours for ML workflows
|
|
388
|
-
logLevel: options.quiet ? 'quiet' : options.verbose ? 'debug' : 'info',
|
|
389
|
-
workflowName: 'MLE-STAR Machine Learning Engineering Workflow',
|
|
390
|
-
workflowType: 'ml',
|
|
391
|
-
enableChaining: options.chaining !== false, // Default to true for stream-json chaining
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
// Prepare MLE-STAR specific variables
|
|
395
|
-
const variables = {
|
|
396
|
-
dataset_path: datasetPath,
|
|
397
|
-
target_column: targetColumn,
|
|
398
|
-
experiment_name: options.name || `mle-star-${Date.now()}`,
|
|
399
|
-
model_output_dir: options.output || './models/',
|
|
400
|
-
search_iterations: parseInt(options['search-iterations']) || 3,
|
|
401
|
-
refinement_iterations: parseInt(options['refinement-iterations']) || 5,
|
|
402
|
-
...((options.variables && JSON.parse(options.variables)) || {}),
|
|
403
|
-
};
|
|
404
|
-
|
|
405
|
-
if (options.quiet) {
|
|
406
|
-
console.log(
|
|
407
|
-
`š Running MLE-STAR: ${variables.dataset_path} ā ${variables.target_column} (${executor.options.enableClaude ? 'Claude enabled' : 'Simulation'})`,
|
|
408
|
-
);
|
|
409
|
-
console.log();
|
|
410
|
-
} else {
|
|
411
|
-
console.log(`š Configuration:`);
|
|
412
|
-
console.log(` Dataset: ${variables.dataset_path}`);
|
|
413
|
-
console.log(` Target: ${variables.target_column}`);
|
|
414
|
-
console.log(` Output: ${variables.model_output_dir}`);
|
|
415
|
-
console.log(
|
|
416
|
-
` Claude Integration: ${executor.options.enableClaude ? 'Enabled' : 'Disabled'}`,
|
|
417
|
-
);
|
|
418
|
-
console.log(
|
|
419
|
-
` Execution Mode: ${isNonInteractive ? 'Non-interactive (default)' : 'Interactive'}`,
|
|
420
|
-
);
|
|
421
|
-
console.log(
|
|
422
|
-
` Stream Chaining: ${executor.options.enableChaining && executor.options.outputFormat === 'stream-json' ? 'Enabled' : 'Disabled'}`,
|
|
423
|
-
);
|
|
424
|
-
console.log();
|
|
425
|
-
|
|
426
|
-
if (isNonInteractive && options.claude !== false) {
|
|
427
|
-
console.log(`š” Running in non-interactive mode: Each agent will execute independently`);
|
|
428
|
-
if (executor.options.enableChaining && executor.options.outputFormat === 'stream-json') {
|
|
429
|
-
console.log(
|
|
430
|
-
`š Stream chaining enabled: Agent outputs will be piped to dependent agents`,
|
|
431
|
-
);
|
|
395
|
+
try {
|
|
396
|
+
// Get the built-in MLE-STAR workflow
|
|
397
|
+
const workflowPath = getMLEStarWorkflowPath();
|
|
398
|
+
if (!existsSync(workflowPath)) {
|
|
399
|
+
printError('MLE-STAR workflow template not found');
|
|
400
|
+
console.log('Please ensure the template is installed at:');
|
|
401
|
+
console.log(workflowPath);
|
|
402
|
+
return;
|
|
432
403
|
}
|
|
433
|
-
|
|
404
|
+
// Load MLE-STAR workflow
|
|
405
|
+
const workflowData = await loadWorkflowFromFile(workflowPath);
|
|
406
|
+
console.log(`š Workflow: ${workflowData.name}`);
|
|
407
|
+
console.log(`š Description: ${workflowData.description}`);
|
|
408
|
+
console.log(`š Methodology: Search ā Foundation ā Refinement ā Ensemble ā Validation`);
|
|
409
|
+
console.log(`ā±ļø Expected Runtime: ${workflowData.metadata.expected_runtime}`);
|
|
434
410
|
console.log();
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
console.log(`š Results: ${result.completedTasks}/${result.totalTasks} tasks completed`);
|
|
453
|
-
console.log(`ā±ļø Duration: ${executor.formatDuration(result.duration)}`);
|
|
454
|
-
console.log(`š Execution ID: ${result.executionId}`);
|
|
455
|
-
|
|
456
|
-
if (result.results && Object.keys(result.results).length > 0) {
|
|
457
|
-
console.log(`\nš Key Results:`);
|
|
458
|
-
Object.entries(result.results).forEach(([taskId, taskResult]) => {
|
|
459
|
-
if (taskResult.output?.status === 'completed') {
|
|
460
|
-
console.log(` ā
${taskId}: Completed successfully`);
|
|
461
|
-
}
|
|
462
|
-
});
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
console.log(`\nš” Next Steps:`);
|
|
466
|
-
console.log(` ⢠Check models in: ${variables.model_output_dir}`);
|
|
467
|
-
console.log(` ⢠Review experiment: ${variables.experiment_name}`);
|
|
468
|
-
console.log(` ⢠Validate results with your test data`);
|
|
469
|
-
} else {
|
|
470
|
-
printError('ā MLE-STAR workflow failed');
|
|
471
|
-
console.log(`š Progress: ${result.completedTasks}/${result.totalTasks} tasks completed`);
|
|
472
|
-
|
|
473
|
-
if (result.errors.length > 0) {
|
|
474
|
-
console.log('\nš Errors:');
|
|
475
|
-
result.errors.forEach((error) => {
|
|
476
|
-
console.log(` ⢠${error.type}: ${error.error}`);
|
|
411
|
+
// Detect dataset if provided
|
|
412
|
+
const datasetPath = options.dataset || options.data || './data/dataset.csv';
|
|
413
|
+
const targetColumn = options.target || 'target';
|
|
414
|
+
// Create executor with MLE-STAR optimized settings
|
|
415
|
+
// IMPORTANT: Default to non-interactive mode to prevent multiple Claude spawns
|
|
416
|
+
const isNonInteractive = options.interactive ? false // If --interactive is explicitly set, use interactive mode
|
|
417
|
+
: options['non-interactive'] !== undefined ? options['non-interactive'] || options.nonInteractive : true; // Default to true for MLE-STAR to avoid multiple interactive sessions
|
|
418
|
+
const executor = new WorkflowExecutor({
|
|
419
|
+
enableClaude: options.claude !== false,
|
|
420
|
+
nonInteractive: isNonInteractive,
|
|
421
|
+
outputFormat: options['output-format'] || (isNonInteractive ? 'stream-json' : 'text'),
|
|
422
|
+
maxConcurrency: parseInt(options['max-agents']) || 6,
|
|
423
|
+
timeout: parseInt(options.timeout) || 14400000,
|
|
424
|
+
logLevel: options.quiet ? 'quiet' : options.verbose ? 'debug' : 'info',
|
|
425
|
+
workflowName: 'MLE-STAR Machine Learning Engineering Workflow',
|
|
426
|
+
workflowType: 'ml',
|
|
427
|
+
enableChaining: options.chaining !== false
|
|
477
428
|
});
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
429
|
+
// Prepare MLE-STAR specific variables
|
|
430
|
+
const variables = {
|
|
431
|
+
dataset_path: datasetPath,
|
|
432
|
+
target_column: targetColumn,
|
|
433
|
+
experiment_name: options.name || `mle-star-${Date.now()}`,
|
|
434
|
+
model_output_dir: options.output || './models/',
|
|
435
|
+
search_iterations: parseInt(options['search-iterations']) || 3,
|
|
436
|
+
refinement_iterations: parseInt(options['refinement-iterations']) || 5,
|
|
437
|
+
...options.variables && JSON.parse(options.variables) || {}
|
|
438
|
+
};
|
|
439
|
+
if (options.quiet) {
|
|
440
|
+
console.log(`š Running MLE-STAR: ${variables.dataset_path} ā ${variables.target_column} (${executor.options.enableClaude ? 'Claude enabled' : 'Simulation'})`);
|
|
441
|
+
console.log();
|
|
442
|
+
} else {
|
|
443
|
+
console.log(`š Configuration:`);
|
|
444
|
+
console.log(` Dataset: ${variables.dataset_path}`);
|
|
445
|
+
console.log(` Target: ${variables.target_column}`);
|
|
446
|
+
console.log(` Output: ${variables.model_output_dir}`);
|
|
447
|
+
console.log(` Claude Integration: ${executor.options.enableClaude ? 'Enabled' : 'Disabled'}`);
|
|
448
|
+
console.log(` Execution Mode: ${isNonInteractive ? 'Non-interactive (default)' : 'Interactive'}`);
|
|
449
|
+
console.log(` Stream Chaining: ${executor.options.enableChaining && executor.options.outputFormat === 'stream-json' ? 'Enabled' : 'Disabled'}`);
|
|
450
|
+
console.log();
|
|
451
|
+
if (isNonInteractive && options.claude !== false) {
|
|
452
|
+
console.log(`š” Running in non-interactive mode: Each agent will execute independently`);
|
|
453
|
+
if (executor.options.enableChaining && executor.options.outputFormat === 'stream-json') {
|
|
454
|
+
console.log(`š Stream chaining enabled: Agent outputs will be piped to dependent agents`);
|
|
455
|
+
}
|
|
456
|
+
console.log(` To use interactive mode instead, add --interactive flag`);
|
|
457
|
+
console.log();
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (!options.claude && !options['no-claude-warning']) {
|
|
461
|
+
printWarning('MLE-STAR works best with Claude integration. Add --claude flag for full automation.');
|
|
462
|
+
console.log('Without Claude, this will simulate the workflow execution.');
|
|
463
|
+
console.log();
|
|
464
|
+
}
|
|
465
|
+
// Execute MLE-STAR workflow
|
|
466
|
+
const result = await executor.executeWorkflow(workflowData, variables);
|
|
467
|
+
if (result.success) {
|
|
468
|
+
console.log();
|
|
469
|
+
printSuccess('š MLE-STAR workflow completed successfully!');
|
|
470
|
+
console.log(`š Results: ${result.completedTasks}/${result.totalTasks} tasks completed`);
|
|
471
|
+
console.log(`ā±ļø Duration: ${executor.formatDuration(result.duration)}`);
|
|
472
|
+
console.log(`š Execution ID: ${result.executionId}`);
|
|
473
|
+
if (result.results && Object.keys(result.results).length > 0) {
|
|
474
|
+
console.log(`\nš Key Results:`);
|
|
475
|
+
Object.entries(result.results).forEach(([taskId, taskResult])=>{
|
|
476
|
+
if (taskResult.output?.status === 'completed') {
|
|
477
|
+
console.log(` ā
${taskId}: Completed successfully`);
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
console.log(`\nš” Next Steps:`);
|
|
482
|
+
console.log(` ⢠Check models in: ${variables.model_output_dir}`);
|
|
483
|
+
console.log(` ⢠Review experiment: ${variables.experiment_name}`);
|
|
484
|
+
console.log(` ⢠Validate results with your test data`);
|
|
485
|
+
} else {
|
|
486
|
+
printError('ā MLE-STAR workflow failed');
|
|
487
|
+
console.log(`š Progress: ${result.completedTasks}/${result.totalTasks} tasks completed`);
|
|
488
|
+
if (result.errors.length > 0) {
|
|
489
|
+
console.log('\nš Errors:');
|
|
490
|
+
result.errors.forEach((error)=>{
|
|
491
|
+
console.log(` ⢠${error.type}: ${error.error}`);
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
if (options['output-format'] === 'json') {
|
|
496
|
+
console.log('\n' + JSON.stringify(result, null, 2));
|
|
497
|
+
}
|
|
498
|
+
// Ensure process exits properly in non-interactive mode
|
|
499
|
+
if (options['non-interactive'] || options.nonInteractive) {
|
|
500
|
+
process.exit(result.success ? 0 : 1);
|
|
501
|
+
}
|
|
502
|
+
} catch (error) {
|
|
503
|
+
printError(`MLE-STAR execution failed: ${error.message}`);
|
|
504
|
+
if (options['non-interactive'] || options.nonInteractive) {
|
|
505
|
+
process.exit(1);
|
|
506
|
+
}
|
|
493
507
|
}
|
|
494
|
-
}
|
|
495
508
|
}
|
|
496
|
-
|
|
497
509
|
function showAutomationHelp() {
|
|
498
|
-
|
|
510
|
+
console.log(`
|
|
499
511
|
š¤ Automation Commands - Intelligent Agent & Workflow Management
|
|
500
512
|
|
|
501
513
|
USAGE:
|