moflo 4.0.5 → 4.2.0
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/agents/MIGRATION_SUMMARY.md +221 -221
- package/.claude/agents/analysis/analyze-code-quality.md +178 -178
- package/.claude/agents/analysis/code-analyzer.md +209 -209
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
- package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
- package/.claude/agents/base-template-generator.md +42 -42
- package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
- package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
- package/.claude/agents/consensus/gossip-coordinator.md +62 -62
- package/.claude/agents/consensus/performance-benchmarker.md +850 -850
- package/.claude/agents/consensus/quorum-manager.md +822 -822
- package/.claude/agents/consensus/raft-manager.md +62 -62
- package/.claude/agents/consensus/security-manager.md +621 -621
- package/.claude/agents/core/coder.md +265 -265
- package/.claude/agents/core/planner.md +167 -167
- package/.claude/agents/core/researcher.md +189 -189
- package/.claude/agents/core/reviewer.md +325 -325
- package/.claude/agents/core/tester.md +318 -318
- package/.claude/agents/custom/test-long-runner.md +44 -44
- package/.claude/agents/data/ml/data-ml-model.md +192 -192
- package/.claude/agents/development/backend/dev-backend-api.md +141 -141
- package/.claude/agents/development/dev-backend-api.md +344 -344
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
- package/.claude/agents/dual-mode/codex-coordinator.md +224 -224
- package/.claude/agents/dual-mode/codex-worker.md +211 -211
- package/.claude/agents/dual-mode/dual-orchestrator.md +291 -291
- package/.claude/agents/flow-nexus/app-store.md +87 -87
- package/.claude/agents/flow-nexus/authentication.md +68 -68
- package/.claude/agents/flow-nexus/challenges.md +80 -80
- package/.claude/agents/flow-nexus/neural-network.md +87 -87
- package/.claude/agents/flow-nexus/payments.md +82 -82
- package/.claude/agents/flow-nexus/sandbox.md +75 -75
- package/.claude/agents/flow-nexus/swarm.md +75 -75
- package/.claude/agents/flow-nexus/user-tools.md +95 -95
- package/.claude/agents/flow-nexus/workflow.md +83 -83
- package/.claude/agents/github/code-review-swarm.md +537 -537
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +318 -318
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +190 -190
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +366 -366
- package/.claude/agents/github/release-swarm.md +582 -582
- package/.claude/agents/github/repo-architect.md +397 -397
- package/.claude/agents/github/swarm-issue.md +572 -572
- package/.claude/agents/github/swarm-pr.md +427 -427
- package/.claude/agents/github/sync-coordinator.md +451 -451
- package/.claude/agents/github/workflow-automation.md +634 -634
- package/.claude/agents/goal/agent.md +815 -815
- package/.claude/agents/goal/code-goal-planner.md +445 -445
- package/.claude/agents/goal/goal-planner.md +167 -167
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +129 -129
- package/.claude/agents/hive-mind/queen-coordinator.md +202 -202
- package/.claude/agents/hive-mind/scout-explorer.md +241 -241
- package/.claude/agents/hive-mind/swarm-memory-manager.md +192 -192
- package/.claude/agents/hive-mind/worker-specialist.md +216 -216
- package/.claude/agents/neural/safla-neural.md +73 -73
- package/.claude/agents/optimization/benchmark-suite.md +664 -664
- package/.claude/agents/optimization/load-balancer.md +430 -430
- package/.claude/agents/optimization/performance-monitor.md +671 -671
- package/.claude/agents/optimization/resource-allocator.md +673 -673
- package/.claude/agents/optimization/topology-optimizer.md +807 -807
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/reasoning/agent.md +815 -815
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
- package/.claude/agents/sparc/architecture.md +471 -471
- package/.claude/agents/sparc/pseudocode.md +317 -317
- package/.claude/agents/sparc/refinement.md +524 -524
- package/.claude/agents/sparc/specification.md +275 -275
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
- package/.claude/agents/sublinear/consensus-coordinator.md +337 -337
- package/.claude/agents/sublinear/matrix-optimizer.md +184 -184
- package/.claude/agents/sublinear/pagerank-analyzer.md +298 -298
- package/.claude/agents/sublinear/performance-optimizer.md +367 -367
- package/.claude/agents/sublinear/trading-predictor.md +245 -245
- package/.claude/agents/swarm/adaptive-coordinator.md +395 -395
- package/.claude/agents/swarm/hierarchical-coordinator.md +326 -326
- package/.claude/agents/swarm/mesh-coordinator.md +391 -391
- package/.claude/agents/templates/automation-smart-agent.md +204 -204
- package/.claude/agents/templates/coordinator-swarm-init.md +104 -104
- package/.claude/agents/templates/github-pr-manager.md +176 -176
- package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
- package/.claude/agents/templates/memory-coordinator.md +186 -186
- package/.claude/agents/templates/migration-plan.md +745 -745
- package/.claude/agents/templates/orchestrator-task.md +138 -138
- package/.claude/agents/templates/performance-analyzer.md +198 -198
- package/.claude/agents/templates/sparc-coordinator.md +182 -182
- package/.claude/agents/testing/production-validator.md +394 -394
- package/.claude/agents/testing/tdd-london-swarm.md +243 -243
- package/.claude/agents/testing/unit/tdd-london-swarm.md +243 -243
- package/.claude/agents/testing/validation/production-validator.md +394 -394
- package/.claude/agents/v3/v3-integration-architect.md +345 -345
- package/.claude/agents/v3/v3-memory-specialist.md +317 -317
- package/.claude/agents/v3/v3-performance-engineer.md +396 -396
- package/.claude/agents/v3/v3-queen-coordinator.md +97 -97
- package/.claude/agents/v3/v3-security-architect.md +173 -173
- package/.claude/commands/agents/README.md +10 -10
- package/.claude/commands/agents/agent-capabilities.md +21 -21
- package/.claude/commands/agents/agent-coordination.md +28 -28
- package/.claude/commands/agents/agent-spawning.md +28 -28
- package/.claude/commands/agents/agent-types.md +26 -26
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +53 -53
- package/.claude/commands/analysis/README.md +9 -9
- package/.claude/commands/analysis/bottleneck-detect.md +162 -162
- package/.claude/commands/analysis/performance-bottlenecks.md +58 -58
- package/.claude/commands/analysis/performance-report.md +25 -25
- package/.claude/commands/analysis/token-efficiency.md +44 -44
- package/.claude/commands/analysis/token-usage.md +25 -25
- package/.claude/commands/automation/README.md +9 -9
- package/.claude/commands/automation/auto-agent.md +122 -122
- package/.claude/commands/automation/self-healing.md +105 -105
- package/.claude/commands/automation/session-memory.md +89 -89
- package/.claude/commands/automation/smart-agents.md +72 -72
- package/.claude/commands/automation/smart-spawn.md +25 -25
- package/.claude/commands/automation/workflow-select.md +25 -25
- package/.claude/commands/claude-flow-help.md +103 -103
- package/.claude/commands/claude-flow-memory.md +107 -107
- package/.claude/commands/claude-flow-swarm.md +205 -205
- package/.claude/commands/coordination/README.md +9 -9
- package/.claude/commands/coordination/agent-spawn.md +25 -25
- package/.claude/commands/coordination/init.md +44 -44
- package/.claude/commands/coordination/orchestrate.md +43 -43
- package/.claude/commands/coordination/spawn.md +45 -45
- package/.claude/commands/coordination/swarm-init.md +85 -85
- package/.claude/commands/coordination/task-orchestrate.md +25 -25
- package/.claude/commands/flow-nexus/app-store.md +123 -123
- package/.claude/commands/flow-nexus/challenges.md +119 -119
- package/.claude/commands/flow-nexus/login-registration.md +64 -64
- package/.claude/commands/flow-nexus/neural-network.md +133 -133
- package/.claude/commands/flow-nexus/payments.md +115 -115
- package/.claude/commands/flow-nexus/sandbox.md +82 -82
- package/.claude/commands/flow-nexus/swarm.md +86 -86
- package/.claude/commands/flow-nexus/user-tools.md +151 -151
- package/.claude/commands/flow-nexus/workflow.md +114 -114
- package/.claude/commands/github/README.md +11 -11
- package/.claude/commands/github/code-review-swarm.md +513 -513
- package/.claude/commands/github/code-review.md +25 -25
- package/.claude/commands/github/github-modes.md +146 -146
- package/.claude/commands/github/github-swarm.md +121 -121
- package/.claude/commands/github/issue-tracker.md +291 -291
- package/.claude/commands/github/issue-triage.md +25 -25
- package/.claude/commands/github/multi-repo-swarm.md +518 -518
- package/.claude/commands/github/pr-enhance.md +26 -26
- package/.claude/commands/github/pr-manager.md +169 -169
- package/.claude/commands/github/project-board-sync.md +470 -470
- package/.claude/commands/github/release-manager.md +337 -337
- package/.claude/commands/github/release-swarm.md +543 -543
- package/.claude/commands/github/repo-analyze.md +25 -25
- package/.claude/commands/github/repo-architect.md +366 -366
- package/.claude/commands/github/swarm-issue.md +481 -481
- package/.claude/commands/github/swarm-pr.md +284 -284
- package/.claude/commands/github/sync-coordinator.md +300 -300
- package/.claude/commands/github/workflow-automation.md +441 -441
- package/.claude/commands/hive-mind/README.md +17 -17
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -18
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -21
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -8
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -8
- package/.claude/commands/hive-mind/hive-mind.md +27 -27
- package/.claude/commands/hooks/README.md +11 -11
- package/.claude/commands/hooks/overview.md +57 -57
- package/.claude/commands/hooks/post-edit.md +117 -117
- package/.claude/commands/hooks/post-task.md +112 -112
- package/.claude/commands/hooks/pre-edit.md +113 -113
- package/.claude/commands/hooks/pre-task.md +111 -111
- package/.claude/commands/hooks/session-end.md +118 -118
- package/.claude/commands/hooks/setup.md +102 -102
- package/.claude/commands/memory/README.md +9 -9
- package/.claude/commands/memory/memory-persist.md +25 -25
- package/.claude/commands/memory/memory-search.md +25 -25
- package/.claude/commands/memory/memory-usage.md +25 -25
- package/.claude/commands/memory/neural.md +47 -47
- package/.claude/commands/monitoring/README.md +9 -9
- package/.claude/commands/monitoring/agent-metrics.md +25 -25
- package/.claude/commands/monitoring/agents.md +44 -44
- package/.claude/commands/monitoring/real-time-view.md +25 -25
- package/.claude/commands/monitoring/status.md +46 -46
- package/.claude/commands/monitoring/swarm-monitor.md +25 -25
- package/.claude/commands/optimization/README.md +9 -9
- package/.claude/commands/optimization/auto-topology.md +61 -61
- package/.claude/commands/optimization/cache-manage.md +25 -25
- package/.claude/commands/optimization/parallel-execute.md +25 -25
- package/.claude/commands/optimization/parallel-execution.md +49 -49
- package/.claude/commands/optimization/topology-optimize.md +25 -25
- package/.claude/commands/pair/README.md +260 -260
- package/.claude/commands/pair/commands.md +545 -545
- package/.claude/commands/pair/config.md +509 -509
- package/.claude/commands/pair/examples.md +511 -511
- package/.claude/commands/pair/modes.md +347 -347
- package/.claude/commands/pair/session.md +406 -406
- package/.claude/commands/pair/start.md +208 -208
- package/.claude/commands/sparc/analyzer.md +51 -51
- package/.claude/commands/sparc/architect.md +53 -53
- package/.claude/commands/sparc/ask.md +97 -97
- package/.claude/commands/sparc/batch-executor.md +54 -54
- package/.claude/commands/sparc/code.md +89 -89
- package/.claude/commands/sparc/coder.md +54 -54
- package/.claude/commands/sparc/debug.md +83 -83
- package/.claude/commands/sparc/debugger.md +54 -54
- package/.claude/commands/sparc/designer.md +53 -53
- package/.claude/commands/sparc/devops.md +109 -109
- package/.claude/commands/sparc/docs-writer.md +80 -80
- package/.claude/commands/sparc/documenter.md +54 -54
- package/.claude/commands/sparc/innovator.md +54 -54
- package/.claude/commands/sparc/integration.md +83 -83
- package/.claude/commands/sparc/mcp.md +117 -117
- package/.claude/commands/sparc/memory-manager.md +54 -54
- package/.claude/commands/sparc/optimizer.md +54 -54
- package/.claude/commands/sparc/orchestrator.md +131 -131
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -83
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -83
- package/.claude/commands/sparc/researcher.md +54 -54
- package/.claude/commands/sparc/reviewer.md +54 -54
- package/.claude/commands/sparc/security-review.md +80 -80
- package/.claude/commands/sparc/sparc-modes.md +174 -174
- package/.claude/commands/sparc/sparc.md +111 -111
- package/.claude/commands/sparc/spec-pseudocode.md +80 -80
- package/.claude/commands/sparc/supabase-admin.md +348 -348
- package/.claude/commands/sparc/swarm-coordinator.md +54 -54
- package/.claude/commands/sparc/tdd.md +54 -54
- package/.claude/commands/sparc/tester.md +54 -54
- package/.claude/commands/sparc/tutorial.md +79 -79
- package/.claude/commands/sparc/workflow-manager.md +54 -54
- package/.claude/commands/sparc.md +166 -166
- package/.claude/commands/stream-chain/pipeline.md +120 -120
- package/.claude/commands/stream-chain/run.md +69 -69
- package/.claude/commands/swarm/README.md +15 -15
- package/.claude/commands/swarm/analysis.md +95 -95
- package/.claude/commands/swarm/development.md +96 -96
- package/.claude/commands/swarm/examples.md +168 -168
- package/.claude/commands/swarm/maintenance.md +102 -102
- package/.claude/commands/swarm/optimization.md +117 -117
- package/.claude/commands/swarm/research.md +136 -136
- package/.claude/commands/swarm/swarm-analysis.md +8 -8
- package/.claude/commands/swarm/swarm-background.md +8 -8
- package/.claude/commands/swarm/swarm-init.md +19 -19
- package/.claude/commands/swarm/swarm-modes.md +8 -8
- package/.claude/commands/swarm/swarm-monitor.md +8 -8
- package/.claude/commands/swarm/swarm-spawn.md +19 -19
- package/.claude/commands/swarm/swarm-status.md +8 -8
- package/.claude/commands/swarm/swarm-strategies.md +8 -8
- package/.claude/commands/swarm/swarm.md +27 -27
- package/.claude/commands/swarm/testing.md +131 -131
- package/.claude/commands/training/README.md +9 -9
- package/.claude/commands/training/model-update.md +25 -25
- package/.claude/commands/training/neural-patterns.md +73 -73
- package/.claude/commands/training/neural-train.md +25 -25
- package/.claude/commands/training/pattern-learn.md +25 -25
- package/.claude/commands/training/specialization.md +62 -62
- package/.claude/commands/truth/start.md +142 -142
- package/.claude/commands/verify/check.md +49 -49
- package/.claude/commands/verify/start.md +127 -127
- package/.claude/commands/workflows/README.md +9 -9
- package/.claude/commands/workflows/development.md +77 -77
- package/.claude/commands/workflows/research.md +62 -62
- package/.claude/commands/workflows/workflow-create.md +25 -25
- package/.claude/commands/workflows/workflow-execute.md +25 -25
- package/.claude/commands/workflows/workflow-export.md +25 -25
- package/.claude/config/v3-dependency-optimization.json +265 -265
- package/.claude/config/v3-performance-targets.json +250 -250
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/aggressive-microcompact.mjs +36 -36
- package/.claude/helpers/auto-memory-hook.mjs +363 -363
- package/.claude/helpers/context-persistence-hook.mjs +1979 -1979
- package/.claude/helpers/github-safe.js +106 -106
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/metrics-db.mjs +488 -488
- package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
- package/.claude/mcp.json +12 -12
- package/.claude/settings.json +2 -2
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -550
- package/.claude/skills/agentdb-learning/SKILL.md +545 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -339
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -645
- package/.claude/skills/dual-mode/README.md +71 -71
- package/.claude/skills/dual-mode/dual-collect.md +103 -103
- package/.claude/skills/dual-mode/dual-coordinate.md +85 -85
- package/.claude/skills/dual-mode/dual-spawn.md +81 -81
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -738
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -1157
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -610
- package/.claude/skills/github-code-review/SKILL.md +1 -1
- package/.claude/skills/github-multi-repo/SKILL.md +2 -2
- package/.claude/skills/github-project-management/SKILL.md +1 -1
- package/.claude/skills/github-release-management/SKILL.md +2 -2
- package/.claude/skills/github-workflow-automation/SKILL.md +1 -1
- package/.claude/skills/hive-mind-advanced/SKILL.md +4 -4
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- package/.claude/skills/performance-analysis/SKILL.md +563 -563
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
- package/.claude/skills/skill-builder/SKILL.md +910 -910
- package/.claude/skills/sparc-methodology/SKILL.md +2 -2
- package/.claude/skills/stream-chain/SKILL.md +563 -563
- package/.claude/skills/swarm-advanced/SKILL.md +4 -4
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
- package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
- package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
- package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
- package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
- package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
- package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
- package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
- package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
- package/.claude/skills/verification-quality/SKILL.md +649 -649
- package/.claude/skills/worker-benchmarks/skill.md +135 -135
- package/.claude/skills/worker-integration/skill.md +154 -154
- package/.claude/statusline.mjs +109 -109
- package/.claude-plugin/README.md +6 -6
- package/.claude-plugin/docs/INSTALLATION.md +4 -4
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +5 -5
- package/.claude-plugin/docs/QUICKSTART.md +1 -1
- package/.claude-plugin/docs/STRUCTURE.md +128 -128
- package/.claude-plugin/hooks/hooks.json +74 -74
- package/.claude-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +4 -4
- package/README.md +148 -148
- package/bin/cli.js +12 -12
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +115 -114
- package/v3/@claude-flow/cli/README.md +5 -5
- package/v3/@claude-flow/cli/bin/cli.js +156 -156
- package/v3/@claude-flow/cli/bin/mcp-server.js +189 -189
- package/v3/@claude-flow/cli/dist/src/commands/analyze.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/analyze.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/claims.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/claims.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/completions.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/config.js +36 -2
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +54 -7
- package/v3/@claude-flow/cli/dist/src/commands/deployment.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/deployment.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/doctor.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +90 -90
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +56 -20
- package/v3/@claude-flow/cli/dist/src/commands/init.js +6 -1
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +30 -30
- package/v3/@claude-flow/cli/dist/src/commands/neural.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/neural.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/orc.js +1 -0
- package/v3/@claude-flow/cli/dist/src/commands/performance.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/performance.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/plugins.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/plugins.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/providers.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/providers.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/route.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/route.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/backup.js +23 -23
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/benchmark.js +29 -29
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/index.js +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +113 -113
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +97 -97
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +2 -2
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +36 -36
- package/v3/@claude-flow/cli/dist/src/commands/security.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/security.js +2 -2
- package/v3/@claude-flow/cli/dist/src/config/moflo-config.d.ts +13 -1
- package/v3/@claude-flow/cli/dist/src/config/moflo-config.js +93 -41
- package/v3/@claude-flow/cli/dist/src/index.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/index.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/executor.js +3 -3
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +640 -640
- package/v3/@claude-flow/cli/dist/src/init/moflo-init.d.ts +10 -0
- package/v3/@claude-flow/cli/dist/src/init/moflo-init.js +101 -20
- package/v3/@claude-flow/cli/dist/src/init/settings-generator.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +783 -783
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +30 -13
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/mcp-tools/security-tools.js +1 -1
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +61 -61
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +2212 -2263
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/flash-attention.js +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/ruvector/vector-db.js +1 -1
- package/v3/@claude-flow/cli/dist/src/services/agent-router.d.ts +14 -0
- package/v3/@claude-flow/cli/dist/src/services/agent-router.js +86 -7
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/v3/@claude-flow/cli/dist/src/services/index.d.ts +1 -3
- package/v3/@claude-flow/cli/dist/src/services/index.js +1 -2
- package/v3/@claude-flow/cli/dist/src/services/learning-service.js +54 -54
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/services/ruvector-training.js +1 -1
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.d.ts +24 -3
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +123 -12
- package/v3/@claude-flow/cli/dist/src/services/workflow-gate.d.ts +1 -0
- package/v3/@claude-flow/cli/dist/src/services/workflow-gate.js +20 -5
- package/v3/@claude-flow/cli/dist/src/suggest.d.ts +1 -1
- package/v3/@claude-flow/cli/dist/src/suggest.js +1 -1
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +6 -6
- package/v3/@claude-flow/guidance/README.md +6 -6
- package/v3/@claude-flow/guidance/package.json +1 -1
- package/v3/@claude-flow/memory/README.md +1 -1
- package/v3/@claude-flow/shared/README.md +1 -1
- package/v3/@claude-flow/shared/package.json +42 -42
- package/v3/README.md +3 -3
|
@@ -229,12 +229,12 @@ export const benchmarkCommand = {
|
|
|
229
229
|
const benchmarkTable = `${config.schema}.benchmark_${Date.now()}`;
|
|
230
230
|
spinner.setText('Creating benchmark table...');
|
|
231
231
|
spinner.start();
|
|
232
|
-
await client.query(`
|
|
233
|
-
CREATE TABLE ${benchmarkTable} (
|
|
234
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
235
|
-
embedding vector(${dimensions}),
|
|
236
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
237
|
-
)
|
|
232
|
+
await client.query(`
|
|
233
|
+
CREATE TABLE ${benchmarkTable} (
|
|
234
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
235
|
+
embedding vector(${dimensions}),
|
|
236
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
237
|
+
)
|
|
238
238
|
`);
|
|
239
239
|
spinner.succeed('Benchmark table created');
|
|
240
240
|
// Insert vectors
|
|
@@ -250,9 +250,9 @@ export const benchmarkCommand = {
|
|
|
250
250
|
const vector = generateRandomVector(dimensions);
|
|
251
251
|
batchVectors.push(`('[${vector.join(',')}]')`);
|
|
252
252
|
}
|
|
253
|
-
await client.query(`
|
|
254
|
-
INSERT INTO ${benchmarkTable} (embedding)
|
|
255
|
-
VALUES ${batchVectors.join(',')}
|
|
253
|
+
await client.query(`
|
|
254
|
+
INSERT INTO ${benchmarkTable} (embedding)
|
|
255
|
+
VALUES ${batchVectors.join(',')}
|
|
256
256
|
`);
|
|
257
257
|
insertedCount = batchEnd;
|
|
258
258
|
spinner.setText(`Inserting vectors... ${insertedCount.toLocaleString()}/${numVectors.toLocaleString()}`);
|
|
@@ -273,21 +273,21 @@ export const benchmarkCommand = {
|
|
|
273
273
|
const metricOp = metric === 'cosine' ? 'vector_cosine_ops' :
|
|
274
274
|
metric === 'l2' ? 'vector_l2_ops' : 'vector_ip_ops';
|
|
275
275
|
if (indexType === 'hnsw') {
|
|
276
|
-
await client.query(`
|
|
277
|
-
CREATE INDEX idx_benchmark_hnsw
|
|
278
|
-
ON ${benchmarkTable}
|
|
279
|
-
USING hnsw (embedding ${metricOp})
|
|
280
|
-
WITH (m = 16, ef_construction = 64)
|
|
276
|
+
await client.query(`
|
|
277
|
+
CREATE INDEX idx_benchmark_hnsw
|
|
278
|
+
ON ${benchmarkTable}
|
|
279
|
+
USING hnsw (embedding ${metricOp})
|
|
280
|
+
WITH (m = 16, ef_construction = 64)
|
|
281
281
|
`);
|
|
282
282
|
}
|
|
283
283
|
else if (indexType === 'ivfflat') {
|
|
284
284
|
// Need to train IVFFlat with existing data
|
|
285
285
|
const lists = Math.max(100, Math.floor(numVectors / 1000));
|
|
286
|
-
await client.query(`
|
|
287
|
-
CREATE INDEX idx_benchmark_ivfflat
|
|
288
|
-
ON ${benchmarkTable}
|
|
289
|
-
USING ivfflat (embedding ${metricOp})
|
|
290
|
-
WITH (lists = ${lists})
|
|
286
|
+
await client.query(`
|
|
287
|
+
CREATE INDEX idx_benchmark_ivfflat
|
|
288
|
+
ON ${benchmarkTable}
|
|
289
|
+
USING ivfflat (embedding ${metricOp})
|
|
290
|
+
WITH (lists = ${lists})
|
|
291
291
|
`);
|
|
292
292
|
}
|
|
293
293
|
const indexDuration = Date.now() - indexStart;
|
|
@@ -310,11 +310,11 @@ export const benchmarkCommand = {
|
|
|
310
310
|
for (let q = 0; q < numQueries; q++) {
|
|
311
311
|
const queryVector = generateRandomVector(dimensions);
|
|
312
312
|
const queryStart = Date.now();
|
|
313
|
-
await client.query(`
|
|
314
|
-
SELECT id, embedding ${distanceOp} '[${queryVector.join(',')}]' as distance
|
|
315
|
-
FROM ${benchmarkTable}
|
|
316
|
-
ORDER BY embedding ${distanceOp} '[${queryVector.join(',')}]'
|
|
317
|
-
LIMIT ${topK}
|
|
313
|
+
await client.query(`
|
|
314
|
+
SELECT id, embedding ${distanceOp} '[${queryVector.join(',')}]' as distance
|
|
315
|
+
FROM ${benchmarkTable}
|
|
316
|
+
ORDER BY embedding ${distanceOp} '[${queryVector.join(',')}]'
|
|
317
|
+
LIMIT ${topK}
|
|
318
318
|
`);
|
|
319
319
|
queryLatencies.push(Date.now() - queryStart);
|
|
320
320
|
if (q % 10 === 0) {
|
|
@@ -344,11 +344,11 @@ export const benchmarkCommand = {
|
|
|
344
344
|
// Get memory usage
|
|
345
345
|
spinner.setText('Analyzing memory usage...');
|
|
346
346
|
spinner.start();
|
|
347
|
-
const sizeResult = await client.query(`
|
|
348
|
-
SELECT
|
|
349
|
-
pg_relation_size('${benchmarkTable}') as table_size,
|
|
350
|
-
pg_total_relation_size('${benchmarkTable}') as total_size,
|
|
351
|
-
pg_indexes_size('${benchmarkTable}') as index_size
|
|
347
|
+
const sizeResult = await client.query(`
|
|
348
|
+
SELECT
|
|
349
|
+
pg_relation_size('${benchmarkTable}') as table_size,
|
|
350
|
+
pg_total_relation_size('${benchmarkTable}') as total_size,
|
|
351
|
+
pg_indexes_size('${benchmarkTable}') as index_size
|
|
352
352
|
`);
|
|
353
353
|
const tableSize = parseInt(sizeResult.rows[0].table_size, 10);
|
|
354
354
|
const totalSize = parseInt(sizeResult.rows[0].total_size, 10);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* npx claude-flow ruvector import --from-memory
|
|
8
8
|
* npx claude-flow ruvector import --input data.json --batch-size 100
|
|
9
9
|
*
|
|
10
|
-
* Created with care by
|
|
10
|
+
* Created with care by motailz.com
|
|
11
11
|
*/
|
|
12
12
|
import { output } from '../../output.js';
|
|
13
13
|
import * as fs from 'fs';
|
|
@@ -204,8 +204,8 @@ export const initCommand = {
|
|
|
204
204
|
// Check pgvector extension
|
|
205
205
|
spinner.setText('Checking pgvector extension...');
|
|
206
206
|
spinner.start();
|
|
207
|
-
const extensionResult = await client.query(`
|
|
208
|
-
SELECT extversion FROM pg_extension WHERE extname = 'vector'
|
|
207
|
+
const extensionResult = await client.query(`
|
|
208
|
+
SELECT extversion FROM pg_extension WHERE extname = 'vector'
|
|
209
209
|
`);
|
|
210
210
|
if (extensionResult.rows.length === 0) {
|
|
211
211
|
spinner.succeed('pgvector not installed, attempting to create...');
|
|
@@ -239,153 +239,153 @@ export const initCommand = {
|
|
|
239
239
|
spinner.setText('Creating RuVector tables...');
|
|
240
240
|
spinner.start();
|
|
241
241
|
// Vector embeddings table
|
|
242
|
-
await client.query(`
|
|
243
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.embeddings (
|
|
244
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
245
|
-
key VARCHAR(512) NOT NULL,
|
|
246
|
-
namespace VARCHAR(128) NOT NULL DEFAULT 'default',
|
|
247
|
-
content TEXT,
|
|
248
|
-
embedding vector(${dimensions}),
|
|
249
|
-
metadata JSONB DEFAULT '{}',
|
|
250
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
251
|
-
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
252
|
-
UNIQUE(key, namespace)
|
|
253
|
-
)
|
|
242
|
+
await client.query(`
|
|
243
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.embeddings (
|
|
244
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
245
|
+
key VARCHAR(512) NOT NULL,
|
|
246
|
+
namespace VARCHAR(128) NOT NULL DEFAULT 'default',
|
|
247
|
+
content TEXT,
|
|
248
|
+
embedding vector(${dimensions}),
|
|
249
|
+
metadata JSONB DEFAULT '{}',
|
|
250
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
251
|
+
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
252
|
+
UNIQUE(key, namespace)
|
|
253
|
+
)
|
|
254
254
|
`);
|
|
255
255
|
// Attention patterns table
|
|
256
|
-
await client.query(`
|
|
257
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.attention_patterns (
|
|
258
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
259
|
-
pattern_name VARCHAR(256) NOT NULL,
|
|
260
|
-
query_embedding vector(${dimensions}),
|
|
261
|
-
key_embedding vector(${dimensions}),
|
|
262
|
-
value_embedding vector(${dimensions}),
|
|
263
|
-
attention_weights JSONB,
|
|
264
|
-
context TEXT,
|
|
265
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
266
|
-
)
|
|
256
|
+
await client.query(`
|
|
257
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.attention_patterns (
|
|
258
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
259
|
+
pattern_name VARCHAR(256) NOT NULL,
|
|
260
|
+
query_embedding vector(${dimensions}),
|
|
261
|
+
key_embedding vector(${dimensions}),
|
|
262
|
+
value_embedding vector(${dimensions}),
|
|
263
|
+
attention_weights JSONB,
|
|
264
|
+
context TEXT,
|
|
265
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
266
|
+
)
|
|
267
267
|
`);
|
|
268
268
|
// GNN adjacency table
|
|
269
|
-
await client.query(`
|
|
270
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.gnn_edges (
|
|
271
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
272
|
-
source_id UUID NOT NULL,
|
|
273
|
-
target_id UUID NOT NULL,
|
|
274
|
-
edge_type VARCHAR(64) NOT NULL DEFAULT 'related',
|
|
275
|
-
weight FLOAT DEFAULT 1.0,
|
|
276
|
-
metadata JSONB DEFAULT '{}',
|
|
277
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
278
|
-
UNIQUE(source_id, target_id, edge_type)
|
|
279
|
-
)
|
|
269
|
+
await client.query(`
|
|
270
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.gnn_edges (
|
|
271
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
272
|
+
source_id UUID NOT NULL,
|
|
273
|
+
target_id UUID NOT NULL,
|
|
274
|
+
edge_type VARCHAR(64) NOT NULL DEFAULT 'related',
|
|
275
|
+
weight FLOAT DEFAULT 1.0,
|
|
276
|
+
metadata JSONB DEFAULT '{}',
|
|
277
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
278
|
+
UNIQUE(source_id, target_id, edge_type)
|
|
279
|
+
)
|
|
280
280
|
`);
|
|
281
281
|
// Hyperbolic embeddings table (Poincare ball)
|
|
282
|
-
await client.query(`
|
|
283
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.hyperbolic_embeddings (
|
|
284
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
285
|
-
entity_id UUID NOT NULL,
|
|
286
|
-
embedding vector(${dimensions}),
|
|
287
|
-
curvature FLOAT DEFAULT -1.0,
|
|
288
|
-
hierarchy_level INTEGER DEFAULT 0,
|
|
289
|
-
parent_id UUID,
|
|
290
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
291
|
-
)
|
|
282
|
+
await client.query(`
|
|
283
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.hyperbolic_embeddings (
|
|
284
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
285
|
+
entity_id UUID NOT NULL,
|
|
286
|
+
embedding vector(${dimensions}),
|
|
287
|
+
curvature FLOAT DEFAULT -1.0,
|
|
288
|
+
hierarchy_level INTEGER DEFAULT 0,
|
|
289
|
+
parent_id UUID,
|
|
290
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
291
|
+
)
|
|
292
292
|
`);
|
|
293
293
|
// Migrations tracking table
|
|
294
|
-
await client.query(`
|
|
295
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.migrations (
|
|
296
|
-
id SERIAL PRIMARY KEY,
|
|
297
|
-
version VARCHAR(64) NOT NULL UNIQUE,
|
|
298
|
-
name VARCHAR(256) NOT NULL,
|
|
299
|
-
applied_at TIMESTAMPTZ DEFAULT NOW(),
|
|
300
|
-
checksum VARCHAR(64)
|
|
301
|
-
)
|
|
294
|
+
await client.query(`
|
|
295
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.migrations (
|
|
296
|
+
id SERIAL PRIMARY KEY,
|
|
297
|
+
version VARCHAR(64) NOT NULL UNIQUE,
|
|
298
|
+
name VARCHAR(256) NOT NULL,
|
|
299
|
+
applied_at TIMESTAMPTZ DEFAULT NOW(),
|
|
300
|
+
checksum VARCHAR(64)
|
|
301
|
+
)
|
|
302
302
|
`);
|
|
303
303
|
// RuVector metadata table
|
|
304
|
-
await client.query(`
|
|
305
|
-
CREATE TABLE IF NOT EXISTS ${config.schema}.metadata (
|
|
306
|
-
key VARCHAR(128) PRIMARY KEY,
|
|
307
|
-
value JSONB NOT NULL,
|
|
308
|
-
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
309
|
-
)
|
|
304
|
+
await client.query(`
|
|
305
|
+
CREATE TABLE IF NOT EXISTS ${config.schema}.metadata (
|
|
306
|
+
key VARCHAR(128) PRIMARY KEY,
|
|
307
|
+
value JSONB NOT NULL,
|
|
308
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
309
|
+
)
|
|
310
310
|
`);
|
|
311
311
|
// Store initialization metadata
|
|
312
|
-
await client.query(`
|
|
313
|
-
INSERT INTO ${config.schema}.metadata (key, value)
|
|
314
|
-
VALUES ('ruvector_version', '"1.0.0"')
|
|
315
|
-
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
312
|
+
await client.query(`
|
|
313
|
+
INSERT INTO ${config.schema}.metadata (key, value)
|
|
314
|
+
VALUES ('ruvector_version', '"1.0.0"')
|
|
315
|
+
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
316
316
|
`);
|
|
317
|
-
await client.query(`
|
|
318
|
-
INSERT INTO ${config.schema}.metadata (key, value)
|
|
319
|
-
VALUES ('dimensions', '${dimensions}')
|
|
320
|
-
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
317
|
+
await client.query(`
|
|
318
|
+
INSERT INTO ${config.schema}.metadata (key, value)
|
|
319
|
+
VALUES ('dimensions', '${dimensions}')
|
|
320
|
+
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
321
321
|
`);
|
|
322
|
-
await client.query(`
|
|
323
|
-
INSERT INTO ${config.schema}.metadata (key, value)
|
|
324
|
-
VALUES ('initialized_at', '"${new Date().toISOString()}"')
|
|
325
|
-
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
322
|
+
await client.query(`
|
|
323
|
+
INSERT INTO ${config.schema}.metadata (key, value)
|
|
324
|
+
VALUES ('initialized_at', '"${new Date().toISOString()}"')
|
|
325
|
+
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value, updated_at = NOW()
|
|
326
326
|
`);
|
|
327
327
|
spinner.succeed('RuVector tables created');
|
|
328
328
|
// Create indexes
|
|
329
329
|
spinner.setText(`Creating ${indexType.toUpperCase()} indexes...`);
|
|
330
330
|
spinner.start();
|
|
331
331
|
if (indexType === 'hnsw') {
|
|
332
|
-
await client.query(`
|
|
333
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_vector_hnsw
|
|
334
|
-
ON ${config.schema}.embeddings
|
|
335
|
-
USING hnsw (embedding vector_cosine_ops)
|
|
336
|
-
WITH (m = 16, ef_construction = 64)
|
|
332
|
+
await client.query(`
|
|
333
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_vector_hnsw
|
|
334
|
+
ON ${config.schema}.embeddings
|
|
335
|
+
USING hnsw (embedding vector_cosine_ops)
|
|
336
|
+
WITH (m = 16, ef_construction = 64)
|
|
337
337
|
`);
|
|
338
|
-
await client.query(`
|
|
339
|
-
CREATE INDEX IF NOT EXISTS idx_attention_query_hnsw
|
|
340
|
-
ON ${config.schema}.attention_patterns
|
|
341
|
-
USING hnsw (query_embedding vector_cosine_ops)
|
|
342
|
-
WITH (m = 16, ef_construction = 64)
|
|
338
|
+
await client.query(`
|
|
339
|
+
CREATE INDEX IF NOT EXISTS idx_attention_query_hnsw
|
|
340
|
+
ON ${config.schema}.attention_patterns
|
|
341
|
+
USING hnsw (query_embedding vector_cosine_ops)
|
|
342
|
+
WITH (m = 16, ef_construction = 64)
|
|
343
343
|
`);
|
|
344
|
-
await client.query(`
|
|
345
|
-
CREATE INDEX IF NOT EXISTS idx_hyperbolic_embedding_hnsw
|
|
346
|
-
ON ${config.schema}.hyperbolic_embeddings
|
|
347
|
-
USING hnsw (embedding vector_cosine_ops)
|
|
348
|
-
WITH (m = 16, ef_construction = 64)
|
|
344
|
+
await client.query(`
|
|
345
|
+
CREATE INDEX IF NOT EXISTS idx_hyperbolic_embedding_hnsw
|
|
346
|
+
ON ${config.schema}.hyperbolic_embeddings
|
|
347
|
+
USING hnsw (embedding vector_cosine_ops)
|
|
348
|
+
WITH (m = 16, ef_construction = 64)
|
|
349
349
|
`);
|
|
350
350
|
}
|
|
351
351
|
else {
|
|
352
352
|
// IVFFlat indexes
|
|
353
|
-
await client.query(`
|
|
354
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_vector_ivfflat
|
|
355
|
-
ON ${config.schema}.embeddings
|
|
356
|
-
USING ivfflat (embedding vector_cosine_ops)
|
|
357
|
-
WITH (lists = 100)
|
|
353
|
+
await client.query(`
|
|
354
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_vector_ivfflat
|
|
355
|
+
ON ${config.schema}.embeddings
|
|
356
|
+
USING ivfflat (embedding vector_cosine_ops)
|
|
357
|
+
WITH (lists = 100)
|
|
358
358
|
`);
|
|
359
|
-
await client.query(`
|
|
360
|
-
CREATE INDEX IF NOT EXISTS idx_attention_query_ivfflat
|
|
361
|
-
ON ${config.schema}.attention_patterns
|
|
362
|
-
USING ivfflat (query_embedding vector_cosine_ops)
|
|
363
|
-
WITH (lists = 100)
|
|
359
|
+
await client.query(`
|
|
360
|
+
CREATE INDEX IF NOT EXISTS idx_attention_query_ivfflat
|
|
361
|
+
ON ${config.schema}.attention_patterns
|
|
362
|
+
USING ivfflat (query_embedding vector_cosine_ops)
|
|
363
|
+
WITH (lists = 100)
|
|
364
364
|
`);
|
|
365
365
|
}
|
|
366
366
|
// Additional standard indexes
|
|
367
|
-
await client.query(`
|
|
368
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_namespace
|
|
369
|
-
ON ${config.schema}.embeddings (namespace)
|
|
367
|
+
await client.query(`
|
|
368
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_namespace
|
|
369
|
+
ON ${config.schema}.embeddings (namespace)
|
|
370
370
|
`);
|
|
371
|
-
await client.query(`
|
|
372
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_key
|
|
373
|
-
ON ${config.schema}.embeddings (key)
|
|
371
|
+
await client.query(`
|
|
372
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_key
|
|
373
|
+
ON ${config.schema}.embeddings (key)
|
|
374
374
|
`);
|
|
375
|
-
await client.query(`
|
|
376
|
-
CREATE INDEX IF NOT EXISTS idx_gnn_source
|
|
377
|
-
ON ${config.schema}.gnn_edges (source_id)
|
|
375
|
+
await client.query(`
|
|
376
|
+
CREATE INDEX IF NOT EXISTS idx_gnn_source
|
|
377
|
+
ON ${config.schema}.gnn_edges (source_id)
|
|
378
378
|
`);
|
|
379
|
-
await client.query(`
|
|
380
|
-
CREATE INDEX IF NOT EXISTS idx_gnn_target
|
|
381
|
-
ON ${config.schema}.gnn_edges (target_id)
|
|
379
|
+
await client.query(`
|
|
380
|
+
CREATE INDEX IF NOT EXISTS idx_gnn_target
|
|
381
|
+
ON ${config.schema}.gnn_edges (target_id)
|
|
382
382
|
`);
|
|
383
383
|
spinner.succeed(`${indexType.toUpperCase()} indexes created`);
|
|
384
384
|
// Record initial migration
|
|
385
|
-
await client.query(`
|
|
386
|
-
INSERT INTO ${config.schema}.migrations (version, name)
|
|
387
|
-
VALUES ('1.0.0', 'Initial RuVector setup')
|
|
388
|
-
ON CONFLICT (version) DO NOTHING
|
|
385
|
+
await client.query(`
|
|
386
|
+
INSERT INTO ${config.schema}.migrations (version, name)
|
|
387
|
+
VALUES ('1.0.0', 'Initial RuVector setup')
|
|
388
|
+
ON CONFLICT (version) DO NOTHING
|
|
389
389
|
`);
|
|
390
390
|
await client.end();
|
|
391
391
|
output.writeln();
|
|
@@ -17,116 +17,116 @@ const MIGRATIONS = [
|
|
|
17
17
|
{
|
|
18
18
|
version: '1.1.0',
|
|
19
19
|
name: 'Add full-text search',
|
|
20
|
-
up: `
|
|
21
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_content_fts
|
|
22
|
-
ON {{schema}}.embeddings
|
|
23
|
-
USING gin (to_tsvector('english', COALESCE(content, '')));
|
|
24
|
-
|
|
25
|
-
ALTER TABLE {{schema}}.embeddings
|
|
26
|
-
ADD COLUMN IF NOT EXISTS search_vector tsvector
|
|
27
|
-
GENERATED ALWAYS AS (to_tsvector('english', COALESCE(content, ''))) STORED;
|
|
20
|
+
up: `
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_embeddings_content_fts
|
|
22
|
+
ON {{schema}}.embeddings
|
|
23
|
+
USING gin (to_tsvector('english', COALESCE(content, '')));
|
|
24
|
+
|
|
25
|
+
ALTER TABLE {{schema}}.embeddings
|
|
26
|
+
ADD COLUMN IF NOT EXISTS search_vector tsvector
|
|
27
|
+
GENERATED ALWAYS AS (to_tsvector('english', COALESCE(content, ''))) STORED;
|
|
28
28
|
`,
|
|
29
|
-
down: `
|
|
30
|
-
DROP INDEX IF EXISTS {{schema}}.idx_embeddings_content_fts;
|
|
31
|
-
ALTER TABLE {{schema}}.embeddings DROP COLUMN IF EXISTS search_vector;
|
|
29
|
+
down: `
|
|
30
|
+
DROP INDEX IF EXISTS {{schema}}.idx_embeddings_content_fts;
|
|
31
|
+
ALTER TABLE {{schema}}.embeddings DROP COLUMN IF EXISTS search_vector;
|
|
32
32
|
`,
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
version: '1.2.0',
|
|
36
36
|
name: 'Add embedding statistics',
|
|
37
|
-
up: `
|
|
38
|
-
CREATE TABLE IF NOT EXISTS {{schema}}.embedding_stats (
|
|
39
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
40
|
-
namespace VARCHAR(128) NOT NULL,
|
|
41
|
-
total_vectors INTEGER DEFAULT 0,
|
|
42
|
-
avg_magnitude FLOAT,
|
|
43
|
-
dimension_stats JSONB,
|
|
44
|
-
computed_at TIMESTAMPTZ DEFAULT NOW()
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
CREATE INDEX IF NOT EXISTS idx_embedding_stats_namespace
|
|
48
|
-
ON {{schema}}.embedding_stats (namespace);
|
|
37
|
+
up: `
|
|
38
|
+
CREATE TABLE IF NOT EXISTS {{schema}}.embedding_stats (
|
|
39
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
40
|
+
namespace VARCHAR(128) NOT NULL,
|
|
41
|
+
total_vectors INTEGER DEFAULT 0,
|
|
42
|
+
avg_magnitude FLOAT,
|
|
43
|
+
dimension_stats JSONB,
|
|
44
|
+
computed_at TIMESTAMPTZ DEFAULT NOW()
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_embedding_stats_namespace
|
|
48
|
+
ON {{schema}}.embedding_stats (namespace);
|
|
49
49
|
`,
|
|
50
|
-
down: `
|
|
51
|
-
DROP TABLE IF EXISTS {{schema}}.embedding_stats;
|
|
50
|
+
down: `
|
|
51
|
+
DROP TABLE IF EXISTS {{schema}}.embedding_stats;
|
|
52
52
|
`,
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
55
|
version: '1.3.0',
|
|
56
56
|
name: 'Add query cache',
|
|
57
|
-
up: `
|
|
58
|
-
CREATE TABLE IF NOT EXISTS {{schema}}.query_cache (
|
|
59
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
60
|
-
query_hash VARCHAR(64) NOT NULL UNIQUE,
|
|
61
|
-
query_embedding vector(1536),
|
|
62
|
-
result_ids UUID[],
|
|
63
|
-
result_scores FLOAT[],
|
|
64
|
-
hit_count INTEGER DEFAULT 1,
|
|
65
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
66
|
-
last_accessed TIMESTAMPTZ DEFAULT NOW()
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
CREATE INDEX IF NOT EXISTS idx_query_cache_hash
|
|
70
|
-
ON {{schema}}.query_cache (query_hash);
|
|
71
|
-
|
|
72
|
-
CREATE INDEX IF NOT EXISTS idx_query_cache_last_accessed
|
|
73
|
-
ON {{schema}}.query_cache (last_accessed);
|
|
57
|
+
up: `
|
|
58
|
+
CREATE TABLE IF NOT EXISTS {{schema}}.query_cache (
|
|
59
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
60
|
+
query_hash VARCHAR(64) NOT NULL UNIQUE,
|
|
61
|
+
query_embedding vector(1536),
|
|
62
|
+
result_ids UUID[],
|
|
63
|
+
result_scores FLOAT[],
|
|
64
|
+
hit_count INTEGER DEFAULT 1,
|
|
65
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
66
|
+
last_accessed TIMESTAMPTZ DEFAULT NOW()
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
CREATE INDEX IF NOT EXISTS idx_query_cache_hash
|
|
70
|
+
ON {{schema}}.query_cache (query_hash);
|
|
71
|
+
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_query_cache_last_accessed
|
|
73
|
+
ON {{schema}}.query_cache (last_accessed);
|
|
74
74
|
`,
|
|
75
|
-
down: `
|
|
76
|
-
DROP TABLE IF EXISTS {{schema}}.query_cache;
|
|
75
|
+
down: `
|
|
76
|
+
DROP TABLE IF EXISTS {{schema}}.query_cache;
|
|
77
77
|
`,
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
version: '1.4.0',
|
|
81
81
|
name: 'Add batch operations support',
|
|
82
|
-
up: `
|
|
83
|
-
CREATE TABLE IF NOT EXISTS {{schema}}.batch_jobs (
|
|
84
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
85
|
-
job_type VARCHAR(64) NOT NULL,
|
|
86
|
-
status VARCHAR(32) DEFAULT 'pending',
|
|
87
|
-
total_items INTEGER DEFAULT 0,
|
|
88
|
-
processed_items INTEGER DEFAULT 0,
|
|
89
|
-
error_count INTEGER DEFAULT 0,
|
|
90
|
-
metadata JSONB DEFAULT '{}',
|
|
91
|
-
started_at TIMESTAMPTZ,
|
|
92
|
-
completed_at TIMESTAMPTZ,
|
|
93
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
94
|
-
);
|
|
95
|
-
|
|
96
|
-
CREATE INDEX IF NOT EXISTS idx_batch_jobs_status
|
|
97
|
-
ON {{schema}}.batch_jobs (status);
|
|
82
|
+
up: `
|
|
83
|
+
CREATE TABLE IF NOT EXISTS {{schema}}.batch_jobs (
|
|
84
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
85
|
+
job_type VARCHAR(64) NOT NULL,
|
|
86
|
+
status VARCHAR(32) DEFAULT 'pending',
|
|
87
|
+
total_items INTEGER DEFAULT 0,
|
|
88
|
+
processed_items INTEGER DEFAULT 0,
|
|
89
|
+
error_count INTEGER DEFAULT 0,
|
|
90
|
+
metadata JSONB DEFAULT '{}',
|
|
91
|
+
started_at TIMESTAMPTZ,
|
|
92
|
+
completed_at TIMESTAMPTZ,
|
|
93
|
+
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_batch_jobs_status
|
|
97
|
+
ON {{schema}}.batch_jobs (status);
|
|
98
98
|
`,
|
|
99
|
-
down: `
|
|
100
|
-
DROP TABLE IF EXISTS {{schema}}.batch_jobs;
|
|
99
|
+
down: `
|
|
100
|
+
DROP TABLE IF EXISTS {{schema}}.batch_jobs;
|
|
101
101
|
`,
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
version: '1.5.0',
|
|
105
105
|
name: 'Add neural pattern learning',
|
|
106
|
-
up: `
|
|
107
|
-
CREATE TABLE IF NOT EXISTS {{schema}}.neural_patterns (
|
|
108
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
109
|
-
pattern_type VARCHAR(64) NOT NULL,
|
|
110
|
-
input_embedding vector(1536),
|
|
111
|
-
output_embedding vector(1536),
|
|
112
|
-
weight_matrix JSONB,
|
|
113
|
-
activation VARCHAR(32) DEFAULT 'relu',
|
|
114
|
-
accuracy FLOAT,
|
|
115
|
-
training_steps INTEGER DEFAULT 0,
|
|
116
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
117
|
-
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
118
|
-
);
|
|
119
|
-
|
|
120
|
-
CREATE INDEX IF NOT EXISTS idx_neural_patterns_type
|
|
121
|
-
ON {{schema}}.neural_patterns (pattern_type);
|
|
122
|
-
|
|
123
|
-
CREATE INDEX IF NOT EXISTS idx_neural_patterns_input_hnsw
|
|
124
|
-
ON {{schema}}.neural_patterns
|
|
125
|
-
USING hnsw (input_embedding vector_cosine_ops)
|
|
126
|
-
WITH (m = 16, ef_construction = 64);
|
|
106
|
+
up: `
|
|
107
|
+
CREATE TABLE IF NOT EXISTS {{schema}}.neural_patterns (
|
|
108
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
109
|
+
pattern_type VARCHAR(64) NOT NULL,
|
|
110
|
+
input_embedding vector(1536),
|
|
111
|
+
output_embedding vector(1536),
|
|
112
|
+
weight_matrix JSONB,
|
|
113
|
+
activation VARCHAR(32) DEFAULT 'relu',
|
|
114
|
+
accuracy FLOAT,
|
|
115
|
+
training_steps INTEGER DEFAULT 0,
|
|
116
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
117
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
CREATE INDEX IF NOT EXISTS idx_neural_patterns_type
|
|
121
|
+
ON {{schema}}.neural_patterns (pattern_type);
|
|
122
|
+
|
|
123
|
+
CREATE INDEX IF NOT EXISTS idx_neural_patterns_input_hnsw
|
|
124
|
+
ON {{schema}}.neural_patterns
|
|
125
|
+
USING hnsw (input_embedding vector_cosine_ops)
|
|
126
|
+
WITH (m = 16, ef_construction = 64);
|
|
127
127
|
`,
|
|
128
|
-
down: `
|
|
129
|
-
DROP TABLE IF EXISTS {{schema}}.neural_patterns;
|
|
128
|
+
down: `
|
|
129
|
+
DROP TABLE IF EXISTS {{schema}}.neural_patterns;
|
|
130
130
|
`,
|
|
131
131
|
},
|
|
132
132
|
];
|
|
@@ -287,8 +287,8 @@ export const migrateCommand = {
|
|
|
287
287
|
// Check if schema and migrations table exist
|
|
288
288
|
spinner.setText('Checking migration status...');
|
|
289
289
|
spinner.start();
|
|
290
|
-
const schemaExists = await client.query(`
|
|
291
|
-
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
290
|
+
const schemaExists = await client.query(`
|
|
291
|
+
SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
|
|
292
292
|
`, [config.schema]);
|
|
293
293
|
if (schemaExists.rows.length === 0) {
|
|
294
294
|
spinner.fail(`Schema "${config.schema}" not found`);
|
|
@@ -297,10 +297,10 @@ export const migrateCommand = {
|
|
|
297
297
|
return { success: false, exitCode: 1 };
|
|
298
298
|
}
|
|
299
299
|
// Get applied migrations
|
|
300
|
-
const appliedResult = await client.query(`
|
|
301
|
-
SELECT version, name, applied_at, checksum
|
|
302
|
-
FROM ${config.schema}.migrations
|
|
303
|
-
ORDER BY version ASC
|
|
300
|
+
const appliedResult = await client.query(`
|
|
301
|
+
SELECT version, name, applied_at, checksum
|
|
302
|
+
FROM ${config.schema}.migrations
|
|
303
|
+
ORDER BY version ASC
|
|
304
304
|
`);
|
|
305
305
|
const appliedVersions = new Set(appliedResult.rows.map(r => r.version));
|
|
306
306
|
spinner.succeed(`Found ${appliedVersions.size} applied migrations`);
|
|
@@ -426,15 +426,15 @@ export const migrateCommand = {
|
|
|
426
426
|
// Update migrations table
|
|
427
427
|
if (direction === 'up') {
|
|
428
428
|
const checksum = calculateChecksum(resolvedSql);
|
|
429
|
-
await client.query(`
|
|
430
|
-
INSERT INTO ${config.schema}.migrations (version, name, checksum)
|
|
431
|
-
VALUES ($1, $2, $3)
|
|
432
|
-
ON CONFLICT (version) DO UPDATE SET applied_at = NOW()
|
|
429
|
+
await client.query(`
|
|
430
|
+
INSERT INTO ${config.schema}.migrations (version, name, checksum)
|
|
431
|
+
VALUES ($1, $2, $3)
|
|
432
|
+
ON CONFLICT (version) DO UPDATE SET applied_at = NOW()
|
|
433
433
|
`, [migration.version, migration.name, checksum]);
|
|
434
434
|
}
|
|
435
435
|
else {
|
|
436
|
-
await client.query(`
|
|
437
|
-
DELETE FROM ${config.schema}.migrations WHERE version = $1
|
|
436
|
+
await client.query(`
|
|
437
|
+
DELETE FROM ${config.schema}.migrations WHERE version = $1
|
|
438
438
|
`, [migration.version]);
|
|
439
439
|
}
|
|
440
440
|
await client.query('COMMIT');
|