@openclaw/memory-lancedb 2026.5.28 → 2026.5.31-beta.1

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/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { loadLanceDbModule } from "./lancedb-runtime.js";
4
4
  import { Buffer } from "node:buffer";
5
5
  import { randomUUID } from "node:crypto";
6
6
  import { optionalFiniteNumberSchema, optionalPositiveIntegerSchema } from "openclaw/plugin-sdk/channel-actions";
7
- import { parseStrictPositiveInteger } from "openclaw/plugin-sdk/number-runtime";
7
+ import { parseStrictPositiveInteger, resolveTimerTimeoutMs } from "openclaw/plugin-sdk/number-runtime";
8
8
  import { readFiniteNumberParam, readPositiveIntegerParam } from "openclaw/plugin-sdk/param-readers";
9
9
  import { resolveLivePluginConfigObject } from "openclaw/plugin-sdk/plugin-config-runtime";
10
10
  import { ensureGlobalUndiciEnvProxyDispatcher } from "openclaw/plugin-sdk/runtime-env";
@@ -84,6 +84,8 @@ function resolveAutoCaptureStartIndex(messages, cursor) {
84
84
  }
85
85
  const TABLE_NAME = "memories";
86
86
  const DEFAULT_AUTO_RECALL_TIMEOUT_MS = 15e3;
87
+ const DEFAULT_TOOL_RECALL_TIMEOUT_MS = 15e3;
88
+ const DEFAULT_TOOL_RECALL_COOLDOWN_MS = 6e4;
87
89
  function parsePositiveIntegerOption(value, flag) {
88
90
  if (value === void 0) return;
89
91
  const parsed = parseStrictPositiveInteger(value);
@@ -249,15 +251,25 @@ var ProviderAdapterEmbeddings = class {
249
251
  if (!result.provider) throw new Error(`Memory embedding provider ${providerId} is unavailable.`);
250
252
  return result.provider;
251
253
  }
252
- async embed(text) {
253
- return await (await this.getProvider()).embedQuery(text);
254
+ async embed(text, options) {
255
+ const provider = await this.getProvider();
256
+ if (!options?.timeoutMs) return await provider.embedQuery(text);
257
+ const controller = new AbortController();
258
+ let timer;
259
+ try {
260
+ timer = setTimeout(() => controller.abort(/* @__PURE__ */ new Error("memory-lancedb embedding timed out")), resolveTimerTimeoutMs(options.timeoutMs, 1));
261
+ timer.unref?.();
262
+ return await provider.embedQuery(text, { signal: controller.signal });
263
+ } finally {
264
+ if (timer) clearTimeout(timer);
265
+ }
254
266
  }
255
267
  };
256
268
  async function runWithTimeout(params) {
257
269
  let timeout;
258
270
  const TIMEOUT = Symbol("timeout");
259
271
  const timeoutPromise = new Promise((resolve) => {
260
- timeout = setTimeout(() => resolve(TIMEOUT), params.timeoutMs);
272
+ timeout = setTimeout(() => resolve(TIMEOUT), resolveTimerTimeoutMs(params.timeoutMs, 1));
261
273
  timeout.unref?.();
262
274
  });
263
275
  const taskPromise = params.task();
@@ -273,6 +285,31 @@ async function runWithTimeout(params) {
273
285
  if (timeout) clearTimeout(timeout);
274
286
  }
275
287
  }
288
+ function formatMemoryRecallError(error) {
289
+ return error instanceof Error ? error.message : String(error);
290
+ }
291
+ function buildMemoryRecallUnavailableResult(error) {
292
+ return {
293
+ content: [{
294
+ type: "text",
295
+ text: "Memory recall is unavailable right now."
296
+ }],
297
+ details: {
298
+ count: 0,
299
+ disabled: true,
300
+ unavailable: true,
301
+ error
302
+ }
303
+ };
304
+ }
305
+ var MemoryRecallEmbeddingError = class extends Error {
306
+ constructor(originalError) {
307
+ super(formatMemoryRecallError(originalError));
308
+ this.originalError = originalError;
309
+ this.name = "MemoryRecallEmbeddingError";
310
+ }
311
+ };
312
+ const testing = { runWithTimeout };
276
313
  function createEmbeddings(api, cfg) {
277
314
  const { provider, model, dimensions, apiKey, baseUrl } = cfg.embedding;
278
315
  if (provider === "openai" && apiKey) return new OpenAiCompatibleEmbeddings(apiKey, model, baseUrl, dimensions);
@@ -390,6 +427,7 @@ var memory_lancedb_default = definePluginEntry({
390
427
  const db = new MemoryDB(resolvedDbPath, dimensions ?? vectorDimsForModel(model), cfg.storageOptions);
391
428
  const embeddings = createEmbeddings(api, cfg);
392
429
  const autoCaptureCursors = /* @__PURE__ */ new Map();
430
+ let memoryRecallCooldown;
393
431
  const resolveCurrentHookConfig = () => {
394
432
  const runtimePluginConfig = resolveLivePluginConfigObject(api.runtime.config?.current ? () => api.runtime.config.current() : void 0, "memory-lancedb", api.pluginConfig);
395
433
  if (!runtimePluginConfig) return disabledHookCfg;
@@ -412,6 +450,20 @@ var memory_lancedb_default = definePluginEntry({
412
450
  ...asOptionalRecord(runtimePluginConfig)
413
451
  });
414
452
  };
453
+ const readMemoryRecallCooldown = () => {
454
+ if (!memoryRecallCooldown) return;
455
+ if (memoryRecallCooldown.until <= Date.now()) {
456
+ memoryRecallCooldown = void 0;
457
+ return;
458
+ }
459
+ return { error: memoryRecallCooldown.error };
460
+ };
461
+ const recordMemoryRecallCooldown = (error) => {
462
+ memoryRecallCooldown = {
463
+ until: Date.now() + DEFAULT_TOOL_RECALL_COOLDOWN_MS,
464
+ error
465
+ };
466
+ };
415
467
  api.logger.info(`memory-lancedb: plugin registered (db: ${resolvedDbPath}, lazy init)`);
416
468
  api.registerMemoryCapability?.({ publicArtifacts: { async listArtifacts(params) {
417
469
  const { listMemoryHostPublicArtifacts } = await loadMemoryHostCoreModule();
@@ -430,8 +482,36 @@ var memory_lancedb_default = definePluginEntry({
430
482
  const query = rawParams.query;
431
483
  const limit = readPositiveIntegerParam(rawParams, "limit") ?? 5;
432
484
  const currentCfg = resolveCurrentHookConfig();
433
- const vector = await embeddings.embed(normalizeRecallQuery(query, currentCfg.recallMaxChars));
434
- const results = await db.search(vector, limit, .1);
485
+ const cooldown = readMemoryRecallCooldown();
486
+ if (cooldown) return buildMemoryRecallUnavailableResult(cooldown.error);
487
+ let recall;
488
+ try {
489
+ recall = await runWithTimeout({
490
+ timeoutMs: DEFAULT_TOOL_RECALL_TIMEOUT_MS,
491
+ task: async () => {
492
+ let vector;
493
+ try {
494
+ vector = await embeddings.embed(normalizeRecallQuery(query, currentCfg.recallMaxChars), { timeoutMs: DEFAULT_TOOL_RECALL_TIMEOUT_MS });
495
+ } catch (error) {
496
+ throw new MemoryRecallEmbeddingError(error);
497
+ }
498
+ return await db.search(vector, limit, .1);
499
+ }
500
+ });
501
+ } catch (error) {
502
+ if (!(error instanceof MemoryRecallEmbeddingError)) throw error;
503
+ const message = formatMemoryRecallError(error.originalError);
504
+ recordMemoryRecallCooldown(message);
505
+ api.logger.warn?.(`memory-lancedb: memory_recall failed: ${message}; returning unavailable memory result`);
506
+ return buildMemoryRecallUnavailableResult(message);
507
+ }
508
+ if (recall.status === "timeout") {
509
+ const message = `memory_recall timed out after ${Math.round(DEFAULT_TOOL_RECALL_TIMEOUT_MS / 1e3)}s`;
510
+ recordMemoryRecallCooldown(message);
511
+ api.logger.warn?.(`memory-lancedb: memory_recall timed out after ${DEFAULT_TOOL_RECALL_TIMEOUT_MS}ms; returning unavailable memory result`);
512
+ return buildMemoryRecallUnavailableResult(message);
513
+ }
514
+ const results = recall.value;
435
515
  if (results.length === 0) return {
436
516
  content: [{
437
517
  type: "text",
@@ -651,7 +731,7 @@ var memory_lancedb_default = definePluginEntry({
651
731
  const direction = dir?.toLowerCase() === "desc" ? -1 : 1;
652
732
  rows.sort((a, b) => {
653
733
  if (a[col] < b[col]) return -1 * direction;
654
- if (a[col] > b[col]) return 1 * direction;
734
+ if (a[col] > b[col]) return direction;
655
735
  return 0;
656
736
  });
657
737
  rows = rows.slice(0, limit);
@@ -754,4 +834,4 @@ var memory_lancedb_default = definePluginEntry({
754
834
  }
755
835
  });
756
836
  //#endregion
757
- export { memory_lancedb_default as default, detectCategory, escapeMemoryForPrompt, formatRelevantMemoriesContext, looksLikePromptInjection, normalizeEmbeddingVector, normalizeRecallQuery, shouldCapture };
837
+ export { memory_lancedb_default as default, detectCategory, escapeMemoryForPrompt, formatRelevantMemoriesContext, looksLikePromptInjection, normalizeEmbeddingVector, normalizeRecallQuery, shouldCapture, testing };
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@openclaw/memory-lancedb",
3
- "version": "2026.5.28",
3
+ "version": "2026.5.31-beta.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@openclaw/memory-lancedb",
9
- "version": "2026.5.28",
9
+ "version": "2026.5.31-beta.1",
10
10
  "dependencies": {
11
- "@lancedb/lancedb": "0.29.0",
12
- "apache-arrow": "18.1.0",
13
- "openai": "6.39.0",
14
- "typebox": "1.1.38"
11
+ "@lancedb/lancedb": "0.30.0",
12
+ "apache-arrow": "21.1.0",
13
+ "openai": "6.39.1",
14
+ "typebox": "1.1.39"
15
15
  }
16
16
  },
17
17
  "node_modules/@lancedb/lancedb": {
18
- "version": "0.29.0",
19
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb/-/lancedb-0.29.0.tgz",
20
- "integrity": "sha512-lqg2QVs+yriRZ30I1fqnR8qHTR8olSx+9gY7PKvbk19kjP9Ei3uvYhtNsoqdfaF8sdCXML9RczGP9HPYepF2yw==",
18
+ "version": "0.30.0",
19
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb/-/lancedb-0.30.0.tgz",
20
+ "integrity": "sha512-d0FoEL6cthqgsulqAc7fck6kRXrSRGMTqlKYbhSGSazHU6vB2GEpD737Mu0HZd7fMyBUdhR9sD1W2C9uQZ5p0Q==",
21
21
  "cpu": [
22
22
  "x64",
23
23
  "arm64"
@@ -35,22 +35,22 @@
35
35
  "node": ">= 18"
36
36
  },
37
37
  "optionalDependencies": {
38
- "@lancedb/lancedb-darwin-arm64": "0.29.0",
39
- "@lancedb/lancedb-linux-arm64-gnu": "0.29.0",
40
- "@lancedb/lancedb-linux-arm64-musl": "0.29.0",
41
- "@lancedb/lancedb-linux-x64-gnu": "0.29.0",
42
- "@lancedb/lancedb-linux-x64-musl": "0.29.0",
43
- "@lancedb/lancedb-win32-arm64-msvc": "0.29.0",
44
- "@lancedb/lancedb-win32-x64-msvc": "0.29.0"
38
+ "@lancedb/lancedb-darwin-arm64": "0.30.0",
39
+ "@lancedb/lancedb-linux-arm64-gnu": "0.30.0",
40
+ "@lancedb/lancedb-linux-arm64-musl": "0.30.0",
41
+ "@lancedb/lancedb-linux-x64-gnu": "0.30.0",
42
+ "@lancedb/lancedb-linux-x64-musl": "0.30.0",
43
+ "@lancedb/lancedb-win32-arm64-msvc": "0.30.0",
44
+ "@lancedb/lancedb-win32-x64-msvc": "0.30.0"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "apache-arrow": ">=15.0.0 <=18.1.0"
48
48
  }
49
49
  },
50
50
  "node_modules/@lancedb/lancedb-darwin-arm64": {
51
- "version": "0.29.0",
52
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.29.0.tgz",
53
- "integrity": "sha512-LzI8+2WKRBGmLbOBe/ojya1ihIGWD7lz9cKGOnCKZ4Wvnqm4RRhyL0r4ukAgmhgJGrVIbZj+juwgSs+NDErLcw==",
51
+ "version": "0.30.0",
52
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-darwin-arm64/-/lancedb-darwin-arm64-0.30.0.tgz",
53
+ "integrity": "sha512-x6dmsjRIv0xumELYnFAEfyFDxqcO/n4rHYCJvC27RbRez0UmbByi6OMTgbSoSTatrQSPRCL7JJSa5pwNeawnIg==",
54
54
  "cpu": [
55
55
  "arm64"
56
56
  ],
@@ -64,9 +64,9 @@
64
64
  }
65
65
  },
66
66
  "node_modules/@lancedb/lancedb-linux-arm64-gnu": {
67
- "version": "0.29.0",
68
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.29.0.tgz",
69
- "integrity": "sha512-y9hFXWVDJNxxpvR1XRrxSslFwIwBiXXDTwYQl/aKoIQ5irG1PdqKsnvCPGcIR01WhLlog12AGytby01lYuE7FA==",
67
+ "version": "0.30.0",
68
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-gnu/-/lancedb-linux-arm64-gnu-0.30.0.tgz",
69
+ "integrity": "sha512-CWUex7hRNiLkXFeTQlUGPyy5VktbXoUmQdZuiVCETZ6ggljEC7c7Qvzu2ge+jEZML+UE7tXL2lVC3klRFGczng==",
70
70
  "cpu": [
71
71
  "arm64"
72
72
  ],
@@ -80,9 +80,9 @@
80
80
  }
81
81
  },
82
82
  "node_modules/@lancedb/lancedb-linux-arm64-musl": {
83
- "version": "0.29.0",
84
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-musl/-/lancedb-linux-arm64-musl-0.29.0.tgz",
85
- "integrity": "sha512-fZ8Y4pzm/xfkSKhgZ289puaShckAOwd8s1mt5mHNDC8IuAaBmA6YxpDEQCItiDX1CNgsN+L7BFZWu11x+gsDPQ==",
83
+ "version": "0.30.0",
84
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-arm64-musl/-/lancedb-linux-arm64-musl-0.30.0.tgz",
85
+ "integrity": "sha512-2MHmAS4tKePNVbwfgDrjCFj6BVuAgXlL2c9iWk7TfcwL+jcSxo52LFx03O0+ArpVCF2sI6aoDqZaQNre5zMniQ==",
86
86
  "cpu": [
87
87
  "arm64"
88
88
  ],
@@ -96,9 +96,9 @@
96
96
  }
97
97
  },
98
98
  "node_modules/@lancedb/lancedb-linux-x64-gnu": {
99
- "version": "0.29.0",
100
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.29.0.tgz",
101
- "integrity": "sha512-1JLQohd/MKyAVVaO2unM66e80jm9F7CE1xCRlml+BNKUXReDI4m3Jg7DZLzor+jPs2+Si3dIwXa2Rzs/9plr5g==",
99
+ "version": "0.30.0",
100
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-gnu/-/lancedb-linux-x64-gnu-0.30.0.tgz",
101
+ "integrity": "sha512-0OpDNxsDE4OXD+PIFd7KdE42xhYIE+fZL+jCm1v3dTug4UEhumWBuSgbUIBP7t0yJZHwh62/QivVh/V1cPB2Bg==",
102
102
  "cpu": [
103
103
  "x64"
104
104
  ],
@@ -112,9 +112,9 @@
112
112
  }
113
113
  },
114
114
  "node_modules/@lancedb/lancedb-linux-x64-musl": {
115
- "version": "0.29.0",
116
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-musl/-/lancedb-linux-x64-musl-0.29.0.tgz",
117
- "integrity": "sha512-OZ3X0Cksi0e5e0ILvH/mGvuP3rQ2Rj/csNScExM3lroxlnl359TGQod+o4Z1hjSjLbPAe7gRax5Xwmu0/fh7AQ==",
115
+ "version": "0.30.0",
116
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-linux-x64-musl/-/lancedb-linux-x64-musl-0.30.0.tgz",
117
+ "integrity": "sha512-4Bq7VngQt+lyxIcu79EN8nYJs8gvUnrIT6I/t2MSlpG/BXWHZG2A+PRii1Zq4GCUlRTTG+RlieCv8CBGSPm8bw==",
118
118
  "cpu": [
119
119
  "x64"
120
120
  ],
@@ -128,9 +128,9 @@
128
128
  }
129
129
  },
130
130
  "node_modules/@lancedb/lancedb-win32-arm64-msvc": {
131
- "version": "0.29.0",
132
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-arm64-msvc/-/lancedb-win32-arm64-msvc-0.29.0.tgz",
133
- "integrity": "sha512-5BS/8sNmmqtuj4J5btaoG+mqhcrQZKMJQa4koc+VfzK6VW0KV465kkcXwPtyzgjF4SyionpO9SbUHZj6LHplYA==",
131
+ "version": "0.30.0",
132
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-arm64-msvc/-/lancedb-win32-arm64-msvc-0.30.0.tgz",
133
+ "integrity": "sha512-N2DQg2XBWZirn5jS6kRJUxF679t3sKcIxBwP9zY4Idq5OVLAj0yfLueWIKhYxv8en7pBFYWdgw5j9dTS7XajyQ==",
134
134
  "cpu": [
135
135
  "arm64"
136
136
  ],
@@ -144,9 +144,9 @@
144
144
  }
145
145
  },
146
146
  "node_modules/@lancedb/lancedb-win32-x64-msvc": {
147
- "version": "0.29.0",
148
- "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.29.0.tgz",
149
- "integrity": "sha512-cszoiRM0C1wYi7zbMTkQKhVLPWpsW4D3ZTVnukJrCW3faJ+GVyjkXCqpZebWgbq9/9XDNcS0/iJUbB/FbSUNSw==",
147
+ "version": "0.30.0",
148
+ "resolved": "https://registry.npmjs.org/@lancedb/lancedb-win32-x64-msvc/-/lancedb-win32-x64-msvc-0.30.0.tgz",
149
+ "integrity": "sha512-CDgN/ZmYqSlVX2nBJAF2PYEwqBBxotCVORjagmvrd0k5D7RBLlAQUEAR4gDMum2BpYsUkzdTYQpquLjRCVbwbQ==",
150
150
  "cpu": [
151
151
  "x64"
152
152
  ],
@@ -160,9 +160,9 @@
160
160
  }
161
161
  },
162
162
  "node_modules/@swc/helpers": {
163
- "version": "0.5.21",
164
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz",
165
- "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==",
163
+ "version": "0.5.23",
164
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz",
165
+ "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==",
166
166
  "license": "Apache-2.0",
167
167
  "dependencies": {
168
168
  "tslib": "^2.8.0"
@@ -181,12 +181,12 @@
181
181
  "license": "MIT"
182
182
  },
183
183
  "node_modules/@types/node": {
184
- "version": "20.19.41",
185
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.41.tgz",
186
- "integrity": "sha512-ECymXOukMnOoVkC2bb1Vc/w/836DXncOg5m8Xj1RH7xSHZJWNYY6Zh7EH477vcnD5egKNNfy2RpNOmuChhFPgQ==",
184
+ "version": "24.12.4",
185
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz",
186
+ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==",
187
187
  "license": "MIT",
188
188
  "dependencies": {
189
- "undici-types": "~6.21.0"
189
+ "undici-types": "~7.16.0"
190
190
  }
191
191
  },
192
192
  "node_modules/ansi-styles": {
@@ -205,18 +205,18 @@
205
205
  }
206
206
  },
207
207
  "node_modules/apache-arrow": {
208
- "version": "18.1.0",
209
- "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.1.0.tgz",
210
- "integrity": "sha512-v/ShMp57iBnBp4lDgV8Jx3d3Q5/Hac25FWmQ98eMahUiHPXcvwIMKJD0hBIgclm/FCG+LwPkAKtkRO1O/W0YGg==",
208
+ "version": "21.1.0",
209
+ "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-21.1.0.tgz",
210
+ "integrity": "sha512-kQrYLxhC+NTVVZ4CCzGF6L/uPVOzJmD1T3XgbiUnP7oTeVFOFgEUu6IKNwCDkpFoBVqDKQivlX4RUFqqnWFlEA==",
211
211
  "license": "Apache-2.0",
212
212
  "dependencies": {
213
213
  "@swc/helpers": "^0.5.11",
214
214
  "@types/command-line-args": "^5.2.3",
215
215
  "@types/command-line-usage": "^5.0.4",
216
- "@types/node": "^20.13.0",
217
- "command-line-args": "^5.2.1",
216
+ "@types/node": "^24.0.3",
217
+ "command-line-args": "^6.0.1",
218
218
  "command-line-usage": "^7.0.1",
219
- "flatbuffers": "^24.3.25",
219
+ "flatbuffers": "^25.1.24",
220
220
  "json-bignum": "^0.0.3",
221
221
  "tslib": "^2.6.2"
222
222
  },
@@ -225,12 +225,12 @@
225
225
  }
226
226
  },
227
227
  "node_modules/array-back": {
228
- "version": "3.1.0",
229
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
230
- "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
228
+ "version": "6.2.3",
229
+ "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
230
+ "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
231
231
  "license": "MIT",
232
232
  "engines": {
233
- "node": ">=6"
233
+ "node": ">=12.17"
234
234
  }
235
235
  },
236
236
  "node_modules/chalk": {
@@ -283,18 +283,26 @@
283
283
  "license": "MIT"
284
284
  },
285
285
  "node_modules/command-line-args": {
286
- "version": "5.2.1",
287
- "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
288
- "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
286
+ "version": "6.0.2",
287
+ "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.2.tgz",
288
+ "integrity": "sha512-AIjYVxrV9X752LmPDLbVYv8aMCuHPSLZJXEo2qo/xJfv+NYhaZ4sMSF01rM+gHPaMgvPM0l5D/F+Qx+i2WfSmQ==",
289
289
  "license": "MIT",
290
290
  "dependencies": {
291
- "array-back": "^3.1.0",
292
- "find-replace": "^3.0.0",
291
+ "array-back": "^6.2.3",
292
+ "find-replace": "^5.0.2",
293
293
  "lodash.camelcase": "^4.3.0",
294
- "typical": "^4.0.0"
294
+ "typical": "^7.3.0"
295
295
  },
296
296
  "engines": {
297
- "node": ">=4.0.0"
297
+ "node": ">=12.20"
298
+ },
299
+ "peerDependencies": {
300
+ "@75lb/nature": "latest"
301
+ },
302
+ "peerDependenciesMeta": {
303
+ "@75lb/nature": {
304
+ "optional": true
305
+ }
298
306
  }
299
307
  },
300
308
  "node_modules/command-line-usage": {
@@ -312,40 +320,27 @@
312
320
  "node": ">=12.20.0"
313
321
  }
314
322
  },
315
- "node_modules/command-line-usage/node_modules/array-back": {
316
- "version": "6.2.3",
317
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
318
- "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
319
- "license": "MIT",
320
- "engines": {
321
- "node": ">=12.17"
322
- }
323
- },
324
- "node_modules/command-line-usage/node_modules/typical": {
325
- "version": "7.3.0",
326
- "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
327
- "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
328
- "license": "MIT",
329
- "engines": {
330
- "node": ">=12.17"
331
- }
332
- },
333
323
  "node_modules/find-replace": {
334
- "version": "3.0.0",
335
- "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
336
- "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
324
+ "version": "5.0.2",
325
+ "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz",
326
+ "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==",
337
327
  "license": "MIT",
338
- "dependencies": {
339
- "array-back": "^3.0.1"
340
- },
341
328
  "engines": {
342
- "node": ">=4.0.0"
329
+ "node": ">=14"
330
+ },
331
+ "peerDependencies": {
332
+ "@75lb/nature": "latest"
333
+ },
334
+ "peerDependenciesMeta": {
335
+ "@75lb/nature": {
336
+ "optional": true
337
+ }
343
338
  }
344
339
  },
345
340
  "node_modules/flatbuffers": {
346
- "version": "24.12.23",
347
- "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.12.23.tgz",
348
- "integrity": "sha512-dLVCAISd5mhls514keQzmEG6QHmUUsNuWsb4tFafIUwvvgDjXhtfAYSKOzt5SWOy+qByV5pbsDZ+Vb7HUOBEdA==",
341
+ "version": "25.9.23",
342
+ "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-25.9.23.tgz",
343
+ "integrity": "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==",
349
344
  "license": "Apache-2.0"
350
345
  },
351
346
  "node_modules/has-flag": {
@@ -372,9 +367,9 @@
372
367
  "license": "MIT"
373
368
  },
374
369
  "node_modules/openai": {
375
- "version": "6.39.0",
376
- "resolved": "https://registry.npmjs.org/openai/-/openai-6.39.0.tgz",
377
- "integrity": "sha512-O61LIsimY3acVabwvomwFhwrnN36yvHY2quIfy9keEcFytGgWeV35yLHQ6NVMLSBxRpHmcg2yuhCnlu2HT4pLQ==",
370
+ "version": "6.39.1",
371
+ "resolved": "https://registry.npmjs.org/openai/-/openai-6.39.1.tgz",
372
+ "integrity": "sha512-z3dO9fEWOXBzlXynVb/xZ/tujzUjFWQWn3C0n0mw6Vo0zJTbEkaN4b2cLWjhJ6haJQx8LlREoafHRl+Gu/Hl+A==",
378
373
  "license": "Apache-2.0",
379
374
  "bin": {
380
375
  "openai": "bin/cli"
@@ -423,15 +418,6 @@
423
418
  "node": ">=12.17"
424
419
  }
425
420
  },
426
- "node_modules/table-layout/node_modules/array-back": {
427
- "version": "6.2.3",
428
- "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz",
429
- "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==",
430
- "license": "MIT",
431
- "engines": {
432
- "node": ">=12.17"
433
- }
434
- },
435
421
  "node_modules/tslib": {
436
422
  "version": "2.8.1",
437
423
  "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -439,24 +425,24 @@
439
425
  "license": "0BSD"
440
426
  },
441
427
  "node_modules/typebox": {
442
- "version": "1.1.38",
443
- "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.38.tgz",
444
- "integrity": "sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==",
428
+ "version": "1.1.39",
429
+ "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.39.tgz",
430
+ "integrity": "sha512-vj0afVtOfLQvv0GR0VxVagYxsXN64btL7Z9XoaG0ZggH3mruMMkOO6hXdgMsjCY3shZgEvooAWVeznQVs5c43w==",
445
431
  "license": "MIT"
446
432
  },
447
433
  "node_modules/typical": {
448
- "version": "4.0.0",
449
- "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
450
- "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
434
+ "version": "7.3.0",
435
+ "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
436
+ "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
451
437
  "license": "MIT",
452
438
  "engines": {
453
- "node": ">=8"
439
+ "node": ">=12.17"
454
440
  }
455
441
  },
456
442
  "node_modules/undici-types": {
457
- "version": "6.21.0",
458
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
459
- "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
443
+ "version": "7.16.0",
444
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
445
+ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
460
446
  "license": "MIT"
461
447
  },
462
448
  "node_modules/wordwrapjs": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/memory-lancedb",
3
- "version": "2026.5.28",
3
+ "version": "2026.5.31-beta.1",
4
4
  "description": "OpenClaw LanceDB-backed long-term memory plugin with auto-recall, auto-capture, and vector search.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,10 +8,10 @@
8
8
  },
9
9
  "type": "module",
10
10
  "dependencies": {
11
- "@lancedb/lancedb": "0.29.0",
12
- "apache-arrow": "18.1.0",
13
- "openai": "6.39.0",
14
- "typebox": "1.1.38"
11
+ "@lancedb/lancedb": "0.30.0",
12
+ "apache-arrow": "21.1.0",
13
+ "openai": "6.39.1",
14
+ "typebox": "1.1.39"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@openclaw/plugin-sdk": "workspace:*"
@@ -26,10 +26,10 @@
26
26
  "minHostVersion": ">=2026.4.10"
27
27
  },
28
28
  "compat": {
29
- "pluginApi": ">=2026.5.28"
29
+ "pluginApi": ">=2026.5.31-beta.1"
30
30
  },
31
31
  "build": {
32
- "openclawVersion": "2026.5.28"
32
+ "openclawVersion": "2026.5.31-beta.1"
33
33
  },
34
34
  "release": {
35
35
  "bundleRuntimeDependencies": false,
@@ -47,7 +47,7 @@
47
47
  "README.md"
48
48
  ],
49
49
  "peerDependencies": {
50
- "openclaw": ">=2026.5.28"
50
+ "openclaw": ">=2026.5.31-beta.1"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "openclaw": {