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
|
@@ -2,243 +2,202 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Stream Chain Command - Working implementation for Claude Code
|
|
4
4
|
* Uses stream-json output but regular prompt input for compatibility
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { spawn, execSync } from 'child_process';
|
|
8
|
-
|
|
5
|
+
*/ import { spawn, execSync } from "child_process";
|
|
9
6
|
/**
|
|
10
7
|
* Check if claude command is available
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
8
|
+
*/ function checkClaudeAvailable() {
|
|
9
|
+
try {
|
|
10
|
+
execSync('which claude', {
|
|
11
|
+
stdio: 'ignore'
|
|
12
|
+
});
|
|
13
|
+
return true;
|
|
14
|
+
} catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
19
17
|
}
|
|
20
|
-
|
|
21
18
|
/**
|
|
22
19
|
* Extract content from stream-json output
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
20
|
+
*/ function extractContentFromStream(streamOutput) {
|
|
21
|
+
const lines = streamOutput.split('\n').filter((line)=>line.trim());
|
|
22
|
+
let content = '';
|
|
23
|
+
for (const line of lines){
|
|
24
|
+
try {
|
|
25
|
+
const json = JSON.parse(line);
|
|
26
|
+
if (json.type === 'assistant' && json.message && json.message.content) {
|
|
27
|
+
for (const item of json.message.content){
|
|
28
|
+
if (item.type === 'text' && item.text) {
|
|
29
|
+
content += item.text;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
} catch (e) {
|
|
34
|
+
// Skip non-JSON lines
|
|
36
35
|
}
|
|
37
|
-
}
|
|
38
|
-
} catch (e) {
|
|
39
|
-
// Skip non-JSON lines
|
|
40
36
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return content.trim();
|
|
37
|
+
return content.trim();
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
/**
|
|
47
40
|
* Execute a single step with context from previous step
|
|
48
|
-
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
args.push(fullPrompt);
|
|
68
|
-
|
|
69
|
-
if (flags.verbose) {
|
|
70
|
-
console.log(
|
|
71
|
-
` Command: claude ${args[0]} ${args[1]} ${args[2]} "${args[4].slice(0, 50)}..."`,
|
|
72
|
-
);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// Spawn Claude process
|
|
76
|
-
const claudeProcess = spawn('claude', args, {
|
|
77
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
78
|
-
env: process.env,
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
let output = '';
|
|
82
|
-
let stderr = '';
|
|
83
|
-
let completed = false;
|
|
84
|
-
|
|
85
|
-
// Close stdin since we're not piping input
|
|
86
|
-
claudeProcess.stdin.end();
|
|
87
|
-
|
|
88
|
-
// Capture output
|
|
89
|
-
claudeProcess.stdout.on('data', (chunk) => {
|
|
90
|
-
output += chunk.toString();
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
// Capture errors
|
|
94
|
-
claudeProcess.stderr.on('data', (chunk) => {
|
|
95
|
-
stderr += chunk.toString();
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// Handle completion
|
|
99
|
-
claudeProcess.on('close', (code) => {
|
|
100
|
-
if (completed) return;
|
|
101
|
-
completed = true;
|
|
102
|
-
|
|
103
|
-
const duration = Date.now() - startTime;
|
|
104
|
-
|
|
105
|
-
if (code !== 0) {
|
|
106
|
-
console.error(` Process exited with code ${code}`);
|
|
107
|
-
if (stderr && flags.verbose) {
|
|
108
|
-
console.error(` stderr: ${stderr.slice(0, 200)}`);
|
|
41
|
+
*/ async function executeStep(prompt, previousContent, stepNum, totalSteps, flags) {
|
|
42
|
+
return new Promise((resolve)=>{
|
|
43
|
+
const startTime = Date.now();
|
|
44
|
+
const timeout = (flags.timeout || 30) * 1000;
|
|
45
|
+
// Build the full prompt with context
|
|
46
|
+
let fullPrompt = prompt;
|
|
47
|
+
if (previousContent) {
|
|
48
|
+
fullPrompt = `Previous step output:\n${previousContent}\n\nNext step: ${prompt}`;
|
|
49
|
+
}
|
|
50
|
+
// Build command args
|
|
51
|
+
const args = [
|
|
52
|
+
'-p'
|
|
53
|
+
];
|
|
54
|
+
// Always use stream-json output for parsing
|
|
55
|
+
args.push('--output-format', 'stream-json', '--verbose');
|
|
56
|
+
// Add the prompt
|
|
57
|
+
args.push(fullPrompt);
|
|
58
|
+
if (flags.verbose) {
|
|
59
|
+
console.log(` Command: claude ${args[0]} ${args[1]} ${args[2]} "${args[4].slice(0, 50)}..."`);
|
|
109
60
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
61
|
+
// Spawn Claude process
|
|
62
|
+
const claudeProcess = spawn('claude', args, {
|
|
63
|
+
stdio: [
|
|
64
|
+
'pipe',
|
|
65
|
+
'pipe',
|
|
66
|
+
'pipe'
|
|
67
|
+
],
|
|
68
|
+
env: process.env
|
|
115
69
|
});
|
|
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
|
-
|
|
70
|
+
let output = '';
|
|
71
|
+
let stderr = '';
|
|
72
|
+
let completed = false;
|
|
73
|
+
// Close stdin since we're not piping input
|
|
74
|
+
claudeProcess.stdin.end();
|
|
75
|
+
// Capture output
|
|
76
|
+
claudeProcess.stdout.on('data', (chunk)=>{
|
|
77
|
+
output += chunk.toString();
|
|
78
|
+
});
|
|
79
|
+
// Capture errors
|
|
80
|
+
claudeProcess.stderr.on('data', (chunk)=>{
|
|
81
|
+
stderr += chunk.toString();
|
|
82
|
+
});
|
|
83
|
+
// Handle completion
|
|
84
|
+
claudeProcess.on('close', (code)=>{
|
|
85
|
+
if (completed) return;
|
|
86
|
+
completed = true;
|
|
87
|
+
const duration = Date.now() - startTime;
|
|
88
|
+
if (code !== 0) {
|
|
89
|
+
console.error(` Process exited with code ${code}`);
|
|
90
|
+
if (stderr && flags.verbose) {
|
|
91
|
+
console.error(` stderr: ${stderr.slice(0, 200)}`);
|
|
92
|
+
}
|
|
93
|
+
resolve({
|
|
94
|
+
success: false,
|
|
95
|
+
duration,
|
|
96
|
+
content: null,
|
|
97
|
+
rawOutput: output
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// Extract content from stream-json output
|
|
102
|
+
const content = extractContentFromStream(output);
|
|
103
|
+
resolve({
|
|
104
|
+
success: true,
|
|
105
|
+
duration,
|
|
106
|
+
content,
|
|
107
|
+
rawOutput: output
|
|
108
|
+
});
|
|
155
109
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
110
|
+
// Handle errors
|
|
111
|
+
claudeProcess.on('error', (error)=>{
|
|
112
|
+
if (completed) return;
|
|
113
|
+
completed = true;
|
|
114
|
+
console.error(' Process error:', error.message);
|
|
115
|
+
resolve({
|
|
116
|
+
success: false,
|
|
117
|
+
duration: Date.now() - startTime,
|
|
118
|
+
content: null,
|
|
119
|
+
rawOutput: null
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
// Timeout
|
|
123
|
+
setTimeout(()=>{
|
|
124
|
+
if (!completed) {
|
|
125
|
+
completed = true;
|
|
126
|
+
claudeProcess.kill('SIGTERM');
|
|
127
|
+
console.log(' ⏱️ Step timed out');
|
|
128
|
+
resolve({
|
|
129
|
+
success: false,
|
|
130
|
+
duration: timeout,
|
|
131
|
+
content: null,
|
|
132
|
+
rawOutput: null
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}, timeout);
|
|
136
|
+
});
|
|
159
137
|
}
|
|
160
|
-
|
|
161
138
|
/**
|
|
162
139
|
* Execute the chain
|
|
163
|
-
*/
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
if (result.content) {
|
|
190
|
-
previousContent = result.content;
|
|
191
|
-
if (flags.verbose) {
|
|
192
|
-
console.log(` Content: ${result.content.slice(0, 100)}...`);
|
|
193
|
-
}
|
|
140
|
+
*/ async function executeChain(prompts, flags) {
|
|
141
|
+
const results = [];
|
|
142
|
+
let previousContent = null;
|
|
143
|
+
for(let i = 0; i < prompts.length; i++){
|
|
144
|
+
const prompt = prompts[i];
|
|
145
|
+
console.log(`\n🔄 Step ${i + 1}/${prompts.length}: ${prompt.slice(0, 50)}...`);
|
|
146
|
+
const result = await executeStep(prompt, previousContent, i + 1, prompts.length, flags);
|
|
147
|
+
results.push({
|
|
148
|
+
step: i + 1,
|
|
149
|
+
prompt: prompt.slice(0, 50),
|
|
150
|
+
success: result.success,
|
|
151
|
+
duration: result.duration,
|
|
152
|
+
content: result.content
|
|
153
|
+
});
|
|
154
|
+
if (!result.success) {
|
|
155
|
+
console.error(`❌ Step ${i + 1} failed`);
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
console.log(`✅ Step ${i + 1} completed (${result.duration}ms)`);
|
|
159
|
+
if (result.content) {
|
|
160
|
+
previousContent = result.content;
|
|
161
|
+
if (flags.verbose) {
|
|
162
|
+
console.log(` Content: ${result.content.slice(0, 100)}...`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
194
165
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
return results;
|
|
166
|
+
return results;
|
|
198
167
|
}
|
|
199
|
-
|
|
200
168
|
/**
|
|
201
169
|
* Main command
|
|
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
|
-
case 'pipeline':
|
|
231
|
-
await runPipeline(args.slice(1), flags);
|
|
232
|
-
break;
|
|
233
|
-
|
|
234
|
-
default:
|
|
235
|
-
console.error(`❌ Unknown subcommand: ${subcommand}`);
|
|
236
|
-
showHelp();
|
|
237
|
-
}
|
|
170
|
+
*/ export async function streamChainCommand(args, flags) {
|
|
171
|
+
const subcommand = args[0] || 'help';
|
|
172
|
+
if (subcommand === 'help') {
|
|
173
|
+
showHelp();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (!checkClaudeAvailable()) {
|
|
177
|
+
console.error('❌ Claude Code not found');
|
|
178
|
+
console.log('Please ensure Claude Code is installed and available');
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
switch(subcommand){
|
|
182
|
+
case 'demo':
|
|
183
|
+
await runDemo(flags);
|
|
184
|
+
break;
|
|
185
|
+
case 'run':
|
|
186
|
+
await runCustom(args.slice(1), flags);
|
|
187
|
+
break;
|
|
188
|
+
case 'test':
|
|
189
|
+
await runTest(flags);
|
|
190
|
+
break;
|
|
191
|
+
case 'pipeline':
|
|
192
|
+
await runPipeline(args.slice(1), flags);
|
|
193
|
+
break;
|
|
194
|
+
default:
|
|
195
|
+
console.error(`❌ Unknown subcommand: ${subcommand}`);
|
|
196
|
+
showHelp();
|
|
197
|
+
}
|
|
238
198
|
}
|
|
239
|
-
|
|
240
199
|
function showHelp() {
|
|
241
|
-
|
|
200
|
+
console.log(`
|
|
242
201
|
🔗 NAME
|
|
243
202
|
claude-flow-novice stream-chain - Connect multiple Claude instances via stream-json for chained workflows
|
|
244
203
|
|
|
@@ -375,117 +334,100 @@ function showHelp() {
|
|
|
375
334
|
Claude Flow Alpha 89 - Stream Chain v2.0.0
|
|
376
335
|
`);
|
|
377
336
|
}
|
|
378
|
-
|
|
379
337
|
async function runDemo(flags) {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
const results = await executeChain(prompts, flags);
|
|
390
|
-
showSummary(results);
|
|
338
|
+
console.log('🎭 Running Stream Chain Demo');
|
|
339
|
+
console.log('━'.repeat(50));
|
|
340
|
+
const prompts = [
|
|
341
|
+
'Write a simple Python function to reverse a string',
|
|
342
|
+
'Add type hints to the function',
|
|
343
|
+
'Add a docstring to the function'
|
|
344
|
+
];
|
|
345
|
+
const results = await executeChain(prompts, flags);
|
|
346
|
+
showSummary(results);
|
|
391
347
|
}
|
|
392
|
-
|
|
393
348
|
async function runCustom(prompts, flags) {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
const results = await executeChain(prompts, flags);
|
|
403
|
-
showSummary(results);
|
|
349
|
+
if (prompts.length < 2) {
|
|
350
|
+
console.error('❌ Need at least 2 prompts');
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
console.log('🔗 Starting Custom Chain');
|
|
354
|
+
console.log('━'.repeat(50));
|
|
355
|
+
const results = await executeChain(prompts, flags);
|
|
356
|
+
showSummary(results);
|
|
404
357
|
}
|
|
405
|
-
|
|
406
358
|
async function runTest(flags) {
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
359
|
+
console.log('🧪 Testing Stream Chain');
|
|
360
|
+
console.log('━'.repeat(50));
|
|
361
|
+
const prompts = [
|
|
362
|
+
"Say exactly: 'Step 1 complete'",
|
|
363
|
+
"If the previous step said 'Step 1 complete', say 'Chain working!'"
|
|
364
|
+
];
|
|
365
|
+
const results = await executeChain(prompts, {
|
|
366
|
+
...flags,
|
|
367
|
+
verbose: true
|
|
368
|
+
});
|
|
369
|
+
const success = results.every((r)=>r.success);
|
|
370
|
+
console.log('\n' + (success ? '✅ Test passed!' : '❌ Test failed'));
|
|
419
371
|
}
|
|
420
|
-
|
|
421
372
|
async function runPipeline(args, flags) {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
console.log('━'.repeat(50));
|
|
469
|
-
|
|
470
|
-
const results = await executeChain(pipeline.prompts, flags);
|
|
471
|
-
showSummary(results);
|
|
373
|
+
const pipelineType = args[0];
|
|
374
|
+
const pipelines = {
|
|
375
|
+
analysis: {
|
|
376
|
+
name: 'Code Analysis Pipeline',
|
|
377
|
+
prompts: [
|
|
378
|
+
'Analyze the current directory structure and identify the main components',
|
|
379
|
+
'Based on the analysis, identify potential improvements and issues',
|
|
380
|
+
'Generate a detailed report with actionable recommendations'
|
|
381
|
+
]
|
|
382
|
+
},
|
|
383
|
+
refactor: {
|
|
384
|
+
name: 'Refactoring Workflow',
|
|
385
|
+
prompts: [
|
|
386
|
+
'Identify code that could benefit from refactoring in the current project',
|
|
387
|
+
'Create a prioritized refactoring plan with specific changes',
|
|
388
|
+
'Provide refactored code examples for the top 3 priorities'
|
|
389
|
+
]
|
|
390
|
+
},
|
|
391
|
+
test: {
|
|
392
|
+
name: 'Test Generation Pipeline',
|
|
393
|
+
prompts: [
|
|
394
|
+
'Analyze the codebase and identify areas lacking test coverage',
|
|
395
|
+
'Design comprehensive test cases for the critical functions',
|
|
396
|
+
'Generate unit test implementations with assertions'
|
|
397
|
+
]
|
|
398
|
+
},
|
|
399
|
+
optimize: {
|
|
400
|
+
name: 'Performance Optimization Pipeline',
|
|
401
|
+
prompts: [
|
|
402
|
+
'Profile the codebase and identify performance bottlenecks',
|
|
403
|
+
'Analyze the bottlenecks and suggest optimization strategies',
|
|
404
|
+
'Provide optimized implementations for the main issues'
|
|
405
|
+
]
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
if (!pipelineType || !pipelines[pipelineType]) {
|
|
409
|
+
console.error('❌ Invalid or missing pipeline type');
|
|
410
|
+
console.log('Available pipelines: ' + Object.keys(pipelines).join(', '));
|
|
411
|
+
console.log('Usage: claude-flow-novice stream-chain pipeline <type>');
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const pipeline = pipelines[pipelineType];
|
|
415
|
+
console.log(`🚀 Running ${pipeline.name}`);
|
|
416
|
+
console.log('━'.repeat(50));
|
|
417
|
+
const results = await executeChain(pipeline.prompts, flags);
|
|
418
|
+
showSummary(results);
|
|
472
419
|
}
|
|
473
|
-
|
|
474
420
|
function showSummary(results) {
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
console.log(`\n⏱️ Total: ${total}ms`);
|
|
488
|
-
console.log(`📈 Success: ${success}/${results.length}`);
|
|
421
|
+
console.log('\n' + '═'.repeat(50));
|
|
422
|
+
console.log('📊 Summary');
|
|
423
|
+
console.log('═'.repeat(50));
|
|
424
|
+
for (const r of results){
|
|
425
|
+
const status = r.success ? '✅' : '❌';
|
|
426
|
+
console.log(`${status} Step ${r.step}: ${r.prompt}... (${r.duration}ms)`);
|
|
427
|
+
}
|
|
428
|
+
const total = results.reduce((sum, r)=>sum + r.duration, 0);
|
|
429
|
+
const success = results.filter((r)=>r.success).length;
|
|
430
|
+
console.log(`\n⏱️ Total: ${total}ms`);
|
|
431
|
+
console.log(`📈 Success: ${success}/${results.length}`);
|
|
489
432
|
}
|
|
490
|
-
|
|
491
433
|
export default streamChainCommand;
|