@memtensor/memos-cloud-openclaw-plugin 0.1.11 → 0.1.12
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/HOOK.md +22 -0
- package/README.md +15 -16
- package/README_ZH.md +14 -15
- package/clawdbot.plugin.json +49 -61
- package/index.js +19 -2
- package/lib/arms-reporter.js +116 -0
- package/lib/check-update.js +11 -94
- package/lib/config-resolution-schema.js +50 -0
- package/lib/config-ui/app.css +920 -0
- package/lib/config-ui/app.js +1290 -0
- package/lib/config-ui/icon.svg +1 -0
- package/lib/config-ui/index.html +112 -0
- package/lib/config-ui-server.js +713 -0
- package/lib/memos-cloud-api.js +59 -1
- package/moltbot.plugin.json +49 -61
- package/openclaw.plugin.json +49 -61
- package/package.json +10 -1
package/lib/memos-cloud-api.js
CHANGED
|
@@ -2,6 +2,7 @@ import { readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { setTimeout as delay } from "node:timers/promises";
|
|
5
|
+
import { CONFIG_RESOLUTION_FIELDS } from "./config-resolution-schema.js";
|
|
5
6
|
|
|
6
7
|
const DEFAULT_BASE_URL = "https://memos.memtensor.cn/api/openmem/v1";
|
|
7
8
|
export const USER_QUERY_MARKER = "user\u200b原\u200b始\u200bquery\u200b:\u200b\u200b\u200b\u200b";
|
|
@@ -127,7 +128,6 @@ function loadEnvVar(name) {
|
|
|
127
128
|
loadEnvFiles();
|
|
128
129
|
const fromFiles = loadEnvFromFiles(name);
|
|
129
130
|
if (fromFiles !== undefined) return fromFiles;
|
|
130
|
-
if (envFileContents.size === 0) return process.env[name];
|
|
131
131
|
return undefined;
|
|
132
132
|
}
|
|
133
133
|
|
|
@@ -226,6 +226,10 @@ export function buildConfig(pluginConfig = {}) {
|
|
|
226
226
|
? parseBool(loadEnvVar("MEMOS_INCLUDE_ASSISTANT"), true)
|
|
227
227
|
: cfg.includeAssistant !== false;
|
|
228
228
|
const maxMessageChars = cfg.maxMessageChars ?? parseNumber(loadEnvVar("MEMOS_MAX_MESSAGE_CHARS"), 20000);
|
|
229
|
+
const rumEnabled = parseBool(
|
|
230
|
+
cfg.rumEnabled,
|
|
231
|
+
parseBool(loadEnvVar("MEMOS_RUM_ENABLED"), true),
|
|
232
|
+
);
|
|
229
233
|
const useDirectSessionUserId = parseBool(
|
|
230
234
|
cfg.useDirectSessionUserId,
|
|
231
235
|
parseBool(loadEnvVar("MEMOS_USE_DIRECT_SESSION_USER_ID"), false),
|
|
@@ -289,10 +293,64 @@ export function buildConfig(pluginConfig = {}) {
|
|
|
289
293
|
timeoutMs: cfg.timeoutMs ?? 5000,
|
|
290
294
|
retries: cfg.retries ?? 1,
|
|
291
295
|
throttleMs,
|
|
296
|
+
rumEnabled,
|
|
292
297
|
_agentOverrides: cfg.agentOverrides ?? parseJsonObject(loadEnvVar("MEMOS_AGENT_OVERRIDES")) ?? {},
|
|
293
298
|
};
|
|
294
299
|
}
|
|
295
300
|
|
|
301
|
+
function hasConfigValue(cfg, field) {
|
|
302
|
+
const configKey = field.configKey ?? field.key;
|
|
303
|
+
if (field.configMode === "truthy") return Boolean(cfg[configKey]);
|
|
304
|
+
return cfg[configKey] !== undefined && cfg[configKey] !== null;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function hasEnvValue(envValue, envMode) {
|
|
308
|
+
if (envMode === "truthy") return Boolean(envValue);
|
|
309
|
+
if (envMode === "defined") return envValue !== undefined;
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
function resolveInheritedValue(field, resolved, envRaw) {
|
|
314
|
+
if (Object.prototype.hasOwnProperty.call(field, "inheritedValue")) {
|
|
315
|
+
return field.inheritedValue;
|
|
316
|
+
}
|
|
317
|
+
if (field.inheritedFrom === "env") {
|
|
318
|
+
const envValue = field.envVar ? envRaw[field.envVar] : undefined;
|
|
319
|
+
return envValue ?? field.inheritedFallback;
|
|
320
|
+
}
|
|
321
|
+
const resolvedKey = field.resolvedKey ?? field.key;
|
|
322
|
+
return resolved[resolvedKey];
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export function getConfigResolution(pluginConfig = {}) {
|
|
326
|
+
const cfg = pluginConfig ?? {};
|
|
327
|
+
const resolved = buildConfig(cfg);
|
|
328
|
+
const envRaw = {};
|
|
329
|
+
|
|
330
|
+
for (const field of CONFIG_RESOLUTION_FIELDS) {
|
|
331
|
+
if (!field.envVar) continue;
|
|
332
|
+
if (Object.prototype.hasOwnProperty.call(envRaw, field.envVar)) continue;
|
|
333
|
+
envRaw[field.envVar] = loadEnvVar(field.envVar);
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const fieldMeta = {};
|
|
337
|
+
for (const field of CONFIG_RESOLUTION_FIELDS) {
|
|
338
|
+
const envValue = field.envVar ? envRaw[field.envVar] : undefined;
|
|
339
|
+
const source = hasConfigValue(cfg, field)
|
|
340
|
+
? "config"
|
|
341
|
+
: hasEnvValue(envValue, field.envMode)
|
|
342
|
+
? "env"
|
|
343
|
+
: field.fallbackSource;
|
|
344
|
+
fieldMeta[field.key] = {
|
|
345
|
+
source,
|
|
346
|
+
inheritedValue: resolveInheritedValue(field, resolved, envRaw),
|
|
347
|
+
uiDefaultValue: field.uiDefaultValue,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return { resolved, fieldMeta };
|
|
352
|
+
}
|
|
353
|
+
|
|
296
354
|
const AGENT_OVERRIDABLE_KEYS = [
|
|
297
355
|
"knowledgebaseIds", "memoryLimitNumber", "preferenceLimitNumber",
|
|
298
356
|
"includePreference", "includeToolMemory", "toolMemoryLimitNumber",
|
package/moltbot.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "memos-cloud-openclaw-plugin",
|
|
3
3
|
"name": "MemOS Cloud OpenClaw Plugin",
|
|
4
4
|
"description": "MemOS Cloud recall + add memory via lifecycle hooks",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.12",
|
|
6
6
|
"kind": "lifecycle",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"configSchema": {
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"userId": {
|
|
20
20
|
"type": "string",
|
|
21
|
-
"description": "MemOS user_id (default: openclaw-user)"
|
|
22
|
-
"default": "openclaw-user"
|
|
21
|
+
"description": "MemOS user_id (default: openclaw-user)"
|
|
23
22
|
},
|
|
24
23
|
"conversationId": {
|
|
25
24
|
"type": "string",
|
|
@@ -38,17 +37,14 @@
|
|
|
38
37
|
"enum": [
|
|
39
38
|
"none",
|
|
40
39
|
"counter"
|
|
41
|
-
]
|
|
42
|
-
"default": "none"
|
|
40
|
+
]
|
|
43
41
|
},
|
|
44
42
|
"useDirectSessionUserId": {
|
|
45
43
|
"type": "boolean",
|
|
46
|
-
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId."
|
|
47
|
-
"default": false
|
|
44
|
+
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId."
|
|
48
45
|
},
|
|
49
46
|
"resetOnNew": {
|
|
50
|
-
"type": "boolean"
|
|
51
|
-
"default": true
|
|
47
|
+
"type": "boolean"
|
|
52
48
|
},
|
|
53
49
|
"queryPrefix": {
|
|
54
50
|
"type": "string",
|
|
@@ -63,8 +59,37 @@
|
|
|
63
59
|
"default": true
|
|
64
60
|
},
|
|
65
61
|
"recallGlobal": {
|
|
66
|
-
"type": "boolean"
|
|
67
|
-
|
|
62
|
+
"type": "boolean"
|
|
63
|
+
},
|
|
64
|
+
"recallFilterEnabled": {
|
|
65
|
+
"type": "boolean"
|
|
66
|
+
},
|
|
67
|
+
"recallFilterBaseUrl": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "OpenAI-compatible base URL for recall filter model"
|
|
70
|
+
},
|
|
71
|
+
"recallFilterApiKey": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "API key for recall filter model endpoint"
|
|
74
|
+
},
|
|
75
|
+
"recallFilterModel": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "Model name used to filter recall candidates"
|
|
78
|
+
},
|
|
79
|
+
"recallFilterTimeoutMs": {
|
|
80
|
+
"type": "integer"
|
|
81
|
+
},
|
|
82
|
+
"recallFilterRetries": {
|
|
83
|
+
"type": "integer"
|
|
84
|
+
},
|
|
85
|
+
"recallFilterCandidateLimit": {
|
|
86
|
+
"type": "integer"
|
|
87
|
+
},
|
|
88
|
+
"recallFilterMaxItemChars": {
|
|
89
|
+
"type": "integer"
|
|
90
|
+
},
|
|
91
|
+
"recallFilterFailOpen": {
|
|
92
|
+
"type": "boolean"
|
|
68
93
|
},
|
|
69
94
|
"addEnabled": {
|
|
70
95
|
"type": "boolean",
|
|
@@ -75,13 +100,11 @@
|
|
|
75
100
|
"enum": [
|
|
76
101
|
"last_turn",
|
|
77
102
|
"full_session"
|
|
78
|
-
]
|
|
79
|
-
"default": "last_turn"
|
|
103
|
+
]
|
|
80
104
|
},
|
|
81
105
|
"maxMessageChars": {
|
|
82
106
|
"type": "integer",
|
|
83
|
-
"description": "Max chars per message when adding"
|
|
84
|
-
"default": 20000
|
|
107
|
+
"description": "Max chars per message when adding"
|
|
85
108
|
},
|
|
86
109
|
"maxItemChars": {
|
|
87
110
|
"type": "integer",
|
|
@@ -89,12 +112,11 @@
|
|
|
89
112
|
"default": 8000
|
|
90
113
|
},
|
|
91
114
|
"includeAssistant": {
|
|
92
|
-
"type": "boolean"
|
|
93
|
-
"default": true
|
|
115
|
+
"type": "boolean"
|
|
94
116
|
},
|
|
95
117
|
"memoryLimitNumber": {
|
|
96
118
|
"type": "integer",
|
|
97
|
-
"default":
|
|
119
|
+
"default": 9
|
|
98
120
|
},
|
|
99
121
|
"preferenceLimitNumber": {
|
|
100
122
|
"type": "integer",
|
|
@@ -112,50 +134,15 @@
|
|
|
112
134
|
"type": "integer",
|
|
113
135
|
"default": 6
|
|
114
136
|
},
|
|
137
|
+
"relativity": {
|
|
138
|
+
"type": "number",
|
|
139
|
+
"description": "Minimum relativity score required before a recalled item is injected"
|
|
140
|
+
},
|
|
115
141
|
"filter": {
|
|
116
142
|
"type": "object",
|
|
117
143
|
"description": "MemOS search filter",
|
|
118
144
|
"additionalProperties": true
|
|
119
145
|
},
|
|
120
|
-
"relativity": {
|
|
121
|
-
"type": "number",
|
|
122
|
-
"description": "Search relativity threshold",
|
|
123
|
-
"default": 0.45
|
|
124
|
-
},
|
|
125
|
-
"recallFilterEnabled": {
|
|
126
|
-
"type": "boolean",
|
|
127
|
-
"default": false
|
|
128
|
-
},
|
|
129
|
-
"recallFilterBaseUrl": {
|
|
130
|
-
"type": "string",
|
|
131
|
-
"description": "OpenAI-compatible API base URL for recall filtering"
|
|
132
|
-
},
|
|
133
|
-
"recallFilterApiKey": {
|
|
134
|
-
"type": "string"
|
|
135
|
-
},
|
|
136
|
-
"recallFilterModel": {
|
|
137
|
-
"type": "string"
|
|
138
|
-
},
|
|
139
|
-
"recallFilterTimeoutMs": {
|
|
140
|
-
"type": "integer",
|
|
141
|
-
"default": 30000
|
|
142
|
-
},
|
|
143
|
-
"recallFilterRetries": {
|
|
144
|
-
"type": "integer",
|
|
145
|
-
"default": 1
|
|
146
|
-
},
|
|
147
|
-
"recallFilterCandidateLimit": {
|
|
148
|
-
"type": "integer",
|
|
149
|
-
"default": 30
|
|
150
|
-
},
|
|
151
|
-
"recallFilterMaxItemChars": {
|
|
152
|
-
"type": "integer",
|
|
153
|
-
"default": 500
|
|
154
|
-
},
|
|
155
|
-
"recallFilterFailOpen": {
|
|
156
|
-
"type": "boolean",
|
|
157
|
-
"default": true
|
|
158
|
-
},
|
|
159
146
|
"knowledgebaseIds": {
|
|
160
147
|
"type": "array",
|
|
161
148
|
"items": {
|
|
@@ -176,8 +163,7 @@
|
|
|
176
163
|
"type": "string"
|
|
177
164
|
},
|
|
178
165
|
"multiAgentMode": {
|
|
179
|
-
"type": "boolean"
|
|
180
|
-
"default": false
|
|
166
|
+
"type": "boolean"
|
|
181
167
|
},
|
|
182
168
|
"allowedAgents": {
|
|
183
169
|
"type": "array",
|
|
@@ -200,6 +186,9 @@
|
|
|
200
186
|
}
|
|
201
187
|
},
|
|
202
188
|
"asyncMode": {
|
|
189
|
+
"type": "boolean"
|
|
190
|
+
},
|
|
191
|
+
"rumEnabled": {
|
|
203
192
|
"type": "boolean",
|
|
204
193
|
"default": true
|
|
205
194
|
},
|
|
@@ -212,8 +201,7 @@
|
|
|
212
201
|
"default": 1
|
|
213
202
|
},
|
|
214
203
|
"throttleMs": {
|
|
215
|
-
"type": "integer"
|
|
216
|
-
"default": 0
|
|
204
|
+
"type": "integer"
|
|
217
205
|
},
|
|
218
206
|
"agentOverrides": {
|
|
219
207
|
"type": "object",
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "memos-cloud-openclaw-plugin",
|
|
3
3
|
"name": "MemOS Cloud OpenClaw Plugin",
|
|
4
4
|
"description": "MemOS Cloud recall + add memory via lifecycle hooks",
|
|
5
|
-
"version": "0.1.
|
|
5
|
+
"version": "0.1.12",
|
|
6
6
|
"kind": "lifecycle",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"configSchema": {
|
|
@@ -18,8 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"userId": {
|
|
20
20
|
"type": "string",
|
|
21
|
-
"description": "MemOS user_id (default: openclaw-user)"
|
|
22
|
-
"default": "openclaw-user"
|
|
21
|
+
"description": "MemOS user_id (default: openclaw-user)"
|
|
23
22
|
},
|
|
24
23
|
"conversationId": {
|
|
25
24
|
"type": "string",
|
|
@@ -38,17 +37,14 @@
|
|
|
38
37
|
"enum": [
|
|
39
38
|
"none",
|
|
40
39
|
"counter"
|
|
41
|
-
]
|
|
42
|
-
"default": "none"
|
|
40
|
+
]
|
|
43
41
|
},
|
|
44
42
|
"useDirectSessionUserId": {
|
|
45
43
|
"type": "boolean",
|
|
46
|
-
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId."
|
|
47
|
-
"default": false
|
|
44
|
+
"description": "When enabled, direct-session keys like agent:main:<provider>:direct:<id> use the direct id as MemOS user_id instead of the default configured userId."
|
|
48
45
|
},
|
|
49
46
|
"resetOnNew": {
|
|
50
|
-
"type": "boolean"
|
|
51
|
-
"default": true
|
|
47
|
+
"type": "boolean"
|
|
52
48
|
},
|
|
53
49
|
"queryPrefix": {
|
|
54
50
|
"type": "string",
|
|
@@ -63,8 +59,37 @@
|
|
|
63
59
|
"default": true
|
|
64
60
|
},
|
|
65
61
|
"recallGlobal": {
|
|
66
|
-
"type": "boolean"
|
|
67
|
-
|
|
62
|
+
"type": "boolean"
|
|
63
|
+
},
|
|
64
|
+
"recallFilterEnabled": {
|
|
65
|
+
"type": "boolean"
|
|
66
|
+
},
|
|
67
|
+
"recallFilterBaseUrl": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "OpenAI-compatible base URL for recall filter model"
|
|
70
|
+
},
|
|
71
|
+
"recallFilterApiKey": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "API key for recall filter model endpoint"
|
|
74
|
+
},
|
|
75
|
+
"recallFilterModel": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"description": "Model name used to filter recall candidates"
|
|
78
|
+
},
|
|
79
|
+
"recallFilterTimeoutMs": {
|
|
80
|
+
"type": "integer"
|
|
81
|
+
},
|
|
82
|
+
"recallFilterRetries": {
|
|
83
|
+
"type": "integer"
|
|
84
|
+
},
|
|
85
|
+
"recallFilterCandidateLimit": {
|
|
86
|
+
"type": "integer"
|
|
87
|
+
},
|
|
88
|
+
"recallFilterMaxItemChars": {
|
|
89
|
+
"type": "integer"
|
|
90
|
+
},
|
|
91
|
+
"recallFilterFailOpen": {
|
|
92
|
+
"type": "boolean"
|
|
68
93
|
},
|
|
69
94
|
"addEnabled": {
|
|
70
95
|
"type": "boolean",
|
|
@@ -75,13 +100,11 @@
|
|
|
75
100
|
"enum": [
|
|
76
101
|
"last_turn",
|
|
77
102
|
"full_session"
|
|
78
|
-
]
|
|
79
|
-
"default": "last_turn"
|
|
103
|
+
]
|
|
80
104
|
},
|
|
81
105
|
"maxMessageChars": {
|
|
82
106
|
"type": "integer",
|
|
83
|
-
"description": "Max chars per message when adding"
|
|
84
|
-
"default": 20000
|
|
107
|
+
"description": "Max chars per message when adding"
|
|
85
108
|
},
|
|
86
109
|
"maxItemChars": {
|
|
87
110
|
"type": "integer",
|
|
@@ -89,12 +112,11 @@
|
|
|
89
112
|
"default": 8000
|
|
90
113
|
},
|
|
91
114
|
"includeAssistant": {
|
|
92
|
-
"type": "boolean"
|
|
93
|
-
"default": true
|
|
115
|
+
"type": "boolean"
|
|
94
116
|
},
|
|
95
117
|
"memoryLimitNumber": {
|
|
96
118
|
"type": "integer",
|
|
97
|
-
"default":
|
|
119
|
+
"default": 9
|
|
98
120
|
},
|
|
99
121
|
"preferenceLimitNumber": {
|
|
100
122
|
"type": "integer",
|
|
@@ -112,50 +134,15 @@
|
|
|
112
134
|
"type": "integer",
|
|
113
135
|
"default": 6
|
|
114
136
|
},
|
|
137
|
+
"relativity": {
|
|
138
|
+
"type": "number",
|
|
139
|
+
"description": "Minimum relativity score required before a recalled item is injected"
|
|
140
|
+
},
|
|
115
141
|
"filter": {
|
|
116
142
|
"type": "object",
|
|
117
143
|
"description": "MemOS search filter",
|
|
118
144
|
"additionalProperties": true
|
|
119
145
|
},
|
|
120
|
-
"relativity": {
|
|
121
|
-
"type": "number",
|
|
122
|
-
"description": "Search relativity threshold",
|
|
123
|
-
"default": 0.45
|
|
124
|
-
},
|
|
125
|
-
"recallFilterEnabled": {
|
|
126
|
-
"type": "boolean",
|
|
127
|
-
"default": false
|
|
128
|
-
},
|
|
129
|
-
"recallFilterBaseUrl": {
|
|
130
|
-
"type": "string",
|
|
131
|
-
"description": "OpenAI-compatible API base URL for recall filtering"
|
|
132
|
-
},
|
|
133
|
-
"recallFilterApiKey": {
|
|
134
|
-
"type": "string"
|
|
135
|
-
},
|
|
136
|
-
"recallFilterModel": {
|
|
137
|
-
"type": "string"
|
|
138
|
-
},
|
|
139
|
-
"recallFilterTimeoutMs": {
|
|
140
|
-
"type": "integer",
|
|
141
|
-
"default": 30000
|
|
142
|
-
},
|
|
143
|
-
"recallFilterRetries": {
|
|
144
|
-
"type": "integer",
|
|
145
|
-
"default": 1
|
|
146
|
-
},
|
|
147
|
-
"recallFilterCandidateLimit": {
|
|
148
|
-
"type": "integer",
|
|
149
|
-
"default": 30
|
|
150
|
-
},
|
|
151
|
-
"recallFilterMaxItemChars": {
|
|
152
|
-
"type": "integer",
|
|
153
|
-
"default": 500
|
|
154
|
-
},
|
|
155
|
-
"recallFilterFailOpen": {
|
|
156
|
-
"type": "boolean",
|
|
157
|
-
"default": true
|
|
158
|
-
},
|
|
159
146
|
"knowledgebaseIds": {
|
|
160
147
|
"type": "array",
|
|
161
148
|
"items": {
|
|
@@ -176,8 +163,7 @@
|
|
|
176
163
|
"type": "string"
|
|
177
164
|
},
|
|
178
165
|
"multiAgentMode": {
|
|
179
|
-
"type": "boolean"
|
|
180
|
-
"default": false
|
|
166
|
+
"type": "boolean"
|
|
181
167
|
},
|
|
182
168
|
"allowedAgents": {
|
|
183
169
|
"type": "array",
|
|
@@ -200,6 +186,9 @@
|
|
|
200
186
|
}
|
|
201
187
|
},
|
|
202
188
|
"asyncMode": {
|
|
189
|
+
"type": "boolean"
|
|
190
|
+
},
|
|
191
|
+
"rumEnabled": {
|
|
203
192
|
"type": "boolean",
|
|
204
193
|
"default": true
|
|
205
194
|
},
|
|
@@ -212,8 +201,7 @@
|
|
|
212
201
|
"default": 1
|
|
213
202
|
},
|
|
214
203
|
"throttleMs": {
|
|
215
|
-
"type": "integer"
|
|
216
|
-
"default": 0
|
|
204
|
+
"type": "integer"
|
|
217
205
|
},
|
|
218
206
|
"agentOverrides": {
|
|
219
207
|
"type": "object",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memtensor/memos-cloud-openclaw-plugin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "OpenClaw lifecycle plugin for MemOS Cloud (add + recall memory)",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"sync-version": "node scripts/sync-version.js",
|
|
@@ -29,16 +29,25 @@
|
|
|
29
29
|
"author": "MemTensor",
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"openclaw": {
|
|
32
|
+
"hooks": [
|
|
33
|
+
"./index.js"
|
|
34
|
+
],
|
|
32
35
|
"extensions": [
|
|
33
36
|
"./index.js"
|
|
34
37
|
]
|
|
35
38
|
},
|
|
36
39
|
"clawdbot": {
|
|
40
|
+
"hooks": [
|
|
41
|
+
"./index.js"
|
|
42
|
+
],
|
|
37
43
|
"extensions": [
|
|
38
44
|
"./index.js"
|
|
39
45
|
]
|
|
40
46
|
},
|
|
41
47
|
"moltbot": {
|
|
48
|
+
"hooks": [
|
|
49
|
+
"./index.js"
|
|
50
|
+
],
|
|
42
51
|
"extensions": [
|
|
43
52
|
"./index.js"
|
|
44
53
|
]
|