@synapcores/openclaw-memory 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -11
- package/dist/index.d.ts +44 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +360 -266
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
A long-term memory plugin for [OpenClaw](https://github.com/openclaw/openclaw) that uses **SynapCores AIDB** as the storage backend. Drop-in alternative to `@openclaw/memory-lancedb` with the same auto-recall / auto-capture lifecycle, plus three SynapCores-only extensions: SQL-filtered semantic recall, graph-relation walks, and AutoML relevance scoring.
|
|
4
4
|
|
|
5
|
-
> **0.
|
|
5
|
+
> **0.2.0 shipping note:** verified against gateway `v1.6.5.2-ce` and `@synapcores/sdk@^0.4.0`. The full surface — parity API (recall/capture/forget) **plus all four SynapCores-only extensions** (`recallFiltered`, `recallRelated`, `predictRelevance`, `trainRelevanceModel`) — is wired against the live SDK and exercised end-to-end (7/7 live smoke steps pass against `:28201`).
|
|
6
6
|
>
|
|
7
|
-
> - **`
|
|
8
|
-
> - **`
|
|
9
|
-
>
|
|
10
|
-
> `autoLinkSimilar` is also a no-op in 0.1.0 for the same synthetic-edge reason (the gateway doesn't permit explicit `MERGE`s on `SIMILAR_TO` and computes the edge from vectors at query time).
|
|
7
|
+
> - **`recallRelated`** is now implemented (was signature-only in 0.1.0). On capture, the plugin inserts each Memory as a graph node carrying the embedding under the `embedding` property so the gateway's synthetic `SIMILAR_TO` edge resolves at MATCH time. `autoLinkSimilar: true` (default) enables this; turn it off if you don't need graph-backed recall.
|
|
8
|
+
> - **`trainRelevanceModel`** is now implemented (was signature-only in 0.1.0). Feedback rows are staged in a SQL table (`openclaw_memory_relevance_training[_<workspace>]`) the gateway's AutoML can read, then trained as a regression model targeting the `score` column.
|
|
9
|
+
> - SDK dep bumped to `@synapcores/sdk@^0.4.0` (which switched API-key auth to `Authorization: Bearer` and added `createVectorCollection` / `vectorCollection(name)`). The three v0.1.0 workarounds — auth-header shim, direct `/v1/vectors/collections` POSTs, direct `/v1/vectors/collections/{n}/vectors` POSTs — are deleted in favour of the SDK's typed helpers.
|
|
11
10
|
|
|
12
11
|
## Why use this over `@openclaw/memory-lancedb`?
|
|
13
12
|
|
|
@@ -90,7 +89,7 @@ Environment-variable interpolation (`${OPENAI_API_KEY}`, `${SYNAPCORES_API_KEY}`
|
|
|
90
89
|
| `graph` | no | `openclaw_memory_graph` | SynapCores graph name (used for `SIMILAR_TO` edges and `recallRelated` walks). |
|
|
91
90
|
| `autoCapture` | no | `true` | Auto-store memorable utterances after each agent turn. |
|
|
92
91
|
| `autoRecall` | no | `true` | Auto-inject relevant memories before each agent turn. |
|
|
93
|
-
| `autoLinkSimilar` | no | `true` | On capture,
|
|
92
|
+
| `autoLinkSimilar` | no | `true` | On capture, insert each Memory as a graph node carrying the embedding so `recallRelated` returns useful neighborhoods out of the box. Adds ~30-80ms per capture; disable if you never call `recallRelated`. |
|
|
94
93
|
| `workspace` | no | — | Optional workspace suffix on the AutoML relevance model name so multiple installations sharing one gateway can train independent models. |
|
|
95
94
|
|
|
96
95
|
## What you get
|
|
@@ -160,12 +159,16 @@ The `where` clause is forwarded to the SynapCores gateway as the `filter` field
|
|
|
160
159
|
|
|
161
160
|
```ts
|
|
162
161
|
const neighbors = await plugin.extensions.recallRelated(memoryId, {
|
|
163
|
-
hops:
|
|
164
|
-
edgeKinds: ["SIMILAR_TO"],
|
|
162
|
+
hops: 1,
|
|
163
|
+
edgeKinds: ["SIMILAR_TO"], // default
|
|
164
|
+
similarityThreshold: 0.5, // default — cosine threshold for synthetic edges
|
|
165
|
+
limit: 20,
|
|
165
166
|
});
|
|
166
167
|
```
|
|
167
168
|
|
|
168
|
-
|
|
169
|
+
Returns memories cosine-similar to the source (synthetic `SIMILAR_TO` edges, single-hop), plus any explicit `MENTIONS` / `RELATES_TO` edges the caller has populated (multi-hop supported on non-synthetic edge kinds). Requires `autoLinkSimilar: true` at capture time — the plugin inserts each Memory as a graph node carrying the embedding so the gateway's vector-indexed synthetic edges resolve at MATCH time.
|
|
170
|
+
|
|
171
|
+
If a source memory was captured before `autoLinkSimilar` was enabled, its `Memory` graph node won't exist and `recallRelated` will return `[]` for it. Re-capture (or write a one-off back-fill that posts `{labels: ["Memory"], properties: {id, text, embedding, ...}}` to `/v1/graph/nodes`) to retro-fit.
|
|
169
172
|
|
|
170
173
|
#### `predictRelevance` — AutoML re-ranking with heuristic fallback
|
|
171
174
|
|
|
@@ -197,13 +200,14 @@ await plugin.extensions.trainRelevanceModel(feedback);
|
|
|
197
200
|
|
|
198
201
|
Requires at least 10 samples; throws otherwise. Train periodically (cron / on-demand) — the next `predictRelevance` call will detect the model and switch out of heuristic mode.
|
|
199
202
|
|
|
200
|
-
|
|
203
|
+
Under the hood, v0.2.0 stages feedback rows in a SQL table (`openclaw_memory_relevance_training[_<workspace>]`) on the gateway, then calls `/v1/automl/train` with `target: 'score'` and `task: 'regression'`. The table is preserved across calls so feedback accumulates between sessions; clear it manually with `DROP TABLE` (via `client.executeQuery`) if you want a clean restart.
|
|
201
204
|
|
|
202
|
-
## Roadmap (0.
|
|
205
|
+
## Roadmap (0.3.0+)
|
|
203
206
|
|
|
204
207
|
- **Entity extraction on capture** — parse `@mention` tokens and known-contact names out of incoming text and create `Person` / `Project` graph nodes with `MENTIONS` edges back to the memory.
|
|
205
208
|
- **Tag inference** — auto-classify memories into a configurable tag vocabulary on capture (small classifier or LLM call) so `recallFiltered` queries can use tags out of the box.
|
|
206
209
|
- **`synapcores-import-lancedb` migration script** — read an existing `~/.openclaw/memory/lancedb` store, re-embed if needed, and bulk-load into a SynapCores collection. Ships as a `bin` entry on the package.
|
|
210
|
+
- **Drop the `_getHttpClient` graph-node workaround** once `@synapcores/sdk >0.4.0` fixes `client.graph.nodes.create` to post `{labels: [label]}` instead of `{label}` (the wire shape the gateway's `/v1/graph/nodes` handler expects).
|
|
207
211
|
|
|
208
212
|
## Upstream
|
|
209
213
|
|
package/dist/index.d.ts
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
* `recallRelated`, and `predictRelevance`.
|
|
10
10
|
*
|
|
11
11
|
* This is the @synapcores/openclaw-memory drop-in alternative to
|
|
12
|
-
* @openclaw/memory-lancedb.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* @openclaw/memory-lancedb. Verified end-to-end against SynapCores
|
|
13
|
+
* gateway v1.6.5.2-ce. Requires @synapcores/sdk@^0.4.0 — which added
|
|
14
|
+
* `client.vectorCollection(name)` + `client.createVectorCollection(...)`
|
|
15
|
+
* and switched API-key auth to `Authorization: Bearer`.
|
|
15
16
|
*/
|
|
16
17
|
import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
|
|
17
18
|
import { type MemoryCategory } from "./config.js";
|
|
@@ -45,10 +46,24 @@ export type RecallFilteredOptions = {
|
|
|
45
46
|
* memory graph from a given memory ID and returns the neighborhood.
|
|
46
47
|
*/
|
|
47
48
|
export type RecallRelatedOptions = {
|
|
48
|
-
/** Maximum graph hops to traverse (default: 1). */
|
|
49
|
+
/** Maximum graph hops to traverse (default: 1). Capped at 4 to avoid runaway walks. */
|
|
49
50
|
hops?: number;
|
|
50
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Restrict to specific edge kinds (default: `["SIMILAR_TO"]`). The
|
|
53
|
+
* gateway exposes `SIMILAR_TO` as a synthetic edge derived from
|
|
54
|
+
* cosine similarity over the `embedding` property the plugin writes
|
|
55
|
+
* onto every captured Memory node. Other edge kinds (e.g. `MENTIONS`,
|
|
56
|
+
* `RELATES_TO`) are honoured if the caller has populated them.
|
|
57
|
+
*/
|
|
51
58
|
edgeKinds?: string[];
|
|
59
|
+
/**
|
|
60
|
+
* Cosine-similarity threshold for synthetic `SIMILAR_TO` edges
|
|
61
|
+
* (default: 0.5). Higher values return fewer, more closely related
|
|
62
|
+
* memories. Ignored for non-synthetic edge kinds.
|
|
63
|
+
*/
|
|
64
|
+
similarityThreshold?: number;
|
|
65
|
+
/** Maximum results to return (default: 20). */
|
|
66
|
+
limit?: number;
|
|
52
67
|
};
|
|
53
68
|
/**
|
|
54
69
|
* One result returned from `recallRelated` — the neighbor memory plus the
|
|
@@ -98,15 +113,17 @@ export declare function escapeCypherString(value: string): string;
|
|
|
98
113
|
* methods are exported via `memoryPlugin.extensions` so callers can reach
|
|
99
114
|
* them through the OpenClaw plugin registry.
|
|
100
115
|
*
|
|
101
|
-
* The
|
|
102
|
-
* - `
|
|
103
|
-
* forwarding the SQL `WHERE` clause
|
|
116
|
+
* The four SynapCores-only methods use:
|
|
117
|
+
* - `vectorCollection.search({ ..., filter: { sql } })` for `recallFiltered`,
|
|
118
|
+
* forwarding the SQL `WHERE` clause to the gateway under
|
|
104
119
|
* `filter: { sql: where }`.
|
|
105
|
-
* - `client.graph.cypher(...)` for recallRelated
|
|
106
|
-
* edges
|
|
107
|
-
*
|
|
108
|
-
* - `client.automl.getModel(...).predict(...)` for predictRelevance, with
|
|
120
|
+
* - `client.graph.cypher(...)` for `recallRelated`, walking the synthetic
|
|
121
|
+
* `SIMILAR_TO` edges that resolve against `Memory.embedding`.
|
|
122
|
+
* - `client.automl.getModel(...).predict(...)` for `predictRelevance`, with
|
|
109
123
|
* a deterministic heuristic fallback when no model is trained yet.
|
|
124
|
+
* - `client.executeQuery(...)` + `client.automl.train(...)` for
|
|
125
|
+
* `trainRelevanceModel`, staging feedback rows in a SQL table the
|
|
126
|
+
* gateway can `SELECT * FROM` for training.
|
|
110
127
|
*/
|
|
111
128
|
export interface MemorySynapCoresExtensions {
|
|
112
129
|
/**
|
|
@@ -124,12 +141,14 @@ export interface MemorySynapCoresExtensions {
|
|
|
124
141
|
* Graph walk from a memory through `SIMILAR_TO` / `MENTIONS` / `RELATES_TO`
|
|
125
142
|
* edges, returning the neighborhood.
|
|
126
143
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
144
|
+
* v0.2.0 wires this against the gateway's synthetic-SIMILAR_TO Cypher
|
|
145
|
+
* syntax (`[:SIMILAR_TO > T]`) which resolves against the `embedding`
|
|
146
|
+
* property the plugin writes onto every captured Memory node. If a
|
|
147
|
+
* source memory has not been promoted to a graph node yet (e.g.
|
|
148
|
+
* `autoLinkSimilar: false`), this returns an empty array.
|
|
129
149
|
*
|
|
130
|
-
* @
|
|
131
|
-
*
|
|
132
|
-
* derive it from a follow-up Cypher walk if you need the full path.
|
|
150
|
+
* @param memoryId - UUID of the source memory.
|
|
151
|
+
* @param options - Hops, edge-kind filter, similarity threshold, limit.
|
|
133
152
|
*/
|
|
134
153
|
recallRelated(memoryId: string, options?: RecallRelatedOptions): Promise<RelatedMemoryResult[]>;
|
|
135
154
|
/**
|
|
@@ -153,10 +172,17 @@ export interface MemorySynapCoresExtensions {
|
|
|
153
172
|
/**
|
|
154
173
|
* Train (or retrain) the AutoML model used by `predictRelevance`.
|
|
155
174
|
*
|
|
175
|
+
* v0.2.0 wires this against the staged-collection workflow: feedback
|
|
176
|
+
* rows are inserted into a SQL table the gateway's AutoML can read
|
|
177
|
+
* via `SELECT * FROM {table}`, then `/v1/automl/train` is invoked with
|
|
178
|
+
* `target: 'score'` to fit a regression model. Existing training data
|
|
179
|
+
* in the staging table is preserved across calls so feedback
|
|
180
|
+
* accumulates across sessions.
|
|
181
|
+
*
|
|
156
182
|
* @param feedback - Array of `{ memoryId, queryText, score }` samples.
|
|
157
183
|
* Requires at least {@link MIN_TRAINING_SAMPLES} samples;
|
|
158
184
|
* throws otherwise.
|
|
159
|
-
* @returns The id of the trained model.
|
|
185
|
+
* @returns The id and name of the trained model.
|
|
160
186
|
*/
|
|
161
187
|
trainRelevanceModel(feedback: RelevanceFeedback[]): Promise<{
|
|
162
188
|
modelId: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAO7D,OAAO,EAEL,KAAK,cAAc,EAGpB,MAAM,aAAa,CAAC;AAMrB,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,wGAAwG;IACxG,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAgYF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAuGD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE9E;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAEhG;;;;;;;;;;;;;;;;OAgBG;IACH,gBAAgB,CACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,EAAE,GACxB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAEpC;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrG;AA4UD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAOF,iBAAiB;CA8ZhC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,9 +9,10 @@
|
|
|
9
9
|
* `recallRelated`, and `predictRelevance`.
|
|
10
10
|
*
|
|
11
11
|
* This is the @synapcores/openclaw-memory drop-in alternative to
|
|
12
|
-
* @openclaw/memory-lancedb.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* @openclaw/memory-lancedb. Verified end-to-end against SynapCores
|
|
13
|
+
* gateway v1.6.5.2-ce. Requires @synapcores/sdk@^0.4.0 — which added
|
|
14
|
+
* `client.vectorCollection(name)` + `client.createVectorCollection(...)`
|
|
15
|
+
* and switched API-key auth to `Authorization: Bearer`.
|
|
15
16
|
*/
|
|
16
17
|
import { Type } from "typebox";
|
|
17
18
|
import { randomUUID } from "node:crypto";
|
|
@@ -23,41 +24,27 @@ import { MEMORY_CATEGORIES, memoryConfigSchema, vectorDimsForModel, } from "./co
|
|
|
23
24
|
// SynapCores Provider
|
|
24
25
|
// ============================================================================
|
|
25
26
|
const DEFAULT_COLLECTION = "openclaw_memories";
|
|
26
|
-
function getSdkHttp(client) {
|
|
27
|
-
return client._getHttpClient();
|
|
28
|
-
}
|
|
29
27
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
28
|
+
* MemoryDB — thin wrapper around `@synapcores/sdk@^0.4.0`'s
|
|
29
|
+
* `VectorCollection` handle. v0.2.0 dropped the direct
|
|
30
|
+
* `_getHttpClient().post('/vectors/collections/...')` workaround that
|
|
31
|
+
* v0.1.0 needed against SDK 0.3.x — SDK 0.4.0 ships `createVectorCollection`
|
|
32
|
+
* and `vectorCollection(name)` that target `/v1/vectors/collections/...`
|
|
33
|
+
* directly, so the plugin no longer has to bypass the SDK.
|
|
32
34
|
*/
|
|
33
|
-
function unwrapEnvelope(raw) {
|
|
34
|
-
if (raw && typeof raw === "object" && "data" in raw) {
|
|
35
|
-
return raw.data;
|
|
36
|
-
}
|
|
37
|
-
return raw;
|
|
38
|
-
}
|
|
39
35
|
class MemoryDB {
|
|
40
36
|
collectionName;
|
|
41
37
|
vectorDim;
|
|
42
38
|
client;
|
|
43
|
-
|
|
44
|
-
// The SDK's `Collection` class targets the document-collection world
|
|
45
|
-
// (`/v1/collections/...`) which is a separate storage tree on the gateway,
|
|
46
|
-
// so reusing it for vector CRUD lands in the wrong subsystem. We keep one
|
|
47
|
-
// SDK `Collection` handle around purely so the SDK's normalised
|
|
48
|
-
// `vectorSearch()` (the only Collection method whose wire path matches
|
|
49
|
-
// the vector subsystem) stays in use.
|
|
50
|
-
collection = null;
|
|
39
|
+
vectorCollection = null;
|
|
51
40
|
initPromise = null;
|
|
52
|
-
http;
|
|
53
41
|
constructor(client, collectionName, vectorDim) {
|
|
54
42
|
this.collectionName = collectionName;
|
|
55
43
|
this.vectorDim = vectorDim;
|
|
56
44
|
this.client = client;
|
|
57
|
-
this.http = getSdkHttp(client);
|
|
58
45
|
}
|
|
59
46
|
async ensureInitialized() {
|
|
60
|
-
if (this.
|
|
47
|
+
if (this.vectorCollection) {
|
|
61
48
|
return;
|
|
62
49
|
}
|
|
63
50
|
if (this.initPromise) {
|
|
@@ -67,39 +54,34 @@ class MemoryDB {
|
|
|
67
54
|
return this.initPromise;
|
|
68
55
|
}
|
|
69
56
|
async doInitialize() {
|
|
70
|
-
//
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
// document-collection subsystem) and drops the vector_size / dimensions
|
|
74
|
-
// field on the way through — so it never lands in the vector subsystem.
|
|
75
|
-
// We bypass and POST /v1/vectors/collections directly with
|
|
76
|
-
// `{name, dimensions, distance_metric}`. Auth is already wired on the
|
|
77
|
-
// SDK's http client.
|
|
57
|
+
// Probe for an existing vector collection (idempotent). The SDK's
|
|
58
|
+
// `listVectorCollections()` calls GET /v1/vectors/collections and
|
|
59
|
+
// returns the bare array; we fall through to create() on any error.
|
|
78
60
|
let exists = false;
|
|
79
61
|
try {
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
62
|
+
const items = await this.client.listVectorCollections();
|
|
63
|
+
if (Array.isArray(items)) {
|
|
64
|
+
exists = items.some((it) => it?.name === this.collectionName);
|
|
65
|
+
}
|
|
84
66
|
}
|
|
85
67
|
catch {
|
|
86
68
|
// best-effort; fall through and try to create
|
|
87
69
|
}
|
|
88
70
|
if (!exists) {
|
|
89
71
|
try {
|
|
90
|
-
await this.
|
|
72
|
+
this.vectorCollection = await this.client.createVectorCollection({
|
|
91
73
|
name: this.collectionName,
|
|
92
74
|
dimensions: this.vectorDim,
|
|
93
75
|
distance_metric: "cosine",
|
|
94
76
|
});
|
|
77
|
+
return;
|
|
95
78
|
}
|
|
96
79
|
catch (err) {
|
|
97
80
|
// Race with a concurrent creator — re-check before giving up.
|
|
98
81
|
try {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (!list.some((it) => it?.name === this.collectionName)) {
|
|
82
|
+
const items = await this.client.listVectorCollections();
|
|
83
|
+
if (!Array.isArray(items) ||
|
|
84
|
+
!items.some((it) => it?.name === this.collectionName)) {
|
|
103
85
|
throw err;
|
|
104
86
|
}
|
|
105
87
|
}
|
|
@@ -108,18 +90,8 @@ class MemoryDB {
|
|
|
108
90
|
}
|
|
109
91
|
}
|
|
110
92
|
}
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
// `client.collection(name)` as a synchronous handle factory; fall back
|
|
114
|
-
// to the async getCollection path if not present.
|
|
115
|
-
const collFn = this.client
|
|
116
|
-
.collection;
|
|
117
|
-
if (typeof collFn === "function") {
|
|
118
|
-
this.collection = collFn.call(this.client, this.collectionName);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.collection = await this.client.getCollection(this.collectionName);
|
|
122
|
-
}
|
|
93
|
+
// Use the synchronous accessor — no extra round-trip.
|
|
94
|
+
this.vectorCollection = this.client.vectorCollection(this.collectionName);
|
|
123
95
|
}
|
|
124
96
|
async store(entry) {
|
|
125
97
|
await this.ensureInitialized();
|
|
@@ -128,61 +100,46 @@ class MemoryDB {
|
|
|
128
100
|
id: randomUUID(),
|
|
129
101
|
createdAt: Date.now(),
|
|
130
102
|
};
|
|
131
|
-
//
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
//
|
|
135
|
-
await this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
createdAt: fullEntry.createdAt,
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
],
|
|
103
|
+
// v0.2.0: SDK ships VectorCollection.insert(...) which posts to
|
|
104
|
+
// /v1/vectors/collections/{name}/vectors with the {vectors: [...]}
|
|
105
|
+
// envelope automatically. v0.1.0 had a direct _getHttpClient().post()
|
|
106
|
+
// workaround here — deleted now that SDK 0.4.0 covers the wire.
|
|
107
|
+
await this.vectorCollection.insert({
|
|
108
|
+
id: fullEntry.id,
|
|
109
|
+
values: fullEntry.vector,
|
|
110
|
+
metadata: {
|
|
111
|
+
text: fullEntry.text,
|
|
112
|
+
importance: fullEntry.importance,
|
|
113
|
+
category: fullEntry.category,
|
|
114
|
+
createdAt: fullEntry.createdAt,
|
|
115
|
+
},
|
|
148
116
|
});
|
|
149
117
|
return fullEntry;
|
|
150
118
|
}
|
|
151
119
|
async search(vector, limit = 5, minScore = 0.5) {
|
|
152
120
|
await this.ensureInitialized();
|
|
153
|
-
const
|
|
121
|
+
const hits = await this.vectorCollection.search({
|
|
154
122
|
vector,
|
|
155
|
-
|
|
156
|
-
topK: limit,
|
|
157
|
-
distanceMetric: "cosine",
|
|
123
|
+
k: limit,
|
|
158
124
|
includeMetadata: true,
|
|
159
125
|
});
|
|
160
|
-
|
|
161
|
-
return documents.map(parseDocumentToResult).filter((r) => r.score >= minScore);
|
|
126
|
+
return hits.map(parseHitToResult).filter((r) => r.score >= minScore);
|
|
162
127
|
}
|
|
163
128
|
/**
|
|
164
|
-
* Same shape as `search`, but accepts a SQL `WHERE` clause
|
|
165
|
-
*
|
|
166
|
-
*
|
|
129
|
+
* Same shape as `search`, but accepts a SQL `WHERE` clause. The SDK
|
|
130
|
+
* forwards `filter` as-is to the gateway's `/v1/vectors/collections/{n}/search`
|
|
131
|
+
* endpoint, which accepts either a JSON match object or `{ sql: "..." }`.
|
|
132
|
+
* Used by the `recallFiltered` extension method.
|
|
167
133
|
*/
|
|
168
134
|
async searchFiltered(vector, where, limit = 5) {
|
|
169
135
|
await this.ensureInitialized();
|
|
170
|
-
const
|
|
136
|
+
const hits = await this.vectorCollection.search({
|
|
171
137
|
vector,
|
|
172
|
-
|
|
173
|
-
topK: limit,
|
|
174
|
-
// The SDK forwards `filter` as the `filter` field in the POST body;
|
|
175
|
-
// the gateway accepts either a JSON match object or a SQL WHERE
|
|
176
|
-
// string. We pass the user's WHERE as `{ sql: where }` so the
|
|
177
|
-
// gateway routes it through the SQL path rather than the JSON-match
|
|
178
|
-
// path. If the gateway can't parse, the SDK's error wrapper will
|
|
179
|
-
// surface the message verbatim — we do NOT validate SQL client-side.
|
|
180
|
-
filter: { sql: where },
|
|
181
|
-
distanceMetric: "cosine",
|
|
138
|
+
k: limit,
|
|
182
139
|
includeMetadata: true,
|
|
140
|
+
filter: { sql: where },
|
|
183
141
|
});
|
|
184
|
-
|
|
185
|
-
return documents.map(parseDocumentToResult);
|
|
142
|
+
return hits.map(parseHitToResult);
|
|
186
143
|
}
|
|
187
144
|
async delete(id) {
|
|
188
145
|
await this.ensureInitialized();
|
|
@@ -191,25 +148,31 @@ class MemoryDB {
|
|
|
191
148
|
if (!uuidRegex.test(id)) {
|
|
192
149
|
throw new Error(`Invalid memory ID format: ${id}`);
|
|
193
150
|
}
|
|
194
|
-
//
|
|
195
|
-
|
|
151
|
+
// v0.2.0: SDK 0.4.0's VectorCollection.delete(id) hits
|
|
152
|
+
// DELETE /v1/vectors/collections/{name}/vectors/{id}.
|
|
153
|
+
await this.vectorCollection.delete(id);
|
|
196
154
|
return true;
|
|
197
155
|
}
|
|
198
156
|
async count() {
|
|
199
157
|
await this.ensureInitialized();
|
|
200
|
-
//
|
|
201
|
-
//
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
158
|
+
// v0.2.0: SDK 0.4.0's VectorCollection.count() probes /count first,
|
|
159
|
+
// falls back to info().vector_count. Either way, returns a number.
|
|
160
|
+
try {
|
|
161
|
+
return await this.vectorCollection.count();
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
205
166
|
}
|
|
206
167
|
/** Fetch a single memory by ID (returns null if not found). */
|
|
207
168
|
async get(id) {
|
|
208
169
|
await this.ensureInitialized();
|
|
209
|
-
//
|
|
210
|
-
|
|
170
|
+
// v0.2.0: SDK 0.4.0's VectorCollection.get(id) returns
|
|
171
|
+
// { id, values, metadata } | null. v0.1.0 had a direct
|
|
172
|
+
// _getHttpClient().get() workaround here — deleted.
|
|
173
|
+
let hit = null;
|
|
211
174
|
try {
|
|
212
|
-
|
|
175
|
+
hit = await this.vectorCollection.get(id);
|
|
213
176
|
}
|
|
214
177
|
catch (err) {
|
|
215
178
|
const e = err;
|
|
@@ -217,73 +180,48 @@ class MemoryDB {
|
|
|
217
180
|
return null;
|
|
218
181
|
throw err;
|
|
219
182
|
}
|
|
220
|
-
if (!
|
|
183
|
+
if (!hit)
|
|
221
184
|
return null;
|
|
222
|
-
const
|
|
223
|
-
if (!vec)
|
|
224
|
-
return null;
|
|
225
|
-
// Gateway response shape: { id, values: [...], metadata: { ... } }
|
|
226
|
-
const meta = vec.metadata ?? {};
|
|
185
|
+
const meta = hit.metadata ?? {};
|
|
227
186
|
return {
|
|
228
|
-
id: String(
|
|
187
|
+
id: String(hit.id ?? id),
|
|
229
188
|
text: typeof meta.text === "string" ? meta.text : "",
|
|
230
|
-
vector: Array.isArray(
|
|
189
|
+
vector: Array.isArray(hit.values) ? hit.values : [],
|
|
231
190
|
importance: typeof meta.importance === "number" ? meta.importance : 0,
|
|
232
191
|
category: meta.category ?? "other",
|
|
233
192
|
createdAt: typeof meta.createdAt === "number" ? meta.createdAt : 0,
|
|
234
193
|
};
|
|
235
194
|
}
|
|
236
|
-
/** Internal accessor — used by extension methods. */
|
|
237
|
-
_collection() {
|
|
238
|
-
if (!this.collection) {
|
|
239
|
-
throw new Error("MemoryDB not initialized; call a method that triggers ensureInitialized first");
|
|
240
|
-
}
|
|
241
|
-
return this.collection;
|
|
242
|
-
}
|
|
243
195
|
}
|
|
244
|
-
function
|
|
245
|
-
//
|
|
246
|
-
//
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const
|
|
252
|
-
const
|
|
253
|
-
if (doc[key] !== undefined)
|
|
254
|
-
return doc[key];
|
|
255
|
-
if (meta[key] !== undefined)
|
|
256
|
-
return meta[key];
|
|
257
|
-
return undefined;
|
|
258
|
-
};
|
|
259
|
-
const text = pick("text") ?? "";
|
|
260
|
-
const importance = pick("importance");
|
|
261
|
-
const category = pick("category");
|
|
262
|
-
const createdAt = pick("createdAt");
|
|
263
|
-
const vector = (doc.values ?? doc.embedding);
|
|
196
|
+
function hitToEntry(hit) {
|
|
197
|
+
// SDK 0.4.0 VectorCollection.search returns the gateway's hit shape:
|
|
198
|
+
// { id, score, values?, metadata: { text, importance, category, createdAt } }
|
|
199
|
+
const meta = hit.metadata ?? {};
|
|
200
|
+
const text = typeof meta.text === "string" ? meta.text : "";
|
|
201
|
+
const importance = typeof meta.importance === "number" ? meta.importance : 0;
|
|
202
|
+
const category = meta.category ?? "other";
|
|
203
|
+
const createdAt = typeof meta.createdAt === "number" ? meta.createdAt : 0;
|
|
204
|
+
const vector = Array.isArray(hit.values) ? hit.values : [];
|
|
264
205
|
return {
|
|
265
|
-
id: String(
|
|
266
|
-
text
|
|
267
|
-
vector
|
|
268
|
-
importance
|
|
269
|
-
category
|
|
270
|
-
createdAt
|
|
206
|
+
id: String(hit.id ?? ""),
|
|
207
|
+
text,
|
|
208
|
+
vector,
|
|
209
|
+
importance,
|
|
210
|
+
category,
|
|
211
|
+
createdAt,
|
|
271
212
|
};
|
|
272
213
|
}
|
|
273
|
-
function
|
|
274
|
-
// Gateway v1.6.5.2-ce
|
|
275
|
-
//
|
|
276
|
-
//
|
|
277
|
-
//
|
|
278
|
-
const rawScore = typeof
|
|
279
|
-
const rawDistance = typeof
|
|
214
|
+
function parseHitToResult(hit) {
|
|
215
|
+
// Gateway v1.6.5.2-ce returns cosine **distance** as `score` (lower =
|
|
216
|
+
// closer; 0 = identical, 1 = orthogonal, 2 = opposite). Convert to a
|
|
217
|
+
// [0, 1] similarity for the public API. If a separate `distance` field
|
|
218
|
+
// ever appears we honour it for parity.
|
|
219
|
+
const rawScore = typeof hit.score === "number" ? hit.score : undefined;
|
|
220
|
+
const rawDistance = typeof hit.distance === "number" ? hit.distance : undefined;
|
|
280
221
|
const distance = rawDistance ?? rawScore ?? 0;
|
|
281
|
-
// Map cosine distance to a 0..1 similarity. cosine distance is in [0, 2]
|
|
282
|
-
// so we use `max(0, 1 - distance)` — for typical cosine-similarity-style
|
|
283
|
-
// ranges in [0, 1] this is equivalent to `1 - distance`.
|
|
284
222
|
const similarity = Math.max(0, Math.min(1, 1 - distance));
|
|
285
223
|
return {
|
|
286
|
-
entry:
|
|
224
|
+
entry: hitToEntry(hit),
|
|
287
225
|
score: similarity,
|
|
288
226
|
};
|
|
289
227
|
}
|
|
@@ -437,52 +375,89 @@ export function escapeCypherString(value) {
|
|
|
437
375
|
return String(value).replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
|
438
376
|
}
|
|
439
377
|
// ============================================================================
|
|
440
|
-
//
|
|
378
|
+
// Graph wiring — populate Memory nodes so SIMILAR_TO resolves at MATCH time
|
|
441
379
|
// ============================================================================
|
|
442
|
-
// Default cosine-similarity threshold for
|
|
443
|
-
//
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const
|
|
380
|
+
// Default cosine-similarity threshold for synthetic SIMILAR_TO edges.
|
|
381
|
+
// Used as the operand in `[:SIMILAR_TO > THRESHOLD]` Cypher fragments.
|
|
382
|
+
const SIMILAR_TO_THRESHOLD = 0.5;
|
|
383
|
+
// Max hops for recallRelated walks — caps runaway traversals.
|
|
384
|
+
const MAX_HOPS = 4;
|
|
385
|
+
// Default result cap for recallRelated.
|
|
386
|
+
const DEFAULT_RECALL_RELATED_LIMIT = 20;
|
|
447
387
|
/**
|
|
448
|
-
* `linkSimilarMemories`
|
|
388
|
+
* `linkSimilarMemories` — capture-time graph wiring (v0.2.0).
|
|
449
389
|
*
|
|
450
|
-
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
390
|
+
* v0.1.0 was a no-op: it tried to write explicit `SIMILAR_TO` edges via
|
|
391
|
+
* Cypher `MERGE`, which gateway v1.6.5.x rejects because SIMILAR_TO is a
|
|
392
|
+
* synthetic / derived edge type computed from the graph backend's vector
|
|
393
|
+
* index at MATCH time.
|
|
454
394
|
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
457
|
-
*
|
|
395
|
+
* v0.2.0 takes the supported path instead: insert the Memory as a graph
|
|
396
|
+
* node carrying the embedding under the property name `embedding` — the
|
|
397
|
+
* field the gateway's brute-force vector index is wired against (see
|
|
398
|
+
* `aidb_gateway::routes::graph::attach_default_vector_index`). Once a
|
|
399
|
+
* Memory node exists, `recallRelated` can MATCH `[:SIMILAR_TO > T]`
|
|
400
|
+
* against it and get neighbors back without any pre-stored edges.
|
|
458
401
|
*
|
|
459
|
-
*
|
|
460
|
-
*
|
|
461
|
-
* MERGE pipeline doesn't apply — and doesn't need to: `recallRelated` reads
|
|
462
|
-
* the synthetic similarity edges directly without any pre-stored state.
|
|
463
|
-
*
|
|
464
|
-
* The function is left as a public-API shim so `autoLinkSimilar = true`
|
|
465
|
-
* doesn't error out for callers carrying the option from older configs.
|
|
466
|
-
* 0.2.0 will likely add `MENTIONS` / `RELATES_TO` edges (which are NOT
|
|
467
|
-
* synthetic) via the REST `/v1/graph/edges` endpoint.
|
|
402
|
+
* Failures here are non-fatal — the capture itself still succeeded in the
|
|
403
|
+
* vector subsystem; we just log and move on so recall continues to work.
|
|
468
404
|
*/
|
|
469
|
-
async function linkSimilarMemories(entry, _db,
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
405
|
+
async function linkSimilarMemories(entry, _db, client, _graphName, logger) {
|
|
406
|
+
try {
|
|
407
|
+
// Insert a Memory node with the embedding so the synthetic
|
|
408
|
+
// SIMILAR_TO edge in `recallRelated` has something to match against.
|
|
409
|
+
// The `id` property mirrors the vector-collection id so callers can
|
|
410
|
+
// join the two views.
|
|
411
|
+
//
|
|
412
|
+
// KNOWN SDK GAP (@synapcores/sdk@0.4.0):
|
|
413
|
+
// `client.graph.nodes.create(label, props)` posts
|
|
414
|
+
// `{label: <single>, properties}` but the gateway's
|
|
415
|
+
// /v1/graph/nodes handler expects `{labels: <array>, properties}`
|
|
416
|
+
// (see aidb_gateway::routes::graph::CreateNodeRequest). The result
|
|
417
|
+
// is a node with `labels: []`, which never matches the `Memory`
|
|
418
|
+
// label filter in MATCH. We bypass the SDK helper for THIS one
|
|
419
|
+
// call and post the correct wire shape ourselves. Once SDK >0.4.0
|
|
420
|
+
// fixes `GraphNodeApi.create` to send `labels`, this `_getHttpClient`
|
|
421
|
+
// call can be replaced with `client.graph.nodes.create(...)`.
|
|
422
|
+
const http = client._getHttpClient();
|
|
423
|
+
await http.post("/graph/nodes", {
|
|
424
|
+
labels: ["Memory"],
|
|
425
|
+
properties: {
|
|
426
|
+
id: entry.id,
|
|
427
|
+
text: entry.text,
|
|
428
|
+
embedding: entry.vector,
|
|
429
|
+
importance: entry.importance,
|
|
430
|
+
category: entry.category,
|
|
431
|
+
createdAt: entry.createdAt,
|
|
432
|
+
},
|
|
433
|
+
});
|
|
434
|
+
return 1;
|
|
435
|
+
}
|
|
436
|
+
catch (err) {
|
|
437
|
+
const msg = err?.message ?? String(err);
|
|
438
|
+
logger?.warn?.(`memory-synapcores: failed to insert Memory graph node for ${entry.id}: ${msg} (capture still succeeded; recallRelated for this entry will return [])`);
|
|
439
|
+
return 0;
|
|
440
|
+
}
|
|
475
441
|
}
|
|
476
442
|
// ============================================================================
|
|
477
|
-
//
|
|
443
|
+
// AutoML helpers — staged-collection training (v0.2.0)
|
|
478
444
|
// ============================================================================
|
|
479
445
|
const DEFAULT_RELEVANCE_MODEL = "openclaw_memory_relevance";
|
|
480
446
|
const MIN_TRAINING_SAMPLES = 10;
|
|
447
|
+
const TRAINING_TABLE_PREFIX = "openclaw_memory_relevance_training";
|
|
481
448
|
function relevanceModelName(workspace) {
|
|
482
449
|
return workspace ? `${DEFAULT_RELEVANCE_MODEL}_${workspace}` : DEFAULT_RELEVANCE_MODEL;
|
|
483
450
|
}
|
|
484
|
-
function
|
|
451
|
+
function trainingTableName(workspace) {
|
|
452
|
+
// SQL identifier — caller-controlled workspace must be alphanumeric.
|
|
453
|
+
// Gateway rejects non-alphanumeric `collection` values anyway, so the
|
|
454
|
+
// sanitisation here is belt-and-braces.
|
|
455
|
+
const safe = workspace ? workspace.replace(/[^a-zA-Z0-9_]/g, "_") : "";
|
|
456
|
+
return safe ? `${TRAINING_TABLE_PREFIX}_${safe}` : TRAINING_TABLE_PREFIX;
|
|
457
|
+
}
|
|
458
|
+
function createExtensions(db, embeddings, client, _graphName, workspace, _collectionName = DEFAULT_COLLECTION) {
|
|
485
459
|
const modelName = relevanceModelName(workspace);
|
|
460
|
+
const stagingTable = trainingTableName(workspace);
|
|
486
461
|
async function modelExists(name) {
|
|
487
462
|
try {
|
|
488
463
|
const models = await client.automl.listModels();
|
|
@@ -496,45 +471,99 @@ function createExtensions(db, embeddings, client, graphName, workspace, collecti
|
|
|
496
471
|
async recallFiltered(options) {
|
|
497
472
|
const limit = options.limit ?? 5;
|
|
498
473
|
const vector = await embeddings.embed(options.semantic);
|
|
499
|
-
// Empty / `1=1` filter behaves the same as plain recall; pass it
|
|
500
|
-
// through anyway so the gateway sees a uniform request shape.
|
|
501
474
|
return db.searchFiltered(vector, options.where, limit);
|
|
502
475
|
},
|
|
503
476
|
async recallRelated(memoryId, options = {}) {
|
|
504
|
-
//
|
|
477
|
+
// v0.2.0 implementation:
|
|
505
478
|
//
|
|
506
|
-
// Gateway v1.6.5.x
|
|
507
|
-
//
|
|
508
|
-
//
|
|
509
|
-
//
|
|
510
|
-
//
|
|
511
|
-
//
|
|
512
|
-
//
|
|
513
|
-
// every Memory node into the graph with its embedding (a third
|
|
514
|
-
// subsystem that 0.1.0 does not wire), the MATCH walks always
|
|
515
|
-
// return zero rows.
|
|
479
|
+
// Gateway v1.6.5.x derives `SIMILAR_TO` synthetically at MATCH
|
|
480
|
+
// time from the graph backend's vector index on the `embedding`
|
|
481
|
+
// property. `linkSimilarMemories` populates that index on every
|
|
482
|
+
// capture by posting a `Memory` graph node carrying the embedding.
|
|
483
|
+
// With nodes in place, this method composes a Cypher MATCH that
|
|
484
|
+
// walks SIMILAR_TO (plus any non-synthetic edges the caller named
|
|
485
|
+
// via `edgeKinds`) and returns the neighborhood.
|
|
516
486
|
//
|
|
517
|
-
//
|
|
518
|
-
//
|
|
519
|
-
//
|
|
520
|
-
//
|
|
521
|
-
//
|
|
522
|
-
//
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
487
|
+
// Wire constraints:
|
|
488
|
+
// - Multi-hop `[:SIMILAR_TO*1..N]` is rejected — SIMILAR_TO is
|
|
489
|
+
// single-hop only. We honour `hops` for non-synthetic edges
|
|
490
|
+
// and special-case hops=1 for SIMILAR_TO.
|
|
491
|
+
// - `$param` bindings are rejected — values are inlined and
|
|
492
|
+
// escaped via `escapeCypherString`.
|
|
493
|
+
const hops = Math.min(Math.max(1, options.hops ?? 1), MAX_HOPS);
|
|
494
|
+
const limit = options.limit ?? DEFAULT_RECALL_RELATED_LIMIT;
|
|
495
|
+
const threshold = options.similarityThreshold ?? SIMILAR_TO_THRESHOLD;
|
|
496
|
+
const edgeKinds = options.edgeKinds && options.edgeKinds.length > 0
|
|
497
|
+
? options.edgeKinds
|
|
498
|
+
: ["SIMILAR_TO"];
|
|
499
|
+
const id = escapeCypherString(memoryId);
|
|
500
|
+
const out = [];
|
|
501
|
+
const seen = new Set();
|
|
502
|
+
for (const kind of edgeKinds) {
|
|
503
|
+
const safeKind = String(kind).replace(/[^A-Z_]/g, "");
|
|
504
|
+
if (!safeKind)
|
|
505
|
+
continue;
|
|
506
|
+
let cypher;
|
|
507
|
+
if (safeKind === "SIMILAR_TO") {
|
|
508
|
+
// Synthetic edge — single-hop only, threshold inlined.
|
|
509
|
+
// Use undirected pattern so we surface neighbors regardless
|
|
510
|
+
// of insertion order (the gateway computes similarity
|
|
511
|
+
// symmetrically anyway).
|
|
512
|
+
cypher = `MATCH (start:Memory {id: '${id}'})-[:SIMILAR_TO > ${threshold}]-(related:Memory) RETURN DISTINCT related LIMIT ${limit}`;
|
|
513
|
+
}
|
|
514
|
+
else {
|
|
515
|
+
// Non-synthetic edge — variable-length supported.
|
|
516
|
+
cypher = `MATCH (start:Memory {id: '${id}'})-[:${safeKind}*1..${hops}]-(related:Memory) RETURN DISTINCT related LIMIT ${limit}`;
|
|
517
|
+
}
|
|
518
|
+
let result;
|
|
519
|
+
try {
|
|
520
|
+
result = await client.graph.cypher(cypher);
|
|
521
|
+
}
|
|
522
|
+
catch (err) {
|
|
523
|
+
const msg = err?.message ?? String(err);
|
|
524
|
+
throw new Error(`memory-synapcores.recallRelated: graph query failed for edge kind '${safeKind}': ${msg}`);
|
|
525
|
+
}
|
|
526
|
+
// The SDK normalises responses to { columns, rows, records }.
|
|
527
|
+
// Prefer `records` (column-keyed) and fall back to `rows`.
|
|
528
|
+
const records = Array.isArray(result?.records) ? result.records : [];
|
|
529
|
+
const rows = Array.isArray(result?.rows) ? result.rows : [];
|
|
530
|
+
const harvest = (node) => {
|
|
531
|
+
if (!node || typeof node !== "object")
|
|
532
|
+
return;
|
|
533
|
+
const n = node;
|
|
534
|
+
const props = (n.properties ?? {});
|
|
535
|
+
const entryId = String(props.id ?? n.id ?? "");
|
|
536
|
+
if (!entryId || entryId === memoryId)
|
|
537
|
+
return;
|
|
538
|
+
if (seen.has(entryId))
|
|
539
|
+
return;
|
|
540
|
+
seen.add(entryId);
|
|
541
|
+
out.push({
|
|
542
|
+
entry: {
|
|
543
|
+
id: entryId,
|
|
544
|
+
text: typeof props.text === "string" ? props.text : "",
|
|
545
|
+
vector: Array.isArray(props.embedding) ? props.embedding : [],
|
|
546
|
+
importance: typeof props.importance === "number" ? props.importance : 0,
|
|
547
|
+
category: props.category ?? "other",
|
|
548
|
+
createdAt: typeof props.createdAt === "number" ? props.createdAt : 0,
|
|
549
|
+
},
|
|
550
|
+
hops: safeKind === "SIMILAR_TO" ? 1 : hops,
|
|
551
|
+
via: [safeKind],
|
|
552
|
+
});
|
|
553
|
+
};
|
|
554
|
+
for (const rec of records) {
|
|
555
|
+
// records: { related: <node> }
|
|
556
|
+
harvest(rec?.related ?? Object.values(rec ?? {})[0]);
|
|
557
|
+
}
|
|
558
|
+
for (const row of rows) {
|
|
559
|
+
if (!Array.isArray(row))
|
|
560
|
+
continue;
|
|
561
|
+
harvest(row[0]);
|
|
562
|
+
}
|
|
563
|
+
if (out.length >= limit)
|
|
564
|
+
break;
|
|
565
|
+
}
|
|
566
|
+
return out.slice(0, limit);
|
|
538
567
|
},
|
|
539
568
|
async predictRelevance(query, candidates) {
|
|
540
569
|
if (candidates.length === 0)
|
|
@@ -572,24 +601,107 @@ function createExtensions(db, embeddings, client, graphName, workspace, collecti
|
|
|
572
601
|
if (!Array.isArray(feedback) || feedback.length < MIN_TRAINING_SAMPLES) {
|
|
573
602
|
throw new Error(`memory-synapcores.trainRelevanceModel: need at least ${MIN_TRAINING_SAMPLES} samples to train a relevance model (got ${Array.isArray(feedback) ? feedback.length : 0})`);
|
|
574
603
|
}
|
|
575
|
-
//
|
|
576
|
-
//
|
|
577
|
-
//
|
|
578
|
-
//
|
|
579
|
-
//
|
|
580
|
-
//
|
|
604
|
+
// v0.2.0 implementation: stage rows in a SQL table the gateway's
|
|
605
|
+
// AutoML can `SELECT * FROM`. Gateway v1.6.5.2-ce rejects
|
|
606
|
+
// `config.inline_rows` (the workflow v0.1.0 attempted) and
|
|
607
|
+
// requires the data to land in a real collection/table before
|
|
608
|
+
// training. We:
|
|
609
|
+
// 1. Hydrate each feedback row's memory into a full feature
|
|
610
|
+
// vector (cosine, age_days, importance, one-hot category) via
|
|
611
|
+
// the same `buildRelevanceFeatures` helper `predictRelevance`
|
|
612
|
+
// uses — so train and predict see identical schemas.
|
|
613
|
+
// 2. CREATE TABLE IF NOT EXISTS the staging table.
|
|
614
|
+
// 3. INSERT each row.
|
|
615
|
+
// 4. Call client.automl.train({ collection, target: 'score', ... }).
|
|
581
616
|
//
|
|
582
|
-
//
|
|
583
|
-
//
|
|
584
|
-
//
|
|
585
|
-
//
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
617
|
+
// Feedback rows whose memories have been deleted are skipped (with
|
|
618
|
+
// a soft warning to the caller via the throw message); training
|
|
619
|
+
// proceeds with the remainder.
|
|
620
|
+
// Hydrate feedback rows. Embed each query text once; pair with
|
|
621
|
+
// the stored Memory's vector to get the cosine feature.
|
|
622
|
+
const hydrated = [];
|
|
623
|
+
let missing = 0;
|
|
624
|
+
for (const fb of feedback) {
|
|
625
|
+
const mem = await db.get(fb.memoryId).catch(() => null);
|
|
626
|
+
if (!mem) {
|
|
627
|
+
missing++;
|
|
628
|
+
continue;
|
|
629
|
+
}
|
|
630
|
+
const queryVec = await embeddings.embed(fb.queryText);
|
|
631
|
+
const feats = buildRelevanceFeatures(queryVec, mem);
|
|
632
|
+
hydrated.push({
|
|
633
|
+
cosine: feats.asRecord.cosine,
|
|
634
|
+
age_days: feats.asRecord.age_days,
|
|
635
|
+
importance: feats.asRecord.importance,
|
|
636
|
+
category_preference: feats.asRecord.category_preference,
|
|
637
|
+
category_fact: feats.asRecord.category_fact,
|
|
638
|
+
category_decision: feats.asRecord.category_decision,
|
|
639
|
+
category_entity: feats.asRecord.category_entity,
|
|
640
|
+
category_other: feats.asRecord.category_other,
|
|
641
|
+
score: clamp01(fb.score),
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
if (hydrated.length < MIN_TRAINING_SAMPLES) {
|
|
645
|
+
throw new Error(`memory-synapcores.trainRelevanceModel: after hydrating, only ${hydrated.length} feedback rows resolve to known memories (${missing} were missing) — need at least ${MIN_TRAINING_SAMPLES}`);
|
|
646
|
+
}
|
|
647
|
+
// 2. CREATE TABLE IF NOT EXISTS. The gateway's SQL surface accepts
|
|
648
|
+
// standard CREATE TABLE. If the table already exists from a
|
|
649
|
+
// prior run we swallow the duplicate-table error and keep
|
|
650
|
+
// appending rows.
|
|
651
|
+
const createSql = `CREATE TABLE ${stagingTable} (cosine FLOAT, age_days FLOAT, importance FLOAT, category_preference FLOAT, category_fact FLOAT, category_decision FLOAT, category_entity FLOAT, category_other FLOAT, score FLOAT)`;
|
|
652
|
+
try {
|
|
653
|
+
await client.executeQuery({ sql: createSql });
|
|
654
|
+
}
|
|
655
|
+
catch (err) {
|
|
656
|
+
const msg = err?.message ?? String(err);
|
|
657
|
+
if (!/already exists|duplicate/i.test(msg)) {
|
|
658
|
+
// Some gateways return "Table … created successfully" as data
|
|
659
|
+
// rather than throwing on re-create; only re-throw on truly
|
|
660
|
+
// unexpected errors.
|
|
661
|
+
throw new Error(`memory-synapcores.trainRelevanceModel: failed to provision staging table '${stagingTable}': ${msg}`);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
// 3. INSERT each row. We send them individually to keep the SQL
|
|
665
|
+
// body small and stay friendly to the gateway's row limit.
|
|
666
|
+
for (const row of hydrated) {
|
|
667
|
+
const sql = `INSERT INTO ${stagingTable} (cosine, age_days, importance, category_preference, category_fact, category_decision, category_entity, category_other, score) VALUES (` +
|
|
668
|
+
[
|
|
669
|
+
row.cosine,
|
|
670
|
+
row.age_days,
|
|
671
|
+
row.importance,
|
|
672
|
+
row.category_preference,
|
|
673
|
+
row.category_fact,
|
|
674
|
+
row.category_decision,
|
|
675
|
+
row.category_entity,
|
|
676
|
+
row.category_other,
|
|
677
|
+
row.score,
|
|
678
|
+
]
|
|
679
|
+
.map((n) => Number.isFinite(n) ? String(n) : "0")
|
|
680
|
+
.join(", ") +
|
|
681
|
+
")";
|
|
682
|
+
try {
|
|
683
|
+
await client.executeQuery({ sql });
|
|
684
|
+
}
|
|
685
|
+
catch (err) {
|
|
686
|
+
const msg = err?.message ?? String(err);
|
|
687
|
+
throw new Error(`memory-synapcores.trainRelevanceModel: failed to insert training row into '${stagingTable}': ${msg}`);
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
// 4. Train via /v1/automl/train. The gateway issues
|
|
691
|
+
// `SELECT * FROM {collection}` internally and trains on the
|
|
692
|
+
// `target` column.
|
|
693
|
+
const model = await client.automl.train({
|
|
694
|
+
collection: stagingTable,
|
|
695
|
+
target: "score",
|
|
696
|
+
task: "regression",
|
|
697
|
+
name: modelName,
|
|
698
|
+
max_trials: 5,
|
|
699
|
+
validation_split: 0.2,
|
|
700
|
+
});
|
|
701
|
+
return {
|
|
702
|
+
modelId: model.id ?? modelName,
|
|
703
|
+
modelName: model.name ?? modelName,
|
|
704
|
+
};
|
|
593
705
|
},
|
|
594
706
|
};
|
|
595
707
|
}
|
|
@@ -631,32 +743,16 @@ const memoryPlugin = {
|
|
|
631
743
|
const cfg = memoryConfigSchema.parse(api.pluginConfig);
|
|
632
744
|
const vectorDim = vectorDimsForModel(cfg.embedding.model ?? "text-embedding-3-small");
|
|
633
745
|
const collectionName = cfg.collection ?? DEFAULT_COLLECTION;
|
|
634
|
-
//
|
|
635
|
-
//
|
|
636
|
-
//
|
|
637
|
-
//
|
|
638
|
-
|
|
639
|
-
//
|
|
640
|
-
// The SDK *does* route `{ jwtToken }` through `Authorization: Bearer`,
|
|
641
|
-
// and the gateway accepts an `aidb_*` value in that header (it tries JWT
|
|
642
|
-
// validation first, then falls back to api-key lookup on failure). So we
|
|
643
|
-
// route any `aidb_*` / `ak_*` key supplied as `apiKey` through `jwtToken`
|
|
644
|
-
// here. End-users keep writing `synapcores.apiKey` in their config — the
|
|
645
|
-
// plugin handles the header difference internally. When the SDK ships a
|
|
646
|
-
// version that uses Bearer for api keys, this branch becomes a no-op.
|
|
647
|
-
const rawKey = cfg.synapcores.apiKey;
|
|
648
|
-
const sdkConfig = {
|
|
746
|
+
// v0.2.0: pass apiKey straight through. @synapcores/sdk@0.4.0
|
|
747
|
+
// routes both apiKey AND jwtToken via `Authorization: Bearer`, so
|
|
748
|
+
// the v0.1.0 shim that re-routed `aidb_*` / `ak_*` keys through
|
|
749
|
+
// `jwtToken` to coerce the right header is gone.
|
|
750
|
+
const client = new SynapCores({
|
|
649
751
|
host: cfg.synapcores.host,
|
|
650
752
|
port: cfg.synapcores.port,
|
|
651
753
|
useHttps: cfg.synapcores.useHttps,
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
sdkConfig.jwtToken = rawKey;
|
|
655
|
-
}
|
|
656
|
-
else {
|
|
657
|
-
sdkConfig.apiKey = rawKey;
|
|
658
|
-
}
|
|
659
|
-
const client = new SynapCores(sdkConfig);
|
|
754
|
+
apiKey: cfg.synapcores.apiKey,
|
|
755
|
+
});
|
|
660
756
|
const db = new MemoryDB(client, collectionName, vectorDim);
|
|
661
757
|
const embeddings = new Embeddings(cfg.embedding.apiKey, cfg.embedding.model);
|
|
662
758
|
const extensions = createExtensions(db, embeddings, client, cfg.graph, cfg.workspace, collectionName);
|
|
@@ -736,8 +832,9 @@ const memoryPlugin = {
|
|
|
736
832
|
importance,
|
|
737
833
|
category,
|
|
738
834
|
});
|
|
739
|
-
//
|
|
740
|
-
//
|
|
835
|
+
// v0.2.0: linkSimilarMemories now inserts a Memory graph node
|
|
836
|
+
// carrying the embedding so recallRelated has something to
|
|
837
|
+
// MATCH against. Failures are non-fatal (logged in-helper).
|
|
741
838
|
if (autoLinkSimilar) {
|
|
742
839
|
await linkSimilarMemories(entry, db, client, graphName, api.logger);
|
|
743
840
|
}
|
|
@@ -965,10 +1062,7 @@ const memoryPlugin = {
|
|
|
965
1062
|
// Expose the extension surface on the plugin instance so callers can
|
|
966
1063
|
// reach `recallFiltered` / `recallRelated` / `predictRelevance` /
|
|
967
1064
|
// `trainRelevanceModel` via the OpenClaw plugin registry
|
|
968
|
-
// (e.g. `plugin.extensions.recallFiltered`).
|
|
969
|
-
// rather than a top-level field on the plugin definition because
|
|
970
|
-
// `register()` is what produces the live backend; the extensions need
|
|
971
|
-
// access to the instantiated client + db.
|
|
1065
|
+
// (e.g. `plugin.extensions.recallFiltered`).
|
|
972
1066
|
memoryPlugin.extensions =
|
|
973
1067
|
extensions;
|
|
974
1068
|
},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synapcores/openclaw-memory",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "OpenClaw long-term memory plugin backed by SynapCores AIDB (LanceDB-parity API + SQL filtering, graph relations, AutoML relevance)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"node": ">=18.0.0"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@synapcores/sdk": "^0.
|
|
56
|
+
"@synapcores/sdk": "^0.4.0",
|
|
57
57
|
"openai": "^6.17.0",
|
|
58
58
|
"typebox": "^1.1.38"
|
|
59
59
|
},
|