@xdarkicex/openclaw-memory-libravdb 1.6.32 → 1.7.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
@@ -176,6 +176,22 @@ openclaw memory journal --limit 50
176
176
  openclaw memory dream-promote --user-id <userId> --dream-file ~/DREAMS.md
177
177
  ```
178
178
 
179
+ ### Vector Service CLI (libravdbd v1.5.0+)
180
+
181
+ ```bash
182
+ # Service health and status
183
+ libravdbd status # tenants, cache, DB sizes
184
+ libravdbd health # OK/UNHEALTHY
185
+
186
+ # Search tenant memory (same collections memory_search queries)
187
+ libravdbd search --tenant <key> -k 10 "query"
188
+ libravdbd search --tenant <key> --session <id> -k 10 "query"
189
+
190
+ # Tenant management
191
+ libravdbd tenant evict <key> # force-close a tenant DB
192
+ libravdbd migrate # run pending DB migrations
193
+ ```
194
+
179
195
  Use [Install](./docs/install.md) for service lifecycle commands and
180
196
  [Uninstall](./docs/uninstall.md) for safe shutdown and removal.
181
197
 
@@ -1297,6 +1297,9 @@ export function buildContextEngineFactory(runtime, cfg, logger = console) {
1297
1297
  systemPromptAddition: appendSystemPromptAddition(enforced.systemPromptAddition, section.text),
1298
1298
  estimatedTokens: enforced.estimatedTokens + section.tokens,
1299
1299
  };
1300
+ logger.info?.(`LibraVDB predictive context injected sessionId=${sessionId} ` +
1301
+ `items=${section.injectedCount}/${predictions.length} ` +
1302
+ `tokens=${section.tokens}`);
1300
1303
  }
1301
1304
  }
1302
1305
  enforced = enforceTokenBudgetInvariant(enforced, args.tokenBudget);
@@ -1426,6 +1429,11 @@ export function buildContextEngineFactory(runtime, cfg, logger = console) {
1426
1429
  predictiveContextCache.delete(oldest);
1427
1430
  }
1428
1431
  predictiveContextCache.set(sessionId, predictions);
1432
+ logger.info?.(`LibraVDB predictive graph returned predictions sessionId=${sessionId} ` +
1433
+ `count=${predictions.length}`);
1434
+ }
1435
+ else {
1436
+ logger.info?.(`LibraVDB predictive graph returned no predictions sessionId=${sessionId}`);
1429
1437
  }
1430
1438
  return result;
1431
1439
  }
package/dist/index.js CHANGED
@@ -27807,6 +27807,9 @@ function buildContextEngineFactory(runtime, cfg, logger = console) {
27807
27807
  ),
27808
27808
  estimatedTokens: enforced.estimatedTokens + section.tokens
27809
27809
  };
27810
+ logger.info?.(
27811
+ `LibraVDB predictive context injected sessionId=${sessionId} items=${section.injectedCount}/${predictions.length} tokens=${section.tokens}`
27812
+ );
27810
27813
  }
27811
27814
  }
27812
27815
  enforced = enforceTokenBudgetInvariant(enforced, args.tokenBudget);
@@ -27927,6 +27930,13 @@ function buildContextEngineFactory(runtime, cfg, logger = console) {
27927
27930
  if (oldest !== void 0) predictiveContextCache.delete(oldest);
27928
27931
  }
27929
27932
  predictiveContextCache.set(sessionId, predictions);
27933
+ logger.info?.(
27934
+ `LibraVDB predictive graph returned predictions sessionId=${sessionId} count=${predictions.length}`
27935
+ );
27936
+ } else {
27937
+ logger.info?.(
27938
+ `LibraVDB predictive graph returned no predictions sessionId=${sessionId}`
27939
+ );
27930
27940
  }
27931
27941
  return result;
27932
27942
  } catch (error2) {
@@ -34754,9 +34764,12 @@ function isOpenClawMemoryFile(filePath) {
34754
34764
  // src/memory-provider.ts
34755
34765
  var MEMORY_PROMPT_HEADER = [
34756
34766
  "## Memory",
34757
- "LibraVDB persistent memory is configured. When asked about past",
34758
- "conversations, facts, preferences, decisions, or anything a user",
34759
- "might have told you before \u2014 actively retrieve it.",
34767
+ "LibraVDB persistent memory is configured. Every turn is auto-ingested",
34768
+ "into the vector store \u2014 you do not need to explicitly save anything.",
34769
+ "When asked about past conversations, facts, preferences, decisions,",
34770
+ "or anything the user might have told you before, call `memory_search`",
34771
+ "once per user question. Do not answer from memory until you have",
34772
+ "called it. Once you have results, use them \u2014 do not re-call.",
34760
34773
  ""
34761
34774
  ];
34762
34775
  function buildToolGuidance(availableTools) {
@@ -34764,9 +34777,10 @@ function buildToolGuidance(availableTools) {
34764
34777
  return [];
34765
34778
  }
34766
34779
  return [
34767
- "Call `memory_search` for prior turns, remembered facts, earliest interactions,",
34768
- "and channel history. Do not answer memory questions from prior transcript",
34769
- "claims or stale `memory_search` results \u2014 perform a fresh search every time.",
34780
+ "Call `memory_search` once per user question for prior turns, remembered",
34781
+ "facts, earliest interactions, and channel history. Do not answer memory",
34782
+ "questions from prior transcript claims \u2014 perform a search every time.",
34783
+ "After receiving results, use them directly; do not re-call in the same turn.",
34770
34784
  "For earliest or oldest questions, request enough results and compare timestamps.",
34771
34785
  ...availableTools.has("memory_get") ? ["After a `memory_search` hit, call `memory_get` when exact wording or more context is needed."] : [],
34772
34786
  "LibraVDB memory is vector-backed and retrieved through tools, not files.",
@@ -34860,7 +34874,7 @@ function createLibraVdbMemoryTools(getClient, cfg, logger = console) {
34860
34874
  return {
34861
34875
  name: "memory_search",
34862
34876
  label: "Memory Search",
34863
- description: "Mandatory fresh LibraVDB recall step: semantically search durable memory and session recall before answering questions about prior work, decisions, dates, people, preferences, todos, or history. Do not reuse prior transcript claims or older memory_search results for a new memory lookup. For earliest/oldest questions, request enough results and compare timestamps in snippets. If response has disabled=true, memory retrieval is unavailable and should be surfaced to the user.",
34877
+ description: "Search LibraVDB durable memory and session recall for prior work, decisions, dates, people, preferences, todos, or history. Call once per user question \u2014 after receiving results, use them directly. Do not re-call in the same turn. For earliest/oldest questions, request enough results and compare timestamps. If disabled=true, memory is unavailable.",
34864
34878
  parameters: MEMORY_SEARCH_SCHEMA,
34865
34879
  execute: async (_toolCallId, rawParams) => {
34866
34880
  const params = asToolParamsRecord(rawParams);
@@ -1,8 +1,11 @@
1
1
  const MEMORY_PROMPT_HEADER = [
2
2
  "## Memory",
3
- "LibraVDB persistent memory is configured. When asked about past",
4
- "conversations, facts, preferences, decisions, or anything a user",
5
- "might have told you before actively retrieve it.",
3
+ "LibraVDB persistent memory is configured. Every turn is auto-ingested",
4
+ "into the vector store you do not need to explicitly save anything.",
5
+ "When asked about past conversations, facts, preferences, decisions,",
6
+ "or anything the user might have told you before, call `memory_search`",
7
+ "once per user question. Do not answer from memory until you have",
8
+ "called it. Once you have results, use them — do not re-call.",
6
9
  "",
7
10
  ];
8
11
  function buildToolGuidance(availableTools) {
@@ -10,9 +13,10 @@ function buildToolGuidance(availableTools) {
10
13
  return [];
11
14
  }
12
15
  return [
13
- "Call `memory_search` for prior turns, remembered facts, earliest interactions,",
14
- "and channel history. Do not answer memory questions from prior transcript",
15
- "claims or stale `memory_search` results — perform a fresh search every time.",
16
+ "Call `memory_search` once per user question for prior turns, remembered",
17
+ "facts, earliest interactions, and channel history. Do not answer memory",
18
+ "questions from prior transcript claims — perform a search every time.",
19
+ "After receiving results, use them directly; do not re-call in the same turn.",
16
20
  "For earliest or oldest questions, request enough results and compare timestamps.",
17
21
  ...(availableTools.has("memory_get")
18
22
  ? ["After a `memory_search` hit, call `memory_get` when exact wording or more context is needed."]
@@ -80,7 +80,7 @@ export function createLibraVdbMemoryTools(getClient, cfg, logger = console) {
80
80
  return {
81
81
  name: "memory_search",
82
82
  label: "Memory Search",
83
- description: "Mandatory fresh LibraVDB recall step: semantically search durable memory and session recall before answering questions about prior work, decisions, dates, people, preferences, todos, or history. Do not reuse prior transcript claims or older memory_search results for a new memory lookup. For earliest/oldest questions, request enough results and compare timestamps in snippets. If response has disabled=true, memory retrieval is unavailable and should be surfaced to the user.",
83
+ description: "Search LibraVDB durable memory and session recall for prior work, decisions, dates, people, preferences, todos, or history. Call once per user question after receiving results, use them directly. Do not re-call in the same turn. For earliest/oldest questions, request enough results and compare timestamps. If disabled=true, memory is unavailable.",
84
84
  parameters: MEMORY_SEARCH_SCHEMA,
85
85
  execute: async (_toolCallId, rawParams) => {
86
86
  const params = asToolParamsRecord(rawParams);
@@ -2,7 +2,7 @@
2
2
  "id": "libravdb-memory",
3
3
  "name": "LibraVDB Memory",
4
4
  "description": "Persistent vector memory with three-tier hybrid scoring",
5
- "version": "1.6.32",
5
+ "version": "1.7.0",
6
6
  "kind": [
7
7
  "memory",
8
8
  "context-engine"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xdarkicex/openclaw-memory-libravdb",
3
- "version": "1.6.32",
3
+ "version": "1.7.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",