@remnic/plugin-openclaw 9.7.8 → 9.7.10
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 +10 -5
- package/openclaw.plugin.json +12 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -50,11 +50,16 @@ import { Type } from "@sinclair/typebox";
|
|
|
50
50
|
var temporal_index_exports = {};
|
|
51
51
|
__export(temporal_index_exports, {
|
|
52
52
|
clearIndexes: () => clearIndexes,
|
|
53
|
+
clearIndexesAsync: () => clearIndexesAsync,
|
|
53
54
|
deindexMemory: () => deindexMemory,
|
|
55
|
+
deindexMemoryAsync: () => deindexMemoryAsync,
|
|
54
56
|
extractTagsFromPrompt: () => extractTagsFromPrompt,
|
|
55
57
|
indexMemoriesBatch: () => indexMemoriesBatch,
|
|
58
|
+
indexMemoriesBatchAsync: () => indexMemoriesBatchAsync,
|
|
56
59
|
indexMemory: () => indexMemory,
|
|
60
|
+
indexMemoryAsync: () => indexMemoryAsync,
|
|
57
61
|
indexesExist: () => indexesExist,
|
|
62
|
+
indexesExistAsync: () => indexesExistAsync,
|
|
58
63
|
isTemporalQuery: () => isTemporalQuery,
|
|
59
64
|
queryByDateRangeAsync: () => queryByDateRangeAsync,
|
|
60
65
|
queryByTagsAsync: () => queryByTagsAsync,
|
|
@@ -63,7 +68,7 @@ __export(temporal_index_exports, {
|
|
|
63
68
|
resolvePromptTagPrefilterAsync: () => resolvePromptTagPrefilterAsync
|
|
64
69
|
});
|
|
65
70
|
__reExport(temporal_index_exports, temporal_index_star);
|
|
66
|
-
import { clearIndexes, deindexMemory, extractTagsFromPrompt, indexMemoriesBatch, indexMemory, indexesExist, isTemporalQuery, queryByDateRangeAsync, queryByTagsAsync, recencyWindowBoundsFromPrompt, recencyWindowFromPrompt, resolvePromptTagPrefilterAsync } from "@remnic/core/temporal-index";
|
|
71
|
+
import { clearIndexes, clearIndexesAsync, deindexMemory, deindexMemoryAsync, extractTagsFromPrompt, indexMemoriesBatch, indexMemoriesBatchAsync, indexMemory, indexMemoryAsync, indexesExist, indexesExistAsync, isTemporalQuery, queryByDateRangeAsync, queryByTagsAsync, recencyWindowBoundsFromPrompt, recencyWindowFromPrompt, resolvePromptTagPrefilterAsync } from "@remnic/core/temporal-index";
|
|
67
72
|
import * as temporal_index_star from "@remnic/core/temporal-index";
|
|
68
73
|
|
|
69
74
|
// ../../src/explicit-capture.ts
|
|
@@ -360,11 +365,11 @@ function registerTools(api, orchestrator) {
|
|
|
360
365
|
Content: ${candidate.content}`
|
|
361
366
|
);
|
|
362
367
|
}
|
|
363
|
-
if (!result.duplicateOf && orchestrator.config.queryAwareIndexingEnabled &&
|
|
368
|
+
if (!result.duplicateOf && orchestrator.config.queryAwareIndexingEnabled && await indexesExistAsync(orchestrator.config.memoryDir)) {
|
|
364
369
|
const storage = await orchestrator.getStorage(candidate.namespace);
|
|
365
370
|
const mem = await storage.getMemoryById(result.id).catch(() => null);
|
|
366
371
|
if (mem?.path && mem.frontmatter?.created) {
|
|
367
|
-
|
|
372
|
+
await indexMemoryAsync(orchestrator.config.memoryDir, mem.path, mem.frontmatter.created, mem.frontmatter.tags ?? []);
|
|
368
373
|
}
|
|
369
374
|
}
|
|
370
375
|
orchestrator.requestQmdMaintenanceForTool(maintenanceReason);
|
|
@@ -1940,10 +1945,10 @@ Best for:
|
|
|
1940
1945
|
`Promotion of ${srcNs}:${memoryId} \u2192 ${dstNs}:${newId} is queued for review (tombstone-blocked): no active promoted copy was created.`
|
|
1941
1946
|
);
|
|
1942
1947
|
}
|
|
1943
|
-
if (orchestrator.config.queryAwareIndexingEnabled &&
|
|
1948
|
+
if (orchestrator.config.queryAwareIndexingEnabled && await indexesExistAsync(orchestrator.config.memoryDir)) {
|
|
1944
1949
|
const promoted = await dst.getMemoryById(newId).catch(() => null);
|
|
1945
1950
|
if (promoted?.path && promoted.frontmatter?.created) {
|
|
1946
|
-
|
|
1951
|
+
await indexMemoryAsync(orchestrator.config.memoryDir, promoted.path, promoted.frontmatter.created, promoted.frontmatter.tags ?? []);
|
|
1947
1952
|
}
|
|
1948
1953
|
}
|
|
1949
1954
|
return toolResult(`Promoted ${srcNs}:${memoryId} \u2192 ${dstNs}:${newId}`);
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-remnic",
|
|
3
3
|
"name": "Remnic OpenClaw Plugin",
|
|
4
|
-
"version": "9.7.
|
|
4
|
+
"version": "9.7.10",
|
|
5
5
|
"kind": "memory",
|
|
6
6
|
"description": "Local semantic memory for OpenClaw with bundled Remnic core runtime. Requires plugins.slots.memory set to this plugin id for hooks to fire.",
|
|
7
7
|
"setup": {
|
|
@@ -4298,6 +4298,17 @@
|
|
|
4298
4298
|
"default": true,
|
|
4299
4299
|
"description": "When true, recall multiplies candidate scores by the Memory Worth factor (mw_success / mw_fail counters, see issue #560). Memories with a history of failed sessions sink; neutral/uninstrumented memories are untouched. PR 5 bench: +0.60 precision@5 vs baseline on all 50 seeded cases. Operators can opt out with false."
|
|
4300
4300
|
},
|
|
4301
|
+
"hotMemoriesCacheEnabled": {
|
|
4302
|
+
"type": "boolean",
|
|
4303
|
+
"default": true,
|
|
4304
|
+
"description": "Serve StorageManager.readAllMemories() from a version-keyed in-process cache of the full parsed corpus (issue #1902), eliminating repeated full-corpus disk scans on the recall hot path. Cross-process coherence is preserved by the on-disk corpus version sentinel; writes patch the cache in place. Set false to force disk scans on memory-constrained hosts (behavior then matches the pre-#1902 scan path)."
|
|
4305
|
+
},
|
|
4306
|
+
"hotMemoriesCacheTtlMs": {
|
|
4307
|
+
"type": "number",
|
|
4308
|
+
"minimum": 0,
|
|
4309
|
+
"default": 60000,
|
|
4310
|
+
"description": "Max age (ms) a version-keyed hot-memories cache entry is served before a fresh disk scan (issue #1902). The corpus version sentinel gives immediate coherence for writers that go through StorageManager or the corpus-bump helper, but direct filesystem edits (manual, git checkout, external tools) don't bump it; this TTL bounds how long such an edit can be stale. Default 60000 (60s). Set 0 to disable the TTL (version invalidation only; max performance for pure-daemon deployments with no external edits)."
|
|
4311
|
+
},
|
|
4301
4312
|
"recallMemoryWorthHalfLifeMs": {
|
|
4302
4313
|
"type": "number",
|
|
4303
4314
|
"minimum": 0,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/plugin-openclaw",
|
|
3
|
-
"version": "9.7.
|
|
3
|
+
"version": "9.7.10",
|
|
4
4
|
"description": "OpenClaw adapter for Remnic memory with bundled @remnic/core runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@sinclair/typebox": "^0.34.0",
|
|
74
74
|
"openai": "^6.0.0",
|
|
75
|
-
"@remnic/core": "^9.7.
|
|
75
|
+
"@remnic/core": "^9.7.10"
|
|
76
76
|
},
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"openclaw": ">=2026.4.1 || 2026.4.7-1 || 2026.4.9-beta.1 || 2026.4.11-beta.1 || 2026.4.12-beta.1 || 2026.4.14-beta.1 || 2026.4.15-beta.1 || 2026.4.15-beta.2 || 2026.4.19-beta.1 || 2026.4.19-beta.2 || 2026.4.20-beta.1 || 2026.4.20-beta.2 || 2026.4.22-beta.1 || 2026.4.23-beta.1 || 2026.4.23-beta.2 || 2026.4.23-beta.3 || 2026.4.23-beta.4 || 2026.4.23-beta.5 || 2026.4.23-beta.6 || 2026.4.24-beta.1 || 2026.4.24-beta.2 || 2026.4.24-beta.3 || 2026.4.24-beta.4 || 2026.4.24-beta.5 || 2026.4.24-beta.6 || 2026.4.25-beta.1 || 2026.4.25-beta.2 || 2026.4.25-beta.3 || 2026.4.25-beta.4 || 2026.4.25-beta.5 || 2026.4.25-beta.6 || 2026.4.25-beta.7 || 2026.4.25-beta.8 || 2026.4.25-beta.9 || 2026.4.25-beta.10 || 2026.4.25-beta.11 || 2026.4.26-beta.1 || 2026.4.27-beta.1 || 2026.4.29-beta.1 || 2026.4.29-beta.2 || 2026.4.29-beta.3 || 2026.4.29-beta.4 || 2026.4.30-beta.1 || 2026.5.2-beta.1 || 2026.5.2-beta.2 || 2026.5.2-beta.3 || 2026.5.3-beta.1 || 2026.5.3-beta.2 || 2026.5.3-beta.3 || 2026.5.3-beta.4 || 2026.5.3-1 || 2026.5.4-beta.1 || 2026.5.4-beta.2 || 2026.5.4-beta.3 || 2026.5.5-beta.1 || 2026.5.5-beta.2 || 2026.5.6-beta.1 || 2026.5.7-beta.1 || 2026.5.9-beta.1 || 2026.5.10-beta.1 || 2026.5.10-beta.2 || 2026.5.10-beta.3 || 2026.5.10-beta.4 || 2026.5.10-beta.5 || 2026.5.10-beta.6 || 2026.5.12-beta.1 || 2026.5.12-beta.2 || 2026.5.12-beta.3 || 2026.5.12-beta.4 || 2026.5.12-beta.5 || 2026.5.12-beta.6 || 2026.5.12-beta.7 || 2026.5.12-beta.8 || 2026.5.14-beta.1 || 2026.5.14-beta.2 || 2026.5.16-beta.1 || 2026.5.16-beta.2 || 2026.5.16-beta.3 || 2026.5.16-beta.4 || 2026.5.16-beta.5 || 2026.5.16-beta.6 || 2026.5.16-beta.7 || 2026.5.18-beta.1 || 2026.5.19-alpha.1 || 2026.5.19-beta.1 || 2026.5.19-beta.2 || 2026.5.20-beta.1 || 2026.5.20-beta.2 || 2026.5.21-alpha.1 || 2026.5.21-beta.1 || 2026.5.22-beta.1 || 2026.5.23-alpha.1 || 2026.5.24-alpha.1 || 2026.5.24-beta.1 || 2026.5.24-beta.2 || 2026.5.25-alpha.1 || 2026.5.25-alpha.2 || 2026.5.25-beta.1 || 2026.5.26-beta.1 || 2026.5.26-beta.2 || 2026.5.27-alpha.1 || 2026.5.27-beta.1 || 2026.5.28-alpha.1 || 2026.5.28-beta.1 || 2026.5.28-beta.2 || 2026.5.28-beta.3 || 2026.5.28-beta.4 || 2026.5.29-alpha.1 || 2026.5.30-beta.1 || 2026.5.30-beta.2 || 2026.5.31-alpha.1 || 2026.5.31-beta.1 || 2026.5.31-beta.2 || 2026.5.31-beta.3 || 2026.5.31-beta.4 || 2026.6.1-alpha.1 || 2026.6.1-alpha.2 || 2026.6.1-alpha.3 || 2026.6.1-beta.1 || 2026.6.1-beta.2 || 2026.6.1-beta.3 || 2026.6.2-alpha.1 || 2026.6.2-alpha.2 || 2026.6.2-beta.1 || 2026.6.3-alpha.1 || 2026.6.4-alpha.1 || 2026.6.5-alpha.1 || 2026.6.5-alpha.2 || 2026.6.5-beta.1 || 2026.6.5-beta.2 || 2026.6.5-beta.3 || 2026.6.5-beta.5 || 2026.6.5-beta.6 || 2026.6.6-alpha.1 || 2026.6.6-beta.2 || 2026.6.6 || 2026.6.7-beta.1 || 2026.6.8-beta.1 || 2026.6.8-beta.2 || 2026.6.9-beta.1 || 2026.6.10-beta.1 || 2026.6.10-beta.2 || 2026.6.11-beta.1"
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"acorn": "^8.16.0",
|
|
83
83
|
"tsup": "^8.5.1",
|
|
84
84
|
"typescript": "^5.9.3",
|
|
85
|
-
"@remnic/core": "^9.7.
|
|
85
|
+
"@remnic/core": "^9.7.10"
|
|
86
86
|
},
|
|
87
87
|
"license": "MIT",
|
|
88
88
|
"repository": {
|