@claude-flow/cli 3.6.30 → 3.7.0-alpha.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/agents/analysis/analyze-code-quality.md +178 -178
- package/.claude/agents/analysis/code-analyzer.md +209 -209
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +178 -178
- package/.claude/agents/architecture/arch-system-design.md +156 -156
- package/.claude/agents/architecture/system-design/arch-system-design.md +154 -154
- package/.claude/agents/browser/browser-agent.yaml +182 -182
- package/.claude/agents/consensus/byzantine-coordinator.md +62 -62
- package/.claude/agents/consensus/crdt-synchronizer.md +996 -996
- package/.claude/agents/consensus/gossip-coordinator.md +62 -62
- package/.claude/agents/consensus/performance-benchmarker.md +850 -850
- package/.claude/agents/consensus/quorum-manager.md +822 -822
- package/.claude/agents/consensus/raft-manager.md +62 -62
- package/.claude/agents/consensus/security-manager.md +621 -621
- package/.claude/agents/core/coder.md +452 -452
- package/.claude/agents/core/planner.md +374 -374
- package/.claude/agents/core/researcher.md +368 -368
- package/.claude/agents/core/reviewer.md +519 -519
- package/.claude/agents/core/tester.md +511 -511
- package/.claude/agents/custom/test-long-runner.md +44 -44
- package/.claude/agents/data/data-ml-model.md +444 -444
- package/.claude/agents/data/ml/data-ml-model.md +192 -192
- package/.claude/agents/development/backend/dev-backend-api.md +141 -141
- package/.claude/agents/development/dev-backend-api.md +344 -344
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +163 -163
- package/.claude/agents/devops/ops-cicd-github.md +164 -164
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +173 -173
- package/.claude/agents/documentation/docs-api-openapi.md +354 -354
- 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 +377 -377
- package/.claude/agents/github/github-modes.md +172 -172
- package/.claude/agents/github/issue-tracker.md +575 -575
- package/.claude/agents/github/multi-repo-swarm.md +552 -552
- package/.claude/agents/github/pr-manager.md +437 -437
- package/.claude/agents/github/project-board-sync.md +508 -508
- package/.claude/agents/github/release-manager.md +604 -604
- package/.claude/agents/github/release-swarm.md +582 -582
- package/.claude/agents/github/repo-architect.md +397 -397
- package/.claude/agents/github/swarm-issue.md +572 -572
- package/.claude/agents/github/swarm-pr.md +427 -427
- package/.claude/agents/github/sync-coordinator.md +451 -451
- package/.claude/agents/github/workflow-automation.md +902 -902
- package/.claude/agents/goal/agent.md +815 -815
- package/.claude/agents/goal/goal-planner.md +72 -72
- package/.claude/agents/optimization/benchmark-suite.md +664 -664
- package/.claude/agents/optimization/load-balancer.md +430 -430
- package/.claude/agents/optimization/performance-monitor.md +671 -671
- package/.claude/agents/optimization/resource-allocator.md +673 -673
- package/.claude/agents/optimization/topology-optimizer.md +807 -807
- package/.claude/agents/payments/agentic-payments.md +126 -126
- package/.claude/agents/sona/sona-learning-optimizer.md +74 -74
- package/.claude/agents/sparc/architecture.md +698 -698
- package/.claude/agents/sparc/pseudocode.md +519 -519
- package/.claude/agents/sparc/refinement.md +801 -801
- package/.claude/agents/sparc/specification.md +477 -477
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +224 -224
- package/.claude/agents/specialized/spec-mobile-react-native.md +226 -226
- 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 +1126 -1126
- package/.claude/agents/swarm/hierarchical-coordinator.md +709 -709
- package/.claude/agents/swarm/mesh-coordinator.md +962 -962
- package/.claude/agents/templates/automation-smart-agent.md +204 -204
- package/.claude/agents/templates/base-template-generator.md +289 -289
- package/.claude/agents/templates/coordinator-swarm-init.md +89 -89
- package/.claude/agents/templates/github-pr-manager.md +176 -176
- package/.claude/agents/templates/implementer-sparc-coder.md +258 -258
- package/.claude/agents/templates/memory-coordinator.md +186 -186
- package/.claude/agents/templates/orchestrator-task.md +138 -138
- package/.claude/agents/templates/performance-analyzer.md +198 -198
- package/.claude/agents/templates/sparc-coordinator.md +513 -513
- package/.claude/agents/testing/production-validator.md +394 -394
- package/.claude/agents/testing/tdd-london-swarm.md +243 -243
- package/.claude/agents/v3/adr-architect.md +184 -184
- package/.claude/agents/v3/aidefence-guardian.md +282 -282
- package/.claude/agents/v3/claims-authorizer.md +208 -208
- package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -993
- package/.claude/agents/v3/ddd-domain-expert.md +220 -220
- package/.claude/agents/v3/injection-analyst.md +236 -236
- package/.claude/agents/v3/memory-specialist.md +995 -995
- package/.claude/agents/v3/performance-engineer.md +1233 -1233
- package/.claude/agents/v3/pii-detector.md +151 -151
- package/.claude/agents/v3/reasoningbank-learner.md +213 -213
- package/.claude/agents/v3/security-architect-aidefence.md +410 -410
- package/.claude/agents/v3/security-architect.md +867 -867
- package/.claude/agents/v3/security-auditor.md +771 -771
- package/.claude/agents/v3/sparc-orchestrator.md +182 -182
- package/.claude/agents/v3/swarm-memory-manager.md +157 -157
- package/.claude/agents/v3/v3-integration-architect.md +205 -205
- package/.claude/commands/agents/README.md +50 -50
- package/.claude/commands/agents/agent-capabilities.md +140 -140
- 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 +216 -216
- package/.claude/commands/agents/health.md +139 -139
- package/.claude/commands/agents/list.md +100 -100
- package/.claude/commands/agents/logs.md +130 -130
- package/.claude/commands/agents/metrics.md +122 -122
- package/.claude/commands/agents/pool.md +127 -127
- package/.claude/commands/agents/spawn.md +140 -140
- package/.claude/commands/agents/status.md +115 -115
- package/.claude/commands/agents/stop.md +102 -102
- 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 +87 -87
- 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 +107 -107
- package/.claude/commands/training/neural-train.md +75 -75
- 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/helpers/README.md +96 -96
- package/.claude/helpers/adr-compliance.sh +186 -186
- package/.claude/helpers/auto-commit.sh +178 -178
- package/.claude/helpers/auto-memory-hook.mjs +368 -368
- package/.claude/helpers/checkpoint-manager.sh +251 -251
- package/.claude/helpers/daemon-manager.sh +252 -252
- package/.claude/helpers/ddd-tracker.sh +144 -144
- package/.claude/helpers/github-safe.js +121 -121
- package/.claude/helpers/github-setup.sh +28 -28
- 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/hook-handler.cjs +278 -278
- package/.claude/helpers/intelligence.cjs +1031 -1031
- 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.js +83 -83
- package/.claude/helpers/metrics-db.mjs +488 -488
- package/.claude/helpers/pattern-consolidator.sh +86 -86
- package/.claude/helpers/perf-worker.sh +160 -160
- package/.claude/helpers/post-commit +16 -16
- package/.claude/helpers/pre-commit +26 -26
- package/.claude/helpers/quick-start.sh +19 -19
- package/.claude/helpers/router.js +66 -66
- package/.claude/helpers/security-scanner.sh +127 -127
- package/.claude/helpers/session.js +135 -135
- package/.claude/helpers/setup-mcp.sh +18 -18
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -189
- package/.claude/helpers/statusline-hook.sh +21 -21
- package/.claude/helpers/statusline.cjs +575 -575
- package/.claude/helpers/statusline.js +321 -321
- 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/settings.json +182 -182
- 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/aidefence-scan.md +151 -151
- package/.claude/skills/aidefence.yaml +297 -297
- package/.claude/skills/browser/SKILL.md +204 -204
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -738
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -1157
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -610
- package/.claude/skills/github-code-review/SKILL.md +1140 -1140
- package/.claude/skills/github-multi-repo/SKILL.md +874 -874
- package/.claude/skills/github-project-management/SKILL.md +1290 -1277
- package/.claude/skills/github-release-management/SKILL.md +1081 -1081
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -1065
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -712
- package/.claude/skills/hooks-automation/SKILL.md +1201 -1201
- package/.claude/skills/pair-programming/SKILL.md +1202 -1202
- package/.claude/skills/performance-analysis/SKILL.md +563 -563
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -201
- package/.claude/skills/secure-review.md +181 -181
- package/.claude/skills/skill-builder/SKILL.md +910 -910
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -1115
- package/.claude/skills/stream-chain/SKILL.md +563 -563
- package/.claude/skills/swarm-advanced/SKILL.md +973 -973
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +871 -871
- package/.claude/skills/v3-core-implementation/SKILL.md +796 -796
- package/.claude/skills/v3-ddd-architecture/SKILL.md +441 -441
- package/.claude/skills/v3-integration-deep/SKILL.md +240 -240
- package/.claude/skills/v3-mcp-optimization/SKILL.md +776 -776
- package/.claude/skills/v3-memory-unification/SKILL.md +173 -173
- package/.claude/skills/v3-performance-optimization/SKILL.md +389 -389
- package/.claude/skills/v3-security-overhaul/SKILL.md +81 -81
- package/.claude/skills/v3-swarm-coordination/SKILL.md +339 -339
- package/.claude/skills/verification-quality/SKILL.md +649 -649
- package/.claude/skills/worker-benchmarks/skill.md +135 -135
- package/.claude/skills/worker-integration/skill.md +154 -154
- package/README.md +393 -391
- package/bin/cli.js +220 -220
- package/bin/mcp-server.js +224 -224
- package/bin/preinstall.cjs +2 -2
- package/dist/src/commands/agent-wasm.js +2 -2
- package/dist/src/commands/agent-wasm.js.map +1 -1
- package/dist/src/commands/completions.js +409 -409
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +19 -3
- package/dist/src/commands/daemon.js.map +1 -1
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +105 -23
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.js +26 -26
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +122 -104
- 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 +34 -21
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +68 -0
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/ruvector/backup.js +23 -23
- package/dist/src/commands/ruvector/benchmark.js +31 -31
- package/dist/src/commands/ruvector/import.js +14 -14
- package/dist/src/commands/ruvector/init.js +115 -115
- package/dist/src/commands/ruvector/migrate.js +99 -99
- package/dist/src/commands/ruvector/optimize.js +51 -51
- package/dist/src/commands/ruvector/setup.js +624 -624
- package/dist/src/commands/ruvector/status.js +38 -38
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +59 -18
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +226 -226
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +511 -453
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +645 -645
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +11 -5
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.js +858 -858
- package/dist/src/init/types.d.ts +7 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.d.ts +3 -0
- package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agentdb-tools.js +108 -0
- package/dist/src/mcp-tools/agentdb-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 +4 -2
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +19 -0
- 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 +14 -1
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/security-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/security-tools.js +28 -3
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +72 -3
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/types.d.ts +4 -33
- package/dist/src/mcp-tools/types.d.ts.map +1 -1
- package/dist/src/mcp-tools/types.js +4 -14
- package/dist/src/mcp-tools/types.js.map +1 -1
- package/dist/src/mcp-tools/validate-input.d.ts +5 -57
- package/dist/src/mcp-tools/validate-input.d.ts.map +1 -1
- package/dist/src/mcp-tools/validate-input.js +5 -233
- package/dist/src/mcp-tools/validate-input.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +28 -3
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +69 -0
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +319 -66
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +5 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +369 -363
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/neural-package-bridge.d.ts +48 -0
- package/dist/src/memory/neural-package-bridge.d.ts.map +1 -0
- package/dist/src/memory/neural-package-bridge.js +87 -0
- package/dist/src/memory/neural-package-bridge.js.map +1 -0
- package/dist/src/memory/rabitq-index.js +5 -5
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +1 -0
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/output.d.ts +6 -130
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +6 -511
- package/dist/src/output.js.map +1 -1
- package/dist/src/parser.d.ts +9 -0
- package/dist/src/parser.d.ts.map +1 -1
- package/dist/src/parser.js +11 -0
- package/dist/src/parser.js.map +1 -1
- package/dist/src/runtime/headless.js +28 -28
- package/dist/src/ruvector/agent-wasm.d.ts.map +1 -1
- package/dist/src/ruvector/agent-wasm.js +4 -1
- package/dist/src/ruvector/agent-wasm.js.map +1 -1
- package/dist/src/ruvector/index.d.ts +0 -2
- package/dist/src/ruvector/index.d.ts.map +1 -1
- package/dist/src/ruvector/index.js +8 -2
- package/dist/src/ruvector/index.js.map +1 -1
- package/dist/src/ruvector/model-router.d.ts +22 -1
- package/dist/src/ruvector/model-router.d.ts.map +1 -1
- package/dist/src/ruvector/model-router.js +125 -5
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/services/headless-worker-executor.js +84 -84
- package/dist/src/transfer/deploy-seraphine.js +23 -23
- package/dist/src/types.d.ts +10 -195
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +10 -35
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/scripts/deploy-ipfs-node.sh +153 -153
- package/scripts/postinstall.cjs +153 -153
- package/scripts/publish-registry.ts +345 -345
- package/scripts/publish.sh +57 -57
- package/scripts/setup-ipfs-registry.md +366 -366
- package/dist/src/services/event-stream.d.ts.map +0 -1
- package/dist/src/services/event-stream.js.map +0 -1
- package/dist/src/services/loop-worker-runner.d.ts.map +0 -1
- package/dist/src/services/loop-worker-runner.js.map +0 -1
- package/dist/src/services/runtime-capabilities.d.ts.map +0 -1
- package/dist/src/services/runtime-capabilities.js.map +0 -1
|
@@ -471,25 +471,25 @@ function getDb(registry) {
|
|
|
471
471
|
const db = agentdb.database;
|
|
472
472
|
// Ensure memory_entries table exists (idempotent)
|
|
473
473
|
try {
|
|
474
|
-
db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
|
|
475
|
-
id TEXT PRIMARY KEY,
|
|
476
|
-
key TEXT NOT NULL,
|
|
477
|
-
namespace TEXT DEFAULT 'default',
|
|
478
|
-
content TEXT NOT NULL,
|
|
479
|
-
type TEXT DEFAULT 'semantic',
|
|
480
|
-
embedding TEXT,
|
|
481
|
-
embedding_model TEXT DEFAULT 'local',
|
|
482
|
-
embedding_dimensions INTEGER,
|
|
483
|
-
tags TEXT,
|
|
484
|
-
metadata TEXT,
|
|
485
|
-
owner_id TEXT,
|
|
486
|
-
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
487
|
-
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
488
|
-
expires_at INTEGER,
|
|
489
|
-
last_accessed_at INTEGER,
|
|
490
|
-
access_count INTEGER DEFAULT 0,
|
|
491
|
-
status TEXT DEFAULT 'active',
|
|
492
|
-
UNIQUE(namespace, key)
|
|
474
|
+
db.exec(`CREATE TABLE IF NOT EXISTS memory_entries (
|
|
475
|
+
id TEXT PRIMARY KEY,
|
|
476
|
+
key TEXT NOT NULL,
|
|
477
|
+
namespace TEXT DEFAULT 'default',
|
|
478
|
+
content TEXT NOT NULL,
|
|
479
|
+
type TEXT DEFAULT 'semantic',
|
|
480
|
+
embedding TEXT,
|
|
481
|
+
embedding_model TEXT DEFAULT 'local',
|
|
482
|
+
embedding_dimensions INTEGER,
|
|
483
|
+
tags TEXT,
|
|
484
|
+
metadata TEXT,
|
|
485
|
+
owner_id TEXT,
|
|
486
|
+
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
487
|
+
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now') * 1000),
|
|
488
|
+
expires_at INTEGER,
|
|
489
|
+
last_accessed_at INTEGER,
|
|
490
|
+
access_count INTEGER DEFAULT 0,
|
|
491
|
+
status TEXT DEFAULT 'active',
|
|
492
|
+
UNIQUE(namespace, key)
|
|
493
493
|
)`);
|
|
494
494
|
// Ensure indexes
|
|
495
495
|
db.exec(`CREATE INDEX IF NOT EXISTS idx_bridge_ns ON memory_entries(namespace)`);
|
|
@@ -545,15 +545,15 @@ export async function bridgeStoreEntry(options) {
|
|
|
545
545
|
}
|
|
546
546
|
// better-sqlite3 uses synchronous .run() with positional params
|
|
547
547
|
const insertSql = options.upsert
|
|
548
|
-
? `INSERT OR REPLACE INTO memory_entries (
|
|
549
|
-
id, key, namespace, content, type,
|
|
550
|
-
embedding, embedding_dimensions, embedding_model,
|
|
551
|
-
tags, metadata, created_at, updated_at, expires_at, status
|
|
548
|
+
? `INSERT OR REPLACE INTO memory_entries (
|
|
549
|
+
id, key, namespace, content, type,
|
|
550
|
+
embedding, embedding_dimensions, embedding_model,
|
|
551
|
+
tags, metadata, created_at, updated_at, expires_at, status
|
|
552
552
|
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`
|
|
553
|
-
: `INSERT INTO memory_entries (
|
|
554
|
-
id, key, namespace, content, type,
|
|
555
|
-
embedding, embedding_dimensions, embedding_model,
|
|
556
|
-
tags, metadata, created_at, updated_at, expires_at, status
|
|
553
|
+
: `INSERT INTO memory_entries (
|
|
554
|
+
id, key, namespace, content, type,
|
|
555
|
+
embedding, embedding_dimensions, embedding_model,
|
|
556
|
+
tags, metadata, created_at, updated_at, expires_at, status
|
|
557
557
|
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
|
|
558
558
|
const stmt = ctx.db.prepare(insertSql);
|
|
559
559
|
stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
|
|
@@ -612,11 +612,11 @@ export async function bridgeSearchEntries(options) {
|
|
|
612
612
|
: '';
|
|
613
613
|
let rows;
|
|
614
614
|
try {
|
|
615
|
-
const stmt = ctx.db.prepare(`
|
|
616
|
-
SELECT id, key, namespace, content, embedding
|
|
617
|
-
FROM memory_entries
|
|
618
|
-
WHERE status = 'active' ${nsFilter}
|
|
619
|
-
LIMIT 1000
|
|
615
|
+
const stmt = ctx.db.prepare(`
|
|
616
|
+
SELECT id, key, namespace, content, embedding
|
|
617
|
+
FROM memory_entries
|
|
618
|
+
WHERE status = 'active' ${nsFilter}
|
|
619
|
+
LIMIT 1000
|
|
620
620
|
`);
|
|
621
621
|
rows = effectiveNamespace !== 'all' ? stmt.all(effectiveNamespace) : stmt.all();
|
|
622
622
|
}
|
|
@@ -707,12 +707,12 @@ export async function bridgeListEntries(options) {
|
|
|
707
707
|
// List
|
|
708
708
|
const entries = [];
|
|
709
709
|
try {
|
|
710
|
-
const stmt = ctx.db.prepare(`
|
|
711
|
-
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
|
|
712
|
-
FROM memory_entries
|
|
713
|
-
WHERE status = 'active' ${nsFilter}
|
|
714
|
-
ORDER BY updated_at DESC
|
|
715
|
-
LIMIT ? OFFSET ?
|
|
710
|
+
const stmt = ctx.db.prepare(`
|
|
711
|
+
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at
|
|
712
|
+
FROM memory_entries
|
|
713
|
+
WHERE status = 'active' ${nsFilter}
|
|
714
|
+
ORDER BY updated_at DESC
|
|
715
|
+
LIMIT ? OFFSET ?
|
|
716
716
|
`);
|
|
717
717
|
const rows = stmt.all(...nsParams, limit, offset);
|
|
718
718
|
for (const row of rows) {
|
|
@@ -775,11 +775,11 @@ export async function bridgeGetEntry(options) {
|
|
|
775
775
|
}
|
|
776
776
|
let row;
|
|
777
777
|
try {
|
|
778
|
-
const stmt = ctx.db.prepare(`
|
|
779
|
-
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
|
|
780
|
-
FROM memory_entries
|
|
781
|
-
WHERE status = 'active' AND key = ? AND namespace = ?
|
|
782
|
-
LIMIT 1
|
|
778
|
+
const stmt = ctx.db.prepare(`
|
|
779
|
+
SELECT id, key, namespace, content, embedding, access_count, created_at, updated_at, tags
|
|
780
|
+
FROM memory_entries
|
|
781
|
+
WHERE status = 'active' AND key = ? AND namespace = ?
|
|
782
|
+
LIMIT 1
|
|
783
783
|
`);
|
|
784
784
|
row = stmt.get(key, namespace);
|
|
785
785
|
}
|
|
@@ -843,10 +843,10 @@ export async function bridgeDeleteEntry(options) {
|
|
|
843
843
|
// Soft delete using parameterized query
|
|
844
844
|
let changes = 0;
|
|
845
845
|
try {
|
|
846
|
-
const result = ctx.db.prepare(`
|
|
847
|
-
UPDATE memory_entries
|
|
848
|
-
SET status = 'deleted', updated_at = ?
|
|
849
|
-
WHERE key = ? AND namespace = ? AND status = 'active'
|
|
846
|
+
const result = ctx.db.prepare(`
|
|
847
|
+
UPDATE memory_entries
|
|
848
|
+
SET status = 'deleted', updated_at = ?
|
|
849
|
+
WHERE key = ? AND namespace = ? AND status = 'active'
|
|
850
850
|
`).run(Date.now(), key, namespace);
|
|
851
851
|
changes = result?.changes ?? 0;
|
|
852
852
|
}
|
|
@@ -991,11 +991,11 @@ export async function bridgeSearchHNSW(queryEmbedding, options, dbPath) {
|
|
|
991
991
|
: '';
|
|
992
992
|
let rows;
|
|
993
993
|
try {
|
|
994
|
-
const stmt = ctx.db.prepare(`
|
|
995
|
-
SELECT id, key, namespace, content, embedding
|
|
996
|
-
FROM memory_entries
|
|
997
|
-
WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
|
|
998
|
-
LIMIT 10000
|
|
994
|
+
const stmt = ctx.db.prepare(`
|
|
995
|
+
SELECT id, key, namespace, content, embedding
|
|
996
|
+
FROM memory_entries
|
|
997
|
+
WHERE status = 'active' AND embedding IS NOT NULL ${nsFilter}
|
|
998
|
+
LIMIT 10000
|
|
999
999
|
`);
|
|
1000
1000
|
rows = nsFilter
|
|
1001
1001
|
? stmt.all(options.namespace)
|
|
@@ -1047,12 +1047,12 @@ export async function bridgeAddToHNSW(id, embedding, entry, dbPath) {
|
|
|
1047
1047
|
try {
|
|
1048
1048
|
const now = Date.now();
|
|
1049
1049
|
const embeddingJson = JSON.stringify(embedding);
|
|
1050
|
-
ctx.db.prepare(`
|
|
1051
|
-
INSERT OR REPLACE INTO memory_entries (
|
|
1052
|
-
id, key, namespace, content, type,
|
|
1053
|
-
embedding, embedding_dimensions, embedding_model,
|
|
1054
|
-
created_at, updated_at, status
|
|
1055
|
-
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
|
|
1050
|
+
ctx.db.prepare(`
|
|
1051
|
+
INSERT OR REPLACE INTO memory_entries (
|
|
1052
|
+
id, key, namespace, content, type,
|
|
1053
|
+
embedding, embedding_dimensions, embedding_model,
|
|
1054
|
+
created_at, updated_at, status
|
|
1055
|
+
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, 'Xenova/all-MiniLM-L6-v2', ?, ?, 'active')
|
|
1056
1056
|
`).run(id, entry.key, entry.namespace, entry.content, embeddingJson, embedding.length, now, now);
|
|
1057
1057
|
return true;
|
|
1058
1058
|
}
|
|
@@ -1340,9 +1340,9 @@ export async function bridgeRecordCausalEdge(options) {
|
|
|
1340
1340
|
const ctx = getDb(registry);
|
|
1341
1341
|
if (ctx) {
|
|
1342
1342
|
try {
|
|
1343
|
-
ctx.db.prepare(`
|
|
1344
|
-
INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
|
|
1345
|
-
VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
|
|
1343
|
+
ctx.db.prepare(`
|
|
1344
|
+
INSERT OR REPLACE INTO memory_entries (id, key, namespace, content, type, created_at, updated_at, status)
|
|
1345
|
+
VALUES (?, ?, 'causal-edges', ?, 'procedural', ?, ?, 'active')
|
|
1346
1346
|
`).run(generateId('edge'), `${options.sourceId}→${options.targetId}`, JSON.stringify(options), Date.now(), Date.now());
|
|
1347
1347
|
return { success: true, controller: 'bridge-fallback' };
|
|
1348
1348
|
}
|
|
@@ -1354,6 +1354,259 @@ export async function bridgeRecordCausalEdge(options) {
|
|
|
1354
1354
|
return null;
|
|
1355
1355
|
}
|
|
1356
1356
|
}
|
|
1357
|
+
// ===== #1784: Delete tools for hierarchical + causal-graph =====
|
|
1358
|
+
/**
|
|
1359
|
+
* Delete a hierarchical-memory entry by key (#1784).
|
|
1360
|
+
*
|
|
1361
|
+
* Reality check: agentdb's HierarchicalMemory class doesn't expose a public
|
|
1362
|
+
* delete API today, so the real-backend path falls back to direct SQL on
|
|
1363
|
+
* the underlying SQLite tables (status flip to 'deleted' + AttestationLog
|
|
1364
|
+
* audit). The bridge-fallback path that bridgeHierarchicalStore uses when
|
|
1365
|
+
* HierarchicalMemory isn't loaded writes plain memory_entries rows that
|
|
1366
|
+
* `bridgeDeleteEntry` already handles.
|
|
1367
|
+
*
|
|
1368
|
+
* Returns { controller: 'native-unsupported' } when the real HM is loaded
|
|
1369
|
+
* and the SQL fallback can't reach its private tables — surfacing the
|
|
1370
|
+
* limitation honestly instead of silently returning success.
|
|
1371
|
+
*/
|
|
1372
|
+
export async function bridgeDeleteHierarchical(options) {
|
|
1373
|
+
const registry = await getRegistry(options.dbPath);
|
|
1374
|
+
if (!registry)
|
|
1375
|
+
return null;
|
|
1376
|
+
try {
|
|
1377
|
+
const { key, tier } = options;
|
|
1378
|
+
// MutationGuard validation
|
|
1379
|
+
const guardResult = await guardValidate(registry, 'delete', { key, namespace: 'hierarchical' });
|
|
1380
|
+
if (!guardResult.allowed) {
|
|
1381
|
+
return { success: false, deleted: false, key, tier, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1382
|
+
}
|
|
1383
|
+
const hm = registry.get('hierarchicalMemory');
|
|
1384
|
+
// 1. agentdb@3.0.0-alpha.13+: ReflexionMemory.deleteEpisode propagates through
|
|
1385
|
+
// graph adapter / generic graph backend / vector backend AND purges SQL
|
|
1386
|
+
// episodes + episode_embeddings rows. Single call, durably consistent.
|
|
1387
|
+
// See agentic-flow#150/#151 (closes ruvnet/RuVector#427 the cli-visible way).
|
|
1388
|
+
const reflexion = registry.get('reflexionMemory');
|
|
1389
|
+
if (reflexion && typeof reflexion.deleteEpisode === 'function') {
|
|
1390
|
+
try {
|
|
1391
|
+
const removed = await reflexion.deleteEpisode(key);
|
|
1392
|
+
if (removed) {
|
|
1393
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1394
|
+
return { success: true, deleted: true, key, tier, controller: 'reflexionMemory', guarded: true };
|
|
1395
|
+
}
|
|
1396
|
+
}
|
|
1397
|
+
catch { /* fall through */ }
|
|
1398
|
+
}
|
|
1399
|
+
// 2. Try HierarchicalMemory's own delete API if it ever ships one.
|
|
1400
|
+
if (hm && typeof hm.delete === 'function') {
|
|
1401
|
+
try {
|
|
1402
|
+
await hm.delete(key);
|
|
1403
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1404
|
+
return { success: true, deleted: true, key, tier, controller: 'hierarchicalMemory', guarded: true };
|
|
1405
|
+
}
|
|
1406
|
+
catch (err) {
|
|
1407
|
+
// Fall through to SQL fallback
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
// 3. Stub HierarchicalMemory may expose `remove` or `forget`
|
|
1411
|
+
if (hm && typeof hm.remove === 'function') {
|
|
1412
|
+
try {
|
|
1413
|
+
await hm.remove(key);
|
|
1414
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1415
|
+
return { success: true, deleted: true, key, tier, controller: 'hierarchicalMemory-stub', guarded: true };
|
|
1416
|
+
}
|
|
1417
|
+
catch { /* fall through */ }
|
|
1418
|
+
}
|
|
1419
|
+
// 3. Bridge-fallback: HM stored to memory_entries with namespace prefix
|
|
1420
|
+
// (used when the real controller isn't loaded). Soft-delete via SQL.
|
|
1421
|
+
const ctx = getDb(registry);
|
|
1422
|
+
if (ctx) {
|
|
1423
|
+
try {
|
|
1424
|
+
const result = ctx.db.prepare(`
|
|
1425
|
+
UPDATE memory_entries
|
|
1426
|
+
SET status = 'deleted', updated_at = ?
|
|
1427
|
+
WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
|
|
1428
|
+
`).run(Date.now(), key);
|
|
1429
|
+
const changes = result?.changes ?? 0;
|
|
1430
|
+
if (changes > 0) {
|
|
1431
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1432
|
+
return { success: true, deleted: true, key, tier, controller: 'bridge-fallback', guarded: true };
|
|
1433
|
+
}
|
|
1434
|
+
// Nothing to delete in SQL fallback — and no real-HM delete API.
|
|
1435
|
+
// Surface the situation honestly.
|
|
1436
|
+
return {
|
|
1437
|
+
success: false, deleted: false, key, tier,
|
|
1438
|
+
controller: hm ? 'native-unsupported' : 'not-found',
|
|
1439
|
+
error: hm
|
|
1440
|
+
? 'HierarchicalMemory has no public delete API; entry remains in native storage'
|
|
1441
|
+
: 'No hierarchical entry found with this key',
|
|
1442
|
+
};
|
|
1443
|
+
}
|
|
1444
|
+
catch (err) {
|
|
1445
|
+
return { success: false, deleted: false, key, tier, controller: 'sql-error', error: err.message };
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
return null;
|
|
1449
|
+
}
|
|
1450
|
+
catch {
|
|
1451
|
+
return null;
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
/**
|
|
1455
|
+
* Delete a causal edge between two memory entries (#1784).
|
|
1456
|
+
*
|
|
1457
|
+
* The bridge stores fallback edges in namespace='causal-edges' with key
|
|
1458
|
+
* '{sourceId}→{targetId}'. Those CAN be soft-deleted. The native graph-node
|
|
1459
|
+
* backend has no delete API (createNode/createEdge/createHyperedge only),
|
|
1460
|
+
* so an edge that landed in graph-node native storage stays there. We
|
|
1461
|
+
* surface that explicitly via controller: 'native-unsupported'.
|
|
1462
|
+
*/
|
|
1463
|
+
export async function bridgeDeleteCausalEdge(options) {
|
|
1464
|
+
const registry = await getRegistry(options.dbPath);
|
|
1465
|
+
if (!registry)
|
|
1466
|
+
return null;
|
|
1467
|
+
try {
|
|
1468
|
+
const { sourceId, targetId, relation } = options;
|
|
1469
|
+
const edgeKey = `${sourceId}→${targetId}`;
|
|
1470
|
+
const guardResult = await guardValidate(registry, 'delete', { key: edgeKey, namespace: 'causal-edges' });
|
|
1471
|
+
if (!guardResult.allowed) {
|
|
1472
|
+
return { success: false, deleted: false, sourceId, targetId, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1473
|
+
}
|
|
1474
|
+
const causalGraph = registry.get('causalGraph');
|
|
1475
|
+
// 1. agentdb@3.0.0-alpha.13+: GraphDatabaseAdapter.deleteEdgesByEndpoints
|
|
1476
|
+
// handles the (sourceId, targetId, relation?) tuple case directly via
|
|
1477
|
+
// Cypher MATCH … DETACH DELETE. Cypher-injection-safe (label validated
|
|
1478
|
+
// against /^[A-Za-z_][A-Za-z0-9_]*$/ upstream).
|
|
1479
|
+
if (causalGraph && typeof causalGraph.deleteEdgesByEndpoints === 'function') {
|
|
1480
|
+
try {
|
|
1481
|
+
const r = await causalGraph.deleteEdgesByEndpoints(sourceId, targetId, relation);
|
|
1482
|
+
const deletedCount = typeof r === 'object' && r ? (r.deleted ?? 0) : (r ? 1 : 0);
|
|
1483
|
+
if (deletedCount > 0) {
|
|
1484
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation, count: deletedCount });
|
|
1485
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'causalGraph-cypher', guarded: true };
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
catch { /* fall through */ }
|
|
1489
|
+
}
|
|
1490
|
+
// 2. Pre-alpha.13 / different controller: try removeEdge() if exposed.
|
|
1491
|
+
if (causalGraph && typeof causalGraph.removeEdge === 'function') {
|
|
1492
|
+
try {
|
|
1493
|
+
await causalGraph.removeEdge(sourceId, targetId, relation);
|
|
1494
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation });
|
|
1495
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'causalGraph', guarded: true };
|
|
1496
|
+
}
|
|
1497
|
+
catch { /* fall through */ }
|
|
1498
|
+
}
|
|
1499
|
+
// 2. Bridge-fallback: soft-delete the memory_entries row.
|
|
1500
|
+
const ctx = getDb(registry);
|
|
1501
|
+
if (ctx) {
|
|
1502
|
+
try {
|
|
1503
|
+
const result = ctx.db.prepare(`
|
|
1504
|
+
UPDATE memory_entries
|
|
1505
|
+
SET status = 'deleted', updated_at = ?
|
|
1506
|
+
WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
|
|
1507
|
+
`).run(Date.now(), edgeKey);
|
|
1508
|
+
const changes = result?.changes ?? 0;
|
|
1509
|
+
if (changes > 0) {
|
|
1510
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation });
|
|
1511
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'bridge-fallback', guarded: true };
|
|
1512
|
+
}
|
|
1513
|
+
return {
|
|
1514
|
+
success: false, deleted: false, sourceId, targetId,
|
|
1515
|
+
controller: 'native-unsupported',
|
|
1516
|
+
error: 'graph-node native backend has no delete API; edge cannot be removed from native storage. SQL fallback found no matching row.',
|
|
1517
|
+
};
|
|
1518
|
+
}
|
|
1519
|
+
catch (err) {
|
|
1520
|
+
return { success: false, deleted: false, sourceId, targetId, controller: 'sql-error', error: err.message };
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
return null;
|
|
1524
|
+
}
|
|
1525
|
+
catch {
|
|
1526
|
+
return null;
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
/**
|
|
1530
|
+
* Cascade-delete a causal node and all its incident edges (#1784).
|
|
1531
|
+
*
|
|
1532
|
+
* Same constraint as bridgeDeleteCausalEdge — native graph-node lacks a
|
|
1533
|
+
* delete API. SQL fallback path soft-deletes the node (if stored as a
|
|
1534
|
+
* memory_entries row) and every edge whose key contains the nodeId.
|
|
1535
|
+
*/
|
|
1536
|
+
export async function bridgeDeleteCausalNode(options) {
|
|
1537
|
+
const registry = await getRegistry(options.dbPath);
|
|
1538
|
+
if (!registry)
|
|
1539
|
+
return null;
|
|
1540
|
+
try {
|
|
1541
|
+
const { nodeId } = options;
|
|
1542
|
+
const guardResult = await guardValidate(registry, 'delete', { key: nodeId, namespace: 'causal-nodes' });
|
|
1543
|
+
if (!guardResult.allowed) {
|
|
1544
|
+
return { success: false, deletedNode: false, deletedEdges: 0, nodeId, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1545
|
+
}
|
|
1546
|
+
// 1. agentdb@3.0.0-alpha.13+: GraphDatabaseAdapter.deleteNode(id, {cascade})
|
|
1547
|
+
// counts incident edges before delete so we get accurate audit numbers
|
|
1548
|
+
// regardless of binding stats. Cypher MATCH (n {id}) DETACH DELETE n.
|
|
1549
|
+
const causalGraph = registry.get('causalGraph');
|
|
1550
|
+
if (causalGraph && typeof causalGraph.deleteNode === 'function') {
|
|
1551
|
+
try {
|
|
1552
|
+
const r = await causalGraph.deleteNode(nodeId, { cascade: true });
|
|
1553
|
+
if (r && typeof r === 'object') {
|
|
1554
|
+
const deletedNodeNative = !!r.deletedNode;
|
|
1555
|
+
const deletedEdgesNative = typeof r.deletedEdges === 'number' ? r.deletedEdges : 0;
|
|
1556
|
+
await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges: deletedEdgesNative });
|
|
1557
|
+
return {
|
|
1558
|
+
success: true,
|
|
1559
|
+
deletedNode: deletedNodeNative,
|
|
1560
|
+
deletedEdges: deletedEdgesNative,
|
|
1561
|
+
nodeId,
|
|
1562
|
+
controller: 'causalGraph-cypher',
|
|
1563
|
+
guarded: true,
|
|
1564
|
+
};
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
catch { /* fall through to SQL */ }
|
|
1568
|
+
}
|
|
1569
|
+
// 2. SQL fallback: soft-delete the node row + every causal-edges row whose
|
|
1570
|
+
// key contains nodeId on either side. Used when agentdb pre-alpha.13 OR
|
|
1571
|
+
// when the entry was stored via the bridge's SQL fallback path.
|
|
1572
|
+
const ctx = getDb(registry);
|
|
1573
|
+
if (!ctx)
|
|
1574
|
+
return null;
|
|
1575
|
+
let deletedEdges = 0;
|
|
1576
|
+
let deletedNode = false;
|
|
1577
|
+
try {
|
|
1578
|
+
const edgeResult = ctx.db.prepare(`
|
|
1579
|
+
UPDATE memory_entries
|
|
1580
|
+
SET status = 'deleted', updated_at = ?
|
|
1581
|
+
WHERE namespace = 'causal-edges'
|
|
1582
|
+
AND status = 'active'
|
|
1583
|
+
AND (key LIKE ? OR key LIKE ?)
|
|
1584
|
+
`).run(Date.now(), `${nodeId}→%`, `%→${nodeId}`);
|
|
1585
|
+
deletedEdges = edgeResult?.changes ?? 0;
|
|
1586
|
+
const nodeResult = ctx.db.prepare(`
|
|
1587
|
+
UPDATE memory_entries
|
|
1588
|
+
SET status = 'deleted', updated_at = ?
|
|
1589
|
+
WHERE key = ? AND status = 'active'
|
|
1590
|
+
`).run(Date.now(), nodeId);
|
|
1591
|
+
deletedNode = (nodeResult?.changes ?? 0) > 0;
|
|
1592
|
+
await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges });
|
|
1593
|
+
}
|
|
1594
|
+
catch (err) {
|
|
1595
|
+
return { success: false, deletedNode: false, deletedEdges: 0, nodeId, controller: 'sql-error', error: err.message };
|
|
1596
|
+
}
|
|
1597
|
+
return {
|
|
1598
|
+
success: true,
|
|
1599
|
+
deletedNode,
|
|
1600
|
+
deletedEdges,
|
|
1601
|
+
nodeId,
|
|
1602
|
+
controller: 'bridge-fallback',
|
|
1603
|
+
guarded: true,
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
catch {
|
|
1607
|
+
return null;
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1357
1610
|
// ===== Phase 5: ReflexionMemory session lifecycle =====
|
|
1358
1611
|
/**
|
|
1359
1612
|
* Start a session with ReflexionMemory episodic replay.
|
|
@@ -1766,11 +2019,11 @@ export async function bridgeGetAllEmbeddings(options) {
|
|
|
1766
2019
|
try {
|
|
1767
2020
|
const dims = options?.dimensions ?? 384;
|
|
1768
2021
|
const maxRows = options?.limit ?? 50000;
|
|
1769
|
-
const rows = ctx.db.prepare(`
|
|
1770
|
-
SELECT id, key, namespace, embedding
|
|
1771
|
-
FROM memory_entries
|
|
1772
|
-
WHERE status = 'active' AND embedding IS NOT NULL
|
|
1773
|
-
LIMIT ?
|
|
2022
|
+
const rows = ctx.db.prepare(`
|
|
2023
|
+
SELECT id, key, namespace, embedding
|
|
2024
|
+
FROM memory_entries
|
|
2025
|
+
WHERE status = 'active' AND embedding IS NOT NULL
|
|
2026
|
+
LIMIT ?
|
|
1774
2027
|
`).all(maxRows);
|
|
1775
2028
|
const results = [];
|
|
1776
2029
|
for (const row of rows) {
|