@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 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.1.0 shipping note:** tested against gateway `v1.6.5.2-ce` and `@synapcores/sdk@0.3.0`. The parity API (recall/capture/forget) plus two of the three SynapCores-only read extensions (`recallFiltered`, `predictRelevance`) are wired against the live SDK and exercised end-to-end. Two methods are **signature-only in 0.1.0** and throw a clear "ships in 0.2.0" error before calling the gateway:
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
- > - **`trainRelevanceModel`** gateway `v1.6.5.x` rejects inline training data with HTTP 400; 0.2.0 stages rows in a sibling collection before calling `/v1/automl/train`. `predictRelevance` runs in heuristic mode in the meantime (always works).
8
- > - **`recallRelated`** gateway `v1.6.5.x` derives `SIMILAR_TO` synthetically from a graph-node vector index that this release does not populate (the plugin writes only to the vector collection; promoting Memory nodes into the graph backend ships in 0.2.0). Use `predictRelevance(query, candidates)` over a broad `recallFiltered({where: "1=1", semantic: query, limit: 20})` for relevance-scoped recall in the meantime.
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, draw `SIMILAR_TO` edges to existing memories with cosine similarity > 0.7 so `recallRelated` returns useful neighborhoods out of the box (adds ~30-50ms per 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: 2,
164
- edgeKinds: ["SIMILAR_TO"], // omit for any edge type
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
- > **0.1.0 status:** this method validates its arguments and throws a clear "ships in 0.2.0" error before calling the gateway. Gateway `v1.6.5.x` derives `SIMILAR_TO` edges synthetically from a graph-node vector index that the plugin does not populate in this release; 0.2.0 will post each Memory node into the graph backend with its embedding at capture time so the gateway's `[:SIMILAR_TO > T]` MATCH expansion returns useful neighborhoods. Wire your callers now and they will start returning data the moment you upgrade to `@synapcores/openclaw-memory@0.2.0`.
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
- > **0.1.0 status:** `trainRelevanceModel` validates inputs but throws a clear "not implemented yet" error before calling the gateway, because gateway `v1.6.5.x` rejects inline training rows. Wire your feedback-collection now and the method will start training models the moment you upgrade to `@synapcores/openclaw-memory@0.2.0` (which stages rows in a sibling collection before calling `/v1/automl/train`).
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.2.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. The parity API (recall + capture +
13
- * auto-recall/auto-capture) plus the three SynapCores-only extensions
14
- * are all fully wired in 0.1.0.
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
- /** Restrict to specific edge kinds (default: any). Common kinds: `SIMILAR_TO`, `MENTIONS`, `RELATES_TO`. */
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 three SynapCores-only methods use:
102
- * - `client.collection(...).vectorSearch({ ..., filter })` for recallFiltered,
103
- * forwarding the SQL `WHERE` clause through to the gateway under
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, walking the `SIMILAR_TO`
106
- * edges created automatically at capture-time (plus any `MENTIONS` /
107
- * `RELATES_TO` edges added by future entity-extraction tools).
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
- * @param memoryId - UUID of the source memory.
128
- * @param options - Hops and edge-kind filter.
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
- * @remarks `SIMILAR_TO` edges are auto-created at capture time when
131
- * `autoLinkSimilar` is true (default). `via` is left empty in 0.1.0;
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;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;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,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4GAA4G;IAC5G,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,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;AAodF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AA2DD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAE9E;;;;;;;;;;OAUG;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;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrG;AAsKD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAOF,iBAAiB;CAqbhC,CAAC;AAEF,eAAe,YAAY,CAAC"}
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. The parity API (recall + capture +
13
- * auto-recall/auto-capture) plus the three SynapCores-only extensions
14
- * are all fully wired in 0.1.0.
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
- * Unwrap a JSON-API-style `{ data, meta }` envelope down to the inner payload.
31
- * Tolerates both the wrapped form and a bare body for forward-compat.
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
- // 0.1.0 talks to the gateway's /v1/vectors/collections subsystem directly.
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.collection) {
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
- // Provision a vector collection on first use.
71
- //
72
- // The SDK's `client.createCollection()` posts to /v1/collections (the
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 raw = (await this.http.get("/vectors/collections")).data;
81
- const items = unwrapEnvelope(raw);
82
- const list = Array.isArray(items) ? items : [];
83
- exists = list.some((it) => it?.name === this.collectionName);
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.http.post("/vectors/collections", {
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 raw = (await this.http.get("/vectors/collections")).data;
100
- const items = unwrapEnvelope(raw);
101
- const list = Array.isArray(items) ? items : [];
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
- // Cache a Collection handle just for vectorSearch (the one SDK method
112
- // that already routes through the vector subsystem). v0.3.0 added
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
- // Vector insert wire: POST /v1/vectors/collections/{name}/vectors
132
- // body = { vectors: [ { id, values, metadata } ] }
133
- // We carry text + importance + category + createdAt in metadata so the
134
- // search response can hydrate a MemoryEntry without a second round-trip.
135
- await this.http.post(`/vectors/collections/${encodeURIComponent(this.collectionName)}/vectors`, {
136
- vectors: [
137
- {
138
- id: fullEntry.id,
139
- values: fullEntry.vector,
140
- metadata: {
141
- text: fullEntry.text,
142
- importance: fullEntry.importance,
143
- category: fullEntry.category,
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 result = await this.collection.vectorSearch({
121
+ const hits = await this.vectorCollection.search({
154
122
  vector,
155
- field: "embedding",
156
- topK: limit,
157
- distanceMetric: "cosine",
123
+ k: limit,
158
124
  includeMetadata: true,
159
125
  });
160
- const documents = (result.documents ?? []);
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 (forwarded
165
- * to the gateway as the `filter` field on `/vector_search`). Used by
166
- * the `recallFiltered` extension method.
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 result = await this.collection.vectorSearch({
136
+ const hits = await this.vectorCollection.search({
171
137
  vector,
172
- field: "embedding",
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
- const documents = (result.documents ?? []);
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
- // Vector delete wire: DELETE /v1/vectors/collections/{name}/vectors/{id}
195
- await this.http.delete(`/vectors/collections/${encodeURIComponent(this.collectionName)}/vectors/${encodeURIComponent(id)}`);
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
- // Vector collection info wire: GET /v1/vectors/collections/{name}
201
- // returns { data: { name, dimensions, vector_count, distance_metric, index_type } }
202
- const raw = (await this.http.get(`/vectors/collections/${encodeURIComponent(this.collectionName)}`)).data;
203
- const info = unwrapEnvelope(raw);
204
- return typeof info?.vector_count === "number" ? info.vector_count : 0;
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
- // Vector get wire: GET /v1/vectors/collections/{name}/vectors/{id}
210
- let raw;
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
- raw = (await this.http.get(`/vectors/collections/${encodeURIComponent(this.collectionName)}/vectors/${encodeURIComponent(id)}`)).data;
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 (!raw)
183
+ if (!hit)
221
184
  return null;
222
- const vec = unwrapEnvelope(raw);
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(vec.id ?? id),
187
+ id: String(hit.id ?? id),
229
188
  text: typeof meta.text === "string" ? meta.text : "",
230
- vector: Array.isArray(vec.values) ? vec.values : [],
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 docToEntry(doc) {
245
- // Vector-collection search results land here in two shapes:
246
- // (1) flat (legacy doc-collection):
247
- // { id, text, embedding, importance, category, createdAt, score }
248
- // (2) nested (vector-collection v2):
249
- // { id, values, metadata: { text, importance, category, createdAt }, score }
250
- // We support both so the same parser works against either subsystem.
251
- const meta = doc.metadata ?? {};
252
- const pick = (key) => {
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(doc.id ?? ""),
266
- text: String(text),
267
- vector: Array.isArray(vector) ? vector : [],
268
- importance: typeof importance === "number" ? importance : 0,
269
- category: category ?? "other",
270
- createdAt: typeof createdAt === "number" ? createdAt : 0,
206
+ id: String(hit.id ?? ""),
207
+ text,
208
+ vector,
209
+ importance,
210
+ category,
211
+ createdAt,
271
212
  };
272
213
  }
273
- function parseDocumentToResult(doc) {
274
- // Gateway v1.6.5.2-ce vector search returns `score` as **cosine distance**
275
- // (lower is better, 0 = identical, 1 = orthogonal, 2 = opposite). We
276
- // convert to a [0, 1] similarity for the public API. If we ever see a
277
- // `distance` field too (older / future shape) we honour that for parity.
278
- const rawScore = typeof doc.score === "number" ? doc.score : undefined;
279
- const rawDistance = typeof doc.distance === "number" ? doc.distance : undefined;
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: docToEntry(doc),
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
- // Auto-link similar memories (capture-time graph edge creation)
378
+ // Graph wiring populate Memory nodes so SIMILAR_TO resolves at MATCH time
441
379
  // ============================================================================
442
- // Default cosine-similarity threshold for treating two memories as
443
- // "similar enough" to surface from `recallRelated`. Used as the operand on
444
- // the gateway's synthetic-edge syntax `[:SIMILAR_TO > THRESHOLD]`.
445
- const SIMILAR_TO_THRESHOLD = 0.7;
446
- const SIMILAR_TO_TOPK = 4; // legacy constant — kept for symmetry with v0.2.0 plan
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` is a no-op against gateway v1.6.5.x.
388
+ * `linkSimilarMemories` capture-time graph wiring (v0.2.0).
449
389
  *
450
- * The gateway treats `SIMILAR_TO` as a **synthetic / derived** edge type:
451
- * it computes the edge on-the-fly from the underlying vector similarity at
452
- * `MATCH` time, using `[:SIMILAR_TO > THRESHOLD]` syntax (where THRESHOLD
453
- * is a literal float). Explicit edge creation is rejected:
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
- * `'SIMILAR_TO' is a reserved synthetic edge type the Cypher engine
456
- * derives it from vector similarity and it cannot be stored as a literal
457
- * edge.` (HTTP 400 from /v1/graph/edges)
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
- * Multi-statement Cypher (`MERGE ... MERGE ...`) is also rejected by this
460
- * gateway's parser. Together those constraints mean the original capture-time
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, _client, _graphName, _logger) {
470
- void entry;
471
- // No-op in 0.1.0. The gateway's synthetic-SIMILAR_TO edges make this
472
- // unnecessary at capture-time: `recallRelated` reads similarity at query
473
- // time, so there's nothing to pre-link.
474
- return 0;
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
- // SynapCores Extensions
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 createExtensions(db, embeddings, client, graphName, workspace, collectionName = DEFAULT_COLLECTION) {
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
- // 0.1.0 fallback strategy:
477
+ // v0.2.0 implementation:
505
478
  //
506
- // Gateway v1.6.5.x treats `SIMILAR_TO` as a **synthetic, derived**
507
- // edge it computes it on-the-fly from vector similarity at MATCH
508
- // time, and the supported syntax is `[:SIMILAR_TO > THRESHOLD]`
509
- // (single-hop only `[:SIMILAR_TO*1..N]` and explicit MERGE / CREATE
510
- // on `SIMILAR_TO` are both rejected). Crucially, the synthetic
511
- // edge resolves against the **graph backend's** vector index, not
512
- // the vector collection we write into. Without first promoting
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
- // Rather than ship a method that silently returns `[]`, we surface
518
- // the same kind of clear "ships in 0.2.0" error as
519
- // `trainRelevanceModel`, but only when the caller actually asks for
520
- // graph-backed recall. The signature stays so downstream code that
521
- // wires this up today keeps compiling after the 0.2.0 upgrade.
522
- //
523
- // 0.2.0 plan: on capture, post the Memory node to /v1/graph/nodes
524
- // with its embedding, then have this method compose
525
- // `MATCH (start:Memory {id:'X'})-[:SIMILAR_TO > T]-(related)
526
- // RETURN related.id, related.text LIMIT 20`.
527
- void options;
528
- void client;
529
- void graphName;
530
- void escapeCypherString;
531
- void db;
532
- void memoryId;
533
- throw new Error("memory-synapcores.recallRelated: signature-only in 0.1.0. " +
534
- "Gateway v1.6.5.x derives SIMILAR_TO edges synthetically from a graph-node " +
535
- "vector index that the plugin does not populate in this release; full graph-backed " +
536
- "recall (with auto-indexed Memory nodes) ships in 0.2.0. Use predictRelevance + " +
537
- "recallFiltered in the meantime for relevance-scoped recall.");
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
- // Gateway v1.6.5.2-ce explicitly rejects `config.inline_rows` on
576
- // /v1/automl/train (HTTP 400 "config.inline_rows is not supported
577
- // in this version. Stage the rows in a collection first."). The
578
- // 0.1.0 release keeps the public method signature so callers can
579
- // wire feedback collection now and have it light up the moment the
580
- // 0.2.0 line ships the staged-collection workflow.
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
- // 0.2.0 plan: stage `feedback` into a sibling collection
583
- // (`openclaw_memory_relevance_training[_<workspace>]`) and call
584
- // `automl.train({ collection, target, features, task: "regression" })`
585
- // pointing at it, then prune the staged rows on success.
586
- void feedback;
587
- void collectionName;
588
- void modelName;
589
- throw new Error("memory-synapcores.trainRelevanceModel: signature-only in 0.1.0. " +
590
- "Gateway v1.6.5.x rejects inline training rows; full implementation ships in 0.2.0 " +
591
- "(stages rows in a sibling collection before calling /v1/automl/train). " +
592
- "predictRelevance continues to work in heuristic mode in the meantime.");
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
- // Auth-header shim:
635
- // @synapcores/sdk@0.3.0 sends `aidb_*` / `ak_*` keys via the `X-API-Key`
636
- // header when constructed with `{ apiKey }`. Gateway v1.6.5.2-ce only
637
- // honours `Authorization: Bearer aidb_*` (or `Authorization: ApiKey ...`)
638
- // and will reject `X-API-Key` with HTTP 401 "missing_authorization".
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
- if (rawKey.startsWith("aidb_") || rawKey.startsWith("ak_")) {
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
- // Best-effort auto-link to similar memories so `recallRelated`
740
- // returns useful neighborhoods. Failures are swallowed and logged.
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`). We attach via Object.assign
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.1.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.3.0",
56
+ "@synapcores/sdk": "^0.4.0",
57
57
  "openai": "^6.17.0",
58
58
  "typebox": "^1.1.38"
59
59
  },