@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 +51 -2
- package/dist/memory-runtime.js +1 -1
- package/docs/features.md +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
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
|
|
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.");
|
package/dist/memory-runtime.js
CHANGED
|
@@ -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. |
|
package/openclaw.plugin.json
CHANGED