@xdarkicex/openclaw-memory-libravdb 1.4.28 → 1.4.30

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/cli.js CHANGED
@@ -31,7 +31,8 @@ export function registerMemoryCli(api, runtime, cfg, logger = console) {
31
31
  .description("Show sidecar health, record counts, and active thresholds")
32
32
  .option("--agent <id>", "Agent id")
33
33
  .option("--json", "Print JSON")
34
- .option("--deep", "Probe daemon readiness")
34
+ .option("--deep", "Probe authored collection search health")
35
+ .option("--index", "Refresh delegated index state before printing status")
35
36
  .option("--fix", "Accepted for OpenClaw memory CLI compatibility")
36
37
  .option("--verbose", "Verbose logging")
37
38
  .action(async (opts) => {
@@ -142,8 +143,12 @@ async function runStatus(runtime, cfg, logger, opts = {}) {
142
143
  try {
143
144
  const rpc = await runtime.getRpc();
144
145
  const status = await rpc.call("status", {});
146
+ const deep = opts.deep ? await runDeepStatusProbe(rpc) : undefined;
145
147
  if (opts.json) {
146
- console.log(JSON.stringify({ status }, null, 2));
148
+ console.log(JSON.stringify({ status, ...(deep ? { deep } : {}) }, null, 2));
149
+ if (deep && !deep.ok) {
150
+ process.exitCode = 1;
151
+ }
147
152
  return;
148
153
  }
149
154
  console.table({
@@ -154,8 +159,12 @@ async function runStatus(runtime, cfg, logger, opts = {}) {
154
159
  "Gate threshold": status.gatingThreshold ?? cfg.ingestionGateThreshold ?? 0.35,
155
160
  "Abstractive model": status.abstractiveReady ? "ready" : "not provisioned",
156
161
  "Embedding profile": status.embeddingProfile ?? "unknown",
162
+ ...(deep ? formatDeepStatusTableRows(deep) : {}),
157
163
  Message: status.message ?? (status.ok ? "ok" : "unavailable"),
158
164
  });
165
+ if (deep && !deep.ok) {
166
+ process.exitCode = 1;
167
+ }
159
168
  }
160
169
  catch (error) {
161
170
  logger.error(`LibraVDB status unavailable: ${formatError(error)}`);
@@ -183,6 +192,46 @@ async function runStatus(runtime, cfg, logger, opts = {}) {
183
192
  process.exitCode = 1;
184
193
  }
185
194
  }
195
+ const DEEP_STATUS_COLLECTIONS = ["authored:hard", "authored:soft", "authored:variant"];
196
+ async function runDeepStatusProbe(rpc) {
197
+ const probes = [];
198
+ for (const collection of DEEP_STATUS_COLLECTIONS) {
199
+ try {
200
+ const result = await rpc.call("search_text", {
201
+ collection,
202
+ text: "memory",
203
+ k: 1,
204
+ });
205
+ probes.push({
206
+ ok: true,
207
+ collection,
208
+ resultCount: Array.isArray(result.results) ? result.results.length : 0,
209
+ });
210
+ }
211
+ catch (error) {
212
+ probes.push({
213
+ ok: false,
214
+ collection,
215
+ error: formatError(error),
216
+ });
217
+ }
218
+ }
219
+ return {
220
+ ok: probes.every((probe) => probe.ok),
221
+ probes,
222
+ };
223
+ }
224
+ function formatDeepStatusTableRows(deep) {
225
+ const rows = {
226
+ "Deep probe": deep.ok ? "ok" : "failed",
227
+ };
228
+ for (const probe of deep.probes) {
229
+ rows[`Probe ${probe.collection}`] = probe.ok
230
+ ? `ok (${probe.resultCount ?? 0} hits)`
231
+ : `failed: ${probe.error ?? "unknown error"}`;
232
+ }
233
+ return rows;
234
+ }
186
235
  async function runIndex(runtime, _cfg, opts, logger, params = {}) {
187
236
  if (!opts?.force) {
188
237
  logger.error("LibraVDB index rebuild requires --force. This re-embeds all stored documents with the current model and may be slow.");
@@ -65,7 +65,7 @@ function createMemorySearchManager(getRpc, cfg, defaults, initialStatus) {
65
65
  const k = normalizePositiveInteger(params.k, params.limit, params.maxResults, params.topK, cfg.topK, 8);
66
66
  const minScore = normalizeNumber(params.minScore);
67
67
  const rpc = await getRpc();
68
- const result = dreamQuery.active
68
+ const result = dreamQuery.active && cfg.crossSessionRecall !== false
69
69
  ? await rpc.call("search_text", {
70
70
  collection: resolveDreamCollection(userId),
71
71
  text: queryText,
package/docs/features.md CHANGED
@@ -118,7 +118,7 @@ CLI API.
118
118
 
119
119
  | Command | Purpose |
120
120
  |---|---|
121
- | `openclaw memory status` | Show sidecar health, counts, active thresholds, and model readiness. |
121
+ | `openclaw memory status` | Show sidecar health, counts, active thresholds, and model readiness. Use `--deep` to probe authored collection search health. |
122
122
  | `openclaw memory index --force` | Refresh delegated sidecar index state for OpenClaw memory CLI compatibility. |
123
123
  | `openclaw memory search "query"` | Search LibraVDB memory through the active memory runtime bridge. |
124
124
  | `openclaw memory export --user-id <userId>` | Stream stored memories as newline-delimited JSON for one durable namespace. |
@@ -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.4.28",
5
+ "version": "1.4.30",
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.4.28",
3
+ "version": "1.4.30",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",