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,361 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hive Mind Database Optimization Command
|
|
3
|
+
*
|
|
4
|
+
* Safe optimization of existing hive mind databases without breaking compatibility
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { cwd, exit } from '../node-compat.js';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import { existsSync } from 'fs';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
import inquirer from 'inquirer';
|
|
12
|
+
import {
|
|
13
|
+
optimizeHiveMindDatabase,
|
|
14
|
+
performMaintenance,
|
|
15
|
+
generateOptimizationReport,
|
|
16
|
+
} from './hive-mind/db-optimizer.js';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Show help for hive-mind-optimize command
|
|
20
|
+
*/
|
|
21
|
+
function showOptimizeHelp() {
|
|
22
|
+
console.log(`
|
|
23
|
+
${chalk.yellow('🔧 Hive Mind Database Optimization')}
|
|
24
|
+
|
|
25
|
+
${chalk.bold('USAGE:')}
|
|
26
|
+
claude-flow hive-mind-optimize [options]
|
|
27
|
+
|
|
28
|
+
${chalk.bold('OPTIONS:')}
|
|
29
|
+
--auto Run optimization without prompts
|
|
30
|
+
--vacuum Vacuum database (requires exclusive access)
|
|
31
|
+
--clean-memory Clean old memory entries
|
|
32
|
+
--archive-tasks Archive completed tasks
|
|
33
|
+
--check-integrity Run integrity check
|
|
34
|
+
--report Generate optimization report only
|
|
35
|
+
--memory-days <n> Memory retention days (default: 30)
|
|
36
|
+
--task-days <n> Task retention days (default: 7)
|
|
37
|
+
--verbose Show detailed output
|
|
38
|
+
|
|
39
|
+
${chalk.bold('EXAMPLES:')}
|
|
40
|
+
${chalk.gray('# Interactive optimization')}
|
|
41
|
+
claude-flow hive-mind-optimize
|
|
42
|
+
|
|
43
|
+
${chalk.gray('# Auto-optimize with all features')}
|
|
44
|
+
claude-flow hive-mind-optimize --auto --vacuum --clean-memory --archive-tasks
|
|
45
|
+
|
|
46
|
+
${chalk.gray('# Generate report only')}
|
|
47
|
+
claude-flow hive-mind-optimize --report
|
|
48
|
+
|
|
49
|
+
${chalk.gray('# Custom retention periods')}
|
|
50
|
+
claude-flow hive-mind-optimize --clean-memory --memory-days 60 --task-days 14
|
|
51
|
+
|
|
52
|
+
${chalk.bold('FEATURES:')}
|
|
53
|
+
${chalk.cyan('🚀')} Performance indexes for faster queries
|
|
54
|
+
${chalk.cyan('📊')} Query optimization and statistics
|
|
55
|
+
${chalk.cyan('🧹')} Memory cleanup and archiving
|
|
56
|
+
${chalk.cyan('📈')} Performance tracking tables
|
|
57
|
+
${chalk.cyan('🔍')} Behavioral pattern analysis
|
|
58
|
+
${chalk.cyan('💾')} Backward-compatible upgrades
|
|
59
|
+
|
|
60
|
+
${chalk.bold('SAFETY:')}
|
|
61
|
+
• All changes are backward-compatible
|
|
62
|
+
• Existing data is preserved
|
|
63
|
+
• Automatic backups before major operations
|
|
64
|
+
• Rollback capability on errors
|
|
65
|
+
`);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Main optimization command handler
|
|
70
|
+
*/
|
|
71
|
+
export async function hiveMindOptimizeCommand(args, flags) {
|
|
72
|
+
// Show help if requested
|
|
73
|
+
if (flags.help || flags.h) {
|
|
74
|
+
showOptimizeHelp();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Check if hive mind is initialized
|
|
79
|
+
const hiveMindDir = path.join(cwd(), '.hive-mind');
|
|
80
|
+
const dbPath = path.join(hiveMindDir, 'hive.db');
|
|
81
|
+
|
|
82
|
+
if (!existsSync(dbPath)) {
|
|
83
|
+
console.error(chalk.red('Error: Hive Mind database not found'));
|
|
84
|
+
console.log('Run "claude-flow hive-mind init" first');
|
|
85
|
+
exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Generate report only
|
|
89
|
+
if (flags.report) {
|
|
90
|
+
await generateReport(dbPath);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Auto mode or interactive
|
|
95
|
+
if (flags.auto) {
|
|
96
|
+
await runOptimization(dbPath, {
|
|
97
|
+
vacuum: flags.vacuum || false,
|
|
98
|
+
cleanMemory: flags['clean-memory'] || false,
|
|
99
|
+
archiveTasks: flags['archive-tasks'] || false,
|
|
100
|
+
checkIntegrity: flags['check-integrity'] || false,
|
|
101
|
+
memoryRetentionDays: flags['memory-days'] || 30,
|
|
102
|
+
taskRetentionDays: flags['task-days'] || 7,
|
|
103
|
+
verbose: flags.verbose || false,
|
|
104
|
+
});
|
|
105
|
+
} else {
|
|
106
|
+
await interactiveOptimization(dbPath, flags);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Interactive optimization wizard
|
|
112
|
+
*/
|
|
113
|
+
async function interactiveOptimization(dbPath, flags) {
|
|
114
|
+
console.log(chalk.yellow('\n🔧 Hive Mind Database Optimization Wizard\n'));
|
|
115
|
+
|
|
116
|
+
// Generate current report
|
|
117
|
+
const report = await generateOptimizationReport(dbPath);
|
|
118
|
+
|
|
119
|
+
if (report) {
|
|
120
|
+
console.log(chalk.cyan('Current Database Status:'));
|
|
121
|
+
console.log(` Schema Version: ${report.schemaVersion}`);
|
|
122
|
+
console.log(` Tables: ${Object.keys(report.tables).length}`);
|
|
123
|
+
console.log(` Indexes: ${report.indexes.length}`);
|
|
124
|
+
|
|
125
|
+
let totalSize = 0;
|
|
126
|
+
let totalRows = 0;
|
|
127
|
+
Object.entries(report.tables).forEach(([name, stats]) => {
|
|
128
|
+
totalSize += stats.sizeBytes;
|
|
129
|
+
totalRows += stats.rowCount;
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
console.log(` Total Size: ${(totalSize / 1024 / 1024).toFixed(2)} MB`);
|
|
133
|
+
console.log(` Total Rows: ${totalRows.toLocaleString()}`);
|
|
134
|
+
console.log('');
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Check what optimizations are needed
|
|
138
|
+
const schemaVersion = report?.schemaVersion || 1.0;
|
|
139
|
+
const needsOptimization = schemaVersion < 1.5;
|
|
140
|
+
|
|
141
|
+
if (!needsOptimization) {
|
|
142
|
+
console.log(chalk.green('✓ Database is already fully optimized!\n'));
|
|
143
|
+
|
|
144
|
+
const { maintenance } = await inquirer.prompt([
|
|
145
|
+
{
|
|
146
|
+
type: 'confirm',
|
|
147
|
+
name: 'maintenance',
|
|
148
|
+
message: 'Would you like to perform maintenance tasks?',
|
|
149
|
+
default: true,
|
|
150
|
+
},
|
|
151
|
+
]);
|
|
152
|
+
|
|
153
|
+
if (!maintenance) {
|
|
154
|
+
console.log(chalk.gray('No changes made.'));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
console.log(
|
|
159
|
+
chalk.yellow(`⚠ Database can be optimized from version ${schemaVersion} to 1.5\n`),
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Ask for optimization options
|
|
164
|
+
const answers = await inquirer.prompt([
|
|
165
|
+
{
|
|
166
|
+
type: 'checkbox',
|
|
167
|
+
name: 'operations',
|
|
168
|
+
message: 'Select operations to perform:',
|
|
169
|
+
choices: [
|
|
170
|
+
{
|
|
171
|
+
name: 'Apply performance optimizations',
|
|
172
|
+
value: 'optimize',
|
|
173
|
+
checked: needsOptimization,
|
|
174
|
+
disabled: !needsOptimization,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: 'Clean old memory entries',
|
|
178
|
+
value: 'cleanMemory',
|
|
179
|
+
checked: true,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
name: 'Archive completed tasks',
|
|
183
|
+
value: 'archiveTasks',
|
|
184
|
+
checked: true,
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'Vacuum database (requires exclusive access)',
|
|
188
|
+
value: 'vacuum',
|
|
189
|
+
checked: false,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
name: 'Check database integrity',
|
|
193
|
+
value: 'checkIntegrity',
|
|
194
|
+
checked: true,
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
type: 'number',
|
|
200
|
+
name: 'memoryDays',
|
|
201
|
+
message: 'Memory retention days:',
|
|
202
|
+
default: 30,
|
|
203
|
+
when: (answers) => answers.operations.includes('cleanMemory'),
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
type: 'number',
|
|
207
|
+
name: 'taskDays',
|
|
208
|
+
message: 'Task retention days:',
|
|
209
|
+
default: 7,
|
|
210
|
+
when: (answers) => answers.operations.includes('archiveTasks'),
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
type: 'confirm',
|
|
214
|
+
name: 'confirm',
|
|
215
|
+
message: 'Proceed with optimization?',
|
|
216
|
+
default: true,
|
|
217
|
+
},
|
|
218
|
+
]);
|
|
219
|
+
|
|
220
|
+
if (!answers.confirm) {
|
|
221
|
+
console.log(chalk.gray('Optimization cancelled.'));
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Create backup if doing major operations
|
|
226
|
+
if (answers.operations.includes('optimize') || answers.operations.includes('vacuum')) {
|
|
227
|
+
console.log(chalk.blue('\n📦 Creating backup...'));
|
|
228
|
+
await createBackup(dbPath);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Run optimization
|
|
232
|
+
const options = {
|
|
233
|
+
vacuum: answers.operations.includes('vacuum'),
|
|
234
|
+
cleanMemory: answers.operations.includes('cleanMemory'),
|
|
235
|
+
archiveTasks: answers.operations.includes('archiveTasks'),
|
|
236
|
+
checkIntegrity: answers.operations.includes('checkIntegrity'),
|
|
237
|
+
memoryRetentionDays: answers.memoryDays || 30,
|
|
238
|
+
taskRetentionDays: answers.taskDays || 7,
|
|
239
|
+
verbose: flags.verbose || false,
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
await runOptimization(dbPath, options);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* Run database optimization
|
|
247
|
+
*/
|
|
248
|
+
async function runOptimization(dbPath, options) {
|
|
249
|
+
console.log(chalk.blue('\n🚀 Starting optimization...\n'));
|
|
250
|
+
|
|
251
|
+
// Run schema optimization
|
|
252
|
+
const result = await optimizeHiveMindDatabase(dbPath, options);
|
|
253
|
+
|
|
254
|
+
if (!result.success) {
|
|
255
|
+
console.error(chalk.red('\n❌ Optimization failed:', result.error));
|
|
256
|
+
exit(1);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// Run maintenance tasks
|
|
260
|
+
if (options.cleanMemory || options.archiveTasks || options.checkIntegrity) {
|
|
261
|
+
console.log(chalk.blue('\n🧹 Running maintenance tasks...\n'));
|
|
262
|
+
await performMaintenance(dbPath, options);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Generate final report
|
|
266
|
+
console.log(chalk.blue('\n📊 Generating optimization report...\n'));
|
|
267
|
+
await generateReport(dbPath);
|
|
268
|
+
|
|
269
|
+
console.log(chalk.green('\n✅ Optimization complete!\n'));
|
|
270
|
+
|
|
271
|
+
// Show tips
|
|
272
|
+
console.log(chalk.bold('💡 Tips:'));
|
|
273
|
+
console.log(' • Monitor performance with: claude-flow hive-mind metrics');
|
|
274
|
+
console.log(' • Schedule regular maintenance: claude-flow hive-mind-optimize --auto');
|
|
275
|
+
console.log(' • Check swarm status: claude-flow hive-mind status');
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Generate and display optimization report
|
|
280
|
+
*/
|
|
281
|
+
async function generateReport(dbPath) {
|
|
282
|
+
const report = await generateOptimizationReport(dbPath);
|
|
283
|
+
|
|
284
|
+
if (!report) {
|
|
285
|
+
console.error(chalk.red('Failed to generate report'));
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
console.log(chalk.bold('\n📊 Database Optimization Report\n'));
|
|
290
|
+
console.log(chalk.cyan('Schema Version:'), report.schemaVersion);
|
|
291
|
+
console.log(chalk.cyan('Indexes:'), report.indexes.length);
|
|
292
|
+
|
|
293
|
+
console.log(chalk.cyan('\nTable Statistics:'));
|
|
294
|
+
Object.entries(report.tables).forEach(([name, stats]) => {
|
|
295
|
+
const sizeMB = (stats.sizeBytes / 1024 / 1024).toFixed(2);
|
|
296
|
+
console.log(` ${name}: ${stats.rowCount.toLocaleString()} rows (${sizeMB} MB)`);
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
if (report.performance.avgTaskCompletionMinutes > 0) {
|
|
300
|
+
console.log(chalk.cyan('\nPerformance Metrics:'));
|
|
301
|
+
console.log(
|
|
302
|
+
` Avg Task Completion: ${report.performance.avgTaskCompletionMinutes.toFixed(1)} minutes`,
|
|
303
|
+
);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Optimization suggestions
|
|
307
|
+
console.log(chalk.cyan('\nOptimization Status:'));
|
|
308
|
+
if (report.schemaVersion >= 1.5) {
|
|
309
|
+
console.log(chalk.green(' ✓ Database is fully optimized'));
|
|
310
|
+
} else {
|
|
311
|
+
console.log(chalk.yellow(` ⚠ Can be upgraded from v${report.schemaVersion} to v1.5`));
|
|
312
|
+
console.log(chalk.gray(' Run: claude-flow hive-mind-optimize'));
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Check for large tables
|
|
316
|
+
const largeMemoryTable = report.tables.collective_memory?.rowCount > 10000;
|
|
317
|
+
const largeTaskTable = report.tables.tasks?.rowCount > 50000;
|
|
318
|
+
|
|
319
|
+
if (largeMemoryTable || largeTaskTable) {
|
|
320
|
+
console.log(chalk.cyan('\nMaintenance Recommendations:'));
|
|
321
|
+
if (largeMemoryTable) {
|
|
322
|
+
console.log(chalk.yellow(' • Consider cleaning old memory entries'));
|
|
323
|
+
}
|
|
324
|
+
if (largeTaskTable) {
|
|
325
|
+
console.log(chalk.yellow(' • Consider archiving completed tasks'));
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Create database backup
|
|
332
|
+
*/
|
|
333
|
+
async function createBackup(dbPath) {
|
|
334
|
+
try {
|
|
335
|
+
const { execSync } = await import('child_process');
|
|
336
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
337
|
+
const backupPath = dbPath.replace('.db', `-backup-${timestamp}.db`);
|
|
338
|
+
|
|
339
|
+
execSync(`cp "${dbPath}" "${backupPath}"`);
|
|
340
|
+
console.log(chalk.green(`✓ Backup created: ${path.basename(backupPath)}`));
|
|
341
|
+
|
|
342
|
+
return backupPath;
|
|
343
|
+
} catch (error) {
|
|
344
|
+
console.error(chalk.yellow('⚠ Backup failed:', error.message));
|
|
345
|
+
const { proceed } = await inquirer.prompt([
|
|
346
|
+
{
|
|
347
|
+
type: 'confirm',
|
|
348
|
+
name: 'proceed',
|
|
349
|
+
message: 'Continue without backup?',
|
|
350
|
+
default: false,
|
|
351
|
+
},
|
|
352
|
+
]);
|
|
353
|
+
|
|
354
|
+
if (!proceed) {
|
|
355
|
+
exit(1);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Export for CLI
|
|
361
|
+
export default hiveMindOptimizeCommand;
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
const chalk = require('chalk');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const Database = require('better-sqlite3');
|
|
5
|
+
|
|
6
|
+
// Interactive Wizard Implementation
|
|
7
|
+
async function runInteractiveWizard() {
|
|
8
|
+
console.log(chalk.blue.bold('🐝 Welcome to the Hive Mind Setup Wizard!'));
|
|
9
|
+
console.log(chalk.gray('This wizard will help you create your first intelligent AI swarm.\n'));
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
// Check if system is initialized
|
|
13
|
+
const configPath = path.join(process.cwd(), '.hive-mind', 'config.json');
|
|
14
|
+
let config = { initialized: false };
|
|
15
|
+
|
|
16
|
+
if (fs.existsSync(configPath)) {
|
|
17
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (!config.initialized) {
|
|
21
|
+
console.log(chalk.yellow('📋 Step 1: Initializing Hive Mind System...'));
|
|
22
|
+
await initializeHiveMind();
|
|
23
|
+
console.log(chalk.green('✅ Hive Mind system initialized!\n'));
|
|
24
|
+
} else {
|
|
25
|
+
console.log(chalk.green('✅ Hive Mind system already initialized!\n'));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Guided objective input
|
|
29
|
+
console.log(chalk.blue('📋 Step 2: Define Your Objective'));
|
|
30
|
+
console.log(chalk.gray('What would you like your Hive Mind swarm to accomplish?'));
|
|
31
|
+
console.log(chalk.gray('Examples:'));
|
|
32
|
+
console.log(chalk.gray(' • "Build a REST API for user management"'));
|
|
33
|
+
console.log(chalk.gray(' • "Research and analyze market trends"'));
|
|
34
|
+
console.log(chalk.gray(' • "Optimize database performance"'));
|
|
35
|
+
console.log(chalk.gray(' • "Create comprehensive test suite"\n'));
|
|
36
|
+
|
|
37
|
+
const objective = 'Build a modern web application'; // Placeholder for demo
|
|
38
|
+
console.log(chalk.cyan(`💡 Using example objective: "${objective}"`));
|
|
39
|
+
console.log(chalk.gray('(In full wizard, this would be interactive input)\n'));
|
|
40
|
+
|
|
41
|
+
// Configuration selection
|
|
42
|
+
console.log(chalk.blue('📋 Step 3: Choose Configuration'));
|
|
43
|
+
console.log(chalk.gray('Based on your objective, here are recommended settings:\n'));
|
|
44
|
+
|
|
45
|
+
const swarmConfig = {
|
|
46
|
+
topology: 'hierarchical',
|
|
47
|
+
coordination: 'queen',
|
|
48
|
+
agents: 5,
|
|
49
|
+
complexity: 'medium',
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
console.log(chalk.cyan('📊 Recommended Configuration:'));
|
|
53
|
+
console.log(chalk.gray(` • Topology: ${swarmConfig.topology} (best for structured tasks)`));
|
|
54
|
+
console.log(
|
|
55
|
+
chalk.gray(` • Coordination: ${swarmConfig.coordination} (fastest decision making)`),
|
|
56
|
+
);
|
|
57
|
+
console.log(
|
|
58
|
+
chalk.gray(` • Agent Count: ${swarmConfig.agents} (optimal for medium complexity)`),
|
|
59
|
+
);
|
|
60
|
+
console.log(chalk.gray(` • Complexity: ${swarmConfig.complexity}\n`));
|
|
61
|
+
|
|
62
|
+
// Create the swarm
|
|
63
|
+
console.log(chalk.blue('📋 Step 4: Creating Your Swarm...'));
|
|
64
|
+
console.log(chalk.gray('🔄 Spawning intelligent agents...'));
|
|
65
|
+
|
|
66
|
+
const result = await createSwarm(objective, swarmConfig);
|
|
67
|
+
|
|
68
|
+
if (result.success) {
|
|
69
|
+
console.log(chalk.green('🎉 Swarm created successfully!\n'));
|
|
70
|
+
|
|
71
|
+
console.log(chalk.blue.bold('🐝 Your Hive Mind is Ready!'));
|
|
72
|
+
console.log(chalk.gray('Your intelligent swarm has been created and is ready to work.\n'));
|
|
73
|
+
|
|
74
|
+
console.log(chalk.cyan('📱 Next Steps:'));
|
|
75
|
+
console.log(chalk.gray(' • View status: claude-flow hive-mind status'));
|
|
76
|
+
console.log(chalk.gray(' • Monitor progress: claude-flow hive-mind metrics'));
|
|
77
|
+
console.log(chalk.gray(' • Create another swarm: claude-flow hive-mind wizard'));
|
|
78
|
+
console.log(chalk.gray(' • Learn more: claude-flow help hive-mind\n'));
|
|
79
|
+
|
|
80
|
+
console.log(chalk.green.bold('🚀 Happy swarming!'));
|
|
81
|
+
} else {
|
|
82
|
+
console.log(chalk.red('❌ Failed to create swarm. Please try again.'));
|
|
83
|
+
}
|
|
84
|
+
} catch (error) {
|
|
85
|
+
console.log(chalk.red(`❌ Wizard error: ${error.message}`));
|
|
86
|
+
console.log(chalk.gray('You can try manual setup with: claude-flow hive-mind init'));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Initialize Hive Mind system
|
|
91
|
+
async function initializeHiveMind() {
|
|
92
|
+
const hiveMindDir = path.join(process.cwd(), '.hive-mind');
|
|
93
|
+
|
|
94
|
+
// Create directory if it doesn't exist
|
|
95
|
+
if (!fs.existsSync(hiveMindDir)) {
|
|
96
|
+
fs.mkdirSync(hiveMindDir, { recursive: true });
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Create configuration file
|
|
100
|
+
const config = {
|
|
101
|
+
version: '2.0.0',
|
|
102
|
+
initialized: new Date().toISOString(),
|
|
103
|
+
defaults: {
|
|
104
|
+
queenType: 'strategic',
|
|
105
|
+
maxWorkers: 8,
|
|
106
|
+
consensusAlgorithm: 'majority',
|
|
107
|
+
memorySize: 100,
|
|
108
|
+
autoScale: true,
|
|
109
|
+
encryption: false,
|
|
110
|
+
},
|
|
111
|
+
mcpTools: {
|
|
112
|
+
enabled: true,
|
|
113
|
+
parallel: true,
|
|
114
|
+
timeout: 60000,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const configPath = path.join(hiveMindDir, 'config.json');
|
|
119
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
120
|
+
|
|
121
|
+
// Initialize SQLite database
|
|
122
|
+
const dbPath = path.join(hiveMindDir, 'hive.db');
|
|
123
|
+
const db = new sqlite3.Database(dbPath);
|
|
124
|
+
|
|
125
|
+
await new Promise((resolve, reject) => {
|
|
126
|
+
db.serialize(() => {
|
|
127
|
+
// Create tables
|
|
128
|
+
db.run(`
|
|
129
|
+
CREATE TABLE IF NOT EXISTS swarms (
|
|
130
|
+
id TEXT PRIMARY KEY,
|
|
131
|
+
name TEXT NOT NULL,
|
|
132
|
+
objective TEXT,
|
|
133
|
+
status TEXT DEFAULT 'active',
|
|
134
|
+
queen_type TEXT DEFAULT 'strategic',
|
|
135
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
136
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
137
|
+
)
|
|
138
|
+
`);
|
|
139
|
+
|
|
140
|
+
db.run(`
|
|
141
|
+
CREATE TABLE IF NOT EXISTS agents (
|
|
142
|
+
id TEXT PRIMARY KEY,
|
|
143
|
+
swarm_id TEXT,
|
|
144
|
+
name TEXT NOT NULL,
|
|
145
|
+
type TEXT NOT NULL,
|
|
146
|
+
role TEXT,
|
|
147
|
+
status TEXT DEFAULT 'idle',
|
|
148
|
+
capabilities TEXT,
|
|
149
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
150
|
+
FOREIGN KEY (swarm_id) REFERENCES swarms(id)
|
|
151
|
+
)
|
|
152
|
+
`);
|
|
153
|
+
|
|
154
|
+
db.run(`
|
|
155
|
+
CREATE TABLE IF NOT EXISTS tasks (
|
|
156
|
+
id TEXT PRIMARY KEY,
|
|
157
|
+
swarm_id TEXT,
|
|
158
|
+
description TEXT,
|
|
159
|
+
status TEXT DEFAULT 'pending',
|
|
160
|
+
result TEXT,
|
|
161
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
162
|
+
FOREIGN KEY (swarm_id) REFERENCES swarms(id)
|
|
163
|
+
)
|
|
164
|
+
`);
|
|
165
|
+
|
|
166
|
+
db.run(`
|
|
167
|
+
CREATE TABLE IF NOT EXISTS collective_memory (
|
|
168
|
+
id TEXT PRIMARY KEY,
|
|
169
|
+
swarm_id TEXT,
|
|
170
|
+
key TEXT NOT NULL,
|
|
171
|
+
value TEXT,
|
|
172
|
+
ttl INTEGER,
|
|
173
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
174
|
+
FOREIGN KEY (swarm_id) REFERENCES swarms(id)
|
|
175
|
+
)
|
|
176
|
+
`);
|
|
177
|
+
|
|
178
|
+
db.close((err) => {
|
|
179
|
+
if (err) reject(err);
|
|
180
|
+
else resolve();
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Enhanced swarm creation with better UX
|
|
187
|
+
async function createSwarm(objective, config) {
|
|
188
|
+
try {
|
|
189
|
+
// Simulate swarm creation with progress indication
|
|
190
|
+
const steps = [
|
|
191
|
+
'Initializing swarm topology...',
|
|
192
|
+
'Spawning Queen coordinator...',
|
|
193
|
+
'Creating worker agents...',
|
|
194
|
+
'Establishing communication protocols...',
|
|
195
|
+
'Setting up collective memory...',
|
|
196
|
+
'Activating swarm intelligence...',
|
|
197
|
+
];
|
|
198
|
+
|
|
199
|
+
for (let i = 0; i < steps.length; i++) {
|
|
200
|
+
process.stdout.write(chalk.gray(` ${steps[i]} `));
|
|
201
|
+
await new Promise((resolve) => setTimeout(resolve, 500)); // Simulate work
|
|
202
|
+
console.log(chalk.green('✓'));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const swarmId = `swarm-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
206
|
+
const queenId = `queen-${Date.now()}`;
|
|
207
|
+
|
|
208
|
+
// Open database
|
|
209
|
+
const dbPath = path.join(process.cwd(), '.hive-mind', 'hive.db');
|
|
210
|
+
const db = new sqlite3.Database(dbPath);
|
|
211
|
+
|
|
212
|
+
await new Promise((resolve, reject) => {
|
|
213
|
+
db.serialize(() => {
|
|
214
|
+
// Create swarm record
|
|
215
|
+
const insertSwarm = db.prepare(`
|
|
216
|
+
INSERT INTO swarms (id, name, objective, status, queen_type, created_at, updated_at)
|
|
217
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
218
|
+
`);
|
|
219
|
+
|
|
220
|
+
insertSwarm.run(
|
|
221
|
+
swarmId,
|
|
222
|
+
`hive-${Date.now()}`,
|
|
223
|
+
objective,
|
|
224
|
+
'active',
|
|
225
|
+
config.coordination,
|
|
226
|
+
new Date().toISOString(),
|
|
227
|
+
new Date().toISOString(),
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
// Create agents
|
|
231
|
+
const insertAgent = db.prepare(`
|
|
232
|
+
INSERT INTO agents (id, swarm_id, name, type, role, status, capabilities, created_at)
|
|
233
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
234
|
+
`);
|
|
235
|
+
|
|
236
|
+
// Create Queen
|
|
237
|
+
insertAgent.run(
|
|
238
|
+
queenId,
|
|
239
|
+
swarmId,
|
|
240
|
+
'Queen Coordinator',
|
|
241
|
+
'coordinator',
|
|
242
|
+
'queen',
|
|
243
|
+
'active',
|
|
244
|
+
JSON.stringify(['orchestration', 'strategy', 'coordination']),
|
|
245
|
+
new Date().toISOString(),
|
|
246
|
+
);
|
|
247
|
+
|
|
248
|
+
// Create worker agents
|
|
249
|
+
const workerTypes = ['researcher', 'coder', 'analyst', 'tester'];
|
|
250
|
+
for (let i = 0; i < config.agents - 1; i++) {
|
|
251
|
+
const agentType = workerTypes[i % workerTypes.length];
|
|
252
|
+
insertAgent.run(
|
|
253
|
+
`agent-${Date.now()}-${i}`,
|
|
254
|
+
swarmId,
|
|
255
|
+
`${agentType.charAt(0).toUpperCase() + agentType.slice(1)} Worker ${i + 1}`,
|
|
256
|
+
agentType,
|
|
257
|
+
'worker',
|
|
258
|
+
'idle',
|
|
259
|
+
JSON.stringify([agentType, 'collaboration']),
|
|
260
|
+
new Date().toISOString(),
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
insertSwarm.finalize();
|
|
265
|
+
insertAgent.finalize();
|
|
266
|
+
|
|
267
|
+
db.close((err) => {
|
|
268
|
+
if (err) reject(err);
|
|
269
|
+
else resolve();
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
return { success: true, swarmId, queenId };
|
|
275
|
+
} catch (error) {
|
|
276
|
+
console.error('Error creating swarm:', error);
|
|
277
|
+
return { success: false, error: error.message };
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
module.exports = { runInteractiveWizard };
|