@claude-flow/cli 3.7.0-alpha.7 → 3.7.0-alpha.71
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/helpers/hook-handler.cjs +12 -4
- package/.claude/helpers/statusline.cjs +31 -2
- package/.claude/helpers/statusline.js +35 -4
- package/README.md +51 -34
- package/bin/cli.js +15 -2
- package/bin/mcp-server.js +1 -1
- package/dist/src/__probe.d.ts +2 -0
- package/dist/src/__probe.d.ts.map +1 -0
- package/dist/src/__probe.js +5 -0
- package/dist/src/__probe.js.map +1 -0
- package/dist/src/commands/agent-wasm.js +2 -2
- package/dist/src/commands/agent-wasm.js.map +1 -1
- package/dist/src/commands/benchmark-cosign.d.ts +29 -0
- package/dist/src/commands/benchmark-cosign.d.ts.map +1 -0
- package/dist/src/commands/benchmark-cosign.js +222 -0
- package/dist/src/commands/benchmark-cosign.js.map +1 -0
- package/dist/src/commands/benchmark-verify.d.ts +21 -0
- package/dist/src/commands/benchmark-verify.d.ts.map +1 -0
- package/dist/src/commands/benchmark-verify.js +202 -0
- package/dist/src/commands/benchmark-verify.js.map +1 -0
- package/dist/src/commands/daemon.d.ts +20 -0
- package/dist/src/commands/daemon.d.ts.map +1 -1
- package/dist/src/commands/daemon.js +366 -7
- 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 +224 -46
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/embeddings.d.ts.map +1 -1
- package/dist/src/commands/embeddings.js +18 -9
- package/dist/src/commands/embeddings.js.map +1 -1
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +25 -7
- 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 +56 -29
- 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 +104 -3
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/start.js +1 -1
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/swarm.js +1 -1
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/task.d.ts.map +1 -1
- package/dist/src/commands/task.js +8 -4
- package/dist/src/commands/task.js.map +1 -1
- package/dist/src/config-adapter.js +1 -1
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.d.ts +5 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +61 -18
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +92 -0
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.d.ts.map +1 -1
- package/dist/src/init/helpers-generator.js +6 -2
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.js +4 -4
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +78 -19
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +75 -31
- package/dist/src/init/statusline-generator.js.map +1 -1
- 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-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +12 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +38 -5
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.d.ts +3 -2
- package/dist/src/mcp-tools/agent-execute-core.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-execute-core.js +16 -9
- package/dist/src/mcp-tools/agent-execute-core.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +88 -11
- package/dist/src/mcp-tools/agent-tools.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 +206 -21
- package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.js +6 -6
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +10 -10
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-session-tools.js +18 -7
- package/dist/src/mcp-tools/browser-session-tools.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +23 -23
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.js +12 -12
- package/dist/src/mcp-tools/claims-tools.js.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +6 -6
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/coordination-tools.js +7 -7
- package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +8 -8
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/embeddings-tools.js +10 -10
- package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
- package/dist/src/mcp-tools/github-tools.js +5 -5
- package/dist/src/mcp-tools/github-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +21 -21
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts +149 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.d.ts.map +1 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.js +296 -0
- package/dist/src/mcp-tools/hive-consensus-runtime.js.map +1 -0
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +53 -9
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.d.ts +2 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +179 -46
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +22 -0
- package/dist/src/mcp-tools/managed-agent-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/managed-agent-tools.js +357 -0
- package/dist/src/mcp-tools/managed-agent-tools.js.map +1 -0
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +490 -68
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/neural-tools.js +6 -6
- package/dist/src/mcp-tools/neural-tools.js.map +1 -1
- package/dist/src/mcp-tools/performance-tools.js +6 -6
- package/dist/src/mcp-tools/performance-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +4 -4
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/ruvllm-tools.js +10 -10
- package/dist/src/mcp-tools/ruvllm-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 +34 -9
- package/dist/src/mcp-tools/security-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +130 -6
- package/dist/src/mcp-tools/session-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 +76 -7
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +91 -18
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +55 -7
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/terminal-tools.js +5 -5
- package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +11 -11
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/mcp-tools/wasm-agent-tools.js +11 -11
- package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +118 -10
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/ann-router-registry.d.ts +61 -0
- package/dist/src/memory/ann-router-registry.d.ts.map +1 -0
- package/dist/src/memory/ann-router-registry.js +72 -0
- package/dist/src/memory/ann-router-registry.js.map +1 -0
- package/dist/src/memory/diskann-registry.d.ts +56 -0
- package/dist/src/memory/diskann-registry.d.ts.map +1 -0
- package/dist/src/memory/diskann-registry.js +88 -0
- package/dist/src/memory/diskann-registry.js.map +1 -0
- 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 +293 -5
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +8 -0
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +89 -16
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +3 -0
- package/dist/src/memory/sona-optimizer.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/plugins/store/discovery.d.ts +15 -4
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +40 -18
- package/dist/src/plugins/store/discovery.js.map +1 -1
- 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/coverage-tools.js +6 -6
- package/dist/src/ruvector/coverage-tools.js.map +1 -1
- package/dist/src/services/headless-worker-executor.d.ts +6 -0
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -1
- package/dist/src/services/headless-worker-executor.js +37 -3
- package/dist/src/services/headless-worker-executor.js.map +1 -1
- package/dist/src/services/worker-daemon.d.ts +80 -2
- package/dist/src/services/worker-daemon.d.ts.map +1 -1
- package/dist/src/services/worker-daemon.js +372 -11
- package/dist/src/services/worker-daemon.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -8
- package/.claude/skills/agentdb-advanced/SKILL.md +0 -550
- package/.claude/skills/agentdb-learning/SKILL.md +0 -545
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +0 -339
- package/.claude/skills/agentdb-optimization/SKILL.md +0 -509
- package/.claude/skills/agentdb-vector-search/SKILL.md +0 -339
- package/.claude/skills/agentic-jujutsu/SKILL.md +0 -645
- package/.claude/skills/aidefence-scan.md +0 -151
- package/.claude/skills/aidefence.yaml +0 -297
- package/.claude/skills/browser/SKILL.md +0 -204
- package/.claude/skills/flow-nexus-neural/SKILL.md +0 -738
- package/.claude/skills/flow-nexus-platform/SKILL.md +0 -1157
- package/.claude/skills/flow-nexus-swarm/SKILL.md +0 -610
- package/.claude/skills/github-code-review/SKILL.md +0 -1140
- package/.claude/skills/github-multi-repo/SKILL.md +0 -874
- package/.claude/skills/github-project-management/SKILL.md +0 -1277
- package/.claude/skills/github-release-management/SKILL.md +0 -1081
- package/.claude/skills/github-workflow-automation/SKILL.md +0 -1065
- package/.claude/skills/hive-mind-advanced/SKILL.md +0 -712
- package/.claude/skills/hooks-automation/SKILL.md +0 -1201
- package/.claude/skills/pair-programming/SKILL.md +0 -1202
- package/.claude/skills/performance-analysis/SKILL.md +0 -563
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +0 -446
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +0 -201
- package/.claude/skills/secure-review.md +0 -181
- package/.claude/skills/skill-builder/SKILL.md +0 -910
- package/.claude/skills/sparc-methodology/SKILL.md +0 -1115
- package/.claude/skills/stream-chain/SKILL.md +0 -563
- package/.claude/skills/swarm-advanced/SKILL.md +0 -973
- package/.claude/skills/swarm-orchestration/SKILL.md +0 -179
- package/.claude/skills/v3-cli-modernization/SKILL.md +0 -872
- package/.claude/skills/v3-core-implementation/SKILL.md +0 -797
- package/.claude/skills/v3-ddd-architecture/SKILL.md +0 -442
- package/.claude/skills/v3-integration-deep/SKILL.md +0 -241
- package/.claude/skills/v3-mcp-optimization/SKILL.md +0 -777
- package/.claude/skills/v3-memory-unification/SKILL.md +0 -174
- package/.claude/skills/v3-performance-optimization/SKILL.md +0 -390
- package/.claude/skills/v3-security-overhaul/SKILL.md +0 -82
- package/.claude/skills/v3-swarm-coordination/SKILL.md +0 -340
- package/.claude/skills/verification-quality/SKILL.md +0 -649
- package/.claude/skills/worker-benchmarks/skill.md +0 -135
- package/.claude/skills/worker-integration/skill.md +0 -154
- package/dist/src/ruvector/flash-attention.d.ts +0 -195
- package/dist/src/ruvector/flash-attention.d.ts.map +0 -1
- package/dist/src/ruvector/flash-attention.js +0 -643
- package/dist/src/ruvector/flash-attention.js.map +0 -1
- package/dist/src/ruvector/moe-router.d.ts +0 -206
- package/dist/src/ruvector/moe-router.d.ts.map +0 -1
- package/dist/src/ruvector/moe-router.js +0 -626
- package/dist/src/ruvector/moe-router.js.map +0 -1
- package/dist/src/services/event-stream.d.ts +0 -25
- package/dist/src/services/event-stream.d.ts.map +0 -1
- package/dist/src/services/event-stream.js +0 -27
- package/dist/src/services/event-stream.js.map +0 -1
- package/dist/src/services/loop-worker-runner.d.ts +0 -16
- package/dist/src/services/loop-worker-runner.d.ts.map +0 -1
- package/dist/src/services/loop-worker-runner.js +0 -34
- package/dist/src/services/loop-worker-runner.js.map +0 -1
- package/dist/src/services/runtime-capabilities.d.ts +0 -22
- package/dist/src/services/runtime-capabilities.d.ts.map +0 -1
- package/dist/src/services/runtime-capabilities.js +0 -45
- package/dist/src/services/runtime-capabilities.js.map +0 -1
|
@@ -278,6 +278,75 @@ export declare function bridgeRecordCausalEdge(options: {
|
|
|
278
278
|
success: boolean;
|
|
279
279
|
controller: string;
|
|
280
280
|
} | null>;
|
|
281
|
+
/**
|
|
282
|
+
* Delete a hierarchical-memory entry by key (#1784).
|
|
283
|
+
*
|
|
284
|
+
* Reality check: agentdb's HierarchicalMemory class doesn't expose a public
|
|
285
|
+
* delete API today, so the real-backend path falls back to direct SQL on
|
|
286
|
+
* the underlying SQLite tables (status flip to 'deleted' + AttestationLog
|
|
287
|
+
* audit). The bridge-fallback path that bridgeHierarchicalStore uses when
|
|
288
|
+
* HierarchicalMemory isn't loaded writes plain memory_entries rows that
|
|
289
|
+
* `bridgeDeleteEntry` already handles.
|
|
290
|
+
*
|
|
291
|
+
* Returns { controller: 'native-unsupported' } when the real HM is loaded
|
|
292
|
+
* and the SQL fallback can't reach its private tables — surfacing the
|
|
293
|
+
* limitation honestly instead of silently returning success.
|
|
294
|
+
*/
|
|
295
|
+
export declare function bridgeDeleteHierarchical(options: {
|
|
296
|
+
key: string;
|
|
297
|
+
tier?: string;
|
|
298
|
+
dbPath?: string;
|
|
299
|
+
}): Promise<{
|
|
300
|
+
success: boolean;
|
|
301
|
+
deleted: boolean;
|
|
302
|
+
key: string;
|
|
303
|
+
tier?: string;
|
|
304
|
+
controller: string;
|
|
305
|
+
guarded?: boolean;
|
|
306
|
+
error?: string;
|
|
307
|
+
} | null>;
|
|
308
|
+
/**
|
|
309
|
+
* Delete a causal edge between two memory entries (#1784).
|
|
310
|
+
*
|
|
311
|
+
* The bridge stores fallback edges in namespace='causal-edges' with key
|
|
312
|
+
* '{sourceId}→{targetId}'. Those CAN be soft-deleted. The native graph-node
|
|
313
|
+
* backend has no delete API (createNode/createEdge/createHyperedge only),
|
|
314
|
+
* so an edge that landed in graph-node native storage stays there. We
|
|
315
|
+
* surface that explicitly via controller: 'native-unsupported'.
|
|
316
|
+
*/
|
|
317
|
+
export declare function bridgeDeleteCausalEdge(options: {
|
|
318
|
+
sourceId: string;
|
|
319
|
+
targetId: string;
|
|
320
|
+
relation?: string;
|
|
321
|
+
dbPath?: string;
|
|
322
|
+
}): Promise<{
|
|
323
|
+
success: boolean;
|
|
324
|
+
deleted: boolean;
|
|
325
|
+
sourceId: string;
|
|
326
|
+
targetId: string;
|
|
327
|
+
controller: string;
|
|
328
|
+
guarded?: boolean;
|
|
329
|
+
error?: string;
|
|
330
|
+
} | null>;
|
|
331
|
+
/**
|
|
332
|
+
* Cascade-delete a causal node and all its incident edges (#1784).
|
|
333
|
+
*
|
|
334
|
+
* Same constraint as bridgeDeleteCausalEdge — native graph-node lacks a
|
|
335
|
+
* delete API. SQL fallback path soft-deletes the node (if stored as a
|
|
336
|
+
* memory_entries row) and every edge whose key contains the nodeId.
|
|
337
|
+
*/
|
|
338
|
+
export declare function bridgeDeleteCausalNode(options: {
|
|
339
|
+
nodeId: string;
|
|
340
|
+
dbPath?: string;
|
|
341
|
+
}): Promise<{
|
|
342
|
+
success: boolean;
|
|
343
|
+
deletedNode: boolean;
|
|
344
|
+
deletedEdges: number;
|
|
345
|
+
nodeId: string;
|
|
346
|
+
controller: string;
|
|
347
|
+
guarded?: boolean;
|
|
348
|
+
error?: string;
|
|
349
|
+
} | null>;
|
|
281
350
|
/**
|
|
282
351
|
* Start a session with ReflexionMemory episodic replay.
|
|
283
352
|
* Loads relevant past session patterns for the new session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-bridge.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"memory-bridge.d.ts","sourceRoot":"","sources":["../../../src/memory/memory-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,26 +18,50 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import * as path from 'path';
|
|
20
20
|
import * as crypto from 'crypto';
|
|
21
|
+
import { createRequire } from 'node:module';
|
|
21
22
|
// ===== Lazy singleton =====
|
|
22
23
|
let registryPromise = null;
|
|
23
24
|
let registryInstance = null;
|
|
24
25
|
let bridgeAvailable = null;
|
|
25
26
|
/**
|
|
26
27
|
* Resolve database path with path traversal protection.
|
|
27
|
-
* Only allows paths within or below the project's
|
|
28
|
+
* Only allows paths within or below the project's working directory,
|
|
28
29
|
* or the special ':memory:' path.
|
|
30
|
+
*
|
|
31
|
+
* #1945: the previous hard-coded `<cwd>/.swarm/memory.db` default ignored
|
|
32
|
+
* `CLAUDE_FLOW_MEMORY_PATH` / `claude-flow.config.json#memory.persistPath`
|
|
33
|
+
* — so users with non-default memory paths had `memory init` write to e.g.
|
|
34
|
+
* `data/memory/memory.db` while `bridgeStoreEntry()` wrote to
|
|
35
|
+
* `.swarm/memory.db`. CLI store reported success against the wrong file and
|
|
36
|
+
* a fresh process reading the configured path saw nothing.
|
|
37
|
+
*
|
|
38
|
+
* Use `getMemoryRoot()` (from memory-initializer) so the bridge and the
|
|
39
|
+
* initializer agree on the same file. Imported via require() to avoid a
|
|
40
|
+
* circular ESM dep between memory-initializer.ts and memory-bridge.ts.
|
|
29
41
|
*/
|
|
30
42
|
function getDbPath(customPath) {
|
|
31
|
-
|
|
43
|
+
let defaultDir = path.resolve(process.cwd(), '.swarm');
|
|
44
|
+
try {
|
|
45
|
+
// `getMemoryRoot()` honors $CLAUDE_FLOW_MEMORY_PATH, then the
|
|
46
|
+
// claude-flow.config.json `memory.persistPath`, then defaults to `.swarm`.
|
|
47
|
+
const cjsRequire = createRequire(import.meta.url);
|
|
48
|
+
const mod = cjsRequire('./memory-initializer.js');
|
|
49
|
+
if (typeof mod.getMemoryRoot === 'function') {
|
|
50
|
+
defaultDir = mod.getMemoryRoot();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
/* memory-initializer not resolvable in this build — keep `.swarm/` default */
|
|
55
|
+
}
|
|
32
56
|
if (!customPath)
|
|
33
|
-
return path.join(
|
|
57
|
+
return path.join(defaultDir, 'memory.db');
|
|
34
58
|
if (customPath === ':memory:')
|
|
35
59
|
return ':memory:';
|
|
36
60
|
const resolved = path.resolve(customPath);
|
|
37
|
-
// Ensure the path doesn't escape the working directory
|
|
61
|
+
// Ensure the path doesn't escape the working directory.
|
|
38
62
|
const cwd = process.cwd();
|
|
39
63
|
if (!resolved.startsWith(cwd)) {
|
|
40
|
-
return path.join(
|
|
64
|
+
return path.join(defaultDir, 'memory.db'); // fallback to safe default
|
|
41
65
|
}
|
|
42
66
|
return resolved;
|
|
43
67
|
}
|
|
@@ -555,6 +579,17 @@ export async function bridgeStoreEntry(options) {
|
|
|
555
579
|
embedding, embedding_dimensions, embedding_model,
|
|
556
580
|
tags, metadata, created_at, updated_at, expires_at, status
|
|
557
581
|
) VALUES (?, ?, ?, ?, 'semantic', ?, ?, ?, ?, ?, ?, ?, ?, 'active')`;
|
|
582
|
+
// #1941: provision a `vector_indexes` row for this namespace before the
|
|
583
|
+
// entry insert. AgentDB's HNSW/router keys lookups by namespace via this
|
|
584
|
+
// table — if it has no row for e.g. `claude-memories`, `memory_search`
|
|
585
|
+
// returns 0 results even when memory_entries holds hundreds of rows for
|
|
586
|
+
// that namespace. INSERT OR IGNORE so existing index rows are preserved.
|
|
587
|
+
try {
|
|
588
|
+
ctx.db
|
|
589
|
+
.prepare(`INSERT OR IGNORE INTO vector_indexes (id, name, dimensions) VALUES (?, ?, ?)`)
|
|
590
|
+
.run(namespace, namespace, dimensions || 384);
|
|
591
|
+
}
|
|
592
|
+
catch { /* vector_indexes may not exist on legacy DBs — fall through */ }
|
|
558
593
|
const stmt = ctx.db.prepare(insertSql);
|
|
559
594
|
stmt.run(id, key, namespace, value, embeddingJson, dimensions || null, model, tags.length > 0 ? JSON.stringify(tags) : null, '{}', now, now, ttl ? now + (ttl * 1000) : null);
|
|
560
595
|
// Phase 2: Write-through to TieredCache
|
|
@@ -1354,6 +1389,259 @@ export async function bridgeRecordCausalEdge(options) {
|
|
|
1354
1389
|
return null;
|
|
1355
1390
|
}
|
|
1356
1391
|
}
|
|
1392
|
+
// ===== #1784: Delete tools for hierarchical + causal-graph =====
|
|
1393
|
+
/**
|
|
1394
|
+
* Delete a hierarchical-memory entry by key (#1784).
|
|
1395
|
+
*
|
|
1396
|
+
* Reality check: agentdb's HierarchicalMemory class doesn't expose a public
|
|
1397
|
+
* delete API today, so the real-backend path falls back to direct SQL on
|
|
1398
|
+
* the underlying SQLite tables (status flip to 'deleted' + AttestationLog
|
|
1399
|
+
* audit). The bridge-fallback path that bridgeHierarchicalStore uses when
|
|
1400
|
+
* HierarchicalMemory isn't loaded writes plain memory_entries rows that
|
|
1401
|
+
* `bridgeDeleteEntry` already handles.
|
|
1402
|
+
*
|
|
1403
|
+
* Returns { controller: 'native-unsupported' } when the real HM is loaded
|
|
1404
|
+
* and the SQL fallback can't reach its private tables — surfacing the
|
|
1405
|
+
* limitation honestly instead of silently returning success.
|
|
1406
|
+
*/
|
|
1407
|
+
export async function bridgeDeleteHierarchical(options) {
|
|
1408
|
+
const registry = await getRegistry(options.dbPath);
|
|
1409
|
+
if (!registry)
|
|
1410
|
+
return null;
|
|
1411
|
+
try {
|
|
1412
|
+
const { key, tier } = options;
|
|
1413
|
+
// MutationGuard validation
|
|
1414
|
+
const guardResult = await guardValidate(registry, 'delete', { key, namespace: 'hierarchical' });
|
|
1415
|
+
if (!guardResult.allowed) {
|
|
1416
|
+
return { success: false, deleted: false, key, tier, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1417
|
+
}
|
|
1418
|
+
const hm = registry.get('hierarchicalMemory');
|
|
1419
|
+
// 1. agentdb@3.0.0-alpha.13+: ReflexionMemory.deleteEpisode propagates through
|
|
1420
|
+
// graph adapter / generic graph backend / vector backend AND purges SQL
|
|
1421
|
+
// episodes + episode_embeddings rows. Single call, durably consistent.
|
|
1422
|
+
// See agentic-flow#150/#151 (closes ruvnet/RuVector#427 the cli-visible way).
|
|
1423
|
+
const reflexion = registry.get('reflexionMemory');
|
|
1424
|
+
if (reflexion && typeof reflexion.deleteEpisode === 'function') {
|
|
1425
|
+
try {
|
|
1426
|
+
const removed = await reflexion.deleteEpisode(key);
|
|
1427
|
+
if (removed) {
|
|
1428
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1429
|
+
return { success: true, deleted: true, key, tier, controller: 'reflexionMemory', guarded: true };
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
catch { /* fall through */ }
|
|
1433
|
+
}
|
|
1434
|
+
// 2. Try HierarchicalMemory's own delete API if it ever ships one.
|
|
1435
|
+
if (hm && typeof hm.delete === 'function') {
|
|
1436
|
+
try {
|
|
1437
|
+
await hm.delete(key);
|
|
1438
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1439
|
+
return { success: true, deleted: true, key, tier, controller: 'hierarchicalMemory', guarded: true };
|
|
1440
|
+
}
|
|
1441
|
+
catch (err) {
|
|
1442
|
+
// Fall through to SQL fallback
|
|
1443
|
+
}
|
|
1444
|
+
}
|
|
1445
|
+
// 3. Stub HierarchicalMemory may expose `remove` or `forget`
|
|
1446
|
+
if (hm && typeof hm.remove === 'function') {
|
|
1447
|
+
try {
|
|
1448
|
+
await hm.remove(key);
|
|
1449
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1450
|
+
return { success: true, deleted: true, key, tier, controller: 'hierarchicalMemory-stub', guarded: true };
|
|
1451
|
+
}
|
|
1452
|
+
catch { /* fall through */ }
|
|
1453
|
+
}
|
|
1454
|
+
// 3. Bridge-fallback: HM stored to memory_entries with namespace prefix
|
|
1455
|
+
// (used when the real controller isn't loaded). Soft-delete via SQL.
|
|
1456
|
+
const ctx = getDb(registry);
|
|
1457
|
+
if (ctx) {
|
|
1458
|
+
try {
|
|
1459
|
+
const result = ctx.db.prepare(`
|
|
1460
|
+
UPDATE memory_entries
|
|
1461
|
+
SET status = 'deleted', updated_at = ?
|
|
1462
|
+
WHERE key = ? AND namespace LIKE 'hierarchical%' AND status = 'active'
|
|
1463
|
+
`).run(Date.now(), key);
|
|
1464
|
+
const changes = result?.changes ?? 0;
|
|
1465
|
+
if (changes > 0) {
|
|
1466
|
+
await logAttestation(registry, 'delete', key, { namespace: 'hierarchical', tier });
|
|
1467
|
+
return { success: true, deleted: true, key, tier, controller: 'bridge-fallback', guarded: true };
|
|
1468
|
+
}
|
|
1469
|
+
// Nothing to delete in SQL fallback — and no real-HM delete API.
|
|
1470
|
+
// Surface the situation honestly.
|
|
1471
|
+
return {
|
|
1472
|
+
success: false, deleted: false, key, tier,
|
|
1473
|
+
controller: hm ? 'native-unsupported' : 'not-found',
|
|
1474
|
+
error: hm
|
|
1475
|
+
? 'HierarchicalMemory has no public delete API; entry remains in native storage'
|
|
1476
|
+
: 'No hierarchical entry found with this key',
|
|
1477
|
+
};
|
|
1478
|
+
}
|
|
1479
|
+
catch (err) {
|
|
1480
|
+
return { success: false, deleted: false, key, tier, controller: 'sql-error', error: err.message };
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
return null;
|
|
1484
|
+
}
|
|
1485
|
+
catch {
|
|
1486
|
+
return null;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
/**
|
|
1490
|
+
* Delete a causal edge between two memory entries (#1784).
|
|
1491
|
+
*
|
|
1492
|
+
* The bridge stores fallback edges in namespace='causal-edges' with key
|
|
1493
|
+
* '{sourceId}→{targetId}'. Those CAN be soft-deleted. The native graph-node
|
|
1494
|
+
* backend has no delete API (createNode/createEdge/createHyperedge only),
|
|
1495
|
+
* so an edge that landed in graph-node native storage stays there. We
|
|
1496
|
+
* surface that explicitly via controller: 'native-unsupported'.
|
|
1497
|
+
*/
|
|
1498
|
+
export async function bridgeDeleteCausalEdge(options) {
|
|
1499
|
+
const registry = await getRegistry(options.dbPath);
|
|
1500
|
+
if (!registry)
|
|
1501
|
+
return null;
|
|
1502
|
+
try {
|
|
1503
|
+
const { sourceId, targetId, relation } = options;
|
|
1504
|
+
const edgeKey = `${sourceId}→${targetId}`;
|
|
1505
|
+
const guardResult = await guardValidate(registry, 'delete', { key: edgeKey, namespace: 'causal-edges' });
|
|
1506
|
+
if (!guardResult.allowed) {
|
|
1507
|
+
return { success: false, deleted: false, sourceId, targetId, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1508
|
+
}
|
|
1509
|
+
const causalGraph = registry.get('causalGraph');
|
|
1510
|
+
// 1. agentdb@3.0.0-alpha.13+: GraphDatabaseAdapter.deleteEdgesByEndpoints
|
|
1511
|
+
// handles the (sourceId, targetId, relation?) tuple case directly via
|
|
1512
|
+
// Cypher MATCH … DETACH DELETE. Cypher-injection-safe (label validated
|
|
1513
|
+
// against /^[A-Za-z_][A-Za-z0-9_]*$/ upstream).
|
|
1514
|
+
if (causalGraph && typeof causalGraph.deleteEdgesByEndpoints === 'function') {
|
|
1515
|
+
try {
|
|
1516
|
+
const r = await causalGraph.deleteEdgesByEndpoints(sourceId, targetId, relation);
|
|
1517
|
+
const deletedCount = typeof r === 'object' && r ? (r.deleted ?? 0) : (r ? 1 : 0);
|
|
1518
|
+
if (deletedCount > 0) {
|
|
1519
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation, count: deletedCount });
|
|
1520
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'causalGraph-cypher', guarded: true };
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
catch { /* fall through */ }
|
|
1524
|
+
}
|
|
1525
|
+
// 2. Pre-alpha.13 / different controller: try removeEdge() if exposed.
|
|
1526
|
+
if (causalGraph && typeof causalGraph.removeEdge === 'function') {
|
|
1527
|
+
try {
|
|
1528
|
+
await causalGraph.removeEdge(sourceId, targetId, relation);
|
|
1529
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation });
|
|
1530
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'causalGraph', guarded: true };
|
|
1531
|
+
}
|
|
1532
|
+
catch { /* fall through */ }
|
|
1533
|
+
}
|
|
1534
|
+
// 2. Bridge-fallback: soft-delete the memory_entries row.
|
|
1535
|
+
const ctx = getDb(registry);
|
|
1536
|
+
if (ctx) {
|
|
1537
|
+
try {
|
|
1538
|
+
const result = ctx.db.prepare(`
|
|
1539
|
+
UPDATE memory_entries
|
|
1540
|
+
SET status = 'deleted', updated_at = ?
|
|
1541
|
+
WHERE key = ? AND namespace = 'causal-edges' AND status = 'active'
|
|
1542
|
+
`).run(Date.now(), edgeKey);
|
|
1543
|
+
const changes = result?.changes ?? 0;
|
|
1544
|
+
if (changes > 0) {
|
|
1545
|
+
await logAttestation(registry, 'delete', edgeKey, { namespace: 'causal-edges', relation });
|
|
1546
|
+
return { success: true, deleted: true, sourceId, targetId, controller: 'bridge-fallback', guarded: true };
|
|
1547
|
+
}
|
|
1548
|
+
return {
|
|
1549
|
+
success: false, deleted: false, sourceId, targetId,
|
|
1550
|
+
controller: 'native-unsupported',
|
|
1551
|
+
error: 'graph-node native backend has no delete API; edge cannot be removed from native storage. SQL fallback found no matching row.',
|
|
1552
|
+
};
|
|
1553
|
+
}
|
|
1554
|
+
catch (err) {
|
|
1555
|
+
return { success: false, deleted: false, sourceId, targetId, controller: 'sql-error', error: err.message };
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
return null;
|
|
1559
|
+
}
|
|
1560
|
+
catch {
|
|
1561
|
+
return null;
|
|
1562
|
+
}
|
|
1563
|
+
}
|
|
1564
|
+
/**
|
|
1565
|
+
* Cascade-delete a causal node and all its incident edges (#1784).
|
|
1566
|
+
*
|
|
1567
|
+
* Same constraint as bridgeDeleteCausalEdge — native graph-node lacks a
|
|
1568
|
+
* delete API. SQL fallback path soft-deletes the node (if stored as a
|
|
1569
|
+
* memory_entries row) and every edge whose key contains the nodeId.
|
|
1570
|
+
*/
|
|
1571
|
+
export async function bridgeDeleteCausalNode(options) {
|
|
1572
|
+
const registry = await getRegistry(options.dbPath);
|
|
1573
|
+
if (!registry)
|
|
1574
|
+
return null;
|
|
1575
|
+
try {
|
|
1576
|
+
const { nodeId } = options;
|
|
1577
|
+
const guardResult = await guardValidate(registry, 'delete', { key: nodeId, namespace: 'causal-nodes' });
|
|
1578
|
+
if (!guardResult.allowed) {
|
|
1579
|
+
return { success: false, deletedNode: false, deletedEdges: 0, nodeId, controller: 'guard', error: `MutationGuard rejected: ${guardResult.reason}` };
|
|
1580
|
+
}
|
|
1581
|
+
// 1. agentdb@3.0.0-alpha.13+: GraphDatabaseAdapter.deleteNode(id, {cascade})
|
|
1582
|
+
// counts incident edges before delete so we get accurate audit numbers
|
|
1583
|
+
// regardless of binding stats. Cypher MATCH (n {id}) DETACH DELETE n.
|
|
1584
|
+
const causalGraph = registry.get('causalGraph');
|
|
1585
|
+
if (causalGraph && typeof causalGraph.deleteNode === 'function') {
|
|
1586
|
+
try {
|
|
1587
|
+
const r = await causalGraph.deleteNode(nodeId, { cascade: true });
|
|
1588
|
+
if (r && typeof r === 'object') {
|
|
1589
|
+
const deletedNodeNative = !!r.deletedNode;
|
|
1590
|
+
const deletedEdgesNative = typeof r.deletedEdges === 'number' ? r.deletedEdges : 0;
|
|
1591
|
+
await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges: deletedEdgesNative });
|
|
1592
|
+
return {
|
|
1593
|
+
success: true,
|
|
1594
|
+
deletedNode: deletedNodeNative,
|
|
1595
|
+
deletedEdges: deletedEdgesNative,
|
|
1596
|
+
nodeId,
|
|
1597
|
+
controller: 'causalGraph-cypher',
|
|
1598
|
+
guarded: true,
|
|
1599
|
+
};
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
catch { /* fall through to SQL */ }
|
|
1603
|
+
}
|
|
1604
|
+
// 2. SQL fallback: soft-delete the node row + every causal-edges row whose
|
|
1605
|
+
// key contains nodeId on either side. Used when agentdb pre-alpha.13 OR
|
|
1606
|
+
// when the entry was stored via the bridge's SQL fallback path.
|
|
1607
|
+
const ctx = getDb(registry);
|
|
1608
|
+
if (!ctx)
|
|
1609
|
+
return null;
|
|
1610
|
+
let deletedEdges = 0;
|
|
1611
|
+
let deletedNode = false;
|
|
1612
|
+
try {
|
|
1613
|
+
const edgeResult = ctx.db.prepare(`
|
|
1614
|
+
UPDATE memory_entries
|
|
1615
|
+
SET status = 'deleted', updated_at = ?
|
|
1616
|
+
WHERE namespace = 'causal-edges'
|
|
1617
|
+
AND status = 'active'
|
|
1618
|
+
AND (key LIKE ? OR key LIKE ?)
|
|
1619
|
+
`).run(Date.now(), `${nodeId}→%`, `%→${nodeId}`);
|
|
1620
|
+
deletedEdges = edgeResult?.changes ?? 0;
|
|
1621
|
+
const nodeResult = ctx.db.prepare(`
|
|
1622
|
+
UPDATE memory_entries
|
|
1623
|
+
SET status = 'deleted', updated_at = ?
|
|
1624
|
+
WHERE key = ? AND status = 'active'
|
|
1625
|
+
`).run(Date.now(), nodeId);
|
|
1626
|
+
deletedNode = (nodeResult?.changes ?? 0) > 0;
|
|
1627
|
+
await logAttestation(registry, 'delete', nodeId, { namespace: 'causal-nodes', deletedEdges });
|
|
1628
|
+
}
|
|
1629
|
+
catch (err) {
|
|
1630
|
+
return { success: false, deletedNode: false, deletedEdges: 0, nodeId, controller: 'sql-error', error: err.message };
|
|
1631
|
+
}
|
|
1632
|
+
return {
|
|
1633
|
+
success: true,
|
|
1634
|
+
deletedNode,
|
|
1635
|
+
deletedEdges,
|
|
1636
|
+
nodeId,
|
|
1637
|
+
controller: 'bridge-fallback',
|
|
1638
|
+
guarded: true,
|
|
1639
|
+
};
|
|
1640
|
+
}
|
|
1641
|
+
catch {
|
|
1642
|
+
return null;
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1357
1645
|
// ===== Phase 5: ReflexionMemory session lifecycle =====
|
|
1358
1646
|
/**
|
|
1359
1647
|
* Start a session with ReflexionMemory episodic replay.
|