openclaw-cortex-memory 0.1.0-Alpha.30 → 0.1.0-Alpha.32
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/LICENSE +21 -0
- package/README.md +46 -12
- package/SIGNATURE.md +7 -0
- package/SKILL.md +18 -3
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +148 -6
- package/dist/index.js.map +1 -1
- package/dist/openclaw.plugin.json +120 -4
- package/dist/src/engine/memory_engine.d.ts +5 -1
- package/dist/src/engine/memory_engine.d.ts.map +1 -1
- package/dist/src/engine/ts_engine.d.ts +116 -0
- package/dist/src/engine/ts_engine.d.ts.map +1 -1
- package/dist/src/engine/ts_engine.js +417 -102
- package/dist/src/engine/ts_engine.js.map +1 -1
- package/dist/src/engine/types.d.ts +17 -0
- package/dist/src/engine/types.d.ts.map +1 -1
- package/dist/src/graph/ontology.d.ts +23 -1
- package/dist/src/graph/ontology.d.ts.map +1 -1
- package/dist/src/graph/ontology.js +743 -70
- package/dist/src/graph/ontology.js.map +1 -1
- package/dist/src/quality/llm_output_validator.d.ts +20 -2
- package/dist/src/quality/llm_output_validator.d.ts.map +1 -1
- package/dist/src/quality/llm_output_validator.js +296 -41
- package/dist/src/quality/llm_output_validator.js.map +1 -1
- package/dist/src/store/archive_store.d.ts +8 -0
- package/dist/src/store/archive_store.d.ts.map +1 -1
- package/dist/src/store/archive_store.js +244 -84
- package/dist/src/store/archive_store.js.map +1 -1
- package/dist/src/store/graph_memory_store.d.ts +72 -2
- package/dist/src/store/graph_memory_store.d.ts.map +1 -1
- package/dist/src/store/graph_memory_store.js +723 -50
- package/dist/src/store/graph_memory_store.js.map +1 -1
- package/dist/src/store/read_store.d.ts +3 -0
- package/dist/src/store/read_store.d.ts.map +1 -1
- package/dist/src/store/read_store.js +1004 -209
- package/dist/src/store/read_store.js.map +1 -1
- package/dist/src/store/vector_store.d.ts +1 -0
- package/dist/src/store/vector_store.d.ts.map +1 -1
- package/dist/src/store/vector_store.js +1 -0
- package/dist/src/store/vector_store.js.map +1 -1
- package/dist/src/store/write_store.d.ts +2 -0
- package/dist/src/store/write_store.d.ts.map +1 -1
- package/dist/src/store/write_store.js +45 -3
- package/dist/src/store/write_store.js.map +1 -1
- package/dist/src/sync/session_sync.d.ts +20 -1
- package/dist/src/sync/session_sync.d.ts.map +1 -1
- package/dist/src/sync/session_sync.js +1810 -161
- package/dist/src/sync/session_sync.js.map +1 -1
- package/dist/src/wiki/wiki_linter.d.ts +25 -0
- package/dist/src/wiki/wiki_linter.d.ts.map +1 -0
- package/dist/src/wiki/wiki_linter.js +268 -0
- package/dist/src/wiki/wiki_linter.js.map +1 -0
- package/dist/src/wiki/wiki_logger.d.ts +10 -0
- package/dist/src/wiki/wiki_logger.d.ts.map +1 -0
- package/dist/src/wiki/wiki_logger.js +78 -0
- package/dist/src/wiki/wiki_logger.js.map +1 -0
- package/dist/src/wiki/wiki_maintainer.d.ts +36 -0
- package/dist/src/wiki/wiki_maintainer.d.ts.map +1 -0
- package/dist/src/wiki/wiki_maintainer.js +38 -0
- package/dist/src/wiki/wiki_maintainer.js.map +1 -0
- package/dist/src/wiki/wiki_projector.d.ts +33 -0
- package/dist/src/wiki/wiki_projector.d.ts.map +1 -0
- package/dist/src/wiki/wiki_projector.js +633 -0
- package/dist/src/wiki/wiki_projector.js.map +1 -0
- package/dist/src/wiki/wiki_queue.d.ts +29 -0
- package/dist/src/wiki/wiki_queue.d.ts.map +1 -0
- package/dist/src/wiki/wiki_queue.js +137 -0
- package/dist/src/wiki/wiki_queue.js.map +1 -0
- package/openclaw.plugin.json +120 -4
- package/package.json +8 -4
- package/schema/graph.schema.yaml +188 -33
- package/skills/cortex-memory/SKILL.md +49 -0
- package/skills/cortex-memory/references/agent-manual.md +115 -0
- package/skills/cortex-memory/references/configuration.md +92 -0
- package/skills/cortex-memory/references/publish-checklist.md +46 -0
- package/skills/cortex-memory/references/system-prompt-template.md +27 -0
- package/skills/cortex-memory/references/tools.md +181 -0
- package/skills/cortex-memory/scripts/smoke-check.ps1 +56 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 deki18
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -28,6 +28,8 @@ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系
|
|
|
28
28
|
- 图谱独立层:`graph/memory.jsonl` 独立于 archive 文本层
|
|
29
29
|
- 关系追溯:每条关系可追溯 `source_event_id`
|
|
30
30
|
- 关系查询:`query_graph` 支持方向、关系类型、路径搜索
|
|
31
|
+
- 冲突治理:单值事实冲突进入队列,支持人工 `accept/reject` 闭环
|
|
32
|
+
- 可视化导出:`export_graph_view` 输出状态化图谱快照(含来源证据)
|
|
31
33
|
- 质量门禁:`graphQualityMode` 支持 `off/warn/strict`
|
|
32
34
|
|
|
33
35
|
### 4) 规则演进
|
|
@@ -38,6 +40,7 @@ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系
|
|
|
38
40
|
### 5) 运维诊断
|
|
39
41
|
- `diagnostics`:模型连通、层级状态、字段对齐检查
|
|
40
42
|
- `backfill_embeddings`:支持 `incremental / vector_only / full`
|
|
43
|
+
- `lint_memory_wiki`:Wiki/图谱一致性巡检与修复建议
|
|
41
44
|
- 完整状态文件:便于快速定位同步、回填、质量问题
|
|
42
45
|
|
|
43
46
|
---
|
|
@@ -47,6 +50,10 @@ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系
|
|
|
47
50
|
- `search_memory`
|
|
48
51
|
- `store_event`
|
|
49
52
|
- `query_graph`
|
|
53
|
+
- `export_graph_view`
|
|
54
|
+
- `lint_memory_wiki`
|
|
55
|
+
- `list_graph_conflicts`
|
|
56
|
+
- `resolve_graph_conflict`
|
|
50
57
|
- `get_hot_context`
|
|
51
58
|
- `get_auto_context`
|
|
52
59
|
- `reflect_memory`
|
|
@@ -62,9 +69,16 @@ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系
|
|
|
62
69
|
| `search_memory` | `query`, `top_k` |
|
|
63
70
|
| `store_event` | `summary`, `entities`, `entity_types`, `outcome`, `relations` |
|
|
64
71
|
| `query_graph` | `entity`, `rel`, `dir`, `path_to`, `max_depth` |
|
|
72
|
+
| `export_graph_view` | `write_snapshot` |
|
|
73
|
+
| `lint_memory_wiki` | 无 |
|
|
74
|
+
| `list_graph_conflicts` | `status`, `limit` |
|
|
75
|
+
| `resolve_graph_conflict` | `conflict_id`, `action`, `note` |
|
|
65
76
|
| `get_hot_context` | `limit` |
|
|
66
77
|
| `get_auto_context` | `include_hot` |
|
|
78
|
+
| `reflect_memory` | 无 |
|
|
79
|
+
| `sync_memory` | 无 |
|
|
67
80
|
| `backfill_embeddings` | `layer`, `batch_size`, `max_retries`, `retry_failed_only`, `rebuild_mode` |
|
|
81
|
+
| `diagnostics` | 无 |
|
|
68
82
|
| `delete_memory` | `memory_id` |
|
|
69
83
|
|
|
70
84
|
---
|
|
@@ -93,6 +107,8 @@ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系
|
|
|
93
107
|
14. 调用任意 Cortex Memory 工具前,先确认当前运行环境可见该工具;若工具不可见,必须立即报告“当前 lane 不可用”,不得虚构执行结果。
|
|
94
108
|
15. `sync_memory` 属于关键路径任务:执行前后应避免并发重复触发;若已有同任务进行中,复用当前结果或等待完成。
|
|
95
109
|
16. 当用户明确请求 Cortex Memory 任务(如 `sync_memory` / `search_memory` / `store_event`)时,禁止切换到无关流程(如心跳巡检、日报、闲聊任务);若被系统任务打断,先完成用户请求再处理后台任务。
|
|
110
|
+
17. 当 `query_graph` 返回 `conflict_hint` 时,不得静默覆盖冲突事实;应先调用 `list_graph_conflicts`,并与用户确认后再 `resolve_graph_conflict`。
|
|
111
|
+
18. 需要解释图谱状态分布或排查投影异常时,优先调用 `export_graph_view` 与 `lint_memory_wiki`。
|
|
96
112
|
|
|
97
113
|
---
|
|
98
114
|
|
|
@@ -109,23 +125,23 @@ openclaw plugins enable openclaw-cortex-memory
|
|
|
109
125
|
如果 `clawhub:` 安装出现 `fetch failed`,可改用 npm 包本地安装(推荐兜底):
|
|
110
126
|
|
|
111
127
|
```bash
|
|
112
|
-
npm pack openclaw-cortex-memory@0.1.0-Alpha.
|
|
113
|
-
openclaw plugins install ./openclaw-cortex-memory-0.1.0-Alpha.
|
|
128
|
+
npm pack openclaw-cortex-memory@0.1.0-Alpha.32
|
|
129
|
+
openclaw plugins install ./openclaw-cortex-memory-0.1.0-Alpha.32.tgz
|
|
114
130
|
openclaw plugins enable openclaw-cortex-memory
|
|
115
|
-
rm ./openclaw-cortex-memory-0.1.0-Alpha.
|
|
131
|
+
rm ./openclaw-cortex-memory-0.1.0-Alpha.32.tgz
|
|
116
132
|
```
|
|
117
133
|
|
|
118
|
-
|
|
134
|
+
完成安装后,请先按下方"最小配置"示例配置 `openclaw.json`,确认配置无误后再启动 gateway。
|
|
119
135
|
|
|
120
136
|
### 更新
|
|
121
137
|
|
|
122
138
|
```bash
|
|
123
139
|
rm -r ~/.openclaw/extensions/openclaw-cortex-memory
|
|
124
|
-
npm pack openclaw-cortex-memory@0.1.0-Alpha.
|
|
125
|
-
openclaw plugins install ./openclaw-cortex-memory-0.1.0-Alpha.
|
|
140
|
+
npm pack openclaw-cortex-memory@0.1.0-Alpha.32
|
|
141
|
+
openclaw plugins install ./openclaw-cortex-memory-0.1.0-Alpha.32.tgz
|
|
126
142
|
openclaw plugins enable openclaw-cortex-memory
|
|
127
|
-
rm ./openclaw-cortex-memory-0.1.0-Alpha.
|
|
128
|
-
openclaw plugins list
|
|
143
|
+
rm ./openclaw-cortex-memory-0.1.0-Alpha.32.tgz
|
|
144
|
+
openclaw plugins list --enabled
|
|
129
145
|
openclaw gateway restart
|
|
130
146
|
```
|
|
131
147
|
|
|
@@ -159,6 +175,11 @@ openclaw plugins uninstall openclaw-cortex-memory --keep-data
|
|
|
159
175
|
"autoSync": true,
|
|
160
176
|
"autoReflect": false,
|
|
161
177
|
"graphQualityMode": "warn",
|
|
178
|
+
"wikiProjection": {
|
|
179
|
+
"enabled": true,
|
|
180
|
+
"mode": "incremental",
|
|
181
|
+
"maxBatch": 100
|
|
182
|
+
},
|
|
162
183
|
"embedding": {
|
|
163
184
|
"provider": "api",
|
|
164
185
|
"model": "text-embedding-3-large",
|
|
@@ -226,11 +247,14 @@ openclaw plugins uninstall openclaw-cortex-memory --keep-data
|
|
|
226
247
|
|
|
227
248
|
## 数据目录
|
|
228
249
|
|
|
229
|
-
默认情况下(未配置 `dbPath
|
|
250
|
+
默认情况下(未配置 `dbPath`),数据目录为 OpenClaw workspace 下:
|
|
251
|
+
|
|
252
|
+
- Linux/macOS: `~/.openclaw/workspace/memory/openclaw-cortex-memory`
|
|
253
|
+
- Windows: `%USERPROFILE%\\.openclaw\\workspace\\memory\\openclaw-cortex-memory`
|
|
254
|
+
|
|
255
|
+
如果当前进程无法识别 OpenClaw 基础目录(例如离线脚本直接运行且无相关环境变量),会回退到项目目录:
|
|
230
256
|
|
|
231
|
-
-
|
|
232
|
-
- macOS: `~/.openclaw/extensions/openclaw-cortex-memory/data/memory`
|
|
233
|
-
- Windows: `%USERPROFILE%\\.openclaw\\extensions\\openclaw-cortex-memory\\data\\memory`
|
|
257
|
+
- `<projectRoot>/data/memory`
|
|
234
258
|
|
|
235
259
|
如果在插件配置里设置了 `dbPath`,则以下文件都会写到你指定的 `dbPath` 下:
|
|
236
260
|
|
|
@@ -240,6 +264,16 @@ openclaw plugins uninstall openclaw-cortex-memory --keep-data
|
|
|
240
264
|
- `<memoryRoot>/sessions/archive/sessions.jsonl`
|
|
241
265
|
- `<memoryRoot>/graph/memory.jsonl`
|
|
242
266
|
- `<memoryRoot>/graph/mutation_log.jsonl`
|
|
267
|
+
- `<memoryRoot>/graph/conflict_queue.jsonl`
|
|
268
|
+
- `<memoryRoot>/graph/superseded_relations.jsonl`
|
|
269
|
+
- `<memoryRoot>/wiki/index.md`
|
|
270
|
+
- `<memoryRoot>/wiki/log.md`
|
|
271
|
+
- `<memoryRoot>/wiki/entities/*.md`
|
|
272
|
+
- `<memoryRoot>/wiki/topics/*.md`
|
|
273
|
+
- `<memoryRoot>/wiki/graph/view.json`
|
|
274
|
+
- `<memoryRoot>/wiki/graph/timeline.jsonl`
|
|
275
|
+
- `<memoryRoot>/wiki/.projection_index.json`
|
|
276
|
+
- `<memoryRoot>/wiki/.rebuild_queue.jsonl`
|
|
243
277
|
- `<memoryRoot>/vector/lancedb`
|
|
244
278
|
- `<memoryRoot>/vector/lancedb_events.jsonl`
|
|
245
279
|
- `<memoryRoot>/.sync_state.json`
|
package/SIGNATURE.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Publisher Signature
|
|
2
|
+
|
|
3
|
+
- Maintainer: deki18
|
|
4
|
+
- Repository: https://github.com/deki18/openclaw-cortex-memory
|
|
5
|
+
- npm Package: https://www.npmjs.com/package/openclaw-cortex-memory
|
|
6
|
+
- ClawHub ID: openclaw-cortex-memory
|
|
7
|
+
- Signature Intent: This repository and published artifacts are maintained and released by deki18.
|
package/SKILL.md
CHANGED
|
@@ -33,6 +33,10 @@ metadata:
|
|
|
33
33
|
- `search_memory`
|
|
34
34
|
- `store_event`
|
|
35
35
|
- `query_graph`
|
|
36
|
+
- `export_graph_view`
|
|
37
|
+
- `lint_memory_wiki`
|
|
38
|
+
- `list_graph_conflicts`
|
|
39
|
+
- `resolve_graph_conflict`
|
|
36
40
|
- `get_hot_context`
|
|
37
41
|
- `get_auto_context`
|
|
38
42
|
- `reflect_memory`
|
|
@@ -48,17 +52,26 @@ metadata:
|
|
|
48
52
|
| `search_memory` | `query`, `top_k` |
|
|
49
53
|
| `store_event` | `summary`, `entities`, `entity_types`, `outcome`, `relations` |
|
|
50
54
|
| `query_graph` | `entity`, `rel`, `dir`, `path_to`, `max_depth` |
|
|
55
|
+
| `export_graph_view` | `write_snapshot` |
|
|
56
|
+
| `lint_memory_wiki` | 无 |
|
|
57
|
+
| `list_graph_conflicts` | `status`, `limit` |
|
|
58
|
+
| `resolve_graph_conflict` | `conflict_id`, `action`, `note` |
|
|
51
59
|
| `get_hot_context` | `limit` |
|
|
52
60
|
| `get_auto_context` | `include_hot` |
|
|
61
|
+
| `reflect_memory` | 无 |
|
|
62
|
+
| `sync_memory` | 无 |
|
|
53
63
|
| `backfill_embeddings` | `layer`, `batch_size`, `max_retries`, `retry_failed_only`, `rebuild_mode` |
|
|
64
|
+
| `diagnostics` | 无 |
|
|
54
65
|
| `delete_memory` | `memory_id` |
|
|
55
66
|
|
|
56
67
|
## 使用建议
|
|
57
68
|
|
|
58
69
|
1. 回答历史问题前先调 `search_memory`。
|
|
59
70
|
2. 涉及实体关系优先调 `query_graph`。
|
|
60
|
-
3.
|
|
61
|
-
4.
|
|
71
|
+
3. 如命中冲突事实(`conflict_hint`),先调 `list_graph_conflicts`,再让用户确认后执行 `resolve_graph_conflict`。
|
|
72
|
+
4. 需要图谱状态快照或排查投影不一致时,调 `export_graph_view` 与 `lint_memory_wiki`。
|
|
73
|
+
5. 会话收尾或批量导入后再调 `sync_memory` / `reflect_memory`。
|
|
74
|
+
6. 诊断发现向量缺失时调 `backfill_embeddings`。
|
|
62
75
|
|
|
63
76
|
## 配置策略
|
|
64
77
|
|
|
@@ -74,4 +87,6 @@ metadata:
|
|
|
74
87
|
## 关键事实
|
|
75
88
|
|
|
76
89
|
- `backfill_embeddings` 已实现且已注册。
|
|
77
|
-
- `query_graph` 支持参数:`entity`、`rel`、`dir`、`path_to`、`max_depth`。
|
|
90
|
+
- `query_graph` 支持参数:`entity`、`rel`、`dir`、`path_to`、`max_depth`。
|
|
91
|
+
- `query_graph` 会返回 `wiki_refs`、`evidence_ids`,冲突时返回 `conflict_hint`。
|
|
92
|
+
- 新增图谱治理工具:`export_graph_view`、`lint_memory_wiki`、`list_graph_conflicts`、`resolve_graph_conflict`。
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,11 @@ interface CortexMemoryConfig {
|
|
|
34
34
|
autoReflect?: boolean;
|
|
35
35
|
autoReflectIntervalMinutes?: number;
|
|
36
36
|
graphQualityMode?: "off" | "warn" | "strict";
|
|
37
|
+
wikiProjection?: {
|
|
38
|
+
enabled?: boolean;
|
|
39
|
+
mode?: "off" | "incremental" | "rebuild";
|
|
40
|
+
maxBatch?: number;
|
|
41
|
+
};
|
|
37
42
|
readFusion?: {
|
|
38
43
|
enabled?: boolean;
|
|
39
44
|
maxCandidates?: number;
|
|
@@ -72,6 +77,9 @@ interface CortexMemoryConfig {
|
|
|
72
77
|
activeTextMaxChars?: number;
|
|
73
78
|
archiveSourceTextMaxChars?: number;
|
|
74
79
|
};
|
|
80
|
+
syncPolicy?: {
|
|
81
|
+
includeLocalActiveInput?: boolean;
|
|
82
|
+
};
|
|
75
83
|
memoryDecay?: {
|
|
76
84
|
enabled?: boolean;
|
|
77
85
|
minFloor?: number;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAiBA,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,gBAAgB,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC7C,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE;YACf,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,WAAW,CAAC,EAAE;YACZ,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IACF,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;KACpC,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,SAAS,CAAC,EAAE;YACV,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;KACH,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE;YACR,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,CAAC;QACF,GAAG,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,MAAM,CAAC;YACX,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,KAAK,CAAC;gBACd,WAAW,EAAE,MAAM,CAAC;gBACpB,KAAK,EAAE,MAAM,CAAC;gBACd,KAAK,EAAE,MAAM,CAAC;aACf,CAAC,CAAC;SACJ,CAAC;QACF,WAAW,CAAC,EAAE;YACZ,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;SAC7B,CAAC;KACH,CAAC;CACH;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AASD,UAAU,MAAM;IACd,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACtD;AAED,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,YAAY,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACtD,GAAG,IAAI,CAAC;IACT,cAAc,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,IAAI,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACpE,GAAG,IAAI,CAAC;IACT,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACrG,cAAc,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,IAAI,MAAM,CAAC;IACrB,gBAAgB,CAAC,IAAI;QAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CACtN;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -80,6 +80,11 @@ const defaultConfig = {
|
|
|
80
80
|
autoReflect: false,
|
|
81
81
|
autoReflectIntervalMinutes: 30,
|
|
82
82
|
graphQualityMode: "warn",
|
|
83
|
+
wikiProjection: {
|
|
84
|
+
enabled: false,
|
|
85
|
+
mode: "off",
|
|
86
|
+
maxBatch: 100,
|
|
87
|
+
},
|
|
83
88
|
readFusion: {
|
|
84
89
|
enabled: true,
|
|
85
90
|
maxCandidates: 10,
|
|
@@ -115,8 +120,11 @@ const defaultConfig = {
|
|
|
115
120
|
archiveMinQualityScore: 0.4,
|
|
116
121
|
activeMinQualityScore: 0.45,
|
|
117
122
|
activeDedupTailLines: 200,
|
|
118
|
-
activeTextMaxChars:
|
|
119
|
-
archiveSourceTextMaxChars:
|
|
123
|
+
activeTextMaxChars: 200000,
|
|
124
|
+
archiveSourceTextMaxChars: 500000,
|
|
125
|
+
},
|
|
126
|
+
syncPolicy: {
|
|
127
|
+
includeLocalActiveInput: false,
|
|
120
128
|
},
|
|
121
129
|
memoryDecay: {
|
|
122
130
|
enabled: true,
|
|
@@ -202,9 +210,40 @@ let processHandlersRegistered = false;
|
|
|
202
210
|
let memoryEngine = null;
|
|
203
211
|
let builtinMemory = null;
|
|
204
212
|
const TOOL_TRACE_PAYLOAD_MAX_CHARS = 1500;
|
|
213
|
+
function inferOpenClawBasePathForWorkspace() {
|
|
214
|
+
const explicitConfigPath = (0, runtime_env_1.getEnvValue)("OPENCLAW_CONFIG_PATH").trim();
|
|
215
|
+
if (explicitConfigPath) {
|
|
216
|
+
return path.dirname(path.resolve(explicitConfigPath));
|
|
217
|
+
}
|
|
218
|
+
const stateDir = (0, runtime_env_1.getEnvValue)("OPENCLAW_STATE_DIR").trim();
|
|
219
|
+
if (stateDir) {
|
|
220
|
+
return path.resolve(stateDir);
|
|
221
|
+
}
|
|
222
|
+
const basePath = (0, runtime_env_1.getEnvValue)("OPENCLAW_BASE_PATH").trim();
|
|
223
|
+
if (basePath) {
|
|
224
|
+
return path.resolve(basePath);
|
|
225
|
+
}
|
|
226
|
+
const discoveredConfigPath = findOpenClawConfig();
|
|
227
|
+
if (discoveredConfigPath) {
|
|
228
|
+
return path.dirname(path.resolve(discoveredConfigPath));
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
function resolveDefaultMemoryRoot(projectRoot) {
|
|
233
|
+
const openClawBasePath = inferOpenClawBasePathForWorkspace();
|
|
234
|
+
if (openClawBasePath) {
|
|
235
|
+
return path.join(openClawBasePath, "workspace", "memory", PLUGIN_ID);
|
|
236
|
+
}
|
|
237
|
+
return path.join(projectRoot, "data", "memory");
|
|
238
|
+
}
|
|
239
|
+
function resolveConfiguredMemoryRoot(configuredDbPath) {
|
|
240
|
+
if (typeof configuredDbPath === "string" && configuredDbPath.trim()) {
|
|
241
|
+
return path.resolve(configuredDbPath.trim());
|
|
242
|
+
}
|
|
243
|
+
return resolveDefaultMemoryRoot(findProjectRoot());
|
|
244
|
+
}
|
|
205
245
|
function getMemoryRoot() {
|
|
206
|
-
|
|
207
|
-
return config?.dbPath ? path.resolve(config.dbPath) : path.join(projectRoot, "data", "memory");
|
|
246
|
+
return resolveConfiguredMemoryRoot(config?.dbPath);
|
|
208
247
|
}
|
|
209
248
|
function getArchiveMarker() {
|
|
210
249
|
try {
|
|
@@ -310,6 +349,7 @@ function resolveEngine() {
|
|
|
310
349
|
memoryRoot,
|
|
311
350
|
logger,
|
|
312
351
|
qualityMode: config.graphQualityMode || "warn",
|
|
352
|
+
wikiProjection: config.wikiProjection,
|
|
313
353
|
});
|
|
314
354
|
const sessionSync = (0, session_sync_1.createSessionSync)({
|
|
315
355
|
projectRoot,
|
|
@@ -319,6 +359,7 @@ function resolveEngine() {
|
|
|
319
359
|
graphQualityMode: config.graphQualityMode || "warn",
|
|
320
360
|
requireLlmForWrite: config.llmRequiredForWrite ?? true,
|
|
321
361
|
writePolicy: config.writePolicy,
|
|
362
|
+
syncPolicy: config.syncPolicy,
|
|
322
363
|
archiveStore,
|
|
323
364
|
graphMemoryStore,
|
|
324
365
|
writeStore,
|
|
@@ -657,6 +698,16 @@ function validateConfig(cfg) {
|
|
|
657
698
|
errors.push("graphQualityMode must be one of: off, warn, strict.");
|
|
658
699
|
}
|
|
659
700
|
}
|
|
701
|
+
if (cfg.wikiProjection?.mode !== undefined) {
|
|
702
|
+
if (!["off", "incremental", "rebuild"].includes(cfg.wikiProjection.mode)) {
|
|
703
|
+
errors.push("wikiProjection.mode must be one of: off, incremental, rebuild.");
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
if (cfg.wikiProjection?.maxBatch !== undefined) {
|
|
707
|
+
if (!Number.isFinite(cfg.wikiProjection.maxBatch) || cfg.wikiProjection.maxBatch < 1) {
|
|
708
|
+
errors.push("wikiProjection.maxBatch must be >= 1.");
|
|
709
|
+
}
|
|
710
|
+
}
|
|
660
711
|
if (cfg.readFusion?.channelWeights) {
|
|
661
712
|
const weights = cfg.readFusion.channelWeights;
|
|
662
713
|
for (const [key, value] of Object.entries(weights)) {
|
|
@@ -707,6 +758,11 @@ function validateConfig(cfg) {
|
|
|
707
758
|
errors.push("writePolicy.archiveSourceTextMaxChars must be >= 1000.");
|
|
708
759
|
}
|
|
709
760
|
}
|
|
761
|
+
if (cfg.syncPolicy && cfg.syncPolicy.includeLocalActiveInput !== undefined) {
|
|
762
|
+
if (typeof cfg.syncPolicy.includeLocalActiveInput !== "boolean") {
|
|
763
|
+
errors.push("syncPolicy.includeLocalActiveInput must be boolean.");
|
|
764
|
+
}
|
|
765
|
+
}
|
|
710
766
|
if (cfg.memoryDecay) {
|
|
711
767
|
if (typeof cfg.memoryDecay.minFloor === "number" && (!Number.isFinite(cfg.memoryDecay.minFloor) || cfg.memoryDecay.minFloor < 0 || cfg.memoryDecay.minFloor > 1)) {
|
|
712
768
|
errors.push("memoryDecay.minFloor must be between 0 and 1.");
|
|
@@ -749,7 +805,9 @@ function validateConfig(cfg) {
|
|
|
749
805
|
const buckets = cfg.readTuning.recency.buckets;
|
|
750
806
|
for (let i = 0; i < buckets.length; i += 1) {
|
|
751
807
|
const bucket = buckets[i];
|
|
752
|
-
|
|
808
|
+
const maxAgeHours = bucket.maxAgeHours;
|
|
809
|
+
const finiteOrInfinity = Number.isFinite(maxAgeHours) || maxAgeHours === Number.POSITIVE_INFINITY;
|
|
810
|
+
if (!finiteOrInfinity || maxAgeHours <= 0) {
|
|
753
811
|
errors.push(`readTuning.recency.buckets[${i}].maxAgeHours must be > 0.`);
|
|
754
812
|
}
|
|
755
813
|
if (!Number.isFinite(bucket.score) || bucket.score < 0) {
|
|
@@ -981,6 +1039,9 @@ function registerTools() {
|
|
|
981
1039
|
type: "object",
|
|
982
1040
|
properties: {
|
|
983
1041
|
summary: { type: "string", description: "Event summary" },
|
|
1042
|
+
cause: { type: "string", description: "What triggered the event (task/request/problem statement)" },
|
|
1043
|
+
process: { type: "string", description: "How the task was handled (steps/attempts/iterations)" },
|
|
1044
|
+
result: { type: "string", description: "Final result and acceptance outcome" },
|
|
984
1045
|
entities: {
|
|
985
1046
|
type: "array",
|
|
986
1047
|
description: "Involved entities",
|
|
@@ -1059,6 +1120,78 @@ function registerTools() {
|
|
|
1059
1120
|
return resolveEngine().queryGraph(args, params.context);
|
|
1060
1121
|
},
|
|
1061
1122
|
},
|
|
1123
|
+
{
|
|
1124
|
+
name: "export_graph_view",
|
|
1125
|
+
description: "Export status-aware graph view and optionally write wiki graph snapshots",
|
|
1126
|
+
parameters: {
|
|
1127
|
+
type: "object",
|
|
1128
|
+
properties: {
|
|
1129
|
+
write_snapshot: {
|
|
1130
|
+
type: "boolean",
|
|
1131
|
+
description: "When true (default), write data/memory/wiki/graph/view.json and timeline.jsonl",
|
|
1132
|
+
},
|
|
1133
|
+
},
|
|
1134
|
+
required: [],
|
|
1135
|
+
additionalProperties: false,
|
|
1136
|
+
},
|
|
1137
|
+
execute: async (params) => {
|
|
1138
|
+
const args = params.args || params;
|
|
1139
|
+
return resolveEngine().exportGraphView(args, params.context);
|
|
1140
|
+
},
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
name: "lint_memory_wiki",
|
|
1144
|
+
description: "Run wiki memory lint checks and return structured repair guidance",
|
|
1145
|
+
parameters: {
|
|
1146
|
+
type: "object",
|
|
1147
|
+
properties: {},
|
|
1148
|
+
required: [],
|
|
1149
|
+
additionalProperties: false,
|
|
1150
|
+
},
|
|
1151
|
+
execute: async (params) => {
|
|
1152
|
+
const args = params.args || params;
|
|
1153
|
+
return resolveEngine().lintMemoryWiki(args, params.context);
|
|
1154
|
+
},
|
|
1155
|
+
},
|
|
1156
|
+
{
|
|
1157
|
+
name: "list_graph_conflicts",
|
|
1158
|
+
description: "List pending/handled graph memory conflicts that require user confirmation",
|
|
1159
|
+
parameters: {
|
|
1160
|
+
type: "object",
|
|
1161
|
+
properties: {
|
|
1162
|
+
status: {
|
|
1163
|
+
type: "string",
|
|
1164
|
+
enum: ["pending", "accepted", "rejected", "all"],
|
|
1165
|
+
description: "Filter conflict status",
|
|
1166
|
+
},
|
|
1167
|
+
limit: { type: "integer", description: "Maximum returned conflicts" },
|
|
1168
|
+
},
|
|
1169
|
+
required: [],
|
|
1170
|
+
additionalProperties: false,
|
|
1171
|
+
},
|
|
1172
|
+
execute: async (params) => {
|
|
1173
|
+
const args = params.args || params;
|
|
1174
|
+
return resolveEngine().listGraphConflicts(args, params.context);
|
|
1175
|
+
},
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
name: "resolve_graph_conflict",
|
|
1179
|
+
description: "Resolve a graph conflict by accepting or rejecting the new candidate fact",
|
|
1180
|
+
parameters: {
|
|
1181
|
+
type: "object",
|
|
1182
|
+
properties: {
|
|
1183
|
+
conflict_id: { type: "string", description: "Conflict ID from list_graph_conflicts" },
|
|
1184
|
+
action: { type: "string", enum: ["accept", "reject"], description: "Resolution action" },
|
|
1185
|
+
note: { type: "string", description: "Optional note for audit trail" },
|
|
1186
|
+
},
|
|
1187
|
+
required: ["conflict_id", "action"],
|
|
1188
|
+
additionalProperties: false,
|
|
1189
|
+
},
|
|
1190
|
+
execute: async (params) => {
|
|
1191
|
+
const args = params.args || params;
|
|
1192
|
+
return resolveEngine().resolveGraphConflict(args, params.context);
|
|
1193
|
+
},
|
|
1194
|
+
},
|
|
1062
1195
|
{
|
|
1063
1196
|
name: "get_hot_context",
|
|
1064
1197
|
description: "Get hot memory context for current session",
|
|
@@ -1653,6 +1786,7 @@ function register(pluginApi, userConfig) {
|
|
|
1653
1786
|
const pluginEntry = openclawConfig?.plugins?.entries?.[PLUGIN_ID];
|
|
1654
1787
|
const pluginConfig = Object.keys(apiPluginConfig).length > 0 ? apiPluginConfig : (pluginEntry?.config || {});
|
|
1655
1788
|
const effectiveConfig = userConfig || pluginConfig || {};
|
|
1789
|
+
const resolvedDbPath = resolveConfiguredMemoryRoot(typeof effectiveConfig.dbPath === "string" ? effectiveConfig.dbPath : undefined);
|
|
1656
1790
|
const embeddingConfigRaw = (effectiveConfig.embedding || { provider: "openai-compatible", model: "" });
|
|
1657
1791
|
const llmConfigRaw = (effectiveConfig.llm || { provider: "openai", model: "" });
|
|
1658
1792
|
const rerankerConfigRaw = (effectiveConfig.reranker || { provider: "", model: "" });
|
|
@@ -1672,11 +1806,16 @@ function register(pluginApi, userConfig) {
|
|
|
1672
1806
|
embedding: embeddingConfig,
|
|
1673
1807
|
llm: llmConfig,
|
|
1674
1808
|
reranker: rerankerConfig,
|
|
1675
|
-
dbPath:
|
|
1809
|
+
dbPath: resolvedDbPath,
|
|
1676
1810
|
autoSync: effectiveConfig.autoSync ?? defaultConfig.autoSync,
|
|
1677
1811
|
autoReflect: effectiveConfig.autoReflect ?? defaultConfig.autoReflect,
|
|
1678
1812
|
autoReflectIntervalMinutes: effectiveConfig.autoReflectIntervalMinutes ?? defaultConfig.autoReflectIntervalMinutes,
|
|
1679
1813
|
graphQualityMode: effectiveConfig.graphQualityMode ?? defaultConfig.graphQualityMode,
|
|
1814
|
+
wikiProjection: {
|
|
1815
|
+
enabled: effectiveConfig.wikiProjection?.enabled ?? defaultConfig.wikiProjection?.enabled,
|
|
1816
|
+
mode: effectiveConfig.wikiProjection?.mode ?? defaultConfig.wikiProjection?.mode,
|
|
1817
|
+
maxBatch: effectiveConfig.wikiProjection?.maxBatch ?? defaultConfig.wikiProjection?.maxBatch,
|
|
1818
|
+
},
|
|
1680
1819
|
readFusion: {
|
|
1681
1820
|
enabled: effectiveConfig.readFusion?.enabled ?? defaultConfig.readFusion?.enabled,
|
|
1682
1821
|
maxCandidates: effectiveConfig.readFusion?.maxCandidates ?? defaultConfig.readFusion?.maxCandidates,
|
|
@@ -1705,6 +1844,9 @@ function register(pluginApi, userConfig) {
|
|
|
1705
1844
|
activeTextMaxChars: effectiveConfig.writePolicy?.activeTextMaxChars ?? defaultConfig.writePolicy?.activeTextMaxChars,
|
|
1706
1845
|
archiveSourceTextMaxChars: effectiveConfig.writePolicy?.archiveSourceTextMaxChars ?? defaultConfig.writePolicy?.archiveSourceTextMaxChars,
|
|
1707
1846
|
},
|
|
1847
|
+
syncPolicy: {
|
|
1848
|
+
includeLocalActiveInput: effectiveConfig.syncPolicy?.includeLocalActiveInput ?? defaultConfig.syncPolicy?.includeLocalActiveInput,
|
|
1849
|
+
},
|
|
1708
1850
|
memoryDecay: {
|
|
1709
1851
|
enabled: effectiveConfig.memoryDecay?.enabled ?? defaultConfig.memoryDecay?.enabled,
|
|
1710
1852
|
minFloor: effectiveConfig.memoryDecay?.minFloor ?? defaultConfig.memoryDecay?.minFloor,
|