moflo 4.0.2 → 4.0.4
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/package.json +114 -110
- package/v3/@claude-flow/cli/dist/src/commands/hooks.js +4 -1
- package/v3/@claude-flow/cli/dist/src/memory/memory-bridge.js +61 -5
- package/v3/@claude-flow/cli/dist/src/memory/memory-initializer.js +1892 -1841
- package/v3/@claude-flow/memory/README.md +587 -0
- package/v3/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
- package/v3/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
- package/v3/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
- package/v3/@claude-flow/memory/dist/agent-memory-scope.test.js +463 -0
- package/v3/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
- package/v3/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
- package/v3/@claude-flow/memory/dist/agentdb-backend.d.ts +214 -0
- package/v3/@claude-flow/memory/dist/agentdb-backend.js +844 -0
- package/v3/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
- package/v3/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
- package/v3/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
- package/v3/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
- package/v3/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
- package/v3/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
- package/v3/@claude-flow/memory/dist/application/index.d.ts +12 -0
- package/v3/@claude-flow/memory/dist/application/index.js +15 -0
- package/v3/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
- package/v3/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
- package/v3/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
- package/v3/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
- package/v3/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
- package/v3/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
- package/v3/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
- package/v3/@claude-flow/memory/dist/auto-memory-bridge.test.js +754 -0
- package/v3/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
- package/v3/@claude-flow/memory/dist/benchmark.test.js +277 -0
- package/v3/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
- package/v3/@claude-flow/memory/dist/cache-manager.js +407 -0
- package/v3/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
- package/v3/@claude-flow/memory/dist/controller-registry.js +893 -0
- package/v3/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
- package/v3/@claude-flow/memory/dist/controller-registry.test.js +636 -0
- package/v3/@claude-flow/memory/dist/database-provider.d.ts +87 -0
- package/v3/@claude-flow/memory/dist/database-provider.js +375 -0
- package/v3/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
- package/v3/@claude-flow/memory/dist/database-provider.test.js +285 -0
- package/v3/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
- package/v3/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
- package/v3/@claude-flow/memory/dist/domain/index.d.ts +11 -0
- package/v3/@claude-flow/memory/dist/domain/index.js +12 -0
- package/v3/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
- package/v3/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
- package/v3/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
- package/v3/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
- package/v3/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
- package/v3/@claude-flow/memory/dist/hnsw-index.js +781 -0
- package/v3/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
- package/v3/@claude-flow/memory/dist/hnsw-lite.js +168 -0
- package/v3/@claude-flow/memory/dist/hybrid-backend.d.ts +245 -0
- package/v3/@claude-flow/memory/dist/hybrid-backend.js +569 -0
- package/v3/@claude-flow/memory/dist/hybrid-backend.test.d.ts +8 -0
- package/v3/@claude-flow/memory/dist/hybrid-backend.test.js +320 -0
- package/v3/@claude-flow/memory/dist/index.d.ts +207 -0
- package/v3/@claude-flow/memory/dist/index.js +361 -0
- package/v3/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
- package/v3/@claude-flow/memory/dist/infrastructure/index.js +16 -0
- package/v3/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
- package/v3/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
- package/v3/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
- package/v3/@claude-flow/memory/dist/learning-bridge.js +335 -0
- package/v3/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
- package/v3/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
- package/v3/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
- package/v3/@claude-flow/memory/dist/memory-graph.js +333 -0
- package/v3/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
- package/v3/@claude-flow/memory/dist/memory-graph.test.js +609 -0
- package/v3/@claude-flow/memory/dist/migration.d.ts +68 -0
- package/v3/@claude-flow/memory/dist/migration.js +513 -0
- package/v3/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
- package/v3/@claude-flow/memory/dist/persistent-sona.js +332 -0
- package/v3/@claude-flow/memory/dist/query-builder.d.ts +211 -0
- package/v3/@claude-flow/memory/dist/query-builder.js +438 -0
- package/v3/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
- package/v3/@claude-flow/memory/dist/rvf-backend.js +481 -0
- package/v3/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
- package/v3/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
- package/v3/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
- package/v3/@claude-flow/memory/dist/rvf-migration.js +234 -0
- package/v3/@claude-flow/memory/dist/sqlite-backend.d.ts +121 -0
- package/v3/@claude-flow/memory/dist/sqlite-backend.js +572 -0
- package/v3/@claude-flow/memory/dist/sqljs-backend.d.ts +128 -0
- package/v3/@claude-flow/memory/dist/sqljs-backend.js +601 -0
- package/v3/@claude-flow/memory/dist/types.d.ts +484 -0
- package/v3/@claude-flow/memory/dist/types.js +58 -0
- package/v3/@claude-flow/memory/package.json +42 -0
package/package.json
CHANGED
|
@@ -1,110 +1,114 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "moflo",
|
|
3
|
-
"version": "4.0.
|
|
4
|
-
"description": "MoFlo — AI agent orchestration for Claude Code. Forked from ruflo/claude-flow with patches applied to source, plus feature-level orchestration.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"bin": {
|
|
8
|
-
"moflo": "
|
|
9
|
-
"moflo-setup": "
|
|
10
|
-
"claude-flow": "
|
|
11
|
-
},
|
|
12
|
-
"homepage": "https://github.com/eric-cielo/moflo#readme",
|
|
13
|
-
"bugs": {
|
|
14
|
-
"url": "https://github.com/eric-cielo/moflo/issues"
|
|
15
|
-
},
|
|
16
|
-
"files": [
|
|
17
|
-
"bin/**",
|
|
18
|
-
"v3/@claude-flow/cli/bin/**",
|
|
19
|
-
"v3/@claude-flow/cli/dist/**/*.js",
|
|
20
|
-
"v3/@claude-flow/cli/dist/**/*.d.ts",
|
|
21
|
-
"!v3/@claude-flow/cli/dist/**/*.map",
|
|
22
|
-
"v3/@claude-flow/cli/package.json",
|
|
23
|
-
"v3/@claude-flow/shared/dist/**/*.js",
|
|
24
|
-
"v3/@claude-flow/shared/dist/**/*.d.ts",
|
|
25
|
-
"!v3/@claude-flow/shared/dist/**/*.map",
|
|
26
|
-
"v3/@claude-flow/shared/package.json",
|
|
27
|
-
"v3/@claude-flow/guidance/dist/**/*.js",
|
|
28
|
-
"v3/@claude-flow/guidance/dist/**/*.d.ts",
|
|
29
|
-
"!v3/@claude-flow/guidance/dist/**/*.map",
|
|
30
|
-
"v3/@claude-flow/guidance/package.json",
|
|
31
|
-
"
|
|
32
|
-
".
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"security
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
},
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"@
|
|
63
|
-
"@
|
|
64
|
-
"@ruvector/
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
"
|
|
86
|
-
},
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "moflo",
|
|
3
|
+
"version": "4.0.4",
|
|
4
|
+
"description": "MoFlo — AI agent orchestration for Claude Code. Forked from ruflo/claude-flow with patches applied to source, plus feature-level orchestration.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"moflo": "bin/cli.js",
|
|
9
|
+
"moflo-setup": "bin/setup-project.mjs",
|
|
10
|
+
"claude-flow": "bin/cli.js"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/eric-cielo/moflo#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/eric-cielo/moflo/issues"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"bin/**",
|
|
18
|
+
"v3/@claude-flow/cli/bin/**",
|
|
19
|
+
"v3/@claude-flow/cli/dist/**/*.js",
|
|
20
|
+
"v3/@claude-flow/cli/dist/**/*.d.ts",
|
|
21
|
+
"!v3/@claude-flow/cli/dist/**/*.map",
|
|
22
|
+
"v3/@claude-flow/cli/package.json",
|
|
23
|
+
"v3/@claude-flow/shared/dist/**/*.js",
|
|
24
|
+
"v3/@claude-flow/shared/dist/**/*.d.ts",
|
|
25
|
+
"!v3/@claude-flow/shared/dist/**/*.map",
|
|
26
|
+
"v3/@claude-flow/shared/package.json",
|
|
27
|
+
"v3/@claude-flow/guidance/dist/**/*.js",
|
|
28
|
+
"v3/@claude-flow/guidance/dist/**/*.d.ts",
|
|
29
|
+
"!v3/@claude-flow/guidance/dist/**/*.map",
|
|
30
|
+
"v3/@claude-flow/guidance/package.json",
|
|
31
|
+
"v3/@claude-flow/memory/dist/**/*.js",
|
|
32
|
+
"v3/@claude-flow/memory/dist/**/*.d.ts",
|
|
33
|
+
"!v3/@claude-flow/memory/dist/**/*.map",
|
|
34
|
+
"v3/@claude-flow/memory/package.json",
|
|
35
|
+
".claude-plugin/**",
|
|
36
|
+
".claude/**",
|
|
37
|
+
"!.claude/**/*.db",
|
|
38
|
+
"!.claude/**/*.map",
|
|
39
|
+
"README.md",
|
|
40
|
+
"LICENSE"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"dev": "tsx watch src/index.ts",
|
|
44
|
+
"build": "tsc",
|
|
45
|
+
"build:ts": "cd v3/@claude-flow/cli && npm run build || true",
|
|
46
|
+
"test": "vitest",
|
|
47
|
+
"test:ui": "vitest --ui",
|
|
48
|
+
"test:security": "vitest run v3/__tests__/security/",
|
|
49
|
+
"lint": "cd v3/@claude-flow/cli && npm run lint || true",
|
|
50
|
+
"security:audit": "npm audit --audit-level high",
|
|
51
|
+
"security:fix": "npm audit fix",
|
|
52
|
+
"security:test": "npm run test:security",
|
|
53
|
+
"v3:domains": "npm run build:domains",
|
|
54
|
+
"v3:swarm": "npm run start:swarm",
|
|
55
|
+
"v3:security": "npm run security:audit && npm run security:test"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"semver": "^7.6.0",
|
|
59
|
+
"zod": "^3.22.4"
|
|
60
|
+
},
|
|
61
|
+
"optionalDependencies": {
|
|
62
|
+
"@claude-flow/codex": "^3.0.0-alpha.8",
|
|
63
|
+
"@claude-flow/plugin-gastown-bridge": "^0.1.3",
|
|
64
|
+
"@ruvector/attention": "^0.1.3",
|
|
65
|
+
"@ruvector/core": "^0.1.30",
|
|
66
|
+
"@ruvector/router": "^0.1.27",
|
|
67
|
+
"@ruvector/router-linux-x64-gnu": "^0.1.27",
|
|
68
|
+
"@ruvector/sona": "^0.1.5",
|
|
69
|
+
"agentdb": "^3.0.0-alpha.9",
|
|
70
|
+
"agentic-flow": "^2.0.7"
|
|
71
|
+
},
|
|
72
|
+
"overrides": {
|
|
73
|
+
"hono": ">=4.11.4"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@openai/codex": "^0.98.0",
|
|
77
|
+
"@types/bcrypt": "^5.0.2",
|
|
78
|
+
"@types/node": "^20.0.0",
|
|
79
|
+
"eslint": "^8.0.0",
|
|
80
|
+
"tsx": "^4.21.0",
|
|
81
|
+
"typescript": "^5.0.0",
|
|
82
|
+
"vitest": "^1.0.0"
|
|
83
|
+
},
|
|
84
|
+
"engines": {
|
|
85
|
+
"node": ">=20.0.0"
|
|
86
|
+
},
|
|
87
|
+
"repository": {
|
|
88
|
+
"type": "git",
|
|
89
|
+
"url": "git+https://github.com/eric-cielo/moflo.git"
|
|
90
|
+
},
|
|
91
|
+
"keywords": [
|
|
92
|
+
"moflo",
|
|
93
|
+
"claude",
|
|
94
|
+
"claude-code",
|
|
95
|
+
"anthropic",
|
|
96
|
+
"ai-agents",
|
|
97
|
+
"agent-orchestration",
|
|
98
|
+
"mcp",
|
|
99
|
+
"model-context-protocol",
|
|
100
|
+
"cli",
|
|
101
|
+
"developer-tools",
|
|
102
|
+
"workflow",
|
|
103
|
+
"orchestration"
|
|
104
|
+
],
|
|
105
|
+
"author": {
|
|
106
|
+
"name": "Eric Cielo",
|
|
107
|
+
"url": "https://github.com/eric-cielo"
|
|
108
|
+
},
|
|
109
|
+
"license": "MIT",
|
|
110
|
+
"publishConfig": {
|
|
111
|
+
"access": "public",
|
|
112
|
+
"tag": "latest"
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -59,7 +59,8 @@ const preEditCommand = {
|
|
|
59
59
|
output.printInfo(`Analyzing context for: ${output.highlight(filePath)}`);
|
|
60
60
|
try {
|
|
61
61
|
// Call MCP tool for pre-edit hook
|
|
62
|
-
|
|
62
|
+
// Wrap MCP call in timeout to prevent indefinite hang (#13)
|
|
63
|
+
const mcpPromise = callMCPTool('hooks_pre-edit', {
|
|
63
64
|
filePath,
|
|
64
65
|
operation,
|
|
65
66
|
context: ctx.flags.context,
|
|
@@ -183,6 +184,8 @@ const postEditCommand = {
|
|
|
183
184
|
metrics,
|
|
184
185
|
timestamp: Date.now(),
|
|
185
186
|
});
|
|
187
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('session-end timed out after 3s')), 3000));
|
|
188
|
+
const result = await Promise.race([mcpPromise, timeoutPromise]);
|
|
186
189
|
if (ctx.flags.format === 'json') {
|
|
187
190
|
output.printJson(result);
|
|
188
191
|
return { success: true, data: result };
|
|
@@ -18,6 +18,63 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import * as path from 'path';
|
|
20
20
|
import * as crypto from 'crypto';
|
|
21
|
+
// ===== Project root resolution =====
|
|
22
|
+
// When run via npx, CWD may be node_modules/moflo — walk up to find actual project
|
|
23
|
+
import * as fs from 'fs';
|
|
24
|
+
let _projectRoot;
|
|
25
|
+
function getProjectRoot() {
|
|
26
|
+
if (_projectRoot)
|
|
27
|
+
return _projectRoot;
|
|
28
|
+
if (process.env.CLAUDE_PROJECT_DIR) {
|
|
29
|
+
_projectRoot = process.env.CLAUDE_PROJECT_DIR;
|
|
30
|
+
return _projectRoot;
|
|
31
|
+
}
|
|
32
|
+
let dir = process.cwd();
|
|
33
|
+
const root = path.parse(dir).root;
|
|
34
|
+
while (dir !== root) {
|
|
35
|
+
if (fs.existsSync(path.join(dir, '.swarm', 'memory.db'))) {
|
|
36
|
+
_projectRoot = dir;
|
|
37
|
+
return _projectRoot;
|
|
38
|
+
}
|
|
39
|
+
if (fs.existsSync(path.join(dir, 'CLAUDE.md')) && fs.existsSync(path.join(dir, 'package.json'))) {
|
|
40
|
+
_projectRoot = dir;
|
|
41
|
+
return _projectRoot;
|
|
42
|
+
}
|
|
43
|
+
// Skip node_modules directories
|
|
44
|
+
if (path.basename(dir) === 'node_modules') {
|
|
45
|
+
dir = path.dirname(dir);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
dir = path.dirname(dir);
|
|
49
|
+
}
|
|
50
|
+
_projectRoot = process.cwd();
|
|
51
|
+
return _projectRoot;
|
|
52
|
+
}
|
|
53
|
+
// ===== Transformers.js fallback embedder =====
|
|
54
|
+
let _tfEmbedder = null;
|
|
55
|
+
let _tfFailed = false;
|
|
56
|
+
async function getFallbackEmbedder() {
|
|
57
|
+
if (_tfFailed)
|
|
58
|
+
return null;
|
|
59
|
+
if (_tfEmbedder)
|
|
60
|
+
return _tfEmbedder;
|
|
61
|
+
try {
|
|
62
|
+
const { pipeline } = await import('@xenova/transformers');
|
|
63
|
+
_tfEmbedder = await pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2');
|
|
64
|
+
return _tfEmbedder;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
_tfFailed = true;
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function fallbackEmbed(text) {
|
|
72
|
+
const embedder = await getFallbackEmbedder();
|
|
73
|
+
if (!embedder)
|
|
74
|
+
return null;
|
|
75
|
+
const result = await embedder(text, { pooling: 'mean', normalize: true });
|
|
76
|
+
return Array.from(result.data);
|
|
77
|
+
}
|
|
21
78
|
// ===== Lazy singleton =====
|
|
22
79
|
let registryPromise = null;
|
|
23
80
|
let registryInstance = null;
|
|
@@ -28,14 +85,14 @@ let bridgeAvailable = null;
|
|
|
28
85
|
* or the special ':memory:' path.
|
|
29
86
|
*/
|
|
30
87
|
function getDbPath(customPath) {
|
|
31
|
-
const swarmDir = path.resolve(
|
|
88
|
+
const swarmDir = path.resolve(getProjectRoot(), '.swarm');
|
|
32
89
|
if (!customPath)
|
|
33
90
|
return path.join(swarmDir, 'memory.db');
|
|
34
91
|
if (customPath === ':memory:')
|
|
35
92
|
return ':memory:';
|
|
36
93
|
const resolved = path.resolve(customPath);
|
|
37
94
|
// Ensure the path doesn't escape the working directory
|
|
38
|
-
const cwd =
|
|
95
|
+
const cwd = getProjectRoot();
|
|
39
96
|
if (!resolved.startsWith(cwd)) {
|
|
40
97
|
return path.join(swarmDir, 'memory.db'); // fallback to safe default
|
|
41
98
|
}
|
|
@@ -66,7 +123,6 @@ async function getRegistry(dbPath) {
|
|
|
66
123
|
console.log = (...args) => {
|
|
67
124
|
const msg = String(args[0] ?? '');
|
|
68
125
|
if (msg.includes('Transformers.js') ||
|
|
69
|
-
msg.includes('better-sqlite3') ||
|
|
70
126
|
msg.includes('[AgentDB]') ||
|
|
71
127
|
msg.includes('[HNSWLibBackend]') ||
|
|
72
128
|
msg.includes('RuVector graph'))
|
|
@@ -311,7 +367,7 @@ export async function bridgeStoreEntry(options) {
|
|
|
311
367
|
// Embedding failed — store without
|
|
312
368
|
}
|
|
313
369
|
}
|
|
314
|
-
//
|
|
370
|
+
// sql.js uses synchronous .run() with positional params
|
|
315
371
|
const insertSql = options.upsert
|
|
316
372
|
? `INSERT OR REPLACE INTO memory_entries (
|
|
317
373
|
id, key, namespace, content, type,
|
|
@@ -372,7 +428,7 @@ export async function bridgeSearchEntries(options) {
|
|
|
372
428
|
catch {
|
|
373
429
|
// Fall back to keyword search
|
|
374
430
|
}
|
|
375
|
-
//
|
|
431
|
+
// Prepare/all returns array of objects
|
|
376
432
|
const nsFilter = namespace !== 'all'
|
|
377
433
|
? `AND namespace = ?`
|
|
378
434
|
: '';
|