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,285 @@
|
|
|
1
|
+
// start-wrapper.js - Wrapper to maintain backward compatibility with the new modular start command
|
|
2
|
+
import { printSuccess, printError, printWarning, printInfo } from '../utils.js';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
import { cwd, exit, existsSync } from '../node-compat.js';
|
|
5
|
+
import { compat } from '../runtime-detector.js';
|
|
6
|
+
|
|
7
|
+
export async function startCommand(subArgs, flags) {
|
|
8
|
+
// Show help if requested
|
|
9
|
+
if (flags.help || flags.h || subArgs.includes('--help') || subArgs.includes('-h')) {
|
|
10
|
+
showStartHelp();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Parse start options
|
|
15
|
+
const daemon = subArgs.includes('--daemon') || subArgs.includes('-d') || flags.daemon;
|
|
16
|
+
const port = flags.port || getArgValue(subArgs, '--port') || getArgValue(subArgs, '-p') || 3000;
|
|
17
|
+
const verbose = subArgs.includes('--verbose') || subArgs.includes('-v') || flags.verbose;
|
|
18
|
+
const ui = subArgs.includes('--ui') || subArgs.includes('-u') || flags.ui;
|
|
19
|
+
const web = subArgs.includes('--web') || subArgs.includes('-w') || flags.web;
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
printSuccess('Starting Claude-Flow Orchestration System...');
|
|
23
|
+
console.log();
|
|
24
|
+
|
|
25
|
+
// Check if we should launch the web UI mode
|
|
26
|
+
if (web) {
|
|
27
|
+
try {
|
|
28
|
+
// Launch the web server
|
|
29
|
+
const { startWebServer } = await import('./web-server.js');
|
|
30
|
+
const server = await startWebServer(port);
|
|
31
|
+
|
|
32
|
+
printSuccess(`š Web UI is running!`);
|
|
33
|
+
console.log(`š Open your browser to: http://localhost:${port}/console`);
|
|
34
|
+
console.log(' Press Ctrl+C to stop the server');
|
|
35
|
+
console.log();
|
|
36
|
+
|
|
37
|
+
// Keep process running
|
|
38
|
+
await new Promise(() => {});
|
|
39
|
+
return;
|
|
40
|
+
} catch (err) {
|
|
41
|
+
printError('Failed to launch web UI: ' + err.message);
|
|
42
|
+
console.error(err.stack);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Check if we should launch the UI mode (web UI by default)
|
|
48
|
+
if (ui && !web) {
|
|
49
|
+
try {
|
|
50
|
+
// Launch the web UI by default when --ui is used
|
|
51
|
+
const { ClaudeCodeWebServer } = await import('./web-server.js');
|
|
52
|
+
const webServer = new ClaudeCodeWebServer(port);
|
|
53
|
+
await webServer.start();
|
|
54
|
+
|
|
55
|
+
printSuccess('š Claude Flow Web UI is running!');
|
|
56
|
+
console.log(`š Open your browser to: http://localhost:${port}/console`);
|
|
57
|
+
console.log(' Press Ctrl+C to stop the server');
|
|
58
|
+
console.log();
|
|
59
|
+
|
|
60
|
+
// Keep process running
|
|
61
|
+
await new Promise(() => {});
|
|
62
|
+
return;
|
|
63
|
+
} catch (err) {
|
|
64
|
+
// If web UI fails, fall back to terminal UI
|
|
65
|
+
printWarning('Web UI failed, launching terminal UI...');
|
|
66
|
+
try {
|
|
67
|
+
const { launchEnhancedUI } = await import('./process-ui-enhanced.js');
|
|
68
|
+
await launchEnhancedUI();
|
|
69
|
+
return;
|
|
70
|
+
} catch (fallbackErr) {
|
|
71
|
+
// If both fail, show error
|
|
72
|
+
printError('Failed to launch UI: ' + err.message);
|
|
73
|
+
console.error(err.stack);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Check if required directories exist
|
|
80
|
+
const requiredDirs = ['memory', 'coordination'];
|
|
81
|
+
let missingDirs = [];
|
|
82
|
+
|
|
83
|
+
for (const dir of requiredDirs) {
|
|
84
|
+
try {
|
|
85
|
+
await fs.stat(dir);
|
|
86
|
+
} catch {
|
|
87
|
+
missingDirs.push(dir);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (missingDirs.length > 0) {
|
|
92
|
+
printWarning('Missing required directories: ' + missingDirs.join(', '));
|
|
93
|
+
console.log('Run "claude-flow init" first to create the necessary structure');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Display startup information
|
|
98
|
+
console.log('š System Configuration:');
|
|
99
|
+
console.log(` Mode: ${daemon ? 'Daemon (background)' : 'Interactive'}`);
|
|
100
|
+
console.log(` MCP Port: ${port}`);
|
|
101
|
+
console.log(` Working Directory: ${cwd()}`);
|
|
102
|
+
console.log(` Memory Backend: JSON (default)`);
|
|
103
|
+
console.log(` Terminal Pool: 5 instances (default)`);
|
|
104
|
+
console.log();
|
|
105
|
+
|
|
106
|
+
// Initialize components
|
|
107
|
+
console.log('š Initializing Components:');
|
|
108
|
+
|
|
109
|
+
// Memory system
|
|
110
|
+
console.log(' ā Memory Bank: Ready');
|
|
111
|
+
console.log(' - Backend: JSON file (memory/claude-flow-data.json)');
|
|
112
|
+
console.log(' - Namespaces: Enabled');
|
|
113
|
+
|
|
114
|
+
// Terminal pool
|
|
115
|
+
console.log(' ā Terminal Pool: Ready');
|
|
116
|
+
console.log(' - Pool Size: 5');
|
|
117
|
+
console.log(' - Shell: ' + (compat.platform.os === 'windows' ? 'cmd.exe' : '/bin/bash'));
|
|
118
|
+
|
|
119
|
+
// Task queue
|
|
120
|
+
console.log(' ā Task Queue: Ready');
|
|
121
|
+
console.log(' - Max Concurrent: 10');
|
|
122
|
+
console.log(' - Priority Queue: Enabled');
|
|
123
|
+
|
|
124
|
+
// MCP Server
|
|
125
|
+
console.log(' ā MCP Server: Ready');
|
|
126
|
+
console.log(` - Port: ${port}`);
|
|
127
|
+
console.log(' - Transport: stdio/HTTP');
|
|
128
|
+
|
|
129
|
+
console.log();
|
|
130
|
+
|
|
131
|
+
if (daemon) {
|
|
132
|
+
// Daemon mode - would normally fork process
|
|
133
|
+
printInfo('Starting in daemon mode...');
|
|
134
|
+
console.log('Note: Full daemon mode requires the TypeScript version');
|
|
135
|
+
console.log('The orchestrator would run in the background on port ' + port);
|
|
136
|
+
|
|
137
|
+
// Create a simple PID file to simulate daemon
|
|
138
|
+
const pid = compat.terminal.getPid();
|
|
139
|
+
await compat.safeCall(async () => {
|
|
140
|
+
if (compat.runtime === 'deno') {
|
|
141
|
+
await fs.writeFile('.claude-flow.pid', pid.toString(), 'utf8');
|
|
142
|
+
} else {
|
|
143
|
+
const fs = await import('fs/promises');
|
|
144
|
+
await fs.writeFile('.claude-flow.pid', pid.toString(), 'utf8');
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
console.log(`Process ID: ${pid} (saved to .claude-flow.pid)`);
|
|
148
|
+
} else {
|
|
149
|
+
// Interactive mode
|
|
150
|
+
printSuccess('Orchestration system started!');
|
|
151
|
+
console.log();
|
|
152
|
+
console.log('šÆ Available Actions:');
|
|
153
|
+
console.log(' ⢠Open another terminal and run:');
|
|
154
|
+
console.log(' - claude-flow agent spawn researcher');
|
|
155
|
+
console.log(' - claude-flow task create "your task"');
|
|
156
|
+
console.log(' - claude-flow sparc "build feature"');
|
|
157
|
+
console.log(' - claude-flow monitor');
|
|
158
|
+
console.log();
|
|
159
|
+
console.log(' ⢠View system status:');
|
|
160
|
+
console.log(' - claude-flow status');
|
|
161
|
+
console.log();
|
|
162
|
+
console.log(' ⢠Launch process management UI:');
|
|
163
|
+
console.log(' - claude-flow start --ui');
|
|
164
|
+
console.log();
|
|
165
|
+
console.log(' ⢠Press Ctrl+C to stop the orchestrator');
|
|
166
|
+
console.log();
|
|
167
|
+
|
|
168
|
+
if (verbose) {
|
|
169
|
+
console.log('š Verbose Mode - Showing system activity:');
|
|
170
|
+
console.log('[' + new Date().toISOString() + '] System initialized');
|
|
171
|
+
console.log('[' + new Date().toISOString() + '] Waiting for commands...');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Keep the process running
|
|
175
|
+
console.log('š¢ System is running...');
|
|
176
|
+
|
|
177
|
+
// Set up signal handlers
|
|
178
|
+
const abortController = new AbortController();
|
|
179
|
+
|
|
180
|
+
compat.terminal.onSignal('SIGINT', () => {
|
|
181
|
+
console.log('\nā¹ļø Shutting down orchestrator...');
|
|
182
|
+
cleanup();
|
|
183
|
+
compat.terminal.exit(0);
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Simple heartbeat to show system is alive
|
|
187
|
+
if (!daemon) {
|
|
188
|
+
const heartbeat = setInterval(() => {
|
|
189
|
+
if (verbose) {
|
|
190
|
+
console.log('[' + new Date().toISOString() + '] Heartbeat - System healthy');
|
|
191
|
+
}
|
|
192
|
+
}, 30000); // Every 30 seconds
|
|
193
|
+
|
|
194
|
+
// Wait indefinitely (until Ctrl+C)
|
|
195
|
+
await new Promise(() => {});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
} catch (err) {
|
|
199
|
+
printError(`Failed to start orchestration system: ${err.message}`);
|
|
200
|
+
console.error('Stack trace:', err.stack);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function getArgValue(args, flag) {
|
|
205
|
+
const index = args.indexOf(flag);
|
|
206
|
+
if (index !== -1 && index < args.length - 1) {
|
|
207
|
+
return args[index + 1];
|
|
208
|
+
}
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
async function cleanup() {
|
|
213
|
+
// Clean up resources
|
|
214
|
+
try {
|
|
215
|
+
await compat.safeCall(async () => {
|
|
216
|
+
if (compat.runtime === 'deno') {
|
|
217
|
+
await fs.unlink('.claude-flow.pid');
|
|
218
|
+
} else {
|
|
219
|
+
const fs = await import('fs/promises');
|
|
220
|
+
await fs.unlink('.claude-flow.pid');
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
} catch {
|
|
224
|
+
// File might not exist
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
console.log('ā Terminal pool closed');
|
|
228
|
+
console.log('ā Task queue cleared');
|
|
229
|
+
console.log('ā Memory bank saved');
|
|
230
|
+
console.log('ā Cleanup complete');
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function showStartHelp() {
|
|
234
|
+
console.log('Start the Claude-Flow orchestration system');
|
|
235
|
+
console.log();
|
|
236
|
+
console.log('Usage: claude-flow start [options]');
|
|
237
|
+
console.log();
|
|
238
|
+
console.log('Options:');
|
|
239
|
+
console.log(' -d, --daemon Run as daemon in background');
|
|
240
|
+
console.log(' -p, --port <port> Server port (default: 3000)');
|
|
241
|
+
console.log(' -u, --ui Launch terminal-based process management UI');
|
|
242
|
+
console.log(' -w, --web Launch web-based UI server');
|
|
243
|
+
console.log(' -v, --verbose Show detailed system activity');
|
|
244
|
+
console.log(' -h, --help Show this help message');
|
|
245
|
+
console.log();
|
|
246
|
+
console.log('Examples:');
|
|
247
|
+
console.log(' claude-flow start # Start in interactive mode');
|
|
248
|
+
console.log(' claude-flow start --daemon # Start as background daemon');
|
|
249
|
+
console.log(' claude-flow start --port 8080 # Use custom server port');
|
|
250
|
+
console.log(' claude-flow start --ui # Launch terminal-based UI');
|
|
251
|
+
console.log(' claude-flow start --web # Launch web-based UI');
|
|
252
|
+
console.log(' claude-flow start --verbose # Show detailed logs');
|
|
253
|
+
console.log();
|
|
254
|
+
console.log('Web-based UI:');
|
|
255
|
+
console.log(' The --web flag starts a web server with:');
|
|
256
|
+
console.log(' - Full-featured web console at http://localhost:3000/console');
|
|
257
|
+
console.log(' - Real-time WebSocket communication');
|
|
258
|
+
console.log(' - Mobile-responsive design');
|
|
259
|
+
console.log(' - Multiple themes and customization options');
|
|
260
|
+
console.log(' - Claude Flow swarm integration');
|
|
261
|
+
console.log();
|
|
262
|
+
console.log('Terminal-based UI:');
|
|
263
|
+
console.log(' The --ui flag launches an advanced multi-view interface with:');
|
|
264
|
+
console.log();
|
|
265
|
+
console.log(' Views (press 1-6 to switch):');
|
|
266
|
+
console.log(' 1. Process Management - Start/stop individual components');
|
|
267
|
+
console.log(' 2. System Status - Health metrics and resource usage');
|
|
268
|
+
console.log(' 3. Orchestration - Agent and task management');
|
|
269
|
+
console.log(' 4. Memory Bank - Namespace browser and operations');
|
|
270
|
+
console.log(' 5. System Logs - Real-time log viewer with filters');
|
|
271
|
+
console.log(' 6. Help - Comprehensive keyboard shortcuts');
|
|
272
|
+
console.log();
|
|
273
|
+
console.log(' Features:');
|
|
274
|
+
console.log(' - Color-coded status indicators');
|
|
275
|
+
console.log(' - Real-time updates and monitoring');
|
|
276
|
+
console.log(' - Context-sensitive controls');
|
|
277
|
+
console.log(' - Tab navigation between views');
|
|
278
|
+
console.log();
|
|
279
|
+
console.log('Notes:');
|
|
280
|
+
console.log(' - Requires "claude-flow init" to be run first');
|
|
281
|
+
console.log(' - Interactive mode shows real-time system status');
|
|
282
|
+
console.log(' - Daemon mode runs in background (check logs)');
|
|
283
|
+
console.log(' - Use "claude-flow status" to check if running');
|
|
284
|
+
console.log(' - Use Ctrl+C or "claude-flow stop" to shutdown');
|
|
285
|
+
}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
// status.js - System status and monitoring commands
|
|
2
|
+
import { printSuccess, printError, printWarning } from '../utils.js';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
// Removed Deno import from '../node-compat.js';
|
|
5
|
+
|
|
6
|
+
export async function statusCommand(subArgs, flags) {
|
|
7
|
+
const verbose = subArgs.includes('--verbose') || subArgs.includes('-v') || flags.verbose;
|
|
8
|
+
const json = subArgs.includes('--json') || flags.json;
|
|
9
|
+
|
|
10
|
+
const status = await getSystemStatus(verbose);
|
|
11
|
+
|
|
12
|
+
if (json) {
|
|
13
|
+
console.log(JSON.stringify(status, null, 2));
|
|
14
|
+
} else {
|
|
15
|
+
displayStatus(status, verbose);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function getSystemStatus(verbose = false) {
|
|
20
|
+
const status = {
|
|
21
|
+
timestamp: Date.now(),
|
|
22
|
+
version: '2.0.0-alpha.83',
|
|
23
|
+
orchestrator: {
|
|
24
|
+
running: false,
|
|
25
|
+
uptime: 0,
|
|
26
|
+
status: 'Not Running',
|
|
27
|
+
},
|
|
28
|
+
agents: {
|
|
29
|
+
active: 0,
|
|
30
|
+
total: 0,
|
|
31
|
+
types: {},
|
|
32
|
+
},
|
|
33
|
+
tasks: {
|
|
34
|
+
queued: 0,
|
|
35
|
+
running: 0,
|
|
36
|
+
completed: 0,
|
|
37
|
+
failed: 0,
|
|
38
|
+
},
|
|
39
|
+
memory: {
|
|
40
|
+
status: 'Ready',
|
|
41
|
+
entries: await getMemoryStats(),
|
|
42
|
+
size: '0.37 KB',
|
|
43
|
+
},
|
|
44
|
+
terminal: {
|
|
45
|
+
status: 'Ready',
|
|
46
|
+
poolSize: 10,
|
|
47
|
+
active: 0,
|
|
48
|
+
},
|
|
49
|
+
mcp: {
|
|
50
|
+
status: 'Stopped',
|
|
51
|
+
port: null,
|
|
52
|
+
connections: 0,
|
|
53
|
+
},
|
|
54
|
+
resources: verbose ? await getResourceUsage() : null,
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return status;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async function getMemoryStats() {
|
|
61
|
+
try {
|
|
62
|
+
const memoryStore = './memory/memory-store.json';
|
|
63
|
+
const content = await fs.readFile(memoryStore, 'utf8');
|
|
64
|
+
const data = JSON.parse(content);
|
|
65
|
+
|
|
66
|
+
let totalEntries = 0;
|
|
67
|
+
for (const entries of Object.values(data)) {
|
|
68
|
+
totalEntries += entries.length;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return totalEntries;
|
|
72
|
+
} catch {
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async function getResourceUsage() {
|
|
78
|
+
// Get system resource information
|
|
79
|
+
try {
|
|
80
|
+
// Dynamic import for cross-platform compatibility
|
|
81
|
+
let os;
|
|
82
|
+
try {
|
|
83
|
+
os = await import('node:os');
|
|
84
|
+
} catch {
|
|
85
|
+
try {
|
|
86
|
+
os = await import('os');
|
|
87
|
+
} catch {
|
|
88
|
+
// Fallback for environments without os module
|
|
89
|
+
return {
|
|
90
|
+
memory: { usage: 'N/A (os module unavailable)' },
|
|
91
|
+
cpu: { cores: 'Unknown', load: 'Unknown' },
|
|
92
|
+
platform: { type: 'Unknown', error: 'os module not available' },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Node.js doesn't have systemMemoryInfo, use os module instead
|
|
98
|
+
const totalMem = os.totalmem();
|
|
99
|
+
const freeMem = os.freemem();
|
|
100
|
+
const memInfo = {
|
|
101
|
+
total: totalMem,
|
|
102
|
+
free: freeMem,
|
|
103
|
+
available: freeMem,
|
|
104
|
+
buffers: 0,
|
|
105
|
+
cached: 0,
|
|
106
|
+
swapTotal: 0,
|
|
107
|
+
swapFree: 0,
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// Get CPU info
|
|
111
|
+
let cpuCores = os.cpus().length;
|
|
112
|
+
let loadAvg = 'N/A';
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
const loadAvgData = os.loadavg();
|
|
116
|
+
loadAvg = `${loadAvgData[0].toFixed(2)}, ${loadAvgData[1].toFixed(2)}, ${loadAvgData[2].toFixed(2)}`;
|
|
117
|
+
} catch (e) {
|
|
118
|
+
// Load average not available on all platforms
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return {
|
|
122
|
+
memory: {
|
|
123
|
+
total: formatBytes(memInfo.total),
|
|
124
|
+
free: formatBytes(memInfo.free),
|
|
125
|
+
available: formatBytes(memInfo.available),
|
|
126
|
+
usage: `${Math.round(((memInfo.total - memInfo.available) / memInfo.total) * 100)}%`,
|
|
127
|
+
},
|
|
128
|
+
cpu: {
|
|
129
|
+
cores: cpuCores,
|
|
130
|
+
load: loadAvg,
|
|
131
|
+
model: os.cpus()[0]?.model || 'Unknown',
|
|
132
|
+
},
|
|
133
|
+
platform: {
|
|
134
|
+
type: os.type(),
|
|
135
|
+
release: os.release(),
|
|
136
|
+
arch: os.arch(),
|
|
137
|
+
uptime: formatUptime(os.uptime() * 1000),
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
} catch (error) {
|
|
141
|
+
return {
|
|
142
|
+
memory: { usage: 'Unknown' },
|
|
143
|
+
cpu: { cores: 'Unknown', load: 'Unknown' },
|
|
144
|
+
platform: { type: 'Unknown', error: error.message },
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function displayStatus(status, verbose) {
|
|
150
|
+
printSuccess('Claude-Flow System Status:');
|
|
151
|
+
|
|
152
|
+
// Overall status
|
|
153
|
+
const overallStatus = status.orchestrator.running ? 'š¢ Running' : 'š” Not Running';
|
|
154
|
+
console.log(
|
|
155
|
+
`${overallStatus} (orchestrator ${status.orchestrator.running ? 'active' : 'not started'})`,
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
// Core components
|
|
159
|
+
console.log(`š¤ Agents: ${status.agents.active} active`);
|
|
160
|
+
console.log(`š Tasks: ${status.tasks.queued} in queue`);
|
|
161
|
+
console.log(`š¾ Memory: ${status.memory.status} (${status.memory.entries} entries)`);
|
|
162
|
+
console.log(`š„ļø Terminal Pool: ${status.terminal.status}`);
|
|
163
|
+
console.log(`š MCP Server: ${status.mcp.status}`);
|
|
164
|
+
|
|
165
|
+
if (verbose) {
|
|
166
|
+
console.log('\nš Detailed Information:');
|
|
167
|
+
|
|
168
|
+
// Orchestrator details
|
|
169
|
+
console.log('\nš Orchestrator:');
|
|
170
|
+
console.log(` Status: ${status.orchestrator.status}`);
|
|
171
|
+
console.log(` Uptime: ${formatUptime(status.orchestrator.uptime)}`);
|
|
172
|
+
|
|
173
|
+
// Agent details
|
|
174
|
+
console.log('\nš¤ Agent Details:');
|
|
175
|
+
console.log(` Total Registered: ${status.agents.total}`);
|
|
176
|
+
console.log(` Currently Active: ${status.agents.active}`);
|
|
177
|
+
if (Object.keys(status.agents.types).length > 0) {
|
|
178
|
+
console.log(' Types:');
|
|
179
|
+
for (const [type, count] of Object.entries(status.agents.types)) {
|
|
180
|
+
console.log(` ${type}: ${count}`);
|
|
181
|
+
}
|
|
182
|
+
} else {
|
|
183
|
+
console.log(' No agents currently registered');
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Task details
|
|
187
|
+
console.log('\nš Task Queue:');
|
|
188
|
+
console.log(` Queued: ${status.tasks.queued}`);
|
|
189
|
+
console.log(` Running: ${status.tasks.running}`);
|
|
190
|
+
console.log(` Completed: ${status.tasks.completed}`);
|
|
191
|
+
console.log(` Failed: ${status.tasks.failed}`);
|
|
192
|
+
|
|
193
|
+
// Memory details
|
|
194
|
+
console.log('\nš¾ Memory System:');
|
|
195
|
+
console.log(` Total Entries: ${status.memory.entries}`);
|
|
196
|
+
console.log(` Database Size: ${status.memory.size}`);
|
|
197
|
+
console.log(` Status: ${status.memory.status}`);
|
|
198
|
+
|
|
199
|
+
// Terminal details
|
|
200
|
+
console.log('\nš„ļø Terminal Pool:');
|
|
201
|
+
console.log(` Pool Size: ${status.terminal.poolSize}`);
|
|
202
|
+
console.log(` Active Sessions: ${status.terminal.active}`);
|
|
203
|
+
console.log(` Status: ${status.terminal.status}`);
|
|
204
|
+
|
|
205
|
+
// MCP details
|
|
206
|
+
console.log('\nš MCP Server:');
|
|
207
|
+
console.log(` Status: ${status.mcp.status}`);
|
|
208
|
+
console.log(` Port: ${status.mcp.port || 'Not configured'}`);
|
|
209
|
+
console.log(` Active Connections: ${status.mcp.connections}`);
|
|
210
|
+
|
|
211
|
+
// Resource usage
|
|
212
|
+
if (status.resources) {
|
|
213
|
+
console.log('\nš Resource Usage:');
|
|
214
|
+
console.log(
|
|
215
|
+
` Memory: ${status.resources.memory.usage} of ${status.resources.memory.total}`,
|
|
216
|
+
);
|
|
217
|
+
console.log(` Available: ${status.resources.memory.available}`);
|
|
218
|
+
console.log(` CPU Cores: ${status.resources.cpu.cores}`);
|
|
219
|
+
console.log(` CPU Load: ${status.resources.cpu.load}`);
|
|
220
|
+
if (status.resources.cpu.model) {
|
|
221
|
+
console.log(` CPU Model: ${status.resources.cpu.model}`);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (status.resources.platform) {
|
|
225
|
+
console.log('\nš» Platform:');
|
|
226
|
+
console.log(
|
|
227
|
+
` OS: ${status.resources.platform.type} ${status.resources.platform.release}`,
|
|
228
|
+
);
|
|
229
|
+
console.log(` Architecture: ${status.resources.platform.arch}`);
|
|
230
|
+
console.log(` System Uptime: ${status.resources.platform.uptime}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
console.log('\nš Status captured at:', new Date(status.timestamp).toLocaleString());
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Recommendations
|
|
238
|
+
console.log('\nš” Quick Actions:');
|
|
239
|
+
if (!status.orchestrator.running) {
|
|
240
|
+
console.log(' Run "claude-flow start" to begin orchestration');
|
|
241
|
+
}
|
|
242
|
+
if (status.agents.active === 0) {
|
|
243
|
+
console.log(' Run "claude-flow agent spawn researcher" to create an agent');
|
|
244
|
+
}
|
|
245
|
+
if (status.memory.entries === 0) {
|
|
246
|
+
console.log(' Run "claude-flow memory store key value" to test memory');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
function formatBytes(bytes) {
|
|
251
|
+
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
252
|
+
let size = bytes;
|
|
253
|
+
let unitIndex = 0;
|
|
254
|
+
|
|
255
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
256
|
+
size /= 1024;
|
|
257
|
+
unitIndex++;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return `${size.toFixed(2)} ${units[unitIndex]}`;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
function formatUptime(milliseconds) {
|
|
264
|
+
if (milliseconds === 0) return '0s';
|
|
265
|
+
|
|
266
|
+
const seconds = Math.floor(milliseconds / 1000);
|
|
267
|
+
const minutes = Math.floor(seconds / 60);
|
|
268
|
+
const hours = Math.floor(minutes / 60);
|
|
269
|
+
const days = Math.floor(hours / 24);
|
|
270
|
+
|
|
271
|
+
if (days > 0) return `${days}d ${hours % 24}h ${minutes % 60}m`;
|
|
272
|
+
if (hours > 0) return `${hours}h ${minutes % 60}m ${seconds % 60}s`;
|
|
273
|
+
if (minutes > 0) return `${minutes}m ${seconds % 60}s`;
|
|
274
|
+
return `${seconds}s`;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Allow direct execution for testing
|
|
278
|
+
if (import.meta.main) {
|
|
279
|
+
const args = [];
|
|
280
|
+
const flags = {};
|
|
281
|
+
|
|
282
|
+
// Parse arguments and flags from Deno.args if available
|
|
283
|
+
if (typeof Deno !== 'undefined' && Deno.args) {
|
|
284
|
+
for (let i = 0; i < Deno.args.length; i++) {
|
|
285
|
+
const arg = Deno.args[i];
|
|
286
|
+
if (arg.startsWith('--')) {
|
|
287
|
+
const flagName = arg.substring(2);
|
|
288
|
+
const nextArg = Deno.args[i + 1];
|
|
289
|
+
|
|
290
|
+
if (nextArg && !nextArg.startsWith('--')) {
|
|
291
|
+
flags[flagName] = nextArg;
|
|
292
|
+
i++; // Skip the next argument
|
|
293
|
+
} else {
|
|
294
|
+
flags[flagName] = true;
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
args.push(arg);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
await statusCommand(args, flags);
|
|
303
|
+
}
|