claude-flow 3.32.8 → 3.32.10
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/.proven-config-version +1 -0
- package/.claude/agents/MIGRATION_SUMMARY.md +221 -221
- package/.claude/agents/analysis/analyze-code-quality.md +57 -57
- package/.claude/agents/analysis/code-analyzer.md +188 -188
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +57 -57
- package/.claude/agents/architecture/system-design/arch-system-design.md +35 -35
- package/.claude/agents/base-template-generator.md +41 -41
- package/.claude/agents/consensus/byzantine-coordinator.md +42 -42
- package/.claude/agents/consensus/crdt-synchronizer.md +976 -976
- package/.claude/agents/consensus/gossip-coordinator.md +42 -42
- package/.claude/agents/consensus/performance-benchmarker.md +830 -830
- package/.claude/agents/consensus/quorum-manager.md +802 -802
- package/.claude/agents/consensus/raft-manager.md +42 -42
- package/.claude/agents/consensus/security-manager.md +601 -601
- package/.claude/agents/core/coder.md +254 -254
- package/.claude/agents/core/planner.md +151 -151
- package/.claude/agents/core/researcher.md +173 -173
- package/.claude/agents/core/reviewer.md +308 -308
- package/.claude/agents/core/tester.md +299 -299
- package/.claude/agents/custom/test-long-runner.md +43 -43
- package/.claude/agents/data/ml/data-ml-model.md +75 -75
- package/.claude/agents/database-specialist.md +9 -9
- package/.claude/agents/development/backend/dev-backend-api.md +28 -28
- package/.claude/agents/development/dev-backend-api.md +177 -177
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +51 -51
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +62 -62
- package/.claude/agents/dual-mode/codex-coordinator.md +206 -206
- package/.claude/agents/dual-mode/codex-worker.md +190 -190
- package/.claude/agents/dual-mode/dual-orchestrator.md +253 -253
- 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 +520 -520
- package/.claude/agents/github/github-modes.md +153 -153
- package/.claude/agents/github/issue-tracker.md +298 -298
- package/.claude/agents/github/multi-repo-swarm.md +524 -524
- package/.claude/agents/github/pr-manager.md +162 -162
- package/.claude/agents/github/project-board-sync.md +477 -477
- package/.claude/agents/github/release-manager.md +337 -337
- package/.claude/agents/github/release-swarm.md +550 -550
- package/.claude/agents/github/repo-architect.md +364 -364
- package/.claude/agents/github/swarm-issue.md +550 -550
- package/.claude/agents/github/swarm-pr.md +401 -401
- package/.claude/agents/github/sync-coordinator.md +424 -424
- package/.claude/agents/github/workflow-automation.md +604 -604
- package/.claude/agents/goal/agent.md +816 -816
- package/.claude/agents/goal/code-goal-planner.md +444 -444
- package/.claude/agents/goal/goal-planner.md +167 -167
- package/.claude/agents/hive-mind/collective-intelligence-coordinator.md +128 -128
- package/.claude/agents/hive-mind/queen-coordinator.md +201 -201
- package/.claude/agents/hive-mind/scout-explorer.md +240 -240
- package/.claude/agents/hive-mind/swarm-memory-manager.md +191 -191
- package/.claude/agents/hive-mind/worker-specialist.md +215 -215
- package/.claude/agents/neural/safla-neural.md +73 -73
- package/.claude/agents/optimization/benchmark-suite.md +662 -662
- package/.claude/agents/optimization/load-balancer.md +428 -428
- package/.claude/agents/optimization/performance-monitor.md +669 -669
- package/.claude/agents/optimization/resource-allocator.md +671 -671
- package/.claude/agents/optimization/topology-optimizer.md +805 -805
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/project-coordinator.md +8 -8
- package/.claude/agents/python-specialist.md +9 -9
- package/.claude/agents/reasoning/agent.md +816 -816
- package/.claude/agents/reasoning/goal-planner.md +72 -72
- package/.claude/agents/security-auditor.md +9 -9
- package/.claude/agents/sona/sona-learning-optimizer.md +65 -65
- package/.claude/agents/sparc/architecture.md +452 -452
- package/.claude/agents/sparc/pseudocode.md +298 -298
- package/.claude/agents/sparc/refinement.md +503 -503
- package/.claude/agents/sparc/specification.md +257 -257
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +87 -87
- 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 +363 -363
- package/.claude/agents/swarm/hierarchical-coordinator.md +299 -299
- package/.claude/agents/swarm/mesh-coordinator.md +362 -362
- package/.claude/agents/templates/automation-smart-agent.md +184 -184
- package/.claude/agents/templates/coordinator-swarm-init.md +82 -82
- package/.claude/agents/templates/github-pr-manager.md +154 -154
- package/.claude/agents/templates/implementer-sparc-coder.md +242 -242
- package/.claude/agents/templates/memory-coordinator.md +162 -162
- package/.claude/agents/templates/migration-plan.md +723 -723
- package/.claude/agents/templates/orchestrator-task.md +119 -119
- package/.claude/agents/templates/performance-analyzer.md +178 -178
- package/.claude/agents/templates/sparc-coordinator.md +162 -162
- package/.claude/agents/testing/production-validator.md +372 -372
- package/.claude/agents/testing/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/unit/tdd-london-swarm.md +221 -221
- package/.claude/agents/testing/validation/production-validator.md +372 -372
- package/.claude/agents/typescript-specialist.md +9 -9
- package/.claude/agents/v3/database-specialist.md +9 -9
- package/.claude/agents/v3/project-coordinator.md +8 -8
- package/.claude/agents/v3/python-specialist.md +9 -9
- package/.claude/agents/v3/test-architect.md +9 -9
- package/.claude/agents/v3/typescript-specialist.md +9 -9
- package/.claude/agents/v3/v3-integration-architect.md +311 -311
- package/.claude/agents/v3/v3-memory-specialist.md +280 -280
- package/.claude/agents/v3/v3-performance-engineer.md +362 -362
- package/.claude/agents/v3/v3-queen-coordinator.md +62 -62
- package/.claude/agents/v3/v3-security-architect.md +139 -139
- package/.claude/checkpoints/1767754460.json +8 -8
- 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/.LOCKED +2 -2
- package/.claude/helpers/.helpers-version +1 -0
- package/.claude/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- package/.claude/helpers/aggressive-microcompact.mjs +36 -36
- package/.claude/helpers/auto-commit.sh +178 -178
- package/.claude/helpers/auto-memory-hook.mjs +430 -430
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/context-persistence-hook.mjs +2001 -2001
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +156 -156
- package/.claude/helpers/github-setup.sh +45 -45
- package/.claude/helpers/guidance-hook.sh +13 -13
- package/.claude/helpers/guidance-hooks.sh +102 -102
- package/.claude/helpers/health-monitor.sh +108 -108
- package/.claude/helpers/helpers.manifest.json +13 -0
- package/.claude/helpers/hook-handler.cjs +464 -464
- package/.claude/helpers/intelligence.cjs +1058 -1058
- package/.claude/helpers/learning-hooks.sh +329 -329
- package/.claude/helpers/learning-optimizer.sh +127 -127
- package/.claude/helpers/learning-service.mjs +1144 -1144
- package/.claude/helpers/memory.cjs +84 -84
- package/.claude/helpers/metrics-db.mjs +503 -503
- package/.claude/helpers/patch-aggressive-prune.mjs +184 -184
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.cjs +62 -62
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.cjs +125 -125
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline.cjs +211 -2
- package/.claude/helpers/swarm-comms.sh +353 -353
- package/.claude/helpers/swarm-hooks.sh +761 -761
- package/.claude/helpers/swarm-monitor.sh +210 -210
- package/.claude/helpers/sync-v3-metrics.sh +245 -245
- package/.claude/helpers/update-v3-progress.sh +165 -165
- package/.claude/helpers/v3-quick-status.sh +57 -57
- package/.claude/helpers/v3.sh +110 -110
- package/.claude/helpers/validate-v3-config.sh +215 -215
- package/.claude/helpers/worker-manager.sh +170 -170
- package/.claude/mcp.json +12 -12
- package/.claude/proven-config.json +42 -0
- package/.claude/settings.json +284 -284
- package/.claude/settings.json.bak +526 -526
- 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/browser/SKILL.md +204 -204
- 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 +727 -727
- package/.claude/skills/flow-nexus-platform/SKILL.md +1154 -1154
- package/.claude/skills/flow-nexus-swarm/SKILL.md +604 -604
- package/.claude/skills/github-code-review/SKILL.md +1125 -1125
- package/.claude/skills/github-multi-repo/SKILL.md +862 -862
- package/.claude/skills/github-project-management/SKILL.md +1262 -1262
- package/.claude/skills/github-release-management/SKILL.md +1064 -1064
- package/.claude/skills/github-workflow-automation/SKILL.md +1047 -1047
- package/.claude/skills/hive-mind-advanced/SKILL.md +709 -709
- 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 +560 -560
- 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 +1106 -1106
- package/.claude/skills/stream-chain/SKILL.md +560 -560
- package/.claude/skills/swarm-advanced/SKILL.md +970 -970
- 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 +691 -691
- package/.claude/skills/worker-benchmarks/SKILL.md +129 -129
- package/.claude/skills/worker-integration/SKILL.md +147 -147
- package/.claude/statusline-command.sh +176 -176
- package/.claude/statusline.mjs +109 -109
- package/.claude/statusline.sh +431 -431
- package/.claude/workflows/full-system-test.js +65 -65
- package/.claude/workflows/intelligence-system-hardening.js +120 -120
- package/.claude/workflows/plugin-contract-audit.js +91 -91
- package/.claude-plugin/README.md +720 -720
- package/.claude-plugin/docs/INSTALLATION.md +261 -261
- package/.claude-plugin/docs/PLUGIN_SUMMARY.md +361 -361
- package/.claude-plugin/docs/QUICKSTART.md +361 -361
- package/.claude-plugin/docs/STRUCTURE.md +128 -128
- package/.claude-plugin/hooks/hooks.json +79 -77
- package/.claude-plugin/marketplace.json +185 -185
- package/.claude-plugin/plugin.json +71 -71
- package/.claude-plugin/scripts/install.sh +234 -234
- package/.claude-plugin/scripts/ruflo-hook.cjs +166 -166
- package/.claude-plugin/scripts/ruflo-hook.sh +52 -52
- package/.claude-plugin/scripts/uninstall.sh +36 -36
- package/.claude-plugin/scripts/verify.sh +108 -108
- package/LICENSE +21 -21
- package/README.md +419 -419
- package/bin/cli.js +11 -11
- package/bin/npx-repair.js +7 -7
- package/bin/npx-safe-launch.js +9 -9
- package/package.json +192 -186
- package/v3/@claude-flow/cli/README.md +419 -419
- package/v3/@claude-flow/cli/bin/cli.js +314 -314
- package/v3/@claude-flow/cli/bin/mcp-server.js +224 -224
- package/v3/@claude-flow/cli/bin/preinstall.cjs +2 -2
- package/v3/@claude-flow/cli/catalog-manifest.json +2 -2
- package/v3/@claude-flow/cli/dist/src/autopilot-state.js +24 -7
- package/v3/@claude-flow/cli/dist/src/benchmarks/gaia-critic.js +24 -24
- package/v3/@claude-flow/cli/dist/src/business-pods/bbs-budget-tracker.js +53 -53
- package/v3/@claude-flow/cli/dist/src/commands/completions.js +409 -409
- package/v3/@claude-flow/cli/dist/src/commands/daemon.js +44 -44
- package/v3/@claude-flow/cli/dist/src/commands/doctor.js +267 -20
- package/v3/@claude-flow/cli/dist/src/commands/embeddings.js +26 -26
- package/v3/@claude-flow/cli/dist/src/commands/hive-mind.js +97 -97
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +74 -11
- package/v3/@claude-flow/cli/dist/src/commands/init.js +202 -34
- package/v3/@claude-flow/cli/dist/src/commands/memory.js +12 -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 +31 -31
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/import.js +14 -14
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/init.js +115 -115
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/migrate.js +99 -99
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/optimize.js +51 -51
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/setup.js +624 -624
- package/v3/@claude-flow/cli/dist/src/commands/ruvector/status.js +38 -38
- package/v3/@claude-flow/cli/dist/src/config/proven-config.js +2 -2
- package/v3/@claude-flow/cli/dist/src/funnel/disclosure.js +13 -2
- package/v3/@claude-flow/cli/dist/src/funnel/message-transport.d.ts +11 -4
- package/v3/@claude-flow/cli/dist/src/funnel/message-transport.js +11 -4
- package/v3/@claude-flow/cli/dist/src/funnel/messages.d.ts +12 -10
- package/v3/@claude-flow/cli/dist/src/funnel/messages.js +83 -11
- package/v3/@claude-flow/cli/dist/src/init/claudemd-generator.js +231 -231
- package/v3/@claude-flow/cli/dist/src/init/executor.js +453 -453
- package/v3/@claude-flow/cli/dist/src/init/helper-signing.js +2 -2
- package/v3/@claude-flow/cli/dist/src/init/helpers-generator.js +751 -751
- package/v3/@claude-flow/cli/dist/src/init/statusline-generator.js +24 -24
- package/v3/@claude-flow/cli/dist/src/mcp-tools/agentdb-tools.js +15 -15
- package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-intent-tools.js +19 -19
- package/v3/@claude-flow/cli/dist/src/mcp-tools/browser-tools.js +8 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/hooks-tools.js +21 -0
- package/v3/@claude-flow/cli/dist/src/mcp-tools/memory-tools.js +4 -3
- package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.d.ts +9 -0
- package/v3/@claude-flow/cli/dist/src/memory/graph-edge-writer.js +35 -22
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +189 -93
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +479 -407
- package/v3/@claude-flow/cli/dist/src/memory/rabitq-index.js +5 -5
- package/v3/@claude-flow/cli/dist/src/parser.js +25 -9
- package/v3/@claude-flow/cli/dist/src/proxy/verify.js +2 -2
- package/v3/@claude-flow/cli/dist/src/runtime/headless.js +28 -28
- package/v3/@claude-flow/cli/dist/src/services/distill-tuning.js +7 -7
- package/v3/@claude-flow/cli/dist/src/services/headless-worker-executor.js +84 -84
- package/v3/@claude-flow/cli/dist/src/services/memory-distillation.js +4 -4
- package/v3/@claude-flow/cli/dist/src/services/worker-daemon.js +7 -4
- package/v3/@claude-flow/cli/dist/src/transfer/deploy-seraphine.js +23 -23
- package/v3/@claude-flow/cli/package.json +137 -135
- package/v3/@claude-flow/guidance/README.md +1195 -1195
- package/v3/@claude-flow/guidance/package.json +198 -198
- package/v3/@claude-flow/shared/README.md +323 -323
- package/v3/@claude-flow/shared/dist/events/event-store.js +31 -31
- package/v3/@claude-flow/shared/dist/hooks/safety/git-commit.js +3 -3
- package/v3/@claude-flow/shared/package.json +43 -43
- package/v3/README.md +493 -493
|
@@ -65,6 +65,27 @@ function getDbPath(customPath) {
|
|
|
65
65
|
}
|
|
66
66
|
return resolved;
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve AgentDB's native better-sqlite3 database path (#2786).
|
|
70
|
+
*
|
|
71
|
+
* AgentDB is opened by ControllerRegistry via native better-sqlite3, which
|
|
72
|
+
* requires a plaintext SQLite file. The sibling `memory.db` file written by
|
|
73
|
+
* `memory-initializer.ts` (`writeFileRestricted(..., {encrypt: true})`) is
|
|
74
|
+
* encrypted-at-rest when `CLAUDE_FLOW_ENCRYPT_AT_REST=1` — pointing native
|
|
75
|
+
* better-sqlite3 at it fails with "file is not a database" and silently
|
|
76
|
+
* disables `learningSystem`/`reasoningBank`.
|
|
77
|
+
*
|
|
78
|
+
* Give AgentDB a distinct filename in the same directory so both writers
|
|
79
|
+
* coexist: sql.js keeps `memory.db` (possibly encrypted); AgentDB owns
|
|
80
|
+
* `agentdb-memory.db`. Preserves the traversal protection in `getDbPath()`
|
|
81
|
+
* because we derive from its already-validated return value.
|
|
82
|
+
*/
|
|
83
|
+
function getAgentDbPath() {
|
|
84
|
+
const dbPath = getDbPath();
|
|
85
|
+
if (dbPath === ':memory:')
|
|
86
|
+
return ':memory:';
|
|
87
|
+
return path.join(path.dirname(dbPath), 'agentdb-memory.db');
|
|
88
|
+
}
|
|
68
89
|
/**
|
|
69
90
|
* Generate a secure random ID for memory entries.
|
|
70
91
|
*/
|
|
@@ -99,7 +120,8 @@ async function getRegistry(dbPath) {
|
|
|
99
120
|
};
|
|
100
121
|
try {
|
|
101
122
|
await registry.initialize({
|
|
102
|
-
|
|
123
|
+
// #2786: use agentdb-memory.db (plaintext) so native better-sqlite3 doesn't hit the encrypted memory.db.
|
|
124
|
+
dbPath: dbPath || getAgentDbPath(),
|
|
103
125
|
embeddingModel: 'Xenova/all-MiniLM-L6-v2',
|
|
104
126
|
dimension: 384,
|
|
105
127
|
vectorBackend: 'auto',
|
|
@@ -505,25 +527,25 @@ function getDb(registry) {
|
|
|
505
527
|
// WeakSet so a new db instance re-ensures without a stale global flag.
|
|
506
528
|
if (!_schemaEnsuredDbs.has(db)) {
|
|
507
529
|
try {
|
|
508
|
-
db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
|
|
509
|
-
id TEXT PRIMARY KEY,
|
|
510
|
-
key TEXT NOT NULL,
|
|
511
|
-
namespace TEXT DEFAULT 'default',
|
|
512
|
-
content TEXT NOT NULL,
|
|
513
|
-
type TEXT DEFAULT 'semantic',
|
|
514
|
-
embedding TEXT,
|
|
515
|
-
embedding_model TEXT DEFAULT 'local',
|
|
516
|
-
embedding_dimensions INTEGER,
|
|
517
|
-
tags TEXT,
|
|
518
|
-
metadata TEXT,
|
|
519
|
-
owner_id TEXT,
|
|
520
|
-
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
521
|
-
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
522
|
-
expires_at INTEGER,
|
|
523
|
-
last_accessed_at INTEGER,
|
|
524
|
-
access_count INTEGER DEFAULT 0,
|
|
525
|
-
status TEXT DEFAULT 'active',
|
|
526
|
-
UNIQUE(namespace, key)
|
|
530
|
+
db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
|
|
531
|
+
id TEXT PRIMARY KEY,
|
|
532
|
+
key TEXT NOT NULL,
|
|
533
|
+
namespace TEXT DEFAULT 'default',
|
|
534
|
+
content TEXT NOT NULL,
|
|
535
|
+
type TEXT DEFAULT 'semantic',
|
|
536
|
+
embedding TEXT,
|
|
537
|
+
embedding_model TEXT DEFAULT 'local',
|
|
538
|
+
embedding_dimensions INTEGER,
|
|
539
|
+
tags TEXT,
|
|
540
|
+
metadata TEXT,
|
|
541
|
+
owner_id TEXT,
|
|
542
|
+
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
543
|
+
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
544
|
+
expires_at INTEGER,
|
|
545
|
+
last_accessed_at INTEGER,
|
|
546
|
+
access_count INTEGER DEFAULT 0,
|
|
547
|
+
status TEXT DEFAULT 'active',
|
|
548
|
+
UNIQUE(namespace, key)
|
|
527
549
|
)`);
|
|
528
550
|
// Ensure indexes
|
|
529
551
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_bridge_ns ON memory_entries(namespace)`);
|
|
@@ -670,18 +692,47 @@ export async function bridgeStoreEntry(options) {
|
|
|
670
692
|
// Embedding failed — store without
|
|
671
693
|
}
|
|
672
694
|
}
|
|
673
|
-
//
|
|
695
|
+
// #2775: strict-insert path now auto-resurrects soft-deleted tombstones
|
|
696
|
+
// via ON CONFLICT DO UPDATE ... WHERE status='deleted'. Rationale:
|
|
697
|
+
// `bridgeDeleteEntry` performs a soft delete (status='deleted'), so the
|
|
698
|
+
// `UNIQUE(namespace, key)` slot stays occupied — before this fix, a
|
|
699
|
+
// natural `delete → store` sequence hit UNIQUE, the catch below returned
|
|
700
|
+
// `null`, `storeEntry` fell back to the sql.js whole-image path, and the
|
|
701
|
+
// #2735 -wal/-shm sidecar guard refused with a message about a "native
|
|
702
|
+
// WAL connection" that had nothing to do with the actual failure.
|
|
703
|
+
//
|
|
704
|
+
// Semantics under the new strict-insert SQL:
|
|
705
|
+
// • no existing row → INSERT succeeds, changes = 1
|
|
706
|
+
// • existing row, status='deleted' → resurrected in-place, changes = 1
|
|
707
|
+
// • existing row, status='active' → ON CONFLICT WHERE=false suppresses
|
|
708
|
+
// the update, changes = 0 (checked
|
|
709
|
+
// below → typed "already exists"
|
|
710
|
+
// error, NEVER a null demotion).
|
|
711
|
+
// Upsert path (INSERT OR REPLACE) is unchanged.
|
|
674
712
|
const insertSql = options.upsert
|
|
675
|
-
? `INSERT OR REPLACE INTO memory_entries (
|
|
676
|
-
id, key, namespace, content, type,
|
|
677
|
-
embedding, embedding_dimensions, embedding_model,
|
|
678
|
-
tags, metadata, created_at, updated_at, expires_at, status
|
|
713
|
+
? `INSERT OR REPLACE INTO memory_entries (
|
|
714
|
+
id, key, namespace, content, type,
|
|
715
|
+
embedding, embedding_dimensions, embedding_model,
|
|
716
|
+
tags, metadata, created_at, updated_at, expires_at, status
|
|
679
717
|
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
|
|
680
|
-
: `INSERT INTO memory_entries (
|
|
681
|
-
id, key, namespace, content, type,
|
|
682
|
-
embedding, embedding_dimensions, embedding_model,
|
|
683
|
-
tags, metadata, created_at, updated_at, expires_at, status
|
|
684
|
-
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')
|
|
718
|
+
: `INSERT INTO memory_entries (
|
|
719
|
+
id, key, namespace, content, type,
|
|
720
|
+
embedding, embedding_dimensions, embedding_model,
|
|
721
|
+
tags, metadata, created_at, updated_at, expires_at, status
|
|
722
|
+
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')
|
|
723
|
+
ON CONFLICT(namespace, key) DO UPDATE SET
|
|
724
|
+
id = excluded.id,
|
|
725
|
+
content = excluded.content,
|
|
726
|
+
embedding = excluded.embedding,
|
|
727
|
+
embedding_dimensions = excluded.embedding_dimensions,
|
|
728
|
+
embedding_model = excluded.embedding_model,
|
|
729
|
+
tags = excluded.tags,
|
|
730
|
+
metadata = excluded.metadata,
|
|
731
|
+
created_at = excluded.created_at,
|
|
732
|
+
updated_at = excluded.updated_at,
|
|
733
|
+
expires_at = excluded.expires_at,
|
|
734
|
+
status = 'active'
|
|
735
|
+
WHERE memory_entries.status = 'deleted'`;
|
|
685
736
|
// #1941: provision a `vector_indexes` row for this namespace before the
|
|
686
737
|
// entry insert. AgentDB's HNSW/router keys lookups by namespace via this
|
|
687
738
|
// table — if it has no row for e.g. `claude-memories`, `memory_search`
|
|
@@ -694,15 +745,27 @@ export async function bridgeStoreEntry(options) {
|
|
|
694
745
|
}
|
|
695
746
|
catch { /* vector_indexes may not exist on legacy DBs — fall through */ }
|
|
696
747
|
const stmt = ctx.db.prepare(insertSql);
|
|
697
|
-
stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
|
|
748
|
+
const runResult = stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
|
|
749
|
+
// #2775: strict insert against an ACTIVE existing row → changes === 0
|
|
750
|
+
// (the ON CONFLICT WHERE clause above suppressed the update). Surface
|
|
751
|
+
// this as a typed data-level error rather than a bridge failure —
|
|
752
|
+
// returning non-null so the caller does NOT demote to sql.js and does
|
|
753
|
+
// NOT trip the #2735 whole-image guard with a misleading message.
|
|
754
|
+
if (!options.upsert && (runResult?.changes ?? 0) === 0) {
|
|
755
|
+
return {
|
|
756
|
+
success: false,
|
|
757
|
+
id,
|
|
758
|
+
error: `key "${key}" already exists in namespace "${namespace}" — pass upsert=true (--upsert on the CLI) to update it`,
|
|
759
|
+
};
|
|
760
|
+
}
|
|
698
761
|
// #2558: keep `vector_indexes.total_vectors` accurate so status/tooling
|
|
699
762
|
// stop reporting "HNSW index: 0 vectors" while embedded entries exist.
|
|
700
763
|
try {
|
|
701
764
|
ctx.db
|
|
702
|
-
.prepare(`UPDATE vector_indexes SET
|
|
703
|
-
total_vectors = (SELECT COUNT(*) FROM memory_entries
|
|
704
|
-
WHERE namespace = ? AND embedding IS NOT NULL),
|
|
705
|
-
updated_at = ?
|
|
765
|
+
.prepare(`UPDATE vector_indexes SET
|
|
766
|
+
total_vectors = (SELECT COUNT(*) FROM memory_entries
|
|
767
|
+
WHERE namespace = ? AND embedding IS NOT NULL),
|
|
768
|
+
updated_at = ?
|
|
706
769
|
WHERE name = ?`)
|
|
707
770
|
.run(namespace, now, namespace);
|
|
708
771
|
}
|
|
@@ -737,7 +800,25 @@ export async function bridgeStoreEntry(options) {
|
|
|
737
800
|
attested: true,
|
|
738
801
|
};
|
|
739
802
|
}
|
|
740
|
-
catch {
|
|
803
|
+
catch (err) {
|
|
804
|
+
// #2775: distinguish a data-level UNIQUE constraint violation (key
|
|
805
|
+
// already exists — expected outcome of a strict insert) from a real
|
|
806
|
+
// bridge failure (registry gone, DB locked, disk full, etc.). The
|
|
807
|
+
// ON CONFLICT clause on the strict-insert SQL above should normally
|
|
808
|
+
// convert UNIQUE hits into a `changes === 0` result, so reaching here
|
|
809
|
+
// with a UNIQUE error means the schema pre-dates the (namespace, key)
|
|
810
|
+
// unique index or the conflict target didn't match — treat it as a
|
|
811
|
+
// clean "already exists" so the caller never demotes to sql.js and
|
|
812
|
+
// never triggers the #2735 whole-image guard with a misleading
|
|
813
|
+
// "active native WAL connection" error.
|
|
814
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
815
|
+
if (/UNIQUE constraint failed/i.test(msg)) {
|
|
816
|
+
return {
|
|
817
|
+
success: false,
|
|
818
|
+
id: '',
|
|
819
|
+
error: `key "${options.key}" already exists in namespace "${options.namespace ?? 'default'}" — pass upsert=true (--upsert on the CLI) to update it`,
|
|
820
|
+
};
|
|
821
|
+
}
|
|
741
822
|
return null;
|
|
742
823
|
}
|
|
743
824
|
}
|
|
@@ -775,11 +856,11 @@ export async function bridgeSearchEntries(options) {
|
|
|
775
856
|
: '';
|
|
776
857
|
let rows;
|
|
777
858
|
try {
|
|
778
|
-
const stmt = ctx.db.prepare(`
|
|
779
|
-
SELECT id, key, namespace, content, embedding
|
|
780
|
-
FROM memory_entries
|
|
781
|
-
WHERE status = 'active' ${nsFilter}
|
|
782
|
-
LIMIT 1000
|
|
859
|
+
const stmt = ctx.db.prepare(`
|
|
860
|
+
SELECT id, key, namespace, content, embedding
|
|
861
|
+
FROM memory_entries
|
|
862
|
+
WHERE status = 'active' ${nsFilter}
|
|
863
|
+
LIMIT 1000
|
|
783
864
|
`);
|
|
784
865
|
rows = effectiveNamespace !== 'all' ? stmt.all(effectiveNamespace) : stmt.all();
|
|
785
866
|
}
|
|
@@ -900,12 +981,12 @@ export async function bridgeListEntries(options) {
|
|
|
900
981
|
// List
|
|
901
982
|
const entries = [];
|
|
902
983
|
try {
|
|
903
|
-
const stmt = ctx.db.prepare(`
|
|
904
|
-
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
|
|
905
|
-
FROM memory_entries
|
|
906
|
-
WHERE ${statusFilter} ${nsFilter}
|
|
907
|
-
ORDER BY updated_at DESC
|
|
908
|
-
LIMIT ? OFFSET ?
|
|
984
|
+
const stmt = ctx.db.prepare(`
|
|
985
|
+
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
|
|
986
|
+
FROM memory_entries
|
|
987
|
+
WHERE ${statusFilter} ${nsFilter}
|
|
988
|
+
ORDER BY updated_at DESC
|
|
989
|
+
LIMIT ? OFFSET ?
|
|
909
990
|
`);
|
|
910
991
|
const rows = stmt.all(...nsParams, limit, offset);
|
|
911
992
|
for (const row of rows) {
|
|
@@ -974,11 +1055,11 @@ export async function bridgeGetEntry(options) {
|
|
|
974
1055
|
}
|
|
975
1056
|
let row;
|
|
976
1057
|
try {
|
|
977
|
-
const stmt = ctx.db.prepare(`
|
|
978
|
-
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
|
|
979
|
-
FROM memory_entries
|
|
980
|
-
WHERE status = 'active' AND key = ? AND namespace = ?
|
|
981
|
-
LIMIT 1
|
|
1058
|
+
const stmt = ctx.db.prepare(`
|
|
1059
|
+
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
|
|
1060
|
+
FROM memory_entries
|
|
1061
|
+
WHERE status = 'active' AND key = ? AND namespace = ?
|
|
1062
|
+
LIMIT 1
|
|
982
1063
|
`);
|
|
983
1064
|
row = stmt.get(key, namespace);
|
|
984
1065
|
}
|
|
@@ -1042,16 +1123,31 @@ export async function bridgeDeleteEntry(options) {
|
|
|
1042
1123
|
// Soft delete using parameterized query
|
|
1043
1124
|
let changes = 0;
|
|
1044
1125
|
try {
|
|
1045
|
-
const result = ctx.db.prepare(`
|
|
1046
|
-
UPDATE memory_entries
|
|
1047
|
-
SET status = 'deleted', updated_at = ?
|
|
1048
|
-
WHERE key = ? AND namespace = ? AND status = 'active'
|
|
1126
|
+
const result = ctx.db.prepare(`
|
|
1127
|
+
UPDATE memory_entries
|
|
1128
|
+
SET status = 'deleted', updated_at = ?
|
|
1129
|
+
WHERE key = ? AND namespace = ? AND status = 'active'
|
|
1049
1130
|
`).run(Date.now(), key, namespace);
|
|
1050
1131
|
changes = result?.changes ?? 0;
|
|
1051
1132
|
}
|
|
1052
1133
|
catch {
|
|
1053
1134
|
return null;
|
|
1054
1135
|
}
|
|
1136
|
+
// #2775: mirror the #2558 PASSIVE checkpoint after the delete. Without
|
|
1137
|
+
// this, the tombstone stays WAL-only until some unrelated store
|
|
1138
|
+
// eventually checkpoints — meaning WAL-blind readers (sql.js fallback,
|
|
1139
|
+
// statusline's read-only sqlite3 counter) keep serving the deleted row.
|
|
1140
|
+
// If the process exits before another checkpoint, on live multi-worktree
|
|
1141
|
+
// installations we've observed rows `active` in the main image but
|
|
1142
|
+
// `deleted` in the -wal, or rows existing only in an orphaned -wal
|
|
1143
|
+
// invisible to every image reader. PASSIVE flushes committed pages
|
|
1144
|
+
// without blocking writers. Best-effort, never fatal.
|
|
1145
|
+
try {
|
|
1146
|
+
if (typeof ctx.db.pragma === 'function') {
|
|
1147
|
+
ctx.db.pragma('wal_checkpoint(PASSIVE)');
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
catch { /* non-WAL, busy, or unsupported — non-fatal */ }
|
|
1055
1151
|
// Phase 2: Invalidate cache
|
|
1056
1152
|
const safeNs = String(namespace).replace(/:/g, '_');
|
|
1057
1153
|
const safeKey = String(key).replace(/:/g, '_');
|
|
@@ -1258,11 +1354,11 @@ export async function bridgeSearchHNSW(queryEmbedding, options, dbPath) {
|
|
|
1258
1354
|
: '';
|
|
1259
1355
|
let rows;
|
|
1260
1356
|
try {
|
|
1261
|
-
const stmt = ctx.db.prepare(`
|
|
1262
|
-
SELECT id, key, namespace, content, embedding
|
|
1263
|
-
FROM memory_entries
|
|
1264
|
-
WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
|
|
1265
|
-
LIMIT 10000
|
|
1357
|
+
const stmt = ctx.db.prepare(`
|
|
1358
|
+
SELECT id, key, namespace, content, embedding
|
|
1359
|
+
FROM memory_entries
|
|
1360
|
+
WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
|
|
1361
|
+
LIMIT 10000
|
|
1266
1362
|
`);
|
|
1267
1363
|
rows = nsFilter
|
|
1268
1364
|
? stmt.all(options.namespace)
|
|
@@ -1314,12 +1410,12 @@ export async function bridgeAddToHNSW(id, embedding, entry, dbPath) {
|
|
|
1314
1410
|
try {
|
|
1315
1411
|
const now = Date.now();
|
|
1316
1412
|
const embeddingJson = JSON.stringify(embedding);
|
|
1317
|
-
ctx.db.prepare(`
|
|
1318
|
-
INSERT OR REPLACE INTO memory_entries (
|
|
1319
|
-
id, key, namespace, content, type,
|
|
1320
|
-
embedding, embedding_dimensions, embedding_model,
|
|
1321
|
-
created_at, updated_at, status
|
|
1322
|
-
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
|
|
1413
|
+
ctx.db.prepare(`
|
|
1414
|
+
INSERT OR REPLACE INTO memory_entries (
|
|
1415
|
+
id, key, namespace, content, type,
|
|
1416
|
+
embedding, embedding_dimensions, embedding_model,
|
|
1417
|
+
created_at, updated_at, status
|
|
1418
|
+
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
|
|
1323
1419
|
`).run(id, entry.key, entry.namespace, entry.content, embeddingJson, embedding.length, now, now);
|
|
1324
1420
|
return true;
|
|
1325
1421
|
}
|
|
@@ -1643,9 +1739,9 @@ export async function bridgeRecordCausalEdge(options) {
|
|
|
1643
1739
|
const ctx = getDb(registry);
|
|
1644
1740
|
if (ctx) {
|
|
1645
1741
|
try {
|
|
1646
|
-
ctx.db.prepare(`
|
|
1647
|
-
INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
|
|
1648
|
-
VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
|
|
1742
|
+
ctx.db.prepare(`
|
|
1743
|
+
INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
|
|
1744
|
+
VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
|
|
1649
1745
|
`).run(generateId('edge'), `${options.sourceId}→${options.targetId}`, JSON.stringify(options), Date.now(), Date.now());
|
|
1650
1746
|
return { success: true, controller: 'bridge-fallback' };
|
|
1651
1747
|
}
|
|
@@ -1724,10 +1820,10 @@ export async function bridgeDeleteHierarchical(options) {
|
|
|
1724
1820
|
const ctx = getDb(registry);
|
|
1725
1821
|
if (ctx) {
|
|
1726
1822
|
try {
|
|
1727
|
-
const result = ctx.db.prepare(`
|
|
1728
|
-
UPDATE memory_entries
|
|
1729
|
-
SET status = 'deleted', updated_at = ?
|
|
1730
|
-
WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
|
|
1823
|
+
const result = ctx.db.prepare(`
|
|
1824
|
+
UPDATE memory_entries
|
|
1825
|
+
SET status = 'deleted', updated_at = ?
|
|
1826
|
+
WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
|
|
1731
1827
|
`).run(Date.now(), key);
|
|
1732
1828
|
const changes = result?.changes ?? 0;
|
|
1733
1829
|
if (changes > 0) {
|
|
@@ -1803,10 +1899,10 @@ export async function bridgeDeleteCausalEdge(options) {
|
|
|
1803
1899
|
const ctx = getDb(registry);
|
|
1804
1900
|
if (ctx) {
|
|
1805
1901
|
try {
|
|
1806
|
-
const result = ctx.db.prepare(`
|
|
1807
|
-
UPDATE memory_entries
|
|
1808
|
-
SET status = 'deleted', updated_at = ?
|
|
1809
|
-
WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
|
|
1902
|
+
const result = ctx.db.prepare(`
|
|
1903
|
+
UPDATE memory_entries
|
|
1904
|
+
SET status = 'deleted', updated_at = ?
|
|
1905
|
+
WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
|
|
1810
1906
|
`).run(Date.now(), edgeKey);
|
|
1811
1907
|
const changes = result?.changes ?? 0;
|
|
1812
1908
|
if (changes > 0) {
|
|
@@ -1878,18 +1974,18 @@ export async function bridgeDeleteCausalNode(options) {
|
|
|
1878
1974
|
let deletedEdges = 0;
|
|
1879
1975
|
let deletedNode = false;
|
|
1880
1976
|
try {
|
|
1881
|
-
const edgeResult = ctx.db.prepare(`
|
|
1882
|
-
UPDATE memory_entries
|
|
1883
|
-
SET status = 'deleted', updated_at = ?
|
|
1884
|
-
WHERE namespace = 'causal-edges'
|
|
1885
|
-
AND status = 'active'
|
|
1886
|
-
AND (key LIKE ? OR key LIKE ?)
|
|
1977
|
+
const edgeResult = ctx.db.prepare(`
|
|
1978
|
+
UPDATE memory_entries
|
|
1979
|
+
SET status = 'deleted', updated_at = ?
|
|
1980
|
+
WHERE namespace = 'causal-edges'
|
|
1981
|
+
AND status = 'active'
|
|
1982
|
+
AND (key LIKE ? OR key LIKE ?)
|
|
1887
1983
|
`).run(Date.now(), `${nodeId}→%`, `%→${nodeId}`);
|
|
1888
1984
|
deletedEdges = edgeResult?.changes ?? 0;
|
|
1889
|
-
const nodeResult = ctx.db.prepare(`
|
|
1890
|
-
UPDATE memory_entries
|
|
1891
|
-
SET status = 'deleted', updated_at = ?
|
|
1892
|
-
WHERE key = ? AND status = 'active'
|
|
1985
|
+
const nodeResult = ctx.db.prepare(`
|
|
1986
|
+
UPDATE memory_entries
|
|
1987
|
+
SET status = 'deleted', updated_at = ?
|
|
1988
|
+
WHERE key = ? AND status = 'active'
|
|
1893
1989
|
`).run(Date.now(), nodeId);
|
|
1894
1990
|
deletedNode = (nodeResult?.changes ?? 0) > 0;
|
|
1895
1991
|
await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges });
|
|
@@ -2376,11 +2472,11 @@ export async function bridgeGetAllEmbeddings(options) {
|
|
|
2376
2472
|
try {
|
|
2377
2473
|
const dims = options?.dimensions ?? 384;
|
|
2378
2474
|
const maxRows = options?.limit ?? 50000;
|
|
2379
|
-
const rows = ctx.db.prepare(`
|
|
2380
|
-
SELECT id, key, namespace, embedding
|
|
2381
|
-
FROM memory_entries
|
|
2382
|
-
WHERE status = 'active' AND embedding IS NOT NULL
|
|
2383
|
-
LIMIT ?
|
|
2475
|
+
const rows = ctx.db.prepare(`
|
|
2476
|
+
SELECT id, key, namespace, embedding
|
|
2477
|
+
FROM memory_entries
|
|
2478
|
+
WHERE status = 'active' AND embedding IS NOT NULL
|
|
2479
|
+
LIMIT ?
|
|
2384
2480
|
`).all(maxRows);
|
|
2385
2481
|
const results = [];
|
|
2386
2482
|
for (const row of rows) {
|