@mnemoai/core 1.1.0 → 1.1.1

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.
Files changed (220) hide show
  1. package/dist/cli.d.ts +2 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +7 -0
  4. package/dist/cli.js.map +7 -0
  5. package/dist/index.d.ts +128 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/{index.ts → dist/index.js} +526 -1333
  8. package/dist/index.js.map +7 -0
  9. package/dist/src/access-tracker.d.ts +97 -0
  10. package/dist/src/access-tracker.d.ts.map +1 -0
  11. package/dist/src/access-tracker.js +184 -0
  12. package/dist/src/access-tracker.js.map +7 -0
  13. package/dist/src/adapters/chroma.d.ts +31 -0
  14. package/dist/src/adapters/chroma.d.ts.map +1 -0
  15. package/{src/adapters/chroma.ts → dist/src/adapters/chroma.js} +45 -107
  16. package/dist/src/adapters/chroma.js.map +7 -0
  17. package/dist/src/adapters/lancedb.d.ts +29 -0
  18. package/dist/src/adapters/lancedb.d.ts.map +1 -0
  19. package/{src/adapters/lancedb.ts → dist/src/adapters/lancedb.js} +41 -109
  20. package/dist/src/adapters/lancedb.js.map +7 -0
  21. package/dist/src/adapters/pgvector.d.ts +33 -0
  22. package/dist/src/adapters/pgvector.d.ts.map +1 -0
  23. package/{src/adapters/pgvector.ts → dist/src/adapters/pgvector.js} +42 -104
  24. package/dist/src/adapters/pgvector.js.map +7 -0
  25. package/dist/src/adapters/qdrant.d.ts +34 -0
  26. package/dist/src/adapters/qdrant.d.ts.map +1 -0
  27. package/dist/src/adapters/qdrant.js +132 -0
  28. package/dist/src/adapters/qdrant.js.map +7 -0
  29. package/dist/src/adaptive-retrieval.d.ts +14 -0
  30. package/dist/src/adaptive-retrieval.d.ts.map +1 -0
  31. package/dist/src/adaptive-retrieval.js +52 -0
  32. package/dist/src/adaptive-retrieval.js.map +7 -0
  33. package/dist/src/audit-log.d.ts +56 -0
  34. package/dist/src/audit-log.d.ts.map +1 -0
  35. package/dist/src/audit-log.js +139 -0
  36. package/dist/src/audit-log.js.map +7 -0
  37. package/dist/src/chunker.d.ts +45 -0
  38. package/dist/src/chunker.d.ts.map +1 -0
  39. package/dist/src/chunker.js +157 -0
  40. package/dist/src/chunker.js.map +7 -0
  41. package/dist/src/config.d.ts +70 -0
  42. package/dist/src/config.d.ts.map +1 -0
  43. package/dist/src/config.js +142 -0
  44. package/dist/src/config.js.map +7 -0
  45. package/dist/src/decay-engine.d.ts +73 -0
  46. package/dist/src/decay-engine.d.ts.map +1 -0
  47. package/dist/src/decay-engine.js +119 -0
  48. package/dist/src/decay-engine.js.map +7 -0
  49. package/dist/src/embedder.d.ts +94 -0
  50. package/dist/src/embedder.d.ts.map +1 -0
  51. package/{src/embedder.ts → dist/src/embedder.js} +119 -317
  52. package/dist/src/embedder.js.map +7 -0
  53. package/dist/src/extraction-prompts.d.ts +12 -0
  54. package/dist/src/extraction-prompts.d.ts.map +1 -0
  55. package/dist/src/extraction-prompts.js +311 -0
  56. package/dist/src/extraction-prompts.js.map +7 -0
  57. package/dist/src/license.d.ts +29 -0
  58. package/dist/src/license.d.ts.map +1 -0
  59. package/{src/license.ts → dist/src/license.js} +42 -113
  60. package/dist/src/license.js.map +7 -0
  61. package/dist/src/llm-client.d.ts +23 -0
  62. package/dist/src/llm-client.d.ts.map +1 -0
  63. package/{src/llm-client.ts → dist/src/llm-client.js} +22 -55
  64. package/dist/src/llm-client.js.map +7 -0
  65. package/dist/src/logger.d.ts +33 -0
  66. package/dist/src/logger.d.ts.map +1 -0
  67. package/dist/src/logger.js +35 -0
  68. package/dist/src/logger.js.map +7 -0
  69. package/dist/src/mcp-server.d.ts +16 -0
  70. package/dist/src/mcp-server.d.ts.map +1 -0
  71. package/{src/mcp-server.ts → dist/src/mcp-server.js} +81 -181
  72. package/dist/src/mcp-server.js.map +7 -0
  73. package/dist/src/memory-categories.d.ts +40 -0
  74. package/dist/src/memory-categories.d.ts.map +1 -0
  75. package/dist/src/memory-categories.js +33 -0
  76. package/dist/src/memory-categories.js.map +7 -0
  77. package/dist/src/memory-upgrader.d.ts +71 -0
  78. package/dist/src/memory-upgrader.d.ts.map +1 -0
  79. package/dist/src/memory-upgrader.js +238 -0
  80. package/dist/src/memory-upgrader.js.map +7 -0
  81. package/dist/src/migrate.d.ts +47 -0
  82. package/dist/src/migrate.d.ts.map +1 -0
  83. package/{src/migrate.ts → dist/src/migrate.js} +57 -165
  84. package/dist/src/migrate.js.map +7 -0
  85. package/dist/src/mnemo.d.ts +67 -0
  86. package/dist/src/mnemo.d.ts.map +1 -0
  87. package/dist/src/mnemo.js +66 -0
  88. package/dist/src/mnemo.js.map +7 -0
  89. package/dist/src/noise-filter.d.ts +23 -0
  90. package/dist/src/noise-filter.d.ts.map +1 -0
  91. package/dist/src/noise-filter.js +62 -0
  92. package/dist/src/noise-filter.js.map +7 -0
  93. package/dist/src/noise-prototypes.d.ts +40 -0
  94. package/dist/src/noise-prototypes.d.ts.map +1 -0
  95. package/dist/src/noise-prototypes.js +116 -0
  96. package/dist/src/noise-prototypes.js.map +7 -0
  97. package/dist/src/observability.d.ts +16 -0
  98. package/dist/src/observability.d.ts.map +1 -0
  99. package/dist/src/observability.js +53 -0
  100. package/dist/src/observability.js.map +7 -0
  101. package/dist/src/query-tracker.d.ts +27 -0
  102. package/dist/src/query-tracker.d.ts.map +1 -0
  103. package/dist/src/query-tracker.js +32 -0
  104. package/dist/src/query-tracker.js.map +7 -0
  105. package/dist/src/reflection-event-store.d.ts +44 -0
  106. package/dist/src/reflection-event-store.d.ts.map +1 -0
  107. package/dist/src/reflection-event-store.js +50 -0
  108. package/dist/src/reflection-event-store.js.map +7 -0
  109. package/dist/src/reflection-item-store.d.ts +58 -0
  110. package/dist/src/reflection-item-store.d.ts.map +1 -0
  111. package/dist/src/reflection-item-store.js +69 -0
  112. package/dist/src/reflection-item-store.js.map +7 -0
  113. package/dist/src/reflection-mapped-metadata.d.ts +47 -0
  114. package/dist/src/reflection-mapped-metadata.d.ts.map +1 -0
  115. package/dist/src/reflection-mapped-metadata.js +40 -0
  116. package/dist/src/reflection-mapped-metadata.js.map +7 -0
  117. package/dist/src/reflection-metadata.d.ts +11 -0
  118. package/dist/src/reflection-metadata.d.ts.map +1 -0
  119. package/dist/src/reflection-metadata.js +24 -0
  120. package/dist/src/reflection-metadata.js.map +7 -0
  121. package/dist/src/reflection-ranking.d.ts +13 -0
  122. package/dist/src/reflection-ranking.d.ts.map +1 -0
  123. package/{src/reflection-ranking.ts → dist/src/reflection-ranking.js} +12 -21
  124. package/dist/src/reflection-ranking.js.map +7 -0
  125. package/dist/src/reflection-retry.d.ts +30 -0
  126. package/dist/src/reflection-retry.d.ts.map +1 -0
  127. package/{src/reflection-retry.ts → dist/src/reflection-retry.js} +24 -64
  128. package/dist/src/reflection-retry.js.map +7 -0
  129. package/dist/src/reflection-slices.d.ts +42 -0
  130. package/dist/src/reflection-slices.d.ts.map +1 -0
  131. package/{src/reflection-slices.ts → dist/src/reflection-slices.js} +60 -136
  132. package/dist/src/reflection-slices.js.map +7 -0
  133. package/dist/src/reflection-store.d.ts +85 -0
  134. package/dist/src/reflection-store.d.ts.map +1 -0
  135. package/dist/src/reflection-store.js +407 -0
  136. package/dist/src/reflection-store.js.map +7 -0
  137. package/dist/src/resonance-state.d.ts +19 -0
  138. package/dist/src/resonance-state.d.ts.map +1 -0
  139. package/{src/resonance-state.ts → dist/src/resonance-state.js} +13 -42
  140. package/dist/src/resonance-state.js.map +7 -0
  141. package/dist/src/retriever.d.ts +228 -0
  142. package/dist/src/retriever.d.ts.map +1 -0
  143. package/dist/src/retriever.js +1006 -0
  144. package/dist/src/retriever.js.map +7 -0
  145. package/dist/src/scopes.d.ts +58 -0
  146. package/dist/src/scopes.d.ts.map +1 -0
  147. package/dist/src/scopes.js +252 -0
  148. package/dist/src/scopes.js.map +7 -0
  149. package/dist/src/self-improvement-files.d.ts +20 -0
  150. package/dist/src/self-improvement-files.d.ts.map +1 -0
  151. package/{src/self-improvement-files.ts → dist/src/self-improvement-files.js} +24 -49
  152. package/dist/src/self-improvement-files.js.map +7 -0
  153. package/dist/src/semantic-gate.d.ts +24 -0
  154. package/dist/src/semantic-gate.d.ts.map +1 -0
  155. package/dist/src/semantic-gate.js +86 -0
  156. package/dist/src/semantic-gate.js.map +7 -0
  157. package/dist/src/session-recovery.d.ts +9 -0
  158. package/dist/src/session-recovery.d.ts.map +1 -0
  159. package/{src/session-recovery.ts → dist/src/session-recovery.js} +40 -57
  160. package/dist/src/session-recovery.js.map +7 -0
  161. package/dist/src/smart-extractor.d.ts +107 -0
  162. package/dist/src/smart-extractor.d.ts.map +1 -0
  163. package/{src/smart-extractor.ts → dist/src/smart-extractor.js} +130 -383
  164. package/dist/src/smart-extractor.js.map +7 -0
  165. package/dist/src/smart-metadata.d.ts +103 -0
  166. package/dist/src/smart-metadata.d.ts.map +1 -0
  167. package/dist/src/smart-metadata.js +361 -0
  168. package/dist/src/smart-metadata.js.map +7 -0
  169. package/dist/src/storage-adapter.d.ts +102 -0
  170. package/dist/src/storage-adapter.d.ts.map +1 -0
  171. package/dist/src/storage-adapter.js +22 -0
  172. package/dist/src/storage-adapter.js.map +7 -0
  173. package/dist/src/store.d.ts +108 -0
  174. package/dist/src/store.d.ts.map +1 -0
  175. package/dist/src/store.js +939 -0
  176. package/dist/src/store.js.map +7 -0
  177. package/dist/src/tier-manager.d.ts +57 -0
  178. package/dist/src/tier-manager.d.ts.map +1 -0
  179. package/dist/src/tier-manager.js +80 -0
  180. package/dist/src/tier-manager.js.map +7 -0
  181. package/dist/src/tools.d.ts +43 -0
  182. package/dist/src/tools.d.ts.map +1 -0
  183. package/dist/src/tools.js +1075 -0
  184. package/dist/src/tools.js.map +7 -0
  185. package/dist/src/wal-recovery.d.ts +30 -0
  186. package/dist/src/wal-recovery.d.ts.map +1 -0
  187. package/{src/wal-recovery.ts → dist/src/wal-recovery.js} +26 -79
  188. package/dist/src/wal-recovery.js.map +7 -0
  189. package/package.json +21 -2
  190. package/openclaw.plugin.json +0 -815
  191. package/src/access-tracker.ts +0 -341
  192. package/src/adapters/README.md +0 -78
  193. package/src/adapters/qdrant.ts +0 -191
  194. package/src/adaptive-retrieval.ts +0 -90
  195. package/src/audit-log.ts +0 -238
  196. package/src/chunker.ts +0 -254
  197. package/src/config.ts +0 -271
  198. package/src/decay-engine.ts +0 -238
  199. package/src/extraction-prompts.ts +0 -339
  200. package/src/memory-categories.ts +0 -71
  201. package/src/memory-upgrader.ts +0 -388
  202. package/src/mnemo.ts +0 -142
  203. package/src/noise-filter.ts +0 -97
  204. package/src/noise-prototypes.ts +0 -164
  205. package/src/observability.ts +0 -81
  206. package/src/query-tracker.ts +0 -57
  207. package/src/reflection-event-store.ts +0 -98
  208. package/src/reflection-item-store.ts +0 -112
  209. package/src/reflection-mapped-metadata.ts +0 -84
  210. package/src/reflection-metadata.ts +0 -23
  211. package/src/reflection-store.ts +0 -602
  212. package/src/retriever.ts +0 -1510
  213. package/src/scopes.ts +0 -375
  214. package/src/semantic-gate.ts +0 -121
  215. package/src/smart-metadata.ts +0 -561
  216. package/src/storage-adapter.ts +0 -153
  217. package/src/store.ts +0 -1330
  218. package/src/tier-manager.ts +0 -189
  219. package/src/tools.ts +0 -1292
  220. package/test/core.test.mjs +0 -301
@@ -1,815 +0,0 @@
1
- {
2
- "id": "memory-lancedb-pro",
3
- "name": "Mnemo Memory",
4
- "description": "Cognitive memory framework with hybrid retrieval, multi-scope isolation, and management CLI",
5
- "version": "1.1.0-beta.8",
6
- "kind": "memory",
7
- "configSchema": {
8
- "type": "object",
9
- "additionalProperties": false,
10
- "properties": {
11
- "embedding": {
12
- "type": "object",
13
- "additionalProperties": false,
14
- "properties": {
15
- "provider": {
16
- "type": "string",
17
- "const": "openai-compatible"
18
- },
19
- "apiKey": {
20
- "oneOf": [
21
- {
22
- "type": "string",
23
- "minLength": 1
24
- },
25
- {
26
- "type": "array",
27
- "items": {
28
- "type": "string",
29
- "minLength": 1
30
- },
31
- "minItems": 1
32
- }
33
- ],
34
- "description": "Single API key or array of keys for round-robin rotation"
35
- },
36
- "model": {
37
- "type": "string"
38
- },
39
- "baseURL": {
40
- "type": "string"
41
- },
42
- "dimensions": {
43
- "type": "integer",
44
- "minimum": 1
45
- },
46
- "taskQuery": {
47
- "type": "string",
48
- "description": "Embedding task for queries (provider-specific, e.g. Jina: retrieval.query)"
49
- },
50
- "taskPassage": {
51
- "type": "string",
52
- "description": "Embedding task for passages/documents (provider-specific, e.g. Jina: retrieval.passage)"
53
- },
54
- "normalized": {
55
- "type": "boolean",
56
- "description": "Request normalized embeddings when supported by the provider (e.g. Jina v5)"
57
- },
58
- "chunking": {
59
- "type": "boolean",
60
- "default": true,
61
- "description": "Enable automatic chunking for documents exceeding embedding context limits"
62
- }
63
- },
64
- "required": [
65
- "apiKey"
66
- ]
67
- },
68
- "dbPath": {
69
- "type": "string"
70
- },
71
- "enableManagementTools": {
72
- "type": "boolean",
73
- "default": false,
74
- "description": "Enable management/debug tools such as memory_list, memory_stats, and governance-oriented self-improvement review/extract actions"
75
- },
76
- "sessionStrategy": {
77
- "type": "string",
78
- "enum": [
79
- "memoryReflection",
80
- "systemSessionMemory",
81
- "none"
82
- ],
83
- "default": "none",
84
- "description": "Choose session pipeline: plugin memory-reflection, built-in session-memory, or none. Default none keeps session summaries disabled unless explicitly enabled."
85
- },
86
- "autoCapture": {
87
- "type": "boolean",
88
- "default": true
89
- },
90
- "autoRecall": {
91
- "type": "boolean",
92
- "default": false
93
- },
94
- "autoRecallMinLength": {
95
- "type": "integer",
96
- "minimum": 1,
97
- "maximum": 200,
98
- "default": 15,
99
- "description": "Minimum prompt length (in characters) to trigger auto-recall. Prompts shorter than this are skipped. Default: 15 for English, 6 for CJK."
100
- },
101
- "autoRecallMinRepeated": {
102
- "type": "integer",
103
- "minimum": 0,
104
- "maximum": 100,
105
- "default": 0,
106
- "description": "Minimum number of turns before the same memory can be recalled again in the same session. Set to 0 to disable deduplication (default behavior: inject all memories)."
107
- },
108
- "captureAssistant": {
109
- "type": "boolean"
110
- },
111
- "smartExtraction": {
112
- "type": "boolean",
113
- "default": true,
114
- "description": "Enable LLM-powered memory extraction. Falls back to regex capture when false."
115
- },
116
- "extractMinMessages": {
117
- "type": "integer",
118
- "minimum": 1,
119
- "maximum": 100,
120
- "default": 2,
121
- "description": "Minimum conversation messages required before smart extraction runs."
122
- },
123
- "extractMaxChars": {
124
- "type": "integer",
125
- "minimum": 256,
126
- "maximum": 100000,
127
- "default": 8000,
128
- "description": "Maximum conversation characters sent to the smart extraction LLM."
129
- },
130
- "retrieval": {
131
- "type": "object",
132
- "additionalProperties": false,
133
- "properties": {
134
- "mode": {
135
- "type": "string",
136
- "enum": [
137
- "hybrid",
138
- "vector"
139
- ],
140
- "default": "hybrid"
141
- },
142
- "vectorWeight": {
143
- "type": "number",
144
- "minimum": 0,
145
- "maximum": 1,
146
- "default": 0.7
147
- },
148
- "bm25Weight": {
149
- "type": "number",
150
- "minimum": 0,
151
- "maximum": 1,
152
- "default": 0.3
153
- },
154
- "minScore": {
155
- "type": "number",
156
- "minimum": 0,
157
- "maximum": 1,
158
- "default": 0.3
159
- },
160
- "rerank": {
161
- "type": "string",
162
- "enum": [
163
- "cross-encoder",
164
- "lightweight",
165
- "none"
166
- ],
167
- "default": "cross-encoder"
168
- },
169
- "rerankApiKey": {
170
- "type": "string",
171
- "description": "API key for reranker service (enables cross-encoder reranking)"
172
- },
173
- "rerankModel": {
174
- "type": "string",
175
- "default": "jina-reranker-v3",
176
- "description": "Reranker model name"
177
- },
178
- "rerankEndpoint": {
179
- "type": "string",
180
- "default": "https://api.jina.ai/v1/rerank",
181
- "description": "Reranker API endpoint URL. Compatible with Jina, SiliconFlow, Pinecone, or any service with a similar interface."
182
- },
183
- "rerankProvider": {
184
- "type": "string",
185
- "enum": [
186
- "jina",
187
- "siliconflow",
188
- "voyage",
189
- "pinecone"
190
- ],
191
- "default": "jina",
192
- "description": "Reranker provider format. Determines request/response shape and auth header."
193
- },
194
- "candidatePoolSize": {
195
- "type": "integer",
196
- "minimum": 10,
197
- "maximum": 100,
198
- "default": 20
199
- },
200
- "recencyHalfLifeDays": {
201
- "type": "number",
202
- "minimum": 0,
203
- "maximum": 365,
204
- "default": 14,
205
- "description": "Half-life in days for recency boost. Newer memories get higher scores. Set 0 to disable."
206
- },
207
- "recencyWeight": {
208
- "type": "number",
209
- "minimum": 0,
210
- "maximum": 0.5,
211
- "default": 0.1,
212
- "description": "Maximum recency boost factor added to score"
213
- },
214
- "filterNoise": {
215
- "type": "boolean",
216
- "default": true,
217
- "description": "Filter out noise memories (agent denials, meta-questions, boilerplate)"
218
- },
219
- "lengthNormAnchor": {
220
- "type": "integer",
221
- "minimum": 0,
222
- "maximum": 5000,
223
- "default": 500,
224
- "description": "Length normalization anchor in chars. Entries longer than this get score penalized. Set 0 to disable."
225
- },
226
- "hardMinScore": {
227
- "type": "number",
228
- "minimum": 0,
229
- "maximum": 1,
230
- "default": 0.35,
231
- "description": "Hard cutoff after all scoring stages. Results below this score are discarded."
232
- },
233
- "timeDecayHalfLifeDays": {
234
- "type": "number",
235
- "minimum": 0,
236
- "maximum": 365,
237
- "default": 60,
238
- "description": "Time decay half-life in days. Old entries lose score gradually. Floor at 0.5x. Set 0 to disable."
239
- },
240
- "reinforcementFactor": {
241
- "type": "number",
242
- "minimum": 0,
243
- "maximum": 2,
244
- "default": 0.5,
245
- "description": "Access reinforcement factor for time decay. Frequently recalled memories decay slower. 0 to disable."
246
- },
247
- "maxHalfLifeMultiplier": {
248
- "type": "number",
249
- "minimum": 1,
250
- "maximum": 10,
251
- "default": 3,
252
- "description": "Maximum half-life multiplier from access reinforcement. Prevents frequently accessed memories from becoming immortal."
253
- }
254
- }
255
- },
256
- "decay": {
257
- "type": "object",
258
- "additionalProperties": false,
259
- "properties": {
260
- "recencyHalfLifeDays": { "type": "number", "minimum": 1, "maximum": 365, "default": 30 },
261
- "recencyWeight": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.4 },
262
- "frequencyWeight": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.3 },
263
- "intrinsicWeight": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.3 },
264
- "staleThreshold": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.3 },
265
- "searchBoostMin": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.3 },
266
- "importanceModulation": { "type": "number", "minimum": 0, "maximum": 10, "default": 1.5 },
267
- "betaCore": { "type": "number", "minimum": 0.1, "maximum": 5, "default": 0.8 },
268
- "betaWorking": { "type": "number", "minimum": 0.1, "maximum": 5, "default": 1.0 },
269
- "betaPeripheral": { "type": "number", "minimum": 0.1, "maximum": 5, "default": 1.3 },
270
- "coreDecayFloor": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.9 },
271
- "workingDecayFloor": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.7 },
272
- "peripheralDecayFloor": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.5 }
273
- }
274
- },
275
- "tier": {
276
- "type": "object",
277
- "additionalProperties": false,
278
- "properties": {
279
- "coreAccessThreshold": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 10 },
280
- "coreCompositeThreshold": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.7 },
281
- "coreImportanceThreshold": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.8 },
282
- "peripheralCompositeThreshold": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.15 },
283
- "peripheralAgeDays": { "type": "integer", "minimum": 1, "maximum": 3650, "default": 60 },
284
- "workingAccessThreshold": { "type": "integer", "minimum": 1, "maximum": 1000, "default": 3 },
285
- "workingCompositeThreshold": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.4 }
286
- }
287
- },
288
- "sessionMemory": {
289
- "type": "object",
290
- "additionalProperties": false,
291
- "description": "Deprecated legacy switch. Kept for compatibility and mapped to sessionStrategy.",
292
- "properties": {
293
- "enabled": {
294
- "type": "boolean",
295
- "default": false,
296
- "description": "Deprecated. true -> sessionStrategy=systemSessionMemory, false -> sessionStrategy=none. Disabled by default."
297
- },
298
- "messageCount": {
299
- "type": "integer",
300
- "minimum": 1,
301
- "maximum": 100,
302
- "default": 15,
303
- "description": "Legacy compatibility field. Mapped to memoryReflection.messageCount."
304
- }
305
- }
306
- },
307
- "selfImprovement": {
308
- "type": "object",
309
- "additionalProperties": false,
310
- "properties": {
311
- "enabled": {
312
- "type": "boolean",
313
- "default": true
314
- },
315
- "beforeResetNote": {
316
- "type": "boolean",
317
- "default": true
318
- },
319
- "skipSubagentBootstrap": {
320
- "type": "boolean",
321
- "default": true
322
- },
323
- "ensureLearningFiles": {
324
- "type": "boolean",
325
- "default": true
326
- }
327
- }
328
- },
329
- "memoryReflection": {
330
- "type": "object",
331
- "additionalProperties": false,
332
- "properties": {
333
- "storeToLanceDB": {
334
- "type": "boolean",
335
- "default": true
336
- },
337
- "writeLegacyCombined": {
338
- "type": "boolean",
339
- "default": true
340
- },
341
- "injectMode": {
342
- "type": "string",
343
- "enum": [
344
- "inheritance-only",
345
- "inheritance+derived"
346
- ],
347
- "default": "inheritance+derived"
348
- },
349
- "agentId": {
350
- "type": "string",
351
- "description": "Optional dedicated agent id used to run reflection generation (for example: memory-distiller)."
352
- },
353
- "messageCount": {
354
- "type": "integer",
355
- "minimum": 1,
356
- "maximum": 500,
357
- "default": 120
358
- },
359
- "maxInputChars": {
360
- "type": "integer",
361
- "minimum": 1000,
362
- "maximum": 200000,
363
- "default": 24000
364
- },
365
- "timeoutMs": {
366
- "type": "integer",
367
- "minimum": 1000,
368
- "maximum": 120000,
369
- "default": 20000
370
- },
371
- "thinkLevel": {
372
- "type": "string",
373
- "enum": [
374
- "off",
375
- "minimal",
376
- "low",
377
- "medium",
378
- "high"
379
- ],
380
- "default": "medium"
381
- },
382
- "errorReminderMaxEntries": {
383
- "type": "integer",
384
- "minimum": 1,
385
- "maximum": 20,
386
- "default": 3
387
- },
388
- "dedupeErrorSignals": {
389
- "type": "boolean",
390
- "default": true
391
- }
392
- }
393
- },
394
- "scopes": {
395
- "type": "object",
396
- "additionalProperties": false,
397
- "properties": {
398
- "default": {
399
- "type": "string",
400
- "default": "global"
401
- },
402
- "definitions": {
403
- "type": "object",
404
- "additionalProperties": {
405
- "type": "object",
406
- "properties": {
407
- "description": {
408
- "type": "string"
409
- }
410
- }
411
- }
412
- },
413
- "agentAccess": {
414
- "type": "object",
415
- "additionalProperties": {
416
- "type": "array",
417
- "items": {
418
- "type": "string"
419
- }
420
- }
421
- }
422
- }
423
- },
424
- "llm": {
425
- "type": "object",
426
- "additionalProperties": false,
427
- "properties": {
428
- "apiKey": {
429
- "type": "string"
430
- },
431
- "model": {
432
- "type": "string",
433
- "default": "openai/gpt-oss-120b"
434
- },
435
- "baseURL": {
436
- "type": "string"
437
- }
438
- }
439
- },
440
- "mdMirror": {
441
- "type": "object",
442
- "additionalProperties": false,
443
- "properties": {
444
- "enabled": {
445
- "type": "boolean",
446
- "default": false,
447
- "description": "Enable dual-write: store memories in both LanceDB and human-readable Markdown files"
448
- },
449
- "dir": {
450
- "type": "string",
451
- "description": "Fallback directory for Markdown mirror files when agent workspace is unknown"
452
- }
453
- }
454
- }
455
- },
456
- "required": [
457
- "embedding"
458
- ]
459
- },
460
- "uiHints": {
461
- "embedding.apiKey": {
462
- "label": "API Key(s)",
463
- "sensitive": true,
464
- "placeholder": "sk-proj-... or [\"key1\", \"key2\"] for rotation",
465
- "help": "Single API key or array of keys for round-robin rotation with automatic failover on rate limits (or use ${OPENAI_API_KEY}; use a dummy value for keyless local endpoints)"
466
- },
467
- "embedding.model": {
468
- "label": "Embedding Model",
469
- "placeholder": "text-embedding-3-small",
470
- "help": "Embedding model name (e.g. text-embedding-3-small, gemini-embedding-001, nomic-embed-text)"
471
- },
472
- "embedding.baseURL": {
473
- "label": "Base URL",
474
- "placeholder": "https://api.openai.com/v1",
475
- "help": "Custom base URL for OpenAI-compatible embedding endpoints (e.g. https://generativelanguage.googleapis.com/v1beta/openai/ for Gemini, http://localhost:11434/v1 for Ollama)",
476
- "advanced": true
477
- },
478
- "embedding.dimensions": {
479
- "label": "Vector Dimensions",
480
- "placeholder": "auto-detected from model",
481
- "help": "Override vector dimensions for custom models not in the built-in lookup table",
482
- "advanced": true
483
- },
484
- "embedding.taskQuery": {
485
- "label": "Query Task",
486
- "placeholder": "retrieval.query",
487
- "help": "Optional task selector for query embeddings (Jina: retrieval.query). If unset, no task field is sent.",
488
- "advanced": true
489
- },
490
- "embedding.taskPassage": {
491
- "label": "Passage Task",
492
- "placeholder": "retrieval.passage",
493
- "help": "Optional task selector for passage/document embeddings (Jina: retrieval.passage). If unset, no task field is sent.",
494
- "advanced": true
495
- },
496
- "embedding.normalized": {
497
- "label": "Normalized Embeddings",
498
- "help": "Request normalized embeddings when the provider supports it (Jina v5). If unset, the field is not sent.",
499
- "advanced": true
500
- },
501
- "embedding.chunking": {
502
- "label": "Auto-Chunk Documents",
503
- "help": "Automatically split long documents into chunks when they exceed embedding context limits. Enabled by default.",
504
- "advanced": true
505
- },
506
- "dbPath": {
507
- "label": "Database Path",
508
- "placeholder": "~/.openclaw/memory/lancedb-pro",
509
- "help": "Directory path for the LanceDB database files",
510
- "advanced": true
511
- },
512
- "smartExtraction": {
513
- "label": "Smart Extraction",
514
- "help": "Enable LLM-powered 6-category memory extraction. Falls back to regex capture when off."
515
- },
516
- "llm.apiKey": {
517
- "label": "LLM API Key",
518
- "sensitive": true,
519
- "help": "API key for smart extraction LLM (defaults to embedding apiKey)",
520
- "advanced": true
521
- },
522
- "llm.model": {
523
- "label": "LLM Model",
524
- "help": "Model for memory extraction and dedup (default: gpt-4o-mini)",
525
- "advanced": true
526
- },
527
- "llm.baseURL": {
528
- "label": "LLM Base URL",
529
- "help": "Base URL for LLM API (defaults to embedding baseURL)",
530
- "advanced": true
531
- },
532
- "extractMinMessages": {
533
- "label": "Min Messages for Extraction",
534
- "help": "Minimum conversation messages before smart extraction triggers",
535
- "advanced": true
536
- },
537
- "extractMaxChars": {
538
- "label": "Max Chars for Extraction",
539
- "help": "Maximum conversation characters to process for extraction",
540
- "advanced": true
541
- },
542
- "autoCapture": {
543
- "label": "Auto-Capture",
544
- "help": "Automatically capture important information from conversations (enabled by default)"
545
- },
546
- "autoRecall": {
547
- "label": "Auto-Recall",
548
- "help": "Automatically inject relevant memories into context"
549
- },
550
- "autoRecallMinLength": {
551
- "label": "Auto-Recall Min Length",
552
- "help": "Minimum prompt length to trigger auto-recall (shorter prompts are skipped). Default: 15 chars for English, 6 for CJK.",
553
- "advanced": true
554
- },
555
- "autoRecallMinRepeated": {
556
- "label": "Auto-Recall Min Repeated",
557
- "help": "Minimum number of conversation turns before a specific memory can be re-injected in the same session.",
558
- "advanced": true
559
- },
560
- "captureAssistant": {
561
- "label": "Capture Assistant Messages",
562
- "help": "Also auto-capture assistant messages (default false to reduce memory pollution)",
563
- "advanced": true
564
- },
565
- "retrieval.mode": {
566
- "label": "Retrieval Mode",
567
- "help": "Use hybrid search (vector + BM25) or vector-only for backward compatibility",
568
- "advanced": true
569
- },
570
- "retrieval.vectorWeight": {
571
- "label": "Vector Search Weight",
572
- "help": "Weight for vector similarity in hybrid search (0-1)",
573
- "advanced": true
574
- },
575
- "retrieval.bm25Weight": {
576
- "label": "BM25 Search Weight",
577
- "help": "Weight for BM25 keyword search in hybrid search (0-1)",
578
- "advanced": true
579
- },
580
- "retrieval.minScore": {
581
- "label": "Minimum Score Threshold",
582
- "help": "Drop results below this relevance score (0-1)",
583
- "advanced": true
584
- },
585
- "retrieval.rerank": {
586
- "label": "Reranking Mode",
587
- "help": "Re-score fused results for better quality (cross-encoder uses configured reranker API)",
588
- "advanced": true
589
- },
590
- "retrieval.rerankApiKey": {
591
- "label": "Reranker API Key",
592
- "sensitive": true,
593
- "placeholder": "jina_... / sk-... / pcsk_...",
594
- "help": "Reranker API key for cross-encoder reranking",
595
- "advanced": true
596
- },
597
- "retrieval.rerankModel": {
598
- "label": "Reranker Model",
599
- "placeholder": "jina-reranker-v3",
600
- "help": "Reranker model name (e.g. jina-reranker-v3, BAAI/bge-reranker-v2-m3)",
601
- "advanced": true
602
- },
603
- "retrieval.rerankEndpoint": {
604
- "label": "Reranker Endpoint",
605
- "placeholder": "https://api.jina.ai/v1/rerank",
606
- "help": "Custom reranker API endpoint URL",
607
- "advanced": true
608
- },
609
- "retrieval.rerankProvider": {
610
- "label": "Reranker Provider",
611
- "help": "Provider format: jina (default), siliconflow, voyage, or pinecone",
612
- "advanced": true
613
- },
614
- "retrieval.candidatePoolSize": {
615
- "label": "Candidate Pool Size",
616
- "help": "Number of candidates to fetch before fusion and reranking",
617
- "advanced": true
618
- },
619
- "retrieval.lengthNormAnchor": {
620
- "label": "Length Normalization Anchor",
621
- "help": "Entries longer than this (chars) get score penalized to prevent long entries dominating. 0 = disabled.",
622
- "advanced": true
623
- },
624
- "retrieval.hardMinScore": {
625
- "label": "Hard Minimum Score",
626
- "help": "Discard results below this score after all scoring stages. Higher = fewer but more relevant results.",
627
- "advanced": true
628
- },
629
- "retrieval.timeDecayHalfLifeDays": {
630
- "label": "Time Decay Half-Life",
631
- "help": "Old entries lose score over this many days. Floor at 0.5x. 0 = disabled.",
632
- "advanced": true
633
- },
634
- "decay.recencyHalfLifeDays": {
635
- "label": "Decay Half-Life",
636
- "help": "Base half-life for Weibull lifecycle decay.",
637
- "advanced": true
638
- },
639
- "decay.frequencyWeight": {
640
- "label": "Decay Frequency Weight",
641
- "help": "Weight of access frequency in lifecycle score.",
642
- "advanced": true
643
- },
644
- "decay.intrinsicWeight": {
645
- "label": "Decay Intrinsic Weight",
646
- "help": "Weight of importance × confidence in lifecycle score.",
647
- "advanced": true
648
- },
649
- "decay.betaCore": {
650
- "label": "Core Beta",
651
- "help": "Weibull beta for core memories.",
652
- "advanced": true
653
- },
654
- "decay.betaWorking": {
655
- "label": "Working Beta",
656
- "help": "Weibull beta for working memories.",
657
- "advanced": true
658
- },
659
- "decay.betaPeripheral": {
660
- "label": "Peripheral Beta",
661
- "help": "Weibull beta for peripheral memories.",
662
- "advanced": true
663
- },
664
- "tier.coreAccessThreshold": {
665
- "label": "Core Access Threshold",
666
- "help": "Minimum recall count before promoting to core.",
667
- "advanced": true
668
- },
669
- "tier.coreCompositeThreshold": {
670
- "label": "Core Composite Threshold",
671
- "help": "Minimum lifecycle composite before promoting to core.",
672
- "advanced": true
673
- },
674
- "tier.peripheralCompositeThreshold": {
675
- "label": "Peripheral Composite Threshold",
676
- "help": "Memories below this lifecycle score can demote to peripheral.",
677
- "advanced": true
678
- },
679
- "tier.peripheralAgeDays": {
680
- "label": "Peripheral Age Days",
681
- "help": "Age threshold for demoting stale working memories.",
682
- "advanced": true
683
- },
684
- "sessionMemory.enabled": {
685
- "label": "Session Memory (Deprecated)",
686
- "help": "Legacy compatibility: true maps to systemSessionMemory, false maps to none.",
687
- "advanced": true
688
- },
689
- "sessionMemory.messageCount": {
690
- "label": "Session Message Count (Legacy)",
691
- "help": "Legacy compatibility field; mapped to memoryReflection.messageCount.",
692
- "advanced": true
693
- },
694
- "sessionStrategy": {
695
- "label": "Session Strategy",
696
- "help": "memoryReflection / systemSessionMemory / none",
697
- "advanced": true
698
- },
699
- "selfImprovement.enabled": {
700
- "label": "Self-Improvement",
701
- "help": "Enable self-improvement reminder and governance tools"
702
- },
703
- "selfImprovement.beforeResetNote": {
704
- "label": "Reset Reminder Note",
705
- "help": "Append /note reminder before /new and /reset",
706
- "advanced": true
707
- },
708
- "selfImprovement.skipSubagentBootstrap": {
709
- "label": "Skip Subagent Bootstrap",
710
- "help": "Do not inject reminder file into subagent bootstrap context",
711
- "advanced": true
712
- },
713
- "selfImprovement.ensureLearningFiles": {
714
- "label": "Ensure Learning Files",
715
- "help": "Auto-create .learnings files when missing",
716
- "advanced": true
717
- },
718
- "memoryReflection.storeToLanceDB": {
719
- "label": "Store Reflection To LanceDB",
720
- "help": "Persist reflection event + item rows to LanceDB (effective only under memoryReflection strategy)",
721
- "advanced": true
722
- },
723
- "memoryReflection.writeLegacyCombined": {
724
- "label": "Write Legacy Combined Reflection",
725
- "help": "Compatibility switch: also write legacy combined memory-reflection rows during migration.",
726
- "advanced": true
727
- },
728
- "memoryReflection.injectMode": {
729
- "label": "Reflection Inject Mode",
730
- "help": "inheritance-only or inheritance+derived",
731
- "advanced": true
732
- },
733
- "memoryReflection.agentId": {
734
- "label": "Reflection Agent Id",
735
- "help": "Optional dedicated agent id used for reflection generation (e.g. memory-distiller)",
736
- "advanced": true
737
- },
738
- "memoryReflection.messageCount": {
739
- "label": "Reflection Message Count",
740
- "help": "Recent messages included in reflection input",
741
- "advanced": true
742
- },
743
- "memoryReflection.maxInputChars": {
744
- "label": "Reflection Max Input Chars",
745
- "help": "Max prompt chars sent to reflection run",
746
- "advanced": true
747
- },
748
- "memoryReflection.timeoutMs": {
749
- "label": "Reflection Timeout (ms)",
750
- "help": "Timeout for reflection run",
751
- "advanced": true
752
- },
753
- "memoryReflection.thinkLevel": {
754
- "label": "Reflection Think Level",
755
- "help": "off/minimal/low/medium/high",
756
- "advanced": true
757
- },
758
- "memoryReflection.errorReminderMaxEntries": {
759
- "label": "Error Reminder Max Entries",
760
- "help": "Max recent error hints injected into prompt",
761
- "advanced": true
762
- },
763
- "memoryReflection.dedupeErrorSignals": {
764
- "label": "Dedupe Error Signals",
765
- "help": "Deduplicate repeated error signatures per session",
766
- "advanced": true
767
- },
768
- "scopes.default": {
769
- "label": "Default Scope",
770
- "help": "Default memory scope for new memories",
771
- "advanced": true
772
- },
773
- "scopes.definitions": {
774
- "label": "Scope Definitions",
775
- "help": "Define custom memory scopes with descriptions",
776
- "advanced": true
777
- },
778
- "scopes.agentAccess": {
779
- "label": "Agent Access Control",
780
- "help": "Define which scopes each agent can access",
781
- "advanced": true
782
- },
783
- "enableManagementTools": {
784
- "label": "Management Tools",
785
- "help": "Enable management/debug tools such as memory_list, memory_stats, and governance-oriented self-improvement review/extract actions.",
786
- "advanced": true
787
- },
788
- "mdMirror.enabled": {
789
- "label": "Markdown Mirror",
790
- "help": "Write a human-readable Markdown copy alongside LanceDB storage (dual-write mode)"
791
- },
792
- "mdMirror.dir": {
793
- "label": "Mirror Fallback Directory",
794
- "help": "Fallback directory when agent workspace mapping is unavailable",
795
- "advanced": true
796
- },
797
- "llm.apiKey": {
798
- "label": "LLM API Key",
799
- "sensitive": true,
800
- "placeholder": "sk-... or ${GROQ_API_KEY}",
801
- "help": "API key for LLM used by smart memory extraction (defaults to embedding.apiKey if omitted)"
802
- },
803
- "llm.model": {
804
- "label": "LLM Model",
805
- "placeholder": "openai/gpt-oss-120b",
806
- "help": "OpenAI-compatible chat model for memory extraction/summary"
807
- },
808
- "llm.baseURL": {
809
- "label": "LLM Base URL",
810
- "placeholder": "https://api.groq.com/openai/v1",
811
- "help": "OpenAI-compatible base URL for LLM (defaults to embedding.baseURL if omitted)",
812
- "advanced": true
813
- }
814
- }
815
- }