kynjal-cli 3.1.3 → 4.0.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/core/coder.md +1 -1
- package/.claude/agents/core/planner.md +2 -2
- package/.claude/agents/core/researcher.md +1 -1
- package/.claude/agents/core/reviewer.md +1 -1
- package/.claude/agents/core/tester.md +1 -1
- package/.claude/agents/data/data-ml-model.md +4 -4
- package/.claude/agents/development/dev-backend-api.md +4 -4
- package/.claude/agents/documentation/docs-api-openapi.md +4 -4
- package/.claude/agents/github/code-review-swarm.md +2 -2
- package/.claude/agents/github/issue-tracker.md +2 -2
- package/.claude/agents/github/pr-manager.md +2 -2
- package/.claude/agents/github/release-manager.md +2 -2
- package/.claude/agents/github/workflow-automation.md +2 -2
- package/.claude/agents/sparc/architecture.md +3 -3
- package/.claude/agents/sparc/pseudocode.md +2 -2
- package/.claude/agents/sparc/refinement.md +3 -3
- package/.claude/agents/sparc/specification.md +2 -2
- package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
- package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
- package/.claude/agents/swarm/mesh-coordinator.md +1 -1
- package/.claude/agents/templates/base-template-generator.md +25 -4
- package/.claude/agents/templates/sparc-coordinator.md +3 -3
- package/.claude/helpers/auto-commit.sh +1 -1
- package/.claude/helpers/auto-memory-hook.mjs +27 -9
- package/.claude/helpers/hook-handler.cjs +58 -18
- package/.claude/helpers/statusline.cjs +14 -33
- package/.claude/helpers/statusline.js +3 -3
- package/.claude/settings.json +9 -9
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
- package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
- package/README.md +383 -170
- package/bin/cli.js +6 -6
- package/bin/mcp-server.js +1 -1
- package/bin/preinstall.cjs +2 -0
- package/dist/src/appliance/gguf-engine.js +664 -0
- package/dist/src/appliance/gguf-engine.js.map +1 -0
- package/dist/src/appliance/ruvllm-bridge.js +492 -0
- package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
- package/dist/src/appliance/rvfa-builder.js +383 -0
- package/dist/src/appliance/rvfa-builder.js.map +1 -0
- package/dist/src/appliance/rvfa-distribution.js +533 -0
- package/dist/src/appliance/rvfa-distribution.js.map +1 -0
- package/dist/src/appliance/rvfa-format.js +465 -0
- package/dist/src/appliance/rvfa-format.js.map +1 -0
- package/dist/src/appliance/rvfa-runner.js +373 -0
- package/dist/src/appliance/rvfa-runner.js.map +1 -0
- package/dist/src/appliance/rvfa-signing.js +469 -0
- package/dist/src/appliance/rvfa-signing.js.map +1 -0
- package/dist/src/benchmarks/pretrain/index.js +542 -331
- package/dist/src/benchmarks/pretrain/index.js.map +1 -1
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +725 -502
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.js +1548 -1218
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/appliance-advanced.d.ts +9 -0
- package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
- package/dist/src/commands/appliance-advanced.js +324 -0
- package/dist/src/commands/appliance-advanced.js.map +1 -0
- package/dist/src/commands/appliance.d.ts +8 -0
- package/dist/src/commands/appliance.d.ts.map +1 -0
- package/dist/src/commands/appliance.js +581 -0
- package/dist/src/commands/appliance.js.map +1 -0
- package/dist/src/commands/benchmark.js +523 -372
- package/dist/src/commands/benchmark.js.map +1 -1
- package/dist/src/commands/claims.js +364 -274
- package/dist/src/commands/claims.js.map +1 -1
- package/dist/src/commands/cleanup.d.ts +13 -0
- package/dist/src/commands/cleanup.d.ts.map +1 -0
- package/dist/src/commands/cleanup.js +262 -0
- package/dist/src/commands/cleanup.js.map +1 -0
- package/dist/src/commands/completions.js +118 -477
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +303 -237
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +597 -425
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/deployment.js +275 -194
- package/dist/src/commands/deployment.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +690 -460
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.js +1543 -1293
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/guidance.js +596 -449
- package/dist/src/commands/guidance.js.map +1 -1
- package/dist/src/commands/hive-mind.js +938 -854
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +3677 -2570
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.js +322 -122
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +943 -787
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.js +558 -383
- package/dist/src/commands/issues.js.map +1 -1
- package/dist/src/commands/mcp.d.ts.map +1 -1
- package/dist/src/commands/mcp.js +605 -475
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +1031 -814
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +347 -282
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/neural.d.ts.map +1 -1
- package/dist/src/commands/neural.js +1563 -1283
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/performance.js +643 -497
- package/dist/src/commands/performance.js.map +1 -1
- package/dist/src/commands/plugins.js +841 -668
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/process.js +447 -392
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/progress.js +256 -162
- package/dist/src/commands/progress.js.map +1 -1
- package/dist/src/commands/providers.js +220 -150
- package/dist/src/commands/providers.js.map +1 -1
- package/dist/src/commands/route.js +665 -520
- package/dist/src/commands/route.js.map +1 -1
- package/dist/src/commands/ruvector/backup.js +651 -505
- package/dist/src/commands/ruvector/backup.js.map +1 -1
- package/dist/src/commands/ruvector/benchmark.js +401 -349
- package/dist/src/commands/ruvector/benchmark.js.map +1 -1
- package/dist/src/commands/ruvector/import.js +267 -225
- package/dist/src/commands/ruvector/import.js.map +1 -1
- package/dist/src/commands/ruvector/index.js +75 -37
- package/dist/src/commands/ruvector/index.js.map +1 -1
- package/dist/src/commands/ruvector/init.js +359 -336
- package/dist/src/commands/ruvector/init.js.map +1 -1
- package/dist/src/commands/ruvector/migrate.js +322 -335
- package/dist/src/commands/ruvector/migrate.js.map +1 -1
- package/dist/src/commands/ruvector/optimize.js +431 -375
- package/dist/src/commands/ruvector/optimize.js.map +1 -1
- package/dist/src/commands/ruvector/setup.js +117 -703
- package/dist/src/commands/ruvector/setup.js.map +1 -1
- package/dist/src/commands/ruvector/status.js +419 -364
- package/dist/src/commands/ruvector/status.js.map +1 -1
- package/dist/src/commands/security.d.ts.map +1 -1
- package/dist/src/commands/security.js +610 -456
- package/dist/src/commands/security.js.map +1 -1
- package/dist/src/commands/session.d.ts +1 -1
- package/dist/src/commands/session.js +627 -505
- package/dist/src/commands/session.js.map +1 -1
- package/dist/src/commands/start.d.ts +1 -1
- package/dist/src/commands/start.js +368 -271
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +492 -379
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.js +488 -408
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.d.ts +1 -1
- package/dist/src/commands/task.js +539 -424
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/commands/transfer-store.js +412 -322
- package/dist/src/commands/transfer-store.js.map +1 -1
- package/dist/src/commands/update.js +291 -196
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/workflow.js +486 -386
- package/dist/src/commands/workflow.js.map +1 -1
- package/dist/src/config-adapter.js +40 -39
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.js +416 -312
- package/dist/src/index.js.map +1 -1
- package/dist/src/infrastructure/in-memory-repositories.js +507 -246
- package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +78 -368
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.js +1019 -1345
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +60 -635
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/index.d.ts +1 -1
- package/dist/src/init/index.d.ts.map +1 -1
- package/dist/src/init/index.js +1 -1
- package/dist/src/init/index.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts +0 -1
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +62 -42
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +167 -100
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +16 -8
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +20 -1300
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +15 -5
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +66 -76
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.js +130 -76
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.js +758 -445
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +492 -391
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/agentdb-tools.js +758 -0
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
- package/dist/src/mcp-tools/analyze-tools.js +236 -172
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/auto-install.js +142 -80
- package/dist/src/mcp-tools/auto-install.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +375 -252
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +565 -473
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +284 -190
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +600 -349
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +367 -289
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +693 -582
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +312 -261
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +718 -423
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +2726 -1978
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +2 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +514 -329
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +428 -326
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +480 -420
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +278 -204
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +9 -0
- package/dist/src/mcp-tools/ruvllm-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/ruvllm-tools.js +399 -0
- package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -0
- package/dist/src/mcp-tools/security-tools.js +429 -297
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +234 -185
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts +2 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +303 -64
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +352 -200
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +357 -189
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +196 -148
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +333 -186
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +9 -0
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js +377 -0
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +471 -335
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +345 -173
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/intelligence.js +841 -359
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.js +1964 -0
- package/dist/src/memory/memory-bridge.js.map +1 -0
- package/dist/src/memory/memory-initializer.js +1895 -1602
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.js +329 -199
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/output.d.ts +2 -2
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +273 -242
- package/dist/src/output.js.map +1 -1
- package/dist/src/parser.js +217 -124
- package/dist/src/parser.js.map +1 -1
- package/dist/src/plugins/manager.js +531 -278
- package/dist/src/plugins/manager.js.map +1 -1
- package/dist/src/plugins/store/discovery.js +362 -275
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/index.js +105 -48
- package/dist/src/plugins/store/index.js.map +1 -1
- package/dist/src/plugins/store/search.js +107 -69
- package/dist/src/plugins/store/search.js.map +1 -1
- package/dist/src/plugins/tests/demo-plugin-store.js +160 -113
- package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
- package/dist/src/plugins/tests/standalone-test.js +223 -172
- package/dist/src/plugins/tests/standalone-test.js.map +1 -1
- package/dist/src/plugins/tests/test-plugin-store.js +228 -190
- package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
- package/dist/src/production/circuit-breaker.js +126 -62
- package/dist/src/production/circuit-breaker.js.map +1 -1
- package/dist/src/production/error-handler.js +156 -86
- package/dist/src/production/error-handler.js.map +1 -1
- package/dist/src/production/monitoring.js +220 -139
- package/dist/src/production/monitoring.js.map +1 -1
- package/dist/src/production/rate-limiter.js +93 -74
- package/dist/src/production/rate-limiter.js.map +1 -1
- package/dist/src/production/retry.js +167 -75
- package/dist/src/production/retry.js.map +1 -1
- package/dist/src/prompt.js +560 -436
- package/dist/src/prompt.js.map +1 -1
- package/dist/src/runtime/headless.js +289 -200
- package/dist/src/runtime/headless.js.map +1 -1
- package/dist/src/ruvector/agent-wasm.js +511 -0
- package/dist/src/ruvector/agent-wasm.js.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +232 -145
- package/dist/src/ruvector/ast-analyzer.js.map +1 -1
- package/dist/src/ruvector/coverage-router.js +419 -287
- package/dist/src/ruvector/coverage-router.js.map +1 -1
- package/dist/src/ruvector/coverage-tools.js +101 -56
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/ruvector/diff-classifier.js +451 -324
- package/dist/src/ruvector/diff-classifier.js.map +1 -1
- package/dist/src/ruvector/enhanced-model-router.js +337 -251
- package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
- package/dist/src/ruvector/flash-attention.js +254 -223
- package/dist/src/ruvector/flash-attention.js.map +1 -1
- package/dist/src/ruvector/graph-analyzer.js +680 -486
- package/dist/src/ruvector/graph-analyzer.js.map +1 -1
- package/dist/src/ruvector/index.js +113 -27
- package/dist/src/ruvector/index.js.map +1 -1
- package/dist/src/ruvector/lora-adapter.js +248 -155
- package/dist/src/ruvector/lora-adapter.js.map +1 -1
- package/dist/src/ruvector/model-router.js +248 -175
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/ruvector/moe-router.js +286 -228
- package/dist/src/ruvector/moe-router.js.map +1 -1
- package/dist/src/ruvector/q-learning-router.js +338 -257
- package/dist/src/ruvector/q-learning-router.js.map +1 -1
- package/dist/src/ruvector/ruvllm-wasm.js +527 -0
- package/dist/src/ruvector/ruvllm-wasm.js.map +1 -0
- package/dist/src/ruvector/semantic-router.js +67 -60
- package/dist/src/ruvector/semantic-router.js.map +1 -1
- package/dist/src/ruvector/vector-db.js +205 -119
- package/dist/src/ruvector/vector-db.js.map +1 -1
- package/dist/src/services/agentic-flow-bridge.js +168 -0
- package/dist/src/services/agentic-flow-bridge.js.map +1 -0
- package/dist/src/services/claim-service.js +940 -615
- package/dist/src/services/claim-service.js.map +1 -1
- package/dist/src/services/container-worker-pool.js +669 -399
- package/dist/src/services/container-worker-pool.js.map +1 -1
- package/dist/src/services/headless-worker-executor.js +467 -441
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/index.d.ts +5 -5
- package/dist/src/services/index.d.ts.map +1 -1
- package/dist/src/services/index.js +4 -4
- package/dist/src/services/index.js.map +1 -1
- package/dist/src/services/registry-api.js +201 -93
- package/dist/src/services/registry-api.js.map +1 -1
- package/dist/src/services/ruvector-training.js +414 -144
- package/dist/src/services/ruvector-training.js.map +1 -1
- package/dist/src/services/worker-daemon.js +928 -531
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/src/services/worker-queue.js +550 -331
- package/dist/src/services/worker-queue.js.map +1 -1
- package/dist/src/suggest.js +55 -45
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/transfer/anonymization/index.js +37 -29
- package/dist/src/transfer/anonymization/index.js.map +1 -1
- package/dist/src/transfer/deploy-seraphine.d.ts +1 -1
- package/dist/src/transfer/deploy-seraphine.js +156 -129
- package/dist/src/transfer/deploy-seraphine.js.map +1 -1
- package/dist/src/transfer/export.js +142 -84
- package/dist/src/transfer/export.js.map +1 -1
- package/dist/src/transfer/index.d.ts +1 -1
- package/dist/src/transfer/index.d.ts.map +1 -1
- package/dist/src/transfer/index.js +2 -0
- package/dist/src/transfer/index.js.map +1 -1
- package/dist/src/transfer/ipfs/client.js +337 -179
- package/dist/src/transfer/ipfs/client.js.map +1 -1
- package/dist/src/transfer/ipfs/upload.js +434 -290
- package/dist/src/transfer/ipfs/upload.js.map +1 -1
- package/dist/src/transfer/models/seraphine.js +58 -58
- package/dist/src/transfer/models/seraphine.js.map +1 -1
- package/dist/src/transfer/serialization/cfp.js +37 -33
- package/dist/src/transfer/serialization/cfp.js.map +1 -1
- package/dist/src/transfer/storage/gcs.js +248 -139
- package/dist/src/transfer/storage/gcs.js.map +1 -1
- package/dist/src/transfer/store/discovery.js +353 -243
- package/dist/src/transfer/store/discovery.js.map +1 -1
- package/dist/src/transfer/store/download.js +365 -243
- package/dist/src/transfer/store/download.js.map +1 -1
- package/dist/src/transfer/store/index.js +130 -63
- package/dist/src/transfer/store/index.js.map +1 -1
- package/dist/src/transfer/store/publish.js +258 -184
- package/dist/src/transfer/store/publish.js.map +1 -1
- package/dist/src/transfer/store/registry.js +73 -51
- package/dist/src/transfer/store/registry.js.map +1 -1
- package/dist/src/transfer/store/search.js +96 -64
- package/dist/src/transfer/store/search.js.map +1 -1
- package/dist/src/transfer/store/tests/standalone-test.js +231 -174
- package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
- package/dist/src/transfer/test-seraphine.js +130 -95
- package/dist/src/transfer/test-seraphine.js.map +1 -1
- package/dist/src/transfer/tests/test-store.js +239 -194
- package/dist/src/transfer/tests/test-store.js.map +1 -1
- package/dist/src/types.js +56 -27
- package/dist/src/types.js.map +1 -1
- package/dist/src/update/checker.js +183 -106
- package/dist/src/update/checker.js.map +1 -1
- package/dist/src/update/executor.js +198 -135
- package/dist/src/update/executor.js.map +1 -1
- package/dist/src/update/index.js +85 -38
- package/dist/src/update/index.js.map +1 -1
- package/dist/src/update/rate-limiter.js +31 -19
- package/dist/src/update/rate-limiter.js.map +1 -1
- package/dist/src/update/validator.js +64 -38
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -10
- package/.claude/agents/custom/accessibility-auditor.yaml +0 -56
- package/.claude/agents/custom/design-architect.yaml +0 -48
- package/.claude/agents/custom/ui-developer.yaml +0 -46
- package/.claude/agents/custom/ux-researcher.yaml +0 -60
- package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
- package/dist/src/benchmarks/pretrain/index.d.ts.map +0 -1
- package/dist/src/commands/index.d.ts +0 -108
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/config-adapter.d.ts +0 -15
- package/dist/src/config-adapter.d.ts.map +0 -1
- package/dist/src/index.d.ts +0 -76
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
- package/dist/src/infrastructure/in-memory-repositories.d.ts.map +0 -1
- package/dist/src/init/claudemd-generator.d.ts +0 -25
- package/dist/src/init/claudemd-generator.d.ts.map +0 -1
- package/dist/src/init/executor.d.ts +0 -41
- package/dist/src/init/executor.d.ts.map +0 -1
- package/dist/src/init/helpers-generator.d.ts +0 -60
- package/dist/src/init/helpers-generator.d.ts.map +0 -1
- package/dist/src/mcp-client.d.ts +0 -92
- package/dist/src/mcp-client.d.ts.map +0 -1
- package/dist/src/mcp-server.d.ts +0 -161
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-tools/auto-install.d.ts +0 -83
- package/dist/src/mcp-tools/auto-install.d.ts.map +0 -1
- package/dist/src/mcp-tools/types.d.ts +0 -31
- package/dist/src/mcp-tools/types.d.ts.map +0 -1
- package/dist/src/memory/ewc-consolidation.d.ts +0 -271
- package/dist/src/memory/ewc-consolidation.d.ts.map +0 -1
- package/dist/src/memory/intelligence.d.ts +0 -285
- package/dist/src/memory/intelligence.d.ts.map +0 -1
- package/dist/src/memory/memory-initializer.d.ts +0 -396
- package/dist/src/memory/memory-initializer.d.ts.map +0 -1
- package/dist/src/memory/sona-optimizer.d.ts +0 -227
- package/dist/src/memory/sona-optimizer.d.ts.map +0 -1
- package/dist/src/parser.d.ts +0 -41
- package/dist/src/parser.d.ts.map +0 -1
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.d.ts.map +0 -1
- package/dist/src/plugins/store/discovery.d.ts +0 -88
- package/dist/src/plugins/store/discovery.d.ts.map +0 -1
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.d.ts.map +0 -1
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.d.ts.map +0 -1
- package/dist/src/plugins/store/types.d.ts +0 -274
- package/dist/src/plugins/store/types.d.ts.map +0 -1
- package/dist/src/production/circuit-breaker.d.ts +0 -101
- package/dist/src/production/circuit-breaker.d.ts.map +0 -1
- package/dist/src/production/error-handler.d.ts +0 -92
- package/dist/src/production/error-handler.d.ts.map +0 -1
- package/dist/src/production/monitoring.d.ts +0 -161
- package/dist/src/production/monitoring.d.ts.map +0 -1
- package/dist/src/production/rate-limiter.d.ts +0 -80
- package/dist/src/production/rate-limiter.d.ts.map +0 -1
- package/dist/src/production/retry.d.ts +0 -48
- package/dist/src/production/retry.d.ts.map +0 -1
- package/dist/src/prompt.d.ts +0 -44
- package/dist/src/prompt.d.ts.map +0 -1
- package/dist/src/runtime/headless.d.ts +0 -60
- package/dist/src/runtime/headless.d.ts.map +0 -1
- package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
- package/dist/src/ruvector/ast-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/coverage-router.d.ts +0 -160
- package/dist/src/ruvector/coverage-router.d.ts.map +0 -1
- package/dist/src/ruvector/diff-classifier.d.ts +0 -175
- package/dist/src/ruvector/diff-classifier.d.ts.map +0 -1
- package/dist/src/ruvector/enhanced-model-router.d.ts +0 -146
- package/dist/src/ruvector/enhanced-model-router.d.ts.map +0 -1
- package/dist/src/ruvector/flash-attention.d.ts +0 -195
- package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
- package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
- package/dist/src/ruvector/graph-analyzer.d.ts.map +0 -1
- package/dist/src/ruvector/index.d.ts +0 -34
- package/dist/src/ruvector/index.d.ts.map +0 -1
- package/dist/src/ruvector/lora-adapter.d.ts +0 -218
- package/dist/src/ruvector/lora-adapter.d.ts.map +0 -1
- package/dist/src/ruvector/model-router.d.ts +0 -220
- package/dist/src/ruvector/model-router.d.ts.map +0 -1
- package/dist/src/ruvector/moe-router.d.ts +0 -206
- package/dist/src/ruvector/moe-router.d.ts.map +0 -1
- package/dist/src/ruvector/q-learning-router.d.ts +0 -211
- package/dist/src/ruvector/q-learning-router.d.ts.map +0 -1
- package/dist/src/ruvector/semantic-router.d.ts +0 -77
- package/dist/src/ruvector/semantic-router.d.ts.map +0 -1
- package/dist/src/ruvector/vector-db.d.ts +0 -69
- package/dist/src/ruvector/vector-db.d.ts.map +0 -1
- package/dist/src/services/claim-service.d.ts +0 -204
- package/dist/src/services/claim-service.d.ts.map +0 -1
- package/dist/src/services/container-worker-pool.d.ts +0 -197
- package/dist/src/services/container-worker-pool.d.ts.map +0 -1
- package/dist/src/services/headless-worker-executor.d.ts +0 -304
- package/dist/src/services/headless-worker-executor.d.ts.map +0 -1
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.d.ts.map +0 -1
- package/dist/src/services/ruvector-training.d.ts +0 -213
- package/dist/src/services/ruvector-training.d.ts.map +0 -1
- package/dist/src/services/worker-daemon.d.ts +0 -203
- package/dist/src/services/worker-daemon.d.ts.map +0 -1
- package/dist/src/services/worker-queue.d.ts +0 -194
- package/dist/src/services/worker-queue.d.ts.map +0 -1
- package/dist/src/suggest.d.ts +0 -53
- package/dist/src/suggest.d.ts.map +0 -1
- package/dist/src/transfer/export.d.ts +0 -25
- package/dist/src/transfer/export.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/client.d.ts +0 -109
- package/dist/src/transfer/ipfs/client.d.ts.map +0 -1
- package/dist/src/transfer/ipfs/upload.d.ts +0 -95
- package/dist/src/transfer/ipfs/upload.d.ts.map +0 -1
- package/dist/src/transfer/models/seraphine.d.ts +0 -72
- package/dist/src/transfer/models/seraphine.d.ts.map +0 -1
- package/dist/src/transfer/serialization/cfp.d.ts +0 -49
- package/dist/src/transfer/serialization/cfp.d.ts.map +0 -1
- package/dist/src/transfer/storage/gcs.d.ts +0 -82
- package/dist/src/transfer/storage/gcs.d.ts.map +0 -1
- package/dist/src/transfer/store/discovery.d.ts +0 -84
- package/dist/src/transfer/store/discovery.d.ts.map +0 -1
- package/dist/src/transfer/store/download.d.ts +0 -70
- package/dist/src/transfer/store/download.d.ts.map +0 -1
- package/dist/src/transfer/store/index.d.ts +0 -84
- package/dist/src/transfer/store/index.d.ts.map +0 -1
- package/dist/src/transfer/store/publish.d.ts +0 -76
- package/dist/src/transfer/store/publish.d.ts.map +0 -1
- package/dist/src/transfer/store/search.d.ts +0 -54
- package/dist/src/transfer/store/search.d.ts.map +0 -1
- package/dist/src/transfer/types.d.ts +0 -245
- package/dist/src/transfer/types.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -198
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/update/checker.d.ts +0 -34
- package/dist/src/update/checker.d.ts.map +0 -1
- package/dist/src/update/executor.d.ts +0 -32
- package/dist/src/update/executor.d.ts.map +0 -1
- package/dist/src/update/index.d.ts +0 -33
- package/dist/src/update/index.d.ts.map +0 -1
- package/dist/src/update/rate-limiter.d.ts +0 -20
- package/dist/src/update/rate-limiter.d.ts.map +0 -1
- package/dist/src/update/validator.d.ts +0 -17
- package/dist/src/update/validator.d.ts.map +0 -1
|
@@ -9,649 +9,61 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Created with care by ruv.io
|
|
11
11
|
*/
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
23
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (_) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
12
48
|
import { output } from '../../output.js';
|
|
13
49
|
import * as fs from 'fs';
|
|
14
50
|
import * as path from 'path';
|
|
15
51
|
/**
|
|
16
52
|
* Docker Compose template for RuVector PostgreSQL
|
|
17
53
|
*/
|
|
18
|
-
|
|
19
|
-
# Official RuVector extension from ruvnet/ruvector-postgres
|
|
20
|
-
#
|
|
21
|
-
# Features:
|
|
22
|
-
# - 77+ SQL functions for vector operations
|
|
23
|
-
# - HNSW/IVFFlat indexing with SIMD acceleration
|
|
24
|
-
# - Hyperbolic embeddings (Poincaré ball)
|
|
25
|
-
# - Graph operations and GNN support
|
|
26
|
-
# - Agent routing and learning
|
|
27
|
-
#
|
|
28
|
-
# Performance: ~61µs latency, 16,400 QPS with HNSW
|
|
29
|
-
|
|
30
|
-
services:
|
|
31
|
-
postgres:
|
|
32
|
-
image: ruvnet/ruvector-postgres:latest
|
|
33
|
-
container_name: ruvector-postgres
|
|
34
|
-
environment:
|
|
35
|
-
POSTGRES_USER: claude
|
|
36
|
-
POSTGRES_PASSWORD: claude-flow-test
|
|
37
|
-
POSTGRES_DB: claude_flow
|
|
38
|
-
ports:
|
|
39
|
-
- "5432:5432"
|
|
40
|
-
volumes:
|
|
41
|
-
- postgres_data:/var/lib/postgresql/data
|
|
42
|
-
- ./scripts/init-db.sql:/docker-entrypoint-initdb.d/01-init.sql
|
|
43
|
-
healthcheck:
|
|
44
|
-
test: ["CMD-SHELL", "pg_isready -U claude -d claude_flow"]
|
|
45
|
-
interval: 5s
|
|
46
|
-
timeout: 5s
|
|
47
|
-
retries: 10
|
|
48
|
-
command: >
|
|
49
|
-
postgres
|
|
50
|
-
-c work_mem=256MB
|
|
51
|
-
-c maintenance_work_mem=512MB
|
|
52
|
-
|
|
53
|
-
# Optional: pgAdmin for visual database management
|
|
54
|
-
pgadmin:
|
|
55
|
-
image: dpage/pgadmin4:latest
|
|
56
|
-
container_name: ruvector-pgadmin
|
|
57
|
-
environment:
|
|
58
|
-
PGADMIN_DEFAULT_EMAIL: admin@claude-flow.local
|
|
59
|
-
PGADMIN_DEFAULT_PASSWORD: admin
|
|
60
|
-
PGADMIN_CONFIG_SERVER_MODE: 'False'
|
|
61
|
-
ports:
|
|
62
|
-
- "5050:80"
|
|
63
|
-
depends_on:
|
|
64
|
-
postgres:
|
|
65
|
-
condition: service_healthy
|
|
66
|
-
profiles:
|
|
67
|
-
- gui
|
|
68
|
-
|
|
69
|
-
volumes:
|
|
70
|
-
postgres_data:
|
|
71
|
-
`;
|
|
54
|
+
var DOCKER_COMPOSE_TEMPLATE = "# RuVector PostgreSQL Testing Environment\n# Official RuVector extension from ruvnet/ruvector-postgres\n#\n# Features:\n# - 77+ SQL functions for vector operations\n# - HNSW/IVFFlat indexing with SIMD acceleration\n# - Hyperbolic embeddings (Poincar\u00E9 ball)\n# - Graph operations and GNN support\n# - Agent routing and learning\n#\n# Performance: ~61\u00B5s latency, 16,400 QPS with HNSW\n\nservices:\n postgres:\n image: ruvnet/ruvector-postgres:latest\n container_name: ruvector-postgres\n environment:\n POSTGRES_USER: claude\n POSTGRES_PASSWORD: claude-flow-test\n POSTGRES_DB: claude_flow\n ports:\n - \"5432:5432\"\n volumes:\n - postgres_data:/var/lib/postgresql/data\n - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/01-init.sql\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U claude -d claude_flow\"]\n interval: 5s\n timeout: 5s\n retries: 10\n command: >\n postgres\n -c work_mem=256MB\n -c maintenance_work_mem=512MB\n\n # Optional: pgAdmin for visual database management\n pgadmin:\n image: dpage/pgadmin4:latest\n container_name: ruvector-pgadmin\n environment:\n PGADMIN_DEFAULT_EMAIL: admin@claude-flow.local\n PGADMIN_DEFAULT_PASSWORD: admin\n PGADMIN_CONFIG_SERVER_MODE: 'False'\n ports:\n - \"5050:80\"\n depends_on:\n postgres:\n condition: service_healthy\n profiles:\n - gui\n\nvolumes:\n postgres_data:\n";
|
|
72
55
|
/**
|
|
73
56
|
* Init SQL template for RuVector PostgreSQL
|
|
74
57
|
*/
|
|
75
|
-
const INIT_SQL_TEMPLATE = `-- ============================================
|
|
76
|
-
-- RUVECTOR POSTGRESQL INITIALIZATION SCRIPT
|
|
77
|
-
-- ============================================
|
|
78
|
-
--
|
|
79
|
-
-- This script initializes RuVector PostgreSQL extension
|
|
80
|
-
-- from ruvnet/ruvector-postgres with KynjalFlow V3 integration.
|
|
81
|
-
--
|
|
82
|
-
-- RuVector provides 77+ SQL functions including:
|
|
83
|
-
-- - Vector similarity search (HNSW with SIMD)
|
|
84
|
-
-- - Hyperbolic embeddings (Poincaré/Lorentz)
|
|
85
|
-
-- - Graph operations (Cypher queries)
|
|
86
|
-
-- - Agent routing and learning
|
|
87
|
-
--
|
|
88
|
-
-- Performance: ~61µs latency, 16,400 QPS
|
|
89
|
-
|
|
90
|
-
-- ============================================
|
|
91
|
-
-- PART 1: EXTENSION AND SCHEMA SETUP
|
|
92
|
-
-- ============================================
|
|
93
|
-
|
|
94
|
-
-- IMPORTANT: RuVector requires explicit VERSION
|
|
95
|
-
-- The control file says 2.0.0 but only 0.1.0 SQL exists
|
|
96
|
-
CREATE EXTENSION IF NOT EXISTS ruvector VERSION '0.1.0';
|
|
97
|
-
|
|
98
|
-
-- Enable additional required extensions
|
|
99
|
-
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
100
|
-
|
|
101
|
-
-- Create the claude_flow schema
|
|
102
|
-
CREATE SCHEMA IF NOT EXISTS claude_flow;
|
|
103
|
-
|
|
104
|
-
-- Grant permissions
|
|
105
|
-
GRANT ALL ON SCHEMA claude_flow TO claude;
|
|
106
|
-
|
|
107
|
-
-- Set search path
|
|
108
|
-
SET search_path TO claude_flow, public;
|
|
109
|
-
|
|
110
|
-
-- ============================================
|
|
111
|
-
-- PART 2: CORE TABLES
|
|
112
|
-
-- ============================================
|
|
113
|
-
|
|
114
|
-
-- Embeddings table with RuVector vector type (384-dim for all-MiniLM-L6-v2)
|
|
115
|
-
CREATE TABLE IF NOT EXISTS claude_flow.embeddings (
|
|
116
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
117
|
-
content TEXT NOT NULL,
|
|
118
|
-
embedding ruvector(384),
|
|
119
|
-
metadata JSONB DEFAULT '{}',
|
|
120
|
-
namespace VARCHAR(100) DEFAULT 'default',
|
|
121
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
122
|
-
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
-- Patterns table for learned patterns (ReasoningBank)
|
|
126
|
-
CREATE TABLE IF NOT EXISTS claude_flow.patterns (
|
|
127
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
128
|
-
name VARCHAR(255) NOT NULL,
|
|
129
|
-
description TEXT,
|
|
130
|
-
embedding ruvector(384),
|
|
131
|
-
pattern_type VARCHAR(50),
|
|
132
|
-
confidence FLOAT DEFAULT 0.5,
|
|
133
|
-
success_count INT DEFAULT 0,
|
|
134
|
-
failure_count INT DEFAULT 0,
|
|
135
|
-
ewc_importance FLOAT DEFAULT 1.0,
|
|
136
|
-
metadata JSONB DEFAULT '{}',
|
|
137
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
138
|
-
);
|
|
139
|
-
|
|
140
|
-
-- Agents table for multi-agent memory coordination
|
|
141
|
-
CREATE TABLE IF NOT EXISTS claude_flow.agents (
|
|
142
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
143
|
-
agent_id VARCHAR(255) NOT NULL UNIQUE,
|
|
144
|
-
agent_type VARCHAR(50),
|
|
145
|
-
state JSONB DEFAULT '{}',
|
|
146
|
-
memory_embedding ruvector(384),
|
|
147
|
-
last_active TIMESTAMPTZ DEFAULT NOW(),
|
|
148
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
149
|
-
);
|
|
150
|
-
|
|
151
|
-
-- Trajectories table for SONA reinforcement learning
|
|
152
|
-
CREATE TABLE IF NOT EXISTS claude_flow.trajectories (
|
|
153
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
154
|
-
trajectory_id VARCHAR(255) NOT NULL UNIQUE,
|
|
155
|
-
agent_type VARCHAR(50),
|
|
156
|
-
task_description TEXT,
|
|
157
|
-
status VARCHAR(20) DEFAULT 'in_progress',
|
|
158
|
-
steps JSONB DEFAULT '[]',
|
|
159
|
-
outcome VARCHAR(20),
|
|
160
|
-
quality_score FLOAT,
|
|
161
|
-
started_at TIMESTAMPTZ DEFAULT NOW(),
|
|
162
|
-
ended_at TIMESTAMPTZ
|
|
163
|
-
);
|
|
164
|
-
|
|
165
|
-
-- Memory entries table (main storage for KynjalFlow memory)
|
|
166
|
-
CREATE TABLE IF NOT EXISTS claude_flow.memory_entries (
|
|
167
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
168
|
-
key VARCHAR(255) NOT NULL,
|
|
169
|
-
value TEXT NOT NULL,
|
|
170
|
-
embedding ruvector(384),
|
|
171
|
-
namespace VARCHAR(100) DEFAULT 'default',
|
|
172
|
-
metadata JSONB DEFAULT '{}',
|
|
173
|
-
ttl TIMESTAMPTZ,
|
|
174
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
175
|
-
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
176
|
-
UNIQUE(key, namespace)
|
|
177
|
-
);
|
|
178
|
-
|
|
179
|
-
-- Hyperbolic embeddings for hierarchical data
|
|
180
|
-
CREATE TABLE IF NOT EXISTS claude_flow.hyperbolic_embeddings (
|
|
181
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
182
|
-
content TEXT NOT NULL,
|
|
183
|
-
euclidean_embedding ruvector(384),
|
|
184
|
-
poincare_embedding real[], -- Array for hyperbolic operations
|
|
185
|
-
curvature FLOAT DEFAULT -1.0,
|
|
186
|
-
hierarchy_level INT DEFAULT 0,
|
|
187
|
-
parent_id UUID REFERENCES claude_flow.hyperbolic_embeddings(id),
|
|
188
|
-
metadata JSONB DEFAULT '{}',
|
|
189
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
190
|
-
);
|
|
191
|
-
|
|
192
|
-
-- Graph nodes for GNN operations
|
|
193
|
-
CREATE TABLE IF NOT EXISTS claude_flow.graph_nodes (
|
|
194
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
195
|
-
node_id VARCHAR(255) NOT NULL UNIQUE,
|
|
196
|
-
node_type VARCHAR(50),
|
|
197
|
-
embedding ruvector(384),
|
|
198
|
-
features JSONB DEFAULT '{}',
|
|
199
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
200
|
-
);
|
|
201
|
-
|
|
202
|
-
-- Graph edges for message passing
|
|
203
|
-
CREATE TABLE IF NOT EXISTS claude_flow.graph_edges (
|
|
204
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
205
|
-
source_id UUID REFERENCES claude_flow.graph_nodes(id),
|
|
206
|
-
target_id UUID REFERENCES claude_flow.graph_nodes(id),
|
|
207
|
-
edge_type VARCHAR(50),
|
|
208
|
-
weight FLOAT DEFAULT 1.0,
|
|
209
|
-
metadata JSONB DEFAULT '{}',
|
|
210
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
211
|
-
);
|
|
212
|
-
|
|
213
|
-
-- ============================================
|
|
214
|
-
-- PART 3: HNSW INDICES (150x-12,500x faster)
|
|
215
|
-
-- ============================================
|
|
216
|
-
|
|
217
|
-
-- HNSW index for embeddings (cosine distance)
|
|
218
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_hnsw
|
|
219
|
-
ON claude_flow.embeddings
|
|
220
|
-
USING hnsw (embedding ruvector_cosine_ops)
|
|
221
|
-
WITH (m = 16, ef_construction = 100);
|
|
222
|
-
|
|
223
|
-
-- HNSW index for patterns
|
|
224
|
-
CREATE INDEX IF NOT EXISTS idx_patterns_hnsw
|
|
225
|
-
ON claude_flow.patterns
|
|
226
|
-
USING hnsw (embedding ruvector_cosine_ops)
|
|
227
|
-
WITH (m = 16, ef_construction = 100);
|
|
228
|
-
|
|
229
|
-
-- HNSW index for agent memory
|
|
230
|
-
CREATE INDEX IF NOT EXISTS idx_agents_hnsw
|
|
231
|
-
ON claude_flow.agents
|
|
232
|
-
USING hnsw (memory_embedding ruvector_cosine_ops)
|
|
233
|
-
WITH (m = 16, ef_construction = 64);
|
|
234
|
-
|
|
235
|
-
-- HNSW index for memory entries
|
|
236
|
-
CREATE INDEX IF NOT EXISTS idx_memory_entries_hnsw
|
|
237
|
-
ON claude_flow.memory_entries
|
|
238
|
-
USING hnsw (embedding ruvector_cosine_ops)
|
|
239
|
-
WITH (m = 16, ef_construction = 100);
|
|
240
|
-
|
|
241
|
-
-- HNSW index for hyperbolic embeddings
|
|
242
|
-
CREATE INDEX IF NOT EXISTS idx_hyperbolic_hnsw
|
|
243
|
-
ON claude_flow.hyperbolic_embeddings
|
|
244
|
-
USING hnsw (euclidean_embedding ruvector_cosine_ops)
|
|
245
|
-
WITH (m = 16, ef_construction = 100);
|
|
246
|
-
|
|
247
|
-
-- HNSW index for graph nodes
|
|
248
|
-
CREATE INDEX IF NOT EXISTS idx_graph_nodes_hnsw
|
|
249
|
-
ON claude_flow.graph_nodes
|
|
250
|
-
USING hnsw (embedding ruvector_cosine_ops)
|
|
251
|
-
WITH (m = 16, ef_construction = 64);
|
|
252
|
-
|
|
253
|
-
-- Additional indices for common queries
|
|
254
|
-
CREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON claude_flow.embeddings(namespace);
|
|
255
|
-
CREATE INDEX IF NOT EXISTS idx_memory_entries_namespace ON claude_flow.memory_entries(namespace);
|
|
256
|
-
CREATE INDEX IF NOT EXISTS idx_memory_entries_key ON claude_flow.memory_entries(key);
|
|
257
|
-
|
|
258
|
-
-- ============================================
|
|
259
|
-
-- PART 4: CORE SEARCH FUNCTIONS
|
|
260
|
-
-- ============================================
|
|
261
|
-
|
|
262
|
-
-- Semantic similarity search using RuVector HNSW
|
|
263
|
-
CREATE OR REPLACE FUNCTION claude_flow.search_similar(
|
|
264
|
-
query_embedding ruvector(384),
|
|
265
|
-
limit_count INT DEFAULT 10,
|
|
266
|
-
min_similarity FLOAT DEFAULT 0.5
|
|
267
|
-
)
|
|
268
|
-
RETURNS TABLE (
|
|
269
|
-
id UUID,
|
|
270
|
-
content TEXT,
|
|
271
|
-
similarity FLOAT,
|
|
272
|
-
metadata JSONB
|
|
273
|
-
) AS $$
|
|
274
|
-
BEGIN
|
|
275
|
-
RETURN QUERY
|
|
276
|
-
SELECT
|
|
277
|
-
e.id,
|
|
278
|
-
e.content,
|
|
279
|
-
(1 - (e.embedding <=> query_embedding))::FLOAT AS similarity,
|
|
280
|
-
e.metadata
|
|
281
|
-
FROM claude_flow.embeddings e
|
|
282
|
-
WHERE e.embedding IS NOT NULL
|
|
283
|
-
AND (1 - (e.embedding <=> query_embedding)) >= min_similarity
|
|
284
|
-
ORDER BY e.embedding <=> query_embedding
|
|
285
|
-
LIMIT limit_count;
|
|
286
|
-
END;
|
|
287
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
288
|
-
|
|
289
|
-
-- Memory search with namespace filtering
|
|
290
|
-
CREATE OR REPLACE FUNCTION claude_flow.search_memory(
|
|
291
|
-
query_embedding ruvector(384),
|
|
292
|
-
namespace_filter VARCHAR(100) DEFAULT NULL,
|
|
293
|
-
limit_count INT DEFAULT 10,
|
|
294
|
-
min_similarity FLOAT DEFAULT 0.5
|
|
295
|
-
)
|
|
296
|
-
RETURNS TABLE (
|
|
297
|
-
id UUID,
|
|
298
|
-
key VARCHAR(255),
|
|
299
|
-
value TEXT,
|
|
300
|
-
namespace VARCHAR(100),
|
|
301
|
-
similarity FLOAT,
|
|
302
|
-
metadata JSONB
|
|
303
|
-
) AS $$
|
|
304
|
-
BEGIN
|
|
305
|
-
RETURN QUERY
|
|
306
|
-
SELECT
|
|
307
|
-
m.id,
|
|
308
|
-
m.key,
|
|
309
|
-
m.value,
|
|
310
|
-
m.namespace,
|
|
311
|
-
(1 - (m.embedding <=> query_embedding))::FLOAT AS similarity,
|
|
312
|
-
m.metadata
|
|
313
|
-
FROM claude_flow.memory_entries m
|
|
314
|
-
WHERE m.embedding IS NOT NULL
|
|
315
|
-
AND (1 - (m.embedding <=> query_embedding)) >= min_similarity
|
|
316
|
-
AND (namespace_filter IS NULL OR m.namespace = namespace_filter)
|
|
317
|
-
AND (m.ttl IS NULL OR m.ttl > NOW())
|
|
318
|
-
ORDER BY m.embedding <=> query_embedding
|
|
319
|
-
LIMIT limit_count;
|
|
320
|
-
END;
|
|
321
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
322
|
-
|
|
323
|
-
-- Pattern search with type filtering
|
|
324
|
-
CREATE OR REPLACE FUNCTION claude_flow.search_patterns(
|
|
325
|
-
query_embedding ruvector(384),
|
|
326
|
-
pattern_type_filter VARCHAR(50) DEFAULT NULL,
|
|
327
|
-
limit_count INT DEFAULT 10,
|
|
328
|
-
min_confidence FLOAT DEFAULT 0.5
|
|
329
|
-
)
|
|
330
|
-
RETURNS TABLE (
|
|
331
|
-
id UUID,
|
|
332
|
-
name VARCHAR(255),
|
|
333
|
-
description TEXT,
|
|
334
|
-
similarity FLOAT,
|
|
335
|
-
confidence FLOAT,
|
|
336
|
-
metadata JSONB
|
|
337
|
-
) AS $$
|
|
338
|
-
BEGIN
|
|
339
|
-
RETURN QUERY
|
|
340
|
-
SELECT
|
|
341
|
-
p.id,
|
|
342
|
-
p.name,
|
|
343
|
-
p.description,
|
|
344
|
-
(1 - (p.embedding <=> query_embedding))::FLOAT AS similarity,
|
|
345
|
-
p.confidence,
|
|
346
|
-
p.metadata
|
|
347
|
-
FROM claude_flow.patterns p
|
|
348
|
-
WHERE p.embedding IS NOT NULL
|
|
349
|
-
AND p.confidence >= min_confidence
|
|
350
|
-
AND (pattern_type_filter IS NULL OR p.pattern_type = pattern_type_filter)
|
|
351
|
-
ORDER BY p.embedding <=> query_embedding
|
|
352
|
-
LIMIT limit_count;
|
|
353
|
-
END;
|
|
354
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
355
|
-
|
|
356
|
-
-- Agent routing by expertise similarity
|
|
357
|
-
CREATE OR REPLACE FUNCTION claude_flow.find_agents(
|
|
358
|
-
query_embedding ruvector(384),
|
|
359
|
-
agent_type_filter VARCHAR(50) DEFAULT NULL,
|
|
360
|
-
limit_count INT DEFAULT 5
|
|
361
|
-
)
|
|
362
|
-
RETURNS TABLE (
|
|
363
|
-
agent_id VARCHAR(255),
|
|
364
|
-
agent_type VARCHAR(50),
|
|
365
|
-
similarity FLOAT,
|
|
366
|
-
state JSONB
|
|
367
|
-
) AS $$
|
|
368
|
-
BEGIN
|
|
369
|
-
RETURN QUERY
|
|
370
|
-
SELECT
|
|
371
|
-
a.agent_id,
|
|
372
|
-
a.agent_type,
|
|
373
|
-
(1 - (a.memory_embedding <=> query_embedding))::FLOAT AS similarity,
|
|
374
|
-
a.state
|
|
375
|
-
FROM claude_flow.agents a
|
|
376
|
-
WHERE a.memory_embedding IS NOT NULL
|
|
377
|
-
AND (agent_type_filter IS NULL OR a.agent_type = agent_type_filter)
|
|
378
|
-
ORDER BY a.memory_embedding <=> query_embedding
|
|
379
|
-
LIMIT limit_count;
|
|
380
|
-
END;
|
|
381
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
382
|
-
|
|
383
|
-
-- ============================================
|
|
384
|
-
-- PART 5: HYPERBOLIC OPERATIONS
|
|
385
|
-
-- ============================================
|
|
386
|
-
|
|
387
|
-
-- Convert Euclidean to Poincaré embedding
|
|
388
|
-
CREATE OR REPLACE FUNCTION claude_flow.to_poincare(
|
|
389
|
-
euclidean real[],
|
|
390
|
-
curvature FLOAT DEFAULT -1.0
|
|
391
|
-
)
|
|
392
|
-
RETURNS real[] AS $$
|
|
393
|
-
BEGIN
|
|
394
|
-
RETURN ruvector_exp_map(ARRAY_FILL(0.0::real, ARRAY[array_length(euclidean, 1)]), euclidean, curvature);
|
|
395
|
-
END;
|
|
396
|
-
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
397
|
-
|
|
398
|
-
-- Poincaré distance (geodesic)
|
|
399
|
-
CREATE OR REPLACE FUNCTION claude_flow.poincare_distance(
|
|
400
|
-
x real[],
|
|
401
|
-
y real[],
|
|
402
|
-
curvature FLOAT DEFAULT -1.0
|
|
403
|
-
)
|
|
404
|
-
RETURNS FLOAT AS $$
|
|
405
|
-
BEGIN
|
|
406
|
-
RETURN ruvector_poincare_distance(x, y, curvature);
|
|
407
|
-
END;
|
|
408
|
-
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
409
|
-
|
|
410
|
-
-- Hyperbolic search in Poincaré ball
|
|
411
|
-
CREATE OR REPLACE FUNCTION claude_flow.hyperbolic_search(
|
|
412
|
-
query ruvector(384),
|
|
413
|
-
limit_count INT DEFAULT 10,
|
|
414
|
-
curvature FLOAT DEFAULT -1.0
|
|
415
|
-
)
|
|
416
|
-
RETURNS TABLE (
|
|
417
|
-
id UUID,
|
|
418
|
-
content TEXT,
|
|
419
|
-
euclidean_dist FLOAT,
|
|
420
|
-
hyperbolic_dist FLOAT,
|
|
421
|
-
hierarchy_level INT,
|
|
422
|
-
metadata JSONB
|
|
423
|
-
) AS $$
|
|
424
|
-
DECLARE
|
|
425
|
-
query_arr real[];
|
|
426
|
-
query_poincare real[];
|
|
427
|
-
BEGIN
|
|
428
|
-
-- Convert query to array and then to Poincaré
|
|
429
|
-
SELECT array_agg(x::real ORDER BY ordinality) INTO query_arr
|
|
430
|
-
FROM unnest(string_to_array(trim(both '[]' from query::text), ',')) WITH ORDINALITY AS t(x, ordinality);
|
|
431
|
-
|
|
432
|
-
query_poincare := claude_flow.to_poincare(query_arr, curvature);
|
|
433
|
-
|
|
434
|
-
RETURN QUERY
|
|
435
|
-
SELECT
|
|
436
|
-
he.id,
|
|
437
|
-
he.content,
|
|
438
|
-
(he.euclidean_embedding <-> query)::FLOAT AS euc_dist,
|
|
439
|
-
COALESCE(ruvector_poincare_distance(he.poincare_embedding, query_poincare, curvature), 999.0)::FLOAT AS hyp_dist,
|
|
440
|
-
he.hierarchy_level,
|
|
441
|
-
he.metadata
|
|
442
|
-
FROM claude_flow.hyperbolic_embeddings he
|
|
443
|
-
WHERE he.euclidean_embedding IS NOT NULL
|
|
444
|
-
ORDER BY he.euclidean_embedding <-> query
|
|
445
|
-
LIMIT limit_count;
|
|
446
|
-
END;
|
|
447
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
448
|
-
|
|
449
|
-
-- ============================================
|
|
450
|
-
-- PART 6: UTILITY FUNCTIONS
|
|
451
|
-
-- ============================================
|
|
452
|
-
|
|
453
|
-
-- Get RuVector version info
|
|
454
|
-
CREATE OR REPLACE FUNCTION claude_flow.ruvector_info()
|
|
455
|
-
RETURNS TABLE (
|
|
456
|
-
version TEXT,
|
|
457
|
-
simd_info TEXT
|
|
458
|
-
) AS $$
|
|
459
|
-
BEGIN
|
|
460
|
-
RETURN QUERY
|
|
461
|
-
SELECT ruvector_version(), ruvector_simd_info();
|
|
462
|
-
END;
|
|
463
|
-
$$ LANGUAGE plpgsql STABLE;
|
|
464
|
-
|
|
465
|
-
-- Cosine similarity helper (converts cosine distance to similarity)
|
|
466
|
-
CREATE OR REPLACE FUNCTION claude_flow.cosine_similarity(
|
|
467
|
-
a ruvector,
|
|
468
|
-
b ruvector
|
|
469
|
-
)
|
|
470
|
-
RETURNS FLOAT AS $$
|
|
471
|
-
BEGIN
|
|
472
|
-
RETURN (1 - (a <=> b))::FLOAT;
|
|
473
|
-
END;
|
|
474
|
-
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
475
|
-
|
|
476
|
-
-- L2 distance helper
|
|
477
|
-
CREATE OR REPLACE FUNCTION claude_flow.l2_distance(
|
|
478
|
-
a ruvector,
|
|
479
|
-
b ruvector
|
|
480
|
-
)
|
|
481
|
-
RETURNS FLOAT AS $$
|
|
482
|
-
BEGIN
|
|
483
|
-
RETURN (a <-> b)::FLOAT;
|
|
484
|
-
END;
|
|
485
|
-
$$ LANGUAGE plpgsql IMMUTABLE;
|
|
486
|
-
|
|
487
|
-
-- Upsert memory entry
|
|
488
|
-
CREATE OR REPLACE FUNCTION claude_flow.upsert_memory(
|
|
489
|
-
p_key VARCHAR(255),
|
|
490
|
-
p_value TEXT,
|
|
491
|
-
p_embedding ruvector(384) DEFAULT NULL,
|
|
492
|
-
p_namespace VARCHAR(100) DEFAULT 'default',
|
|
493
|
-
p_metadata JSONB DEFAULT '{}',
|
|
494
|
-
p_ttl TIMESTAMPTZ DEFAULT NULL
|
|
495
|
-
)
|
|
496
|
-
RETURNS UUID AS $$
|
|
497
|
-
DECLARE
|
|
498
|
-
v_id UUID;
|
|
499
|
-
BEGIN
|
|
500
|
-
INSERT INTO claude_flow.memory_entries (key, value, embedding, namespace, metadata, ttl, updated_at)
|
|
501
|
-
VALUES (p_key, p_value, p_embedding, p_namespace, p_metadata, p_ttl, NOW())
|
|
502
|
-
ON CONFLICT (key, namespace) DO UPDATE SET
|
|
503
|
-
value = EXCLUDED.value,
|
|
504
|
-
embedding = COALESCE(EXCLUDED.embedding, claude_flow.memory_entries.embedding),
|
|
505
|
-
metadata = EXCLUDED.metadata,
|
|
506
|
-
ttl = EXCLUDED.ttl,
|
|
507
|
-
updated_at = NOW()
|
|
508
|
-
RETURNING id INTO v_id;
|
|
509
|
-
|
|
510
|
-
RETURN v_id;
|
|
511
|
-
END;
|
|
512
|
-
$$ LANGUAGE plpgsql;
|
|
513
|
-
|
|
514
|
-
-- ============================================
|
|
515
|
-
-- COMPLETION
|
|
516
|
-
-- ============================================
|
|
517
|
-
|
|
518
|
-
DO $$
|
|
519
|
-
DECLARE
|
|
520
|
-
v_version TEXT;
|
|
521
|
-
v_simd TEXT;
|
|
522
|
-
BEGIN
|
|
523
|
-
SELECT ruvector_version() INTO v_version;
|
|
524
|
-
SELECT ruvector_simd_info() INTO v_simd;
|
|
525
|
-
|
|
526
|
-
RAISE NOTICE '';
|
|
527
|
-
RAISE NOTICE '============================================';
|
|
528
|
-
RAISE NOTICE 'RuVector PostgreSQL Initialization Complete!';
|
|
529
|
-
RAISE NOTICE '============================================';
|
|
530
|
-
RAISE NOTICE '';
|
|
531
|
-
RAISE NOTICE 'RuVector Version: %', v_version;
|
|
532
|
-
RAISE NOTICE 'SIMD: %', v_simd;
|
|
533
|
-
RAISE NOTICE '';
|
|
534
|
-
RAISE NOTICE 'Schema: claude_flow';
|
|
535
|
-
RAISE NOTICE 'Tables: embeddings, patterns, agents, trajectories,';
|
|
536
|
-
RAISE NOTICE ' memory_entries, hyperbolic_embeddings,';
|
|
537
|
-
RAISE NOTICE ' graph_nodes, graph_edges';
|
|
538
|
-
RAISE NOTICE 'Indices: 6 HNSW indices + 3 B-tree indices';
|
|
539
|
-
RAISE NOTICE '';
|
|
540
|
-
RAISE NOTICE 'Key Functions:';
|
|
541
|
-
RAISE NOTICE ' - claude_flow.search_similar(embedding, limit, min_sim)';
|
|
542
|
-
RAISE NOTICE ' - claude_flow.search_memory(embedding, namespace, limit)';
|
|
543
|
-
RAISE NOTICE ' - claude_flow.search_patterns(embedding, type, limit)';
|
|
544
|
-
RAISE NOTICE ' - claude_flow.find_agents(embedding, type, limit)';
|
|
545
|
-
RAISE NOTICE ' - claude_flow.hyperbolic_search(embedding, limit, curvature)';
|
|
546
|
-
RAISE NOTICE ' - claude_flow.upsert_memory(key, value, embedding, namespace)';
|
|
547
|
-
RAISE NOTICE '';
|
|
548
|
-
RAISE NOTICE 'Operators: <=> (cosine), <-> (L2), <#> (neg inner product)';
|
|
549
|
-
RAISE NOTICE '';
|
|
550
|
-
END $$;
|
|
551
|
-
`;
|
|
58
|
+
var INIT_SQL_TEMPLATE = "-- ============================================\n-- RUVECTOR POSTGRESQL INITIALIZATION SCRIPT\n-- ============================================\n--\n-- This script initializes RuVector PostgreSQL extension\n-- from ruvnet/ruvector-postgres with Claude-Flow V3 integration.\n--\n-- RuVector provides 77+ SQL functions including:\n-- - Vector similarity search (HNSW with SIMD)\n-- - Hyperbolic embeddings (Poincar\u00E9/Lorentz)\n-- - Graph operations (Cypher queries)\n-- - Agent routing and learning\n--\n-- Performance: ~61\u00B5s latency, 16,400 QPS\n\n-- ============================================\n-- PART 1: EXTENSION AND SCHEMA SETUP\n-- ============================================\n\n-- IMPORTANT: RuVector requires explicit VERSION\n-- The control file says 2.0.0 but only 0.1.0 SQL exists\nCREATE EXTENSION IF NOT EXISTS ruvector VERSION '0.1.0';\n\n-- Enable additional required extensions\nCREATE EXTENSION IF NOT EXISTS pgcrypto;\n\n-- Create the claude_flow schema\nCREATE SCHEMA IF NOT EXISTS claude_flow;\n\n-- Grant permissions\nGRANT ALL ON SCHEMA claude_flow TO claude;\n\n-- Set search path\nSET search_path TO claude_flow, public;\n\n-- ============================================\n-- PART 2: CORE TABLES\n-- ============================================\n\n-- Embeddings table with RuVector vector type (384-dim for all-MiniLM-L6-v2)\nCREATE TABLE IF NOT EXISTS claude_flow.embeddings (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n content TEXT NOT NULL,\n embedding ruvector(384),\n metadata JSONB DEFAULT '{}',\n namespace VARCHAR(100) DEFAULT 'default',\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Patterns table for learned patterns (ReasoningBank)\nCREATE TABLE IF NOT EXISTS claude_flow.patterns (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n name VARCHAR(255) NOT NULL,\n description TEXT,\n embedding ruvector(384),\n pattern_type VARCHAR(50),\n confidence FLOAT DEFAULT 0.5,\n success_count INT DEFAULT 0,\n failure_count INT DEFAULT 0,\n ewc_importance FLOAT DEFAULT 1.0,\n metadata JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Agents table for multi-agent memory coordination\nCREATE TABLE IF NOT EXISTS claude_flow.agents (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n agent_id VARCHAR(255) NOT NULL UNIQUE,\n agent_type VARCHAR(50),\n state JSONB DEFAULT '{}',\n memory_embedding ruvector(384),\n last_active TIMESTAMPTZ DEFAULT NOW(),\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Trajectories table for SONA reinforcement learning\nCREATE TABLE IF NOT EXISTS claude_flow.trajectories (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n trajectory_id VARCHAR(255) NOT NULL UNIQUE,\n agent_type VARCHAR(50),\n task_description TEXT,\n status VARCHAR(20) DEFAULT 'in_progress',\n steps JSONB DEFAULT '[]',\n outcome VARCHAR(20),\n quality_score FLOAT,\n started_at TIMESTAMPTZ DEFAULT NOW(),\n ended_at TIMESTAMPTZ\n);\n\n-- Memory entries table (main storage for Claude-Flow memory)\nCREATE TABLE IF NOT EXISTS claude_flow.memory_entries (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n key VARCHAR(255) NOT NULL,\n value TEXT NOT NULL,\n embedding ruvector(384),\n namespace VARCHAR(100) DEFAULT 'default',\n metadata JSONB DEFAULT '{}',\n ttl TIMESTAMPTZ,\n created_at TIMESTAMPTZ DEFAULT NOW(),\n updated_at TIMESTAMPTZ DEFAULT NOW(),\n UNIQUE(key, namespace)\n);\n\n-- Hyperbolic embeddings for hierarchical data\nCREATE TABLE IF NOT EXISTS claude_flow.hyperbolic_embeddings (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n content TEXT NOT NULL,\n euclidean_embedding ruvector(384),\n poincare_embedding real[], -- Array for hyperbolic operations\n curvature FLOAT DEFAULT -1.0,\n hierarchy_level INT DEFAULT 0,\n parent_id UUID REFERENCES claude_flow.hyperbolic_embeddings(id),\n metadata JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Graph nodes for GNN operations\nCREATE TABLE IF NOT EXISTS claude_flow.graph_nodes (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n node_id VARCHAR(255) NOT NULL UNIQUE,\n node_type VARCHAR(50),\n embedding ruvector(384),\n features JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- Graph edges for message passing\nCREATE TABLE IF NOT EXISTS claude_flow.graph_edges (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid(),\n source_id UUID REFERENCES claude_flow.graph_nodes(id),\n target_id UUID REFERENCES claude_flow.graph_nodes(id),\n edge_type VARCHAR(50),\n weight FLOAT DEFAULT 1.0,\n metadata JSONB DEFAULT '{}',\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n\n-- ============================================\n-- PART 3: HNSW INDICES (150x-12,500x faster)\n-- ============================================\n\n-- HNSW index for embeddings (cosine distance)\nCREATE INDEX IF NOT EXISTS idx_embeddings_hnsw\nON claude_flow.embeddings\nUSING hnsw (embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 100);\n\n-- HNSW index for patterns\nCREATE INDEX IF NOT EXISTS idx_patterns_hnsw\nON claude_flow.patterns\nUSING hnsw (embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 100);\n\n-- HNSW index for agent memory\nCREATE INDEX IF NOT EXISTS idx_agents_hnsw\nON claude_flow.agents\nUSING hnsw (memory_embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 64);\n\n-- HNSW index for memory entries\nCREATE INDEX IF NOT EXISTS idx_memory_entries_hnsw\nON claude_flow.memory_entries\nUSING hnsw (embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 100);\n\n-- HNSW index for hyperbolic embeddings\nCREATE INDEX IF NOT EXISTS idx_hyperbolic_hnsw\nON claude_flow.hyperbolic_embeddings\nUSING hnsw (euclidean_embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 100);\n\n-- HNSW index for graph nodes\nCREATE INDEX IF NOT EXISTS idx_graph_nodes_hnsw\nON claude_flow.graph_nodes\nUSING hnsw (embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 64);\n\n-- Additional indices for common queries\nCREATE INDEX IF NOT EXISTS idx_embeddings_namespace ON claude_flow.embeddings(namespace);\nCREATE INDEX IF NOT EXISTS idx_memory_entries_namespace ON claude_flow.memory_entries(namespace);\nCREATE INDEX IF NOT EXISTS idx_memory_entries_key ON claude_flow.memory_entries(key);\n\n-- ============================================\n-- PART 4: CORE SEARCH FUNCTIONS\n-- ============================================\n\n-- Semantic similarity search using RuVector HNSW\nCREATE OR REPLACE FUNCTION claude_flow.search_similar(\n query_embedding ruvector(384),\n limit_count INT DEFAULT 10,\n min_similarity FLOAT DEFAULT 0.5\n)\nRETURNS TABLE (\n id UUID,\n content TEXT,\n similarity FLOAT,\n metadata JSONB\n) AS $$\nBEGIN\n RETURN QUERY\n SELECT\n e.id,\n e.content,\n (1 - (e.embedding <=> query_embedding))::FLOAT AS similarity,\n e.metadata\n FROM claude_flow.embeddings e\n WHERE e.embedding IS NOT NULL\n AND (1 - (e.embedding <=> query_embedding)) >= min_similarity\n ORDER BY e.embedding <=> query_embedding\n LIMIT limit_count;\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- Memory search with namespace filtering\nCREATE OR REPLACE FUNCTION claude_flow.search_memory(\n query_embedding ruvector(384),\n namespace_filter VARCHAR(100) DEFAULT NULL,\n limit_count INT DEFAULT 10,\n min_similarity FLOAT DEFAULT 0.5\n)\nRETURNS TABLE (\n id UUID,\n key VARCHAR(255),\n value TEXT,\n namespace VARCHAR(100),\n similarity FLOAT,\n metadata JSONB\n) AS $$\nBEGIN\n RETURN QUERY\n SELECT\n m.id,\n m.key,\n m.value,\n m.namespace,\n (1 - (m.embedding <=> query_embedding))::FLOAT AS similarity,\n m.metadata\n FROM claude_flow.memory_entries m\n WHERE m.embedding IS NOT NULL\n AND (1 - (m.embedding <=> query_embedding)) >= min_similarity\n AND (namespace_filter IS NULL OR m.namespace = namespace_filter)\n AND (m.ttl IS NULL OR m.ttl > NOW())\n ORDER BY m.embedding <=> query_embedding\n LIMIT limit_count;\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- Pattern search with type filtering\nCREATE OR REPLACE FUNCTION claude_flow.search_patterns(\n query_embedding ruvector(384),\n pattern_type_filter VARCHAR(50) DEFAULT NULL,\n limit_count INT DEFAULT 10,\n min_confidence FLOAT DEFAULT 0.5\n)\nRETURNS TABLE (\n id UUID,\n name VARCHAR(255),\n description TEXT,\n similarity FLOAT,\n confidence FLOAT,\n metadata JSONB\n) AS $$\nBEGIN\n RETURN QUERY\n SELECT\n p.id,\n p.name,\n p.description,\n (1 - (p.embedding <=> query_embedding))::FLOAT AS similarity,\n p.confidence,\n p.metadata\n FROM claude_flow.patterns p\n WHERE p.embedding IS NOT NULL\n AND p.confidence >= min_confidence\n AND (pattern_type_filter IS NULL OR p.pattern_type = pattern_type_filter)\n ORDER BY p.embedding <=> query_embedding\n LIMIT limit_count;\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- Agent routing by expertise similarity\nCREATE OR REPLACE FUNCTION claude_flow.find_agents(\n query_embedding ruvector(384),\n agent_type_filter VARCHAR(50) DEFAULT NULL,\n limit_count INT DEFAULT 5\n)\nRETURNS TABLE (\n agent_id VARCHAR(255),\n agent_type VARCHAR(50),\n similarity FLOAT,\n state JSONB\n) AS $$\nBEGIN\n RETURN QUERY\n SELECT\n a.agent_id,\n a.agent_type,\n (1 - (a.memory_embedding <=> query_embedding))::FLOAT AS similarity,\n a.state\n FROM claude_flow.agents a\n WHERE a.memory_embedding IS NOT NULL\n AND (agent_type_filter IS NULL OR a.agent_type = agent_type_filter)\n ORDER BY a.memory_embedding <=> query_embedding\n LIMIT limit_count;\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- ============================================\n-- PART 5: HYPERBOLIC OPERATIONS\n-- ============================================\n\n-- Convert Euclidean to Poincar\u00E9 embedding\nCREATE OR REPLACE FUNCTION claude_flow.to_poincare(\n euclidean real[],\n curvature FLOAT DEFAULT -1.0\n)\nRETURNS real[] AS $$\nBEGIN\n RETURN ruvector_exp_map(ARRAY_FILL(0.0::real, ARRAY[array_length(euclidean, 1)]), euclidean, curvature);\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\n-- Poincar\u00E9 distance (geodesic)\nCREATE OR REPLACE FUNCTION claude_flow.poincare_distance(\n x real[],\n y real[],\n curvature FLOAT DEFAULT -1.0\n)\nRETURNS FLOAT AS $$\nBEGIN\n RETURN ruvector_poincare_distance(x, y, curvature);\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\n-- Hyperbolic search in Poincar\u00E9 ball\nCREATE OR REPLACE FUNCTION claude_flow.hyperbolic_search(\n query ruvector(384),\n limit_count INT DEFAULT 10,\n curvature FLOAT DEFAULT -1.0\n)\nRETURNS TABLE (\n id UUID,\n content TEXT,\n euclidean_dist FLOAT,\n hyperbolic_dist FLOAT,\n hierarchy_level INT,\n metadata JSONB\n) AS $$\nDECLARE\n query_arr real[];\n query_poincare real[];\nBEGIN\n -- Convert query to array and then to Poincar\u00E9\n SELECT array_agg(x::real ORDER BY ordinality) INTO query_arr\n FROM unnest(string_to_array(trim(both '[]' from query::text), ',')) WITH ORDINALITY AS t(x, ordinality);\n\n query_poincare := claude_flow.to_poincare(query_arr, curvature);\n\n RETURN QUERY\n SELECT\n he.id,\n he.content,\n (he.euclidean_embedding <-> query)::FLOAT AS euc_dist,\n COALESCE(ruvector_poincare_distance(he.poincare_embedding, query_poincare, curvature), 999.0)::FLOAT AS hyp_dist,\n he.hierarchy_level,\n he.metadata\n FROM claude_flow.hyperbolic_embeddings he\n WHERE he.euclidean_embedding IS NOT NULL\n ORDER BY he.euclidean_embedding <-> query\n LIMIT limit_count;\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- ============================================\n-- PART 6: UTILITY FUNCTIONS\n-- ============================================\n\n-- Get RuVector version info\nCREATE OR REPLACE FUNCTION claude_flow.ruvector_info()\nRETURNS TABLE (\n version TEXT,\n simd_info TEXT\n) AS $$\nBEGIN\n RETURN QUERY\n SELECT ruvector_version(), ruvector_simd_info();\nEND;\n$$ LANGUAGE plpgsql STABLE;\n\n-- Cosine similarity helper (converts cosine distance to similarity)\nCREATE OR REPLACE FUNCTION claude_flow.cosine_similarity(\n a ruvector,\n b ruvector\n)\nRETURNS FLOAT AS $$\nBEGIN\n RETURN (1 - (a <=> b))::FLOAT;\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\n-- L2 distance helper\nCREATE OR REPLACE FUNCTION claude_flow.l2_distance(\n a ruvector,\n b ruvector\n)\nRETURNS FLOAT AS $$\nBEGIN\n RETURN (a <-> b)::FLOAT;\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\n-- Upsert memory entry\nCREATE OR REPLACE FUNCTION claude_flow.upsert_memory(\n p_key VARCHAR(255),\n p_value TEXT,\n p_embedding ruvector(384) DEFAULT NULL,\n p_namespace VARCHAR(100) DEFAULT 'default',\n p_metadata JSONB DEFAULT '{}',\n p_ttl TIMESTAMPTZ DEFAULT NULL\n)\nRETURNS UUID AS $$\nDECLARE\n v_id UUID;\nBEGIN\n INSERT INTO claude_flow.memory_entries (key, value, embedding, namespace, metadata, ttl, updated_at)\n VALUES (p_key, p_value, p_embedding, p_namespace, p_metadata, p_ttl, NOW())\n ON CONFLICT (key, namespace) DO UPDATE SET\n value = EXCLUDED.value,\n embedding = COALESCE(EXCLUDED.embedding, claude_flow.memory_entries.embedding),\n metadata = EXCLUDED.metadata,\n ttl = EXCLUDED.ttl,\n updated_at = NOW()\n RETURNING id INTO v_id;\n\n RETURN v_id;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- ============================================\n-- COMPLETION\n-- ============================================\n\nDO $$\nDECLARE\n v_version TEXT;\n v_simd TEXT;\nBEGIN\n SELECT ruvector_version() INTO v_version;\n SELECT ruvector_simd_info() INTO v_simd;\n\n RAISE NOTICE '';\n RAISE NOTICE '============================================';\n RAISE NOTICE 'RuVector PostgreSQL Initialization Complete!';\n RAISE NOTICE '============================================';\n RAISE NOTICE '';\n RAISE NOTICE 'RuVector Version: %', v_version;\n RAISE NOTICE 'SIMD: %', v_simd;\n RAISE NOTICE '';\n RAISE NOTICE 'Schema: claude_flow';\n RAISE NOTICE 'Tables: embeddings, patterns, agents, trajectories,';\n RAISE NOTICE ' memory_entries, hyperbolic_embeddings,';\n RAISE NOTICE ' graph_nodes, graph_edges';\n RAISE NOTICE 'Indices: 6 HNSW indices + 3 B-tree indices';\n RAISE NOTICE '';\n RAISE NOTICE 'Key Functions:';\n RAISE NOTICE ' - claude_flow.search_similar(embedding, limit, min_sim)';\n RAISE NOTICE ' - claude_flow.search_memory(embedding, namespace, limit)';\n RAISE NOTICE ' - claude_flow.search_patterns(embedding, type, limit)';\n RAISE NOTICE ' - claude_flow.find_agents(embedding, type, limit)';\n RAISE NOTICE ' - claude_flow.hyperbolic_search(embedding, limit, curvature)';\n RAISE NOTICE ' - claude_flow.upsert_memory(key, value, embedding, namespace)';\n RAISE NOTICE '';\n RAISE NOTICE 'Operators: <=> (cosine), <-> (L2), <#> (neg inner product)';\n RAISE NOTICE '';\nEND $$;\n";
|
|
552
59
|
/**
|
|
553
60
|
* README template
|
|
554
61
|
*/
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
This directory contains the Docker configuration for RuVector PostgreSQL with KynjalFlow V3.
|
|
558
|
-
|
|
559
|
-
## Quick Start
|
|
560
|
-
|
|
561
|
-
\`\`\`bash
|
|
562
|
-
# Start the container
|
|
563
|
-
docker-compose up -d
|
|
564
|
-
|
|
565
|
-
# Verify it's running
|
|
566
|
-
docker-compose ps
|
|
567
|
-
|
|
568
|
-
# Check RuVector version
|
|
569
|
-
docker exec ruvector-postgres psql -U claude -d claude_flow -c "SELECT ruvector_version();"
|
|
570
|
-
\`\`\`
|
|
571
|
-
|
|
572
|
-
## Connection Details
|
|
573
|
-
|
|
574
|
-
| Setting | Value |
|
|
575
|
-
|---------|-------|
|
|
576
|
-
| Host | localhost |
|
|
577
|
-
| Port | 5432 |
|
|
578
|
-
| Database | claude_flow |
|
|
579
|
-
| Username | claude |
|
|
580
|
-
| Password | claude-flow-test |
|
|
581
|
-
| Schema | claude_flow |
|
|
582
|
-
|
|
583
|
-
## RuVector Syntax
|
|
584
|
-
|
|
585
|
-
### Extension Installation
|
|
586
|
-
\`\`\`sql
|
|
587
|
-
-- IMPORTANT: Requires explicit version
|
|
588
|
-
CREATE EXTENSION IF NOT EXISTS ruvector VERSION '0.1.0';
|
|
589
|
-
\`\`\`
|
|
590
|
-
|
|
591
|
-
### Vector Type
|
|
592
|
-
\`\`\`sql
|
|
593
|
-
-- Use ruvector(384), NOT vector(384)
|
|
594
|
-
CREATE TABLE embeddings (
|
|
595
|
-
id UUID PRIMARY KEY,
|
|
596
|
-
embedding ruvector(384)
|
|
597
|
-
);
|
|
598
|
-
\`\`\`
|
|
599
|
-
|
|
600
|
-
### Distance Operators
|
|
601
|
-
| Operator | Description |
|
|
602
|
-
|----------|-------------|
|
|
603
|
-
| \`<=>\` | Cosine distance |
|
|
604
|
-
| \`<->\` | L2 (Euclidean) distance |
|
|
605
|
-
| \`<#>\` | Negative inner product |
|
|
606
|
-
|
|
607
|
-
### HNSW Index
|
|
608
|
-
\`\`\`sql
|
|
609
|
-
CREATE INDEX idx_embeddings_hnsw
|
|
610
|
-
ON embeddings
|
|
611
|
-
USING hnsw (embedding ruvector_cosine_ops)
|
|
612
|
-
WITH (m = 16, ef_construction = 100);
|
|
613
|
-
\`\`\`
|
|
614
|
-
|
|
615
|
-
## Import from sql.js/JSON
|
|
616
|
-
|
|
617
|
-
\`\`\`bash
|
|
618
|
-
# Export current KynjalFlow memory
|
|
619
|
-
npx claude-flow memory list --format json > memory-export.json
|
|
620
|
-
|
|
621
|
-
# Import to RuVector PostgreSQL
|
|
622
|
-
npx claude-flow ruvector import --input memory-export.json
|
|
623
|
-
\`\`\`
|
|
624
|
-
|
|
625
|
-
## pgAdmin (Optional)
|
|
626
|
-
|
|
627
|
-
\`\`\`bash
|
|
628
|
-
docker-compose --profile gui up -d
|
|
629
|
-
\`\`\`
|
|
630
|
-
|
|
631
|
-
Access at: http://localhost:5050
|
|
632
|
-
- Email: admin@claude-flow.local
|
|
633
|
-
- Password: admin
|
|
634
|
-
|
|
635
|
-
## Troubleshooting
|
|
636
|
-
|
|
637
|
-
### Extension creation fails
|
|
638
|
-
Use explicit version: \`CREATE EXTENSION ruvector VERSION '0.1.0';\`
|
|
639
|
-
|
|
640
|
-
### Container won't start
|
|
641
|
-
\`\`\`bash
|
|
642
|
-
docker-compose logs postgres
|
|
643
|
-
docker-compose down -v
|
|
644
|
-
docker-compose up -d
|
|
645
|
-
\`\`\`
|
|
646
|
-
|
|
647
|
-
## Learn More
|
|
648
|
-
- [RuVector Docker Hub](https://hub.docker.com/r/KingJune28/ruvector-postgres)
|
|
649
|
-
- [KynjalFlow Documentation](https://github.com/KingJune28/claude-flow)
|
|
650
|
-
`;
|
|
62
|
+
var README_TEMPLATE = "# RuVector PostgreSQL Setup\n\nThis directory contains the Docker configuration for RuVector PostgreSQL with Claude-Flow V3.\n\n## Quick Start\n\n```bash\n# Start the container\ndocker-compose up -d\n\n# Verify it's running\ndocker-compose ps\n\n# Check RuVector version\ndocker exec ruvector-postgres psql -U claude -d claude_flow -c \"SELECT ruvector_version();\"\n```\n\n## Connection Details\n\n| Setting | Value |\n|---------|-------|\n| Host | localhost |\n| Port | 5432 |\n| Database | claude_flow |\n| Username | claude |\n| Password | claude-flow-test |\n| Schema | claude_flow |\n\n## RuVector Syntax\n\n### Extension Installation\n```sql\n-- IMPORTANT: Requires explicit version\nCREATE EXTENSION IF NOT EXISTS ruvector VERSION '0.1.0';\n```\n\n### Vector Type\n```sql\n-- Use ruvector(384), NOT vector(384)\nCREATE TABLE embeddings (\n id UUID PRIMARY KEY,\n embedding ruvector(384)\n);\n```\n\n### Distance Operators\n| Operator | Description |\n|----------|-------------|\n| `<=>` | Cosine distance |\n| `<->` | L2 (Euclidean) distance |\n| `<#>` | Negative inner product |\n\n### HNSW Index\n```sql\nCREATE INDEX idx_embeddings_hnsw\nON embeddings\nUSING hnsw (embedding ruvector_cosine_ops)\nWITH (m = 16, ef_construction = 100);\n```\n\n## Import from sql.js/JSON\n\n```bash\n# Export current Claude-Flow memory\nnpx claude-flow memory list --format json > memory-export.json\n\n# Import to RuVector PostgreSQL\nnpx claude-flow ruvector import --input memory-export.json\n```\n\n## pgAdmin (Optional)\n\n```bash\ndocker-compose --profile gui up -d\n```\n\nAccess at: http://localhost:5050\n- Email: admin@claude-flow.local\n- Password: admin\n\n## Troubleshooting\n\n### Extension creation fails\nUse explicit version: `CREATE EXTENSION ruvector VERSION '0.1.0';`\n\n### Container won't start\n```bash\ndocker-compose logs postgres\ndocker-compose down -v\ndocker-compose up -d\n```\n\n## Learn More\n- [RuVector Docker Hub](https://hub.docker.com/r/ruvnet/ruvector-postgres)\n- [Claude-Flow Documentation](https://github.com/ruvnet/claude-flow)\n";
|
|
651
63
|
/**
|
|
652
64
|
* RuVector Setup command - outputs Docker files and SQL
|
|
653
65
|
*/
|
|
654
|
-
export
|
|
66
|
+
export var setupCommand = {
|
|
655
67
|
name: 'setup',
|
|
656
68
|
description: 'Output Docker files and SQL for RuVector PostgreSQL setup',
|
|
657
69
|
aliases: ['scaffold', 'docker'],
|
|
@@ -661,21 +73,21 @@ export const setupCommand = {
|
|
|
661
73
|
short: 'o',
|
|
662
74
|
description: 'Output directory (default: ./ruvector-postgres)',
|
|
663
75
|
type: 'string',
|
|
664
|
-
default: './ruvector-postgres'
|
|
76
|
+
"default": './ruvector-postgres'
|
|
665
77
|
},
|
|
666
78
|
{
|
|
667
79
|
name: 'print',
|
|
668
80
|
short: 'p',
|
|
669
81
|
description: 'Print to stdout instead of writing files',
|
|
670
82
|
type: 'boolean',
|
|
671
|
-
default: false
|
|
83
|
+
"default": false
|
|
672
84
|
},
|
|
673
85
|
{
|
|
674
86
|
name: 'force',
|
|
675
87
|
short: 'f',
|
|
676
88
|
description: 'Overwrite existing files',
|
|
677
89
|
type: 'boolean',
|
|
678
|
-
default: false
|
|
90
|
+
"default": false
|
|
679
91
|
},
|
|
680
92
|
],
|
|
681
93
|
examples: [
|
|
@@ -684,82 +96,84 @@ export const setupCommand = {
|
|
|
684
96
|
{ command: 'claude-flow ruvector setup --print', description: 'Print files to stdout' },
|
|
685
97
|
{ command: 'claude-flow ruvector setup --force', description: 'Overwrite existing files' },
|
|
686
98
|
],
|
|
687
|
-
action:
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
output.writeln(output.dim('='.repeat(50)));
|
|
694
|
-
output.writeln();
|
|
695
|
-
if (printOnly) {
|
|
696
|
-
// Print to stdout
|
|
697
|
-
output.writeln(output.bold('=== docker-compose.yml ==='));
|
|
698
|
-
output.writeln();
|
|
699
|
-
output.writeln(DOCKER_COMPOSE_TEMPLATE);
|
|
700
|
-
output.writeln();
|
|
701
|
-
output.writeln(output.bold('=== scripts/init-db.sql ==='));
|
|
702
|
-
output.writeln();
|
|
703
|
-
output.writeln(INIT_SQL_TEMPLATE);
|
|
99
|
+
action: function (ctx) { return __awaiter(void 0, void 0, Promise, function () {
|
|
100
|
+
var outputDir, printOnly, force, scriptsDir, files, dockerComposePath, initSqlPath, readmePath, errorMessage;
|
|
101
|
+
return __generator(this, function (_a) {
|
|
102
|
+
outputDir = ctx.flags.output || './ruvector-postgres';
|
|
103
|
+
printOnly = ctx.flags.print;
|
|
104
|
+
force = ctx.flags.force;
|
|
704
105
|
output.writeln();
|
|
705
|
-
output.writeln(output.bold('
|
|
106
|
+
output.writeln(output.bold('RuVector PostgreSQL Setup'));
|
|
107
|
+
output.writeln(output.dim('='.repeat(50)));
|
|
706
108
|
output.writeln();
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
109
|
+
if (printOnly) {
|
|
110
|
+
// Print to stdout
|
|
111
|
+
output.writeln(output.bold('=== docker-compose.yml ==='));
|
|
112
|
+
output.writeln();
|
|
113
|
+
output.writeln(DOCKER_COMPOSE_TEMPLATE);
|
|
114
|
+
output.writeln();
|
|
115
|
+
output.writeln(output.bold('=== scripts/init-db.sql ==='));
|
|
116
|
+
output.writeln();
|
|
117
|
+
output.writeln(INIT_SQL_TEMPLATE);
|
|
118
|
+
output.writeln();
|
|
119
|
+
output.writeln(output.bold('=== README.md ==='));
|
|
120
|
+
output.writeln();
|
|
121
|
+
output.writeln(README_TEMPLATE);
|
|
122
|
+
return [2 /*return*/, { success: true }];
|
|
123
|
+
}
|
|
124
|
+
scriptsDir = path.join(outputDir, 'scripts');
|
|
125
|
+
try {
|
|
126
|
+
// Check if directory exists
|
|
127
|
+
if (fs.existsSync(outputDir) && !force) {
|
|
128
|
+
files = fs.readdirSync(outputDir);
|
|
129
|
+
if (files.length > 0) {
|
|
130
|
+
output.printWarning("Directory " + outputDir + " already exists and is not empty.");
|
|
131
|
+
output.printInfo('Use --force to overwrite existing files.');
|
|
132
|
+
return [2 /*return*/, { success: false, message: 'Directory not empty' }];
|
|
133
|
+
}
|
|
720
134
|
}
|
|
135
|
+
// Create directories
|
|
136
|
+
output.printInfo("Creating directory: " + outputDir);
|
|
137
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
138
|
+
fs.mkdirSync(scriptsDir, { recursive: true });
|
|
139
|
+
dockerComposePath = path.join(outputDir, 'docker-compose.yml');
|
|
140
|
+
initSqlPath = path.join(scriptsDir, 'init-db.sql');
|
|
141
|
+
readmePath = path.join(outputDir, 'README.md');
|
|
142
|
+
output.printInfo("Writing: " + dockerComposePath);
|
|
143
|
+
fs.writeFileSync(dockerComposePath, DOCKER_COMPOSE_TEMPLATE);
|
|
144
|
+
output.printInfo("Writing: " + initSqlPath);
|
|
145
|
+
fs.writeFileSync(initSqlPath, INIT_SQL_TEMPLATE);
|
|
146
|
+
output.printInfo("Writing: " + readmePath);
|
|
147
|
+
fs.writeFileSync(readmePath, README_TEMPLATE);
|
|
148
|
+
output.writeln();
|
|
149
|
+
output.printSuccess('RuVector PostgreSQL setup files created!');
|
|
150
|
+
output.writeln();
|
|
151
|
+
output.printBox([
|
|
152
|
+
'Files created:',
|
|
153
|
+
'',
|
|
154
|
+
" " + outputDir + "/",
|
|
155
|
+
' ├── docker-compose.yml',
|
|
156
|
+
' ├── README.md',
|
|
157
|
+
' └── scripts/',
|
|
158
|
+
' └── init-db.sql',
|
|
159
|
+
'',
|
|
160
|
+
'Next steps:',
|
|
161
|
+
'',
|
|
162
|
+
" cd " + outputDir,
|
|
163
|
+
' docker-compose up -d',
|
|
164
|
+
' docker exec ruvector-postgres psql -U claude -d claude_flow -c "SELECT ruvector_version();"',
|
|
165
|
+
].join('\n'), 'Setup Complete');
|
|
166
|
+
output.writeln();
|
|
167
|
+
return [2 /*return*/, { success: true }];
|
|
721
168
|
}
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
output.printInfo(`Writing: ${dockerComposePath}`);
|
|
731
|
-
fs.writeFileSync(dockerComposePath, DOCKER_COMPOSE_TEMPLATE);
|
|
732
|
-
output.printInfo(`Writing: ${initSqlPath}`);
|
|
733
|
-
fs.writeFileSync(initSqlPath, INIT_SQL_TEMPLATE);
|
|
734
|
-
output.printInfo(`Writing: ${readmePath}`);
|
|
735
|
-
fs.writeFileSync(readmePath, README_TEMPLATE);
|
|
736
|
-
output.writeln();
|
|
737
|
-
output.printSuccess('RuVector PostgreSQL setup files created!');
|
|
738
|
-
output.writeln();
|
|
739
|
-
output.printBox([
|
|
740
|
-
'Files created:',
|
|
741
|
-
'',
|
|
742
|
-
` ${outputDir}/`,
|
|
743
|
-
' ├── docker-compose.yml',
|
|
744
|
-
' ├── README.md',
|
|
745
|
-
' └── scripts/',
|
|
746
|
-
' └── init-db.sql',
|
|
747
|
-
'',
|
|
748
|
-
'Next steps:',
|
|
749
|
-
'',
|
|
750
|
-
` cd ${outputDir}`,
|
|
751
|
-
' docker-compose up -d',
|
|
752
|
-
' docker exec ruvector-postgres psql -U claude -d claude_flow -c "SELECT ruvector_version();"',
|
|
753
|
-
].join('\n'), 'Setup Complete');
|
|
754
|
-
output.writeln();
|
|
755
|
-
return { success: true };
|
|
756
|
-
}
|
|
757
|
-
catch (error) {
|
|
758
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
759
|
-
output.printError(`Failed to create setup files: ${errorMessage}`);
|
|
760
|
-
return { success: false, message: errorMessage };
|
|
761
|
-
}
|
|
762
|
-
},
|
|
169
|
+
catch (error) {
|
|
170
|
+
errorMessage = error instanceof Error ? error.message : String(error);
|
|
171
|
+
output.printError("Failed to create setup files: " + errorMessage);
|
|
172
|
+
return [2 /*return*/, { success: false, message: errorMessage }];
|
|
173
|
+
}
|
|
174
|
+
return [2 /*return*/];
|
|
175
|
+
});
|
|
176
|
+
}); }
|
|
763
177
|
};
|
|
764
178
|
export default setupCommand;
|
|
765
179
|
//# sourceMappingURL=setup.js.map
|