claude-flow-novice 1.3.0 โ 1.3.2
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/.claude-flow-novice/preferences/generation.json +147 -0
- package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
- package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
- package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
- package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
- package/.claude-flow-novice/preferences/project-local.json +91 -0
- package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
- package/.claude-flow-novice/preferences/team-shared.json +195 -0
- package/.claude-flow-novice/preferences/user-global.json +247 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
- package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
- package/CLAUDE.md +81 -0
- package/README-NPM.md +0 -0
- package/package.json +11 -7
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/migration/README.md +434 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
- package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
- package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
- package/src/cli/simple-commands/__tests__/task.test.js +8 -0
- package/src/cli/simple-commands/agent.js +216 -0
- package/src/cli/simple-commands/analysis.js +570 -0
- package/src/cli/simple-commands/automation-executor.js +1603 -0
- package/src/cli/simple-commands/automation.js +627 -0
- package/src/cli/simple-commands/batch-manager.js +338 -0
- package/src/cli/simple-commands/claude-telemetry.js +311 -0
- package/src/cli/simple-commands/claude-track.js +102 -0
- package/src/cli/simple-commands/concurrent-display.js +348 -0
- package/src/cli/simple-commands/config.js +319 -0
- package/src/cli/simple-commands/coordination.js +307 -0
- package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
- package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
- package/src/cli/simple-commands/fix-hook-variables.js +363 -0
- package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
- package/src/cli/simple-commands/github/github-api.js +624 -0
- package/src/cli/simple-commands/github/init.js +543 -0
- package/src/cli/simple-commands/github.js +377 -0
- package/src/cli/simple-commands/goal.js +145 -0
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
- package/src/cli/simple-commands/hive-mind/communication.js +740 -0
- package/src/cli/simple-commands/hive-mind/core.js +1031 -0
- package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
- package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
- package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
- package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
- package/src/cli/simple-commands/hive-mind/queen.js +809 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
- package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
- package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
- package/src/cli/simple-commands/hive-mind.js +3112 -0
- package/src/cli/simple-commands/hive.js +140 -0
- package/src/cli/simple-commands/hook-safety.js +671 -0
- package/src/cli/simple-commands/hooks.js +1268 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
- package/src/cli/simple-commands/init/README.md +106 -0
- package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
- package/src/cli/simple-commands/init/agent-copier.js +347 -0
- package/src/cli/simple-commands/init/batch-init.js +663 -0
- package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
- package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
- package/src/cli/simple-commands/init/help.js +110 -0
- package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
- package/src/cli/simple-commands/init/index.js +1953 -0
- package/src/cli/simple-commands/init/performance-monitor.js +344 -0
- package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
- package/src/cli/simple-commands/init/rollback/index.js +399 -0
- package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
- package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
- package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
- package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
- package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
- package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
- package/src/cli/simple-commands/init/sparc-structure.js +68 -0
- package/src/cli/simple-commands/init/template-copier.js +640 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
- package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
- package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
- package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
- package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
- package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
- package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
- package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
- package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
- package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
- package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
- package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
- package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
- package/src/cli/simple-commands/init/templates/settings.json +109 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
- package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
- package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
- package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
- package/src/cli/simple-commands/init/validation/index.js +388 -0
- package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
- package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
- package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
- package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
- package/src/cli/simple-commands/init.js +4 -0
- package/src/cli/simple-commands/mcp-health.js +163 -0
- package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
- package/src/cli/simple-commands/mcp.js +420 -0
- package/src/cli/simple-commands/memory-consolidation.js +631 -0
- package/src/cli/simple-commands/memory.js +345 -0
- package/src/cli/simple-commands/migrate-hooks.js +63 -0
- package/src/cli/simple-commands/monitor.js +417 -0
- package/src/cli/simple-commands/neural.js +148 -0
- package/src/cli/simple-commands/pair-autofix-only.js +755 -0
- package/src/cli/simple-commands/pair-basic.js +751 -0
- package/src/cli/simple-commands/pair-old.js +623 -0
- package/src/cli/simple-commands/pair-working.js +849 -0
- package/src/cli/simple-commands/pair.js +849 -0
- package/src/cli/simple-commands/performance-hooks.js +149 -0
- package/src/cli/simple-commands/performance-metrics.js +601 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
- package/src/cli/simple-commands/process-ui.js +274 -0
- package/src/cli/simple-commands/realtime-update-system.js +659 -0
- package/src/cli/simple-commands/sparc/architecture.js +1750 -0
- package/src/cli/simple-commands/sparc/commands.js +575 -0
- package/src/cli/simple-commands/sparc/completion.js +1831 -0
- package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
- package/src/cli/simple-commands/sparc/index.js +321 -0
- package/src/cli/simple-commands/sparc/phase-base.js +430 -0
- package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
- package/src/cli/simple-commands/sparc/refinement.js +1856 -0
- package/src/cli/simple-commands/sparc/specification.js +736 -0
- package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
- package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
- package/src/cli/simple-commands/sparc-modes/code.js +148 -0
- package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
- package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
- package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
- package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
- package/src/cli/simple-commands/sparc-modes/index.js +201 -0
- package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
- package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
- package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
- package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
- package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
- package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
- package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
- package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
- package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
- package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
- package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
- package/src/cli/simple-commands/sparc.js +530 -0
- package/src/cli/simple-commands/start-ui.js +147 -0
- package/src/cli/simple-commands/start-wrapper.js +285 -0
- package/src/cli/simple-commands/start.js +2 -0
- package/src/cli/simple-commands/status.js +303 -0
- package/src/cli/simple-commands/stream-chain-clean.js +221 -0
- package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
- package/src/cli/simple-commands/stream-chain-real.js +408 -0
- package/src/cli/simple-commands/stream-chain-working.js +323 -0
- package/src/cli/simple-commands/stream-chain.js +491 -0
- package/src/cli/simple-commands/stream-processor.js +340 -0
- package/src/cli/simple-commands/swarm-executor.js +253 -0
- package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
- package/src/cli/simple-commands/swarm-ui.js +741 -0
- package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
- package/src/cli/simple-commands/swarm.js +2277 -0
- package/src/cli/simple-commands/task.js +228 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/cli/simple-commands/timestamp-fix.js +104 -0
- package/src/cli/simple-commands/token-tracker.js +372 -0
- package/src/cli/simple-commands/tool-execution-framework.js +555 -0
- package/src/cli/simple-commands/train-and-stream.js +354 -0
- package/src/cli/simple-commands/training-pipeline.js +874 -0
- package/src/cli/simple-commands/training.js +288 -0
- package/src/cli/simple-commands/verification-hooks.js +336 -0
- package/src/cli/simple-commands/verification-integration.js +464 -0
- package/src/cli/simple-commands/verification-training-integration.js +646 -0
- package/src/cli/simple-commands/verification.js +551 -0
- package/src/cli/simple-commands/web-server.js +929 -0
- package/src/cli/simple-commands/webui-validator.js +136 -0
- package/src/language/README.md +503 -0
- package/src/language/claude-md-generator.js +618 -0
- package/src/language/cli.js +422 -0
- package/src/language/example.js +347 -0
- package/src/language/integration-system.js +619 -0
- package/src/language/language-detector.js +581 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Stream Chain Command - Working implementation for Claude Code
|
|
4
|
+
* Uses stream-json output but regular prompt input for compatibility
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { spawn, execSync } from 'child_process';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Check if claude command is available
|
|
11
|
+
*/
|
|
12
|
+
function checkClaudeAvailable() {
|
|
13
|
+
try {
|
|
14
|
+
execSync('which claude', { stdio: 'ignore' });
|
|
15
|
+
return true;
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Extract content from stream-json output
|
|
23
|
+
*/
|
|
24
|
+
function extractContentFromStream(streamOutput) {
|
|
25
|
+
const lines = streamOutput.split('\n').filter((line) => line.trim());
|
|
26
|
+
let content = '';
|
|
27
|
+
|
|
28
|
+
for (const line of lines) {
|
|
29
|
+
try {
|
|
30
|
+
const json = JSON.parse(line);
|
|
31
|
+
if (json.type === 'assistant' && json.message && json.message.content) {
|
|
32
|
+
for (const item of json.message.content) {
|
|
33
|
+
if (item.type === 'text' && item.text) {
|
|
34
|
+
content += item.text;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
} catch (e) {
|
|
39
|
+
// Skip non-JSON lines
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return content.trim();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Execute a single step with context from previous step
|
|
48
|
+
*/
|
|
49
|
+
async function executeStep(prompt, previousContent, stepNum, totalSteps, flags) {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
const startTime = Date.now();
|
|
52
|
+
const timeout = (flags.timeout || 30) * 1000;
|
|
53
|
+
|
|
54
|
+
// Build the full prompt with context
|
|
55
|
+
let fullPrompt = prompt;
|
|
56
|
+
if (previousContent) {
|
|
57
|
+
fullPrompt = `Previous step output:\n${previousContent}\n\nNext step: ${prompt}`;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Build command args
|
|
61
|
+
const args = ['-p'];
|
|
62
|
+
|
|
63
|
+
// Always use stream-json output for parsing
|
|
64
|
+
args.push('--output-format', 'stream-json', '--verbose');
|
|
65
|
+
|
|
66
|
+
// Add the prompt
|
|
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)}`);
|
|
109
|
+
}
|
|
110
|
+
resolve({
|
|
111
|
+
success: false,
|
|
112
|
+
duration,
|
|
113
|
+
content: null,
|
|
114
|
+
rawOutput: output,
|
|
115
|
+
});
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Extract content from stream-json output
|
|
120
|
+
const content = extractContentFromStream(output);
|
|
121
|
+
|
|
122
|
+
resolve({
|
|
123
|
+
success: true,
|
|
124
|
+
duration,
|
|
125
|
+
content,
|
|
126
|
+
rawOutput: output,
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// Handle errors
|
|
131
|
+
claudeProcess.on('error', (error) => {
|
|
132
|
+
if (completed) return;
|
|
133
|
+
completed = true;
|
|
134
|
+
|
|
135
|
+
console.error(' Process error:', error.message);
|
|
136
|
+
resolve({
|
|
137
|
+
success: false,
|
|
138
|
+
duration: Date.now() - startTime,
|
|
139
|
+
content: null,
|
|
140
|
+
rawOutput: null,
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
// Timeout
|
|
145
|
+
setTimeout(() => {
|
|
146
|
+
if (!completed) {
|
|
147
|
+
completed = true;
|
|
148
|
+
claudeProcess.kill('SIGTERM');
|
|
149
|
+
console.log(' โฑ๏ธ Step timed out');
|
|
150
|
+
resolve({
|
|
151
|
+
success: false,
|
|
152
|
+
duration: timeout,
|
|
153
|
+
content: null,
|
|
154
|
+
rawOutput: null,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}, timeout);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Execute the chain
|
|
163
|
+
*/
|
|
164
|
+
async function executeChain(prompts, flags) {
|
|
165
|
+
const results = [];
|
|
166
|
+
let previousContent = null;
|
|
167
|
+
|
|
168
|
+
for (let i = 0; i < prompts.length; i++) {
|
|
169
|
+
const prompt = prompts[i];
|
|
170
|
+
console.log(`\n๐ Step ${i + 1}/${prompts.length}: ${prompt.slice(0, 50)}...`);
|
|
171
|
+
|
|
172
|
+
const result = await executeStep(prompt, previousContent, i + 1, prompts.length, flags);
|
|
173
|
+
|
|
174
|
+
results.push({
|
|
175
|
+
step: i + 1,
|
|
176
|
+
prompt: prompt.slice(0, 50),
|
|
177
|
+
success: result.success,
|
|
178
|
+
duration: result.duration,
|
|
179
|
+
content: result.content,
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
if (!result.success) {
|
|
183
|
+
console.error(`โ Step ${i + 1} failed`);
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
console.log(`โ
Step ${i + 1} completed (${result.duration}ms)`);
|
|
188
|
+
|
|
189
|
+
if (result.content) {
|
|
190
|
+
previousContent = result.content;
|
|
191
|
+
if (flags.verbose) {
|
|
192
|
+
console.log(` Content: ${result.content.slice(0, 100)}...`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
return results;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Main command
|
|
202
|
+
*/
|
|
203
|
+
export async function streamChainCommand(args, flags) {
|
|
204
|
+
const subcommand = args[0] || 'help';
|
|
205
|
+
|
|
206
|
+
if (subcommand === 'help') {
|
|
207
|
+
showHelp();
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (!checkClaudeAvailable()) {
|
|
212
|
+
console.error('โ Claude Code not found');
|
|
213
|
+
console.log('Please ensure Claude Code is installed and available');
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
switch (subcommand) {
|
|
218
|
+
case 'demo':
|
|
219
|
+
await runDemo(flags);
|
|
220
|
+
break;
|
|
221
|
+
|
|
222
|
+
case 'run':
|
|
223
|
+
await runCustom(args.slice(1), flags);
|
|
224
|
+
break;
|
|
225
|
+
|
|
226
|
+
case 'test':
|
|
227
|
+
await runTest(flags);
|
|
228
|
+
break;
|
|
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
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function showHelp() {
|
|
241
|
+
console.log(`
|
|
242
|
+
๐ NAME
|
|
243
|
+
claude-flow stream-chain - Connect multiple Claude instances via stream-json for chained workflows
|
|
244
|
+
|
|
245
|
+
๐ SYNOPSIS
|
|
246
|
+
claude-flow stream-chain <subcommand> [options]
|
|
247
|
+
|
|
248
|
+
๐ DESCRIPTION
|
|
249
|
+
Stream chaining enables multi-step Claude workflows where each step receives the full
|
|
250
|
+
output from the previous step, creating powerful agent pipelines with context preservation.
|
|
251
|
+
|
|
252
|
+
Uses Claude Code's --output-format stream-json to capture structured responses and
|
|
253
|
+
chains them together by injecting previous outputs into subsequent prompts.
|
|
254
|
+
|
|
255
|
+
๐ SUBCOMMANDS
|
|
256
|
+
run <prompt1> <prompt2> [...]
|
|
257
|
+
Execute a custom stream chain with your own prompts
|
|
258
|
+
Minimum 2 prompts required for chaining
|
|
259
|
+
Each prompt receives the output from the previous step
|
|
260
|
+
|
|
261
|
+
demo
|
|
262
|
+
Run a 3-step demonstration chain:
|
|
263
|
+
1. Write a Python function to reverse a string
|
|
264
|
+
2. Add type hints to the function
|
|
265
|
+
3. Add a docstring to the function
|
|
266
|
+
|
|
267
|
+
pipeline <type>
|
|
268
|
+
Execute predefined pipelines for common workflows:
|
|
269
|
+
|
|
270
|
+
analysis - Code analysis and improvement pipeline
|
|
271
|
+
Analyze โ Identify issues โ Generate report
|
|
272
|
+
|
|
273
|
+
refactor - Automated refactoring workflow
|
|
274
|
+
Find refactoring opportunities โ Create plan โ Apply changes
|
|
275
|
+
|
|
276
|
+
test - Comprehensive test generation
|
|
277
|
+
Analyze coverage โ Design test cases โ Generate tests
|
|
278
|
+
|
|
279
|
+
optimize - Performance optimization pipeline
|
|
280
|
+
Profile code โ Identify bottlenecks โ Apply optimizations
|
|
281
|
+
|
|
282
|
+
test
|
|
283
|
+
Test stream chain connection and context preservation
|
|
284
|
+
Verifies that output from step 1 is received by step 2
|
|
285
|
+
|
|
286
|
+
help
|
|
287
|
+
Display this comprehensive help message
|
|
288
|
+
|
|
289
|
+
โ๏ธ OPTIONS
|
|
290
|
+
--verbose
|
|
291
|
+
Show detailed execution information including:
|
|
292
|
+
- Full command lines being executed
|
|
293
|
+
- Content preview from each step
|
|
294
|
+
- Stream-json parsing details
|
|
295
|
+
|
|
296
|
+
--timeout <seconds>
|
|
297
|
+
Maximum time per step in seconds (default: 30)
|
|
298
|
+
Prevents hanging on long-running operations
|
|
299
|
+
|
|
300
|
+
--debug
|
|
301
|
+
Enable debug mode with full stream-json output
|
|
302
|
+
Shows raw JSON messages between steps
|
|
303
|
+
|
|
304
|
+
๐ก EXAMPLES
|
|
305
|
+
# Run a custom 3-step code improvement chain
|
|
306
|
+
claude-flow stream-chain run "analyze this code" "suggest improvements" "implement the top 3"
|
|
307
|
+
|
|
308
|
+
# Execute the demo chain to see stream chaining in action
|
|
309
|
+
claude-flow stream-chain demo
|
|
310
|
+
|
|
311
|
+
# Run the analysis pipeline on your codebase
|
|
312
|
+
claude-flow stream-chain pipeline analysis
|
|
313
|
+
|
|
314
|
+
# Test that stream chaining is working correctly
|
|
315
|
+
claude-flow stream-chain test --verbose
|
|
316
|
+
|
|
317
|
+
# Custom refactoring workflow with extended timeout
|
|
318
|
+
claude-flow stream-chain run "find code smells" "prioritize fixes" "refactor" --timeout 60
|
|
319
|
+
|
|
320
|
+
# Debug mode to see raw stream-json messages
|
|
321
|
+
claude-flow stream-chain demo --debug --verbose
|
|
322
|
+
|
|
323
|
+
๐ง HOW IT WORKS
|
|
324
|
+
1. Step 1 executes with --output-format stream-json to capture structured output
|
|
325
|
+
2. The assistant's response is extracted from the stream-json format
|
|
326
|
+
3. Step 2 receives the previous output as context in its prompt
|
|
327
|
+
4. This continues for all steps in the chain
|
|
328
|
+
5. Each step has full context of all previous outputs
|
|
329
|
+
|
|
330
|
+
๐ STREAM-JSON FORMAT
|
|
331
|
+
Each step outputs newline-delimited JSON with message types:
|
|
332
|
+
{"type":"system","subtype":"init",...} - Session initialization
|
|
333
|
+
{"type":"assistant","message":{...}} - Claude's response
|
|
334
|
+
{"type":"tool_use","name":"...",...} - Tool invocations
|
|
335
|
+
{"type":"result","status":"success",...} - Completion status
|
|
336
|
+
|
|
337
|
+
โก PERFORMANCE
|
|
338
|
+
- Latency: ~10-30s per step depending on complexity
|
|
339
|
+
- Context: 100% preservation between steps
|
|
340
|
+
- Parallel: Steps run sequentially to maintain context
|
|
341
|
+
- Timeout: Default 30s per step, configurable
|
|
342
|
+
|
|
343
|
+
๐ REQUIREMENTS
|
|
344
|
+
- Claude Code must be installed and available in PATH
|
|
345
|
+
- Valid Claude API configuration
|
|
346
|
+
- Sufficient API credits for multiple Claude calls
|
|
347
|
+
|
|
348
|
+
๐ TROUBLESHOOTING
|
|
349
|
+
"Command not found"
|
|
350
|
+
โ Ensure Claude Code is installed: npm install -g @anthropic-ai/claude-code
|
|
351
|
+
|
|
352
|
+
"Step timed out"
|
|
353
|
+
โ Increase timeout with --timeout flag
|
|
354
|
+
โ Check network connectivity
|
|
355
|
+
|
|
356
|
+
"Context not preserved"
|
|
357
|
+
โ Verify stream-json output with --verbose
|
|
358
|
+
โ Check that all steps completed successfully
|
|
359
|
+
|
|
360
|
+
"Invalid JSON"
|
|
361
|
+
โ Use --debug to see raw output
|
|
362
|
+
โ Report issue if stream format has changed
|
|
363
|
+
|
|
364
|
+
๐ SEE ALSO
|
|
365
|
+
claude-flow swarm - Multi-agent coordination
|
|
366
|
+
claude-flow hive-mind - Collective intelligence mode
|
|
367
|
+
claude-flow sparc - SPARC development methodology
|
|
368
|
+
|
|
369
|
+
๐ DOCUMENTATION
|
|
370
|
+
Full docs: ./claude-flow-wiki/Stream-Chain-Command.md
|
|
371
|
+
Stream spec: ./docs/stream-chaining.md
|
|
372
|
+
GitHub: https://github.com/ruvnet/claude-flow
|
|
373
|
+
|
|
374
|
+
๐ท๏ธ VERSION
|
|
375
|
+
Claude Flow Alpha 89 - Stream Chain v2.0.0
|
|
376
|
+
`);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
async function runDemo(flags) {
|
|
380
|
+
console.log('๐ญ Running Stream Chain Demo');
|
|
381
|
+
console.log('โ'.repeat(50));
|
|
382
|
+
|
|
383
|
+
const prompts = [
|
|
384
|
+
'Write a simple Python function to reverse a string',
|
|
385
|
+
'Add type hints to the function',
|
|
386
|
+
'Add a docstring to the function',
|
|
387
|
+
];
|
|
388
|
+
|
|
389
|
+
const results = await executeChain(prompts, flags);
|
|
390
|
+
showSummary(results);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
async function runCustom(prompts, flags) {
|
|
394
|
+
if (prompts.length < 2) {
|
|
395
|
+
console.error('โ Need at least 2 prompts');
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
console.log('๐ Starting Custom Chain');
|
|
400
|
+
console.log('โ'.repeat(50));
|
|
401
|
+
|
|
402
|
+
const results = await executeChain(prompts, flags);
|
|
403
|
+
showSummary(results);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
async function runTest(flags) {
|
|
407
|
+
console.log('๐งช Testing Stream Chain');
|
|
408
|
+
console.log('โ'.repeat(50));
|
|
409
|
+
|
|
410
|
+
const prompts = [
|
|
411
|
+
"Say exactly: 'Step 1 complete'",
|
|
412
|
+
"If the previous step said 'Step 1 complete', say 'Chain working!'",
|
|
413
|
+
];
|
|
414
|
+
|
|
415
|
+
const results = await executeChain(prompts, { ...flags, verbose: true });
|
|
416
|
+
|
|
417
|
+
const success = results.every((r) => r.success);
|
|
418
|
+
console.log('\n' + (success ? 'โ
Test passed!' : 'โ Test failed'));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
async function runPipeline(args, flags) {
|
|
422
|
+
const pipelineType = args[0];
|
|
423
|
+
|
|
424
|
+
const pipelines = {
|
|
425
|
+
analysis: {
|
|
426
|
+
name: 'Code Analysis Pipeline',
|
|
427
|
+
prompts: [
|
|
428
|
+
'Analyze the current directory structure and identify the main components',
|
|
429
|
+
'Based on the analysis, identify potential improvements and issues',
|
|
430
|
+
'Generate a detailed report with actionable recommendations',
|
|
431
|
+
],
|
|
432
|
+
},
|
|
433
|
+
refactor: {
|
|
434
|
+
name: 'Refactoring Workflow',
|
|
435
|
+
prompts: [
|
|
436
|
+
'Identify code that could benefit from refactoring in the current project',
|
|
437
|
+
'Create a prioritized refactoring plan with specific changes',
|
|
438
|
+
'Provide refactored code examples for the top 3 priorities',
|
|
439
|
+
],
|
|
440
|
+
},
|
|
441
|
+
test: {
|
|
442
|
+
name: 'Test Generation Pipeline',
|
|
443
|
+
prompts: [
|
|
444
|
+
'Analyze the codebase and identify areas lacking test coverage',
|
|
445
|
+
'Design comprehensive test cases for the critical functions',
|
|
446
|
+
'Generate unit test implementations with assertions',
|
|
447
|
+
],
|
|
448
|
+
},
|
|
449
|
+
optimize: {
|
|
450
|
+
name: 'Performance Optimization Pipeline',
|
|
451
|
+
prompts: [
|
|
452
|
+
'Profile the codebase and identify performance bottlenecks',
|
|
453
|
+
'Analyze the bottlenecks and suggest optimization strategies',
|
|
454
|
+
'Provide optimized implementations for the main issues',
|
|
455
|
+
],
|
|
456
|
+
},
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
if (!pipelineType || !pipelines[pipelineType]) {
|
|
460
|
+
console.error('โ Invalid or missing pipeline type');
|
|
461
|
+
console.log('Available pipelines: ' + Object.keys(pipelines).join(', '));
|
|
462
|
+
console.log('Usage: claude-flow stream-chain pipeline <type>');
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
const pipeline = pipelines[pipelineType];
|
|
467
|
+
console.log(`๐ Running ${pipeline.name}`);
|
|
468
|
+
console.log('โ'.repeat(50));
|
|
469
|
+
|
|
470
|
+
const results = await executeChain(pipeline.prompts, flags);
|
|
471
|
+
showSummary(results);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
function showSummary(results) {
|
|
475
|
+
console.log('\n' + 'โ'.repeat(50));
|
|
476
|
+
console.log('๐ Summary');
|
|
477
|
+
console.log('โ'.repeat(50));
|
|
478
|
+
|
|
479
|
+
for (const r of results) {
|
|
480
|
+
const status = r.success ? 'โ
' : 'โ';
|
|
481
|
+
console.log(`${status} Step ${r.step}: ${r.prompt}... (${r.duration}ms)`);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
const total = results.reduce((sum, r) => sum + r.duration, 0);
|
|
485
|
+
const success = results.filter((r) => r.success).length;
|
|
486
|
+
|
|
487
|
+
console.log(`\nโฑ๏ธ Total: ${total}ms`);
|
|
488
|
+
console.log(`๐ Success: ${success}/${results.length}`);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
export default streamChainCommand;
|