@memtensor/memos-local-openclaw-plugin 1.0.6-beta.9 → 1.0.6

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 (224) hide show
  1. package/openclaw.plugin.json +1 -1
  2. package/package.json +3 -5
  3. package/prebuilds/darwin-arm64/better_sqlite3.node +0 -0
  4. package/prebuilds/darwin-x64/better_sqlite3.node +0 -0
  5. package/prebuilds/linux-x64/better_sqlite3.node +0 -0
  6. package/prebuilds/win32-x64/better_sqlite3.node +0 -0
  7. package/scripts/postinstall.cjs +44 -44
  8. package/skill/memos-memory-guide/SKILL.md +20 -0
  9. package/src/update-check.ts +2 -7
  10. package/src/viewer/html.ts +4 -4
  11. package/src/viewer/server.ts +12 -2
  12. package/telemetry.credentials.json +5 -0
  13. package/dist/capture/index.d.ts +0 -26
  14. package/dist/capture/index.d.ts.map +0 -1
  15. package/dist/capture/index.js +0 -283
  16. package/dist/capture/index.js.map +0 -1
  17. package/dist/client/connector.d.ts +0 -34
  18. package/dist/client/connector.d.ts.map +0 -1
  19. package/dist/client/connector.js +0 -381
  20. package/dist/client/connector.js.map +0 -1
  21. package/dist/client/hub.d.ts +0 -61
  22. package/dist/client/hub.d.ts.map +0 -1
  23. package/dist/client/hub.js +0 -174
  24. package/dist/client/hub.js.map +0 -1
  25. package/dist/client/skill-sync.d.ts +0 -36
  26. package/dist/client/skill-sync.d.ts.map +0 -1
  27. package/dist/client/skill-sync.js +0 -226
  28. package/dist/client/skill-sync.js.map +0 -1
  29. package/dist/config.d.ts +0 -5
  30. package/dist/config.d.ts.map +0 -1
  31. package/dist/config.js +0 -171
  32. package/dist/config.js.map +0 -1
  33. package/dist/embedding/index.d.ts +0 -14
  34. package/dist/embedding/index.d.ts.map +0 -1
  35. package/dist/embedding/index.js +0 -105
  36. package/dist/embedding/index.js.map +0 -1
  37. package/dist/embedding/local.d.ts +0 -3
  38. package/dist/embedding/local.d.ts.map +0 -1
  39. package/dist/embedding/local.js +0 -66
  40. package/dist/embedding/local.js.map +0 -1
  41. package/dist/embedding/providers/cohere.d.ts +0 -4
  42. package/dist/embedding/providers/cohere.d.ts.map +0 -1
  43. package/dist/embedding/providers/cohere.js +0 -57
  44. package/dist/embedding/providers/cohere.js.map +0 -1
  45. package/dist/embedding/providers/gemini.d.ts +0 -3
  46. package/dist/embedding/providers/gemini.d.ts.map +0 -1
  47. package/dist/embedding/providers/gemini.js +0 -31
  48. package/dist/embedding/providers/gemini.js.map +0 -1
  49. package/dist/embedding/providers/mistral.d.ts +0 -3
  50. package/dist/embedding/providers/mistral.d.ts.map +0 -1
  51. package/dist/embedding/providers/mistral.js +0 -25
  52. package/dist/embedding/providers/mistral.js.map +0 -1
  53. package/dist/embedding/providers/openai.d.ts +0 -3
  54. package/dist/embedding/providers/openai.d.ts.map +0 -1
  55. package/dist/embedding/providers/openai.js +0 -35
  56. package/dist/embedding/providers/openai.js.map +0 -1
  57. package/dist/embedding/providers/voyage.d.ts +0 -3
  58. package/dist/embedding/providers/voyage.d.ts.map +0 -1
  59. package/dist/embedding/providers/voyage.js +0 -25
  60. package/dist/embedding/providers/voyage.js.map +0 -1
  61. package/dist/hub/auth.d.ts +0 -19
  62. package/dist/hub/auth.d.ts.map +0 -1
  63. package/dist/hub/auth.js +0 -70
  64. package/dist/hub/auth.js.map +0 -1
  65. package/dist/hub/server.d.ts +0 -52
  66. package/dist/hub/server.d.ts.map +0 -1
  67. package/dist/hub/server.js +0 -1197
  68. package/dist/hub/server.js.map +0 -1
  69. package/dist/hub/user-manager.d.ts +0 -40
  70. package/dist/hub/user-manager.d.ts.map +0 -1
  71. package/dist/hub/user-manager.js +0 -153
  72. package/dist/hub/user-manager.js.map +0 -1
  73. package/dist/index.d.ts +0 -46
  74. package/dist/index.d.ts.map +0 -1
  75. package/dist/index.js +0 -82
  76. package/dist/index.js.map +0 -1
  77. package/dist/ingest/chunker.d.ts +0 -15
  78. package/dist/ingest/chunker.d.ts.map +0 -1
  79. package/dist/ingest/chunker.js +0 -192
  80. package/dist/ingest/chunker.js.map +0 -1
  81. package/dist/ingest/dedup.d.ts +0 -19
  82. package/dist/ingest/dedup.d.ts.map +0 -1
  83. package/dist/ingest/dedup.js +0 -50
  84. package/dist/ingest/dedup.js.map +0 -1
  85. package/dist/ingest/providers/anthropic.d.ts +0 -21
  86. package/dist/ingest/providers/anthropic.d.ts.map +0 -1
  87. package/dist/ingest/providers/anthropic.js +0 -314
  88. package/dist/ingest/providers/anthropic.js.map +0 -1
  89. package/dist/ingest/providers/bedrock.d.ts +0 -21
  90. package/dist/ingest/providers/bedrock.d.ts.map +0 -1
  91. package/dist/ingest/providers/bedrock.js +0 -313
  92. package/dist/ingest/providers/bedrock.js.map +0 -1
  93. package/dist/ingest/providers/gemini.d.ts +0 -21
  94. package/dist/ingest/providers/gemini.d.ts.map +0 -1
  95. package/dist/ingest/providers/gemini.js +0 -298
  96. package/dist/ingest/providers/gemini.js.map +0 -1
  97. package/dist/ingest/providers/index.d.ts +0 -68
  98. package/dist/ingest/providers/index.d.ts.map +0 -1
  99. package/dist/ingest/providers/index.js +0 -611
  100. package/dist/ingest/providers/index.js.map +0 -1
  101. package/dist/ingest/providers/openai.d.ts +0 -30
  102. package/dist/ingest/providers/openai.d.ts.map +0 -1
  103. package/dist/ingest/providers/openai.js +0 -387
  104. package/dist/ingest/providers/openai.js.map +0 -1
  105. package/dist/ingest/task-processor.d.ts +0 -91
  106. package/dist/ingest/task-processor.d.ts.map +0 -1
  107. package/dist/ingest/task-processor.js +0 -478
  108. package/dist/ingest/task-processor.js.map +0 -1
  109. package/dist/ingest/worker.d.ts +0 -23
  110. package/dist/ingest/worker.d.ts.map +0 -1
  111. package/dist/ingest/worker.js +0 -255
  112. package/dist/ingest/worker.js.map +0 -1
  113. package/dist/openclaw-api.d.ts +0 -53
  114. package/dist/openclaw-api.d.ts.map +0 -1
  115. package/dist/openclaw-api.js +0 -189
  116. package/dist/openclaw-api.js.map +0 -1
  117. package/dist/recall/engine.d.ts +0 -28
  118. package/dist/recall/engine.d.ts.map +0 -1
  119. package/dist/recall/engine.js +0 -343
  120. package/dist/recall/engine.js.map +0 -1
  121. package/dist/recall/mmr.d.ts +0 -17
  122. package/dist/recall/mmr.d.ts.map +0 -1
  123. package/dist/recall/mmr.js +0 -53
  124. package/dist/recall/mmr.js.map +0 -1
  125. package/dist/recall/recency.d.ts +0 -20
  126. package/dist/recall/recency.d.ts.map +0 -1
  127. package/dist/recall/recency.js +0 -26
  128. package/dist/recall/recency.js.map +0 -1
  129. package/dist/recall/rrf.d.ts +0 -16
  130. package/dist/recall/rrf.d.ts.map +0 -1
  131. package/dist/recall/rrf.js +0 -15
  132. package/dist/recall/rrf.js.map +0 -1
  133. package/dist/shared/llm-call.d.ts +0 -30
  134. package/dist/shared/llm-call.d.ts.map +0 -1
  135. package/dist/shared/llm-call.js +0 -253
  136. package/dist/shared/llm-call.js.map +0 -1
  137. package/dist/sharing/types.contract.d.ts +0 -2
  138. package/dist/sharing/types.contract.d.ts.map +0 -1
  139. package/dist/sharing/types.contract.js +0 -3
  140. package/dist/sharing/types.contract.js.map +0 -1
  141. package/dist/sharing/types.d.ts +0 -80
  142. package/dist/sharing/types.d.ts.map +0 -1
  143. package/dist/sharing/types.js +0 -3
  144. package/dist/sharing/types.js.map +0 -1
  145. package/dist/skill/bundled-memory-guide.d.ts +0 -2
  146. package/dist/skill/bundled-memory-guide.d.ts.map +0 -1
  147. package/dist/skill/bundled-memory-guide.js +0 -45
  148. package/dist/skill/bundled-memory-guide.js.map +0 -1
  149. package/dist/skill/evaluator.d.ts +0 -28
  150. package/dist/skill/evaluator.d.ts.map +0 -1
  151. package/dist/skill/evaluator.js +0 -169
  152. package/dist/skill/evaluator.js.map +0 -1
  153. package/dist/skill/evolver.d.ts +0 -48
  154. package/dist/skill/evolver.d.ts.map +0 -1
  155. package/dist/skill/evolver.js +0 -406
  156. package/dist/skill/evolver.js.map +0 -1
  157. package/dist/skill/generator.d.ts +0 -26
  158. package/dist/skill/generator.d.ts.map +0 -1
  159. package/dist/skill/generator.js +0 -521
  160. package/dist/skill/generator.js.map +0 -1
  161. package/dist/skill/installer.d.ts +0 -42
  162. package/dist/skill/installer.d.ts.map +0 -1
  163. package/dist/skill/installer.js +0 -165
  164. package/dist/skill/installer.js.map +0 -1
  165. package/dist/skill/upgrader.d.ts +0 -19
  166. package/dist/skill/upgrader.d.ts.map +0 -1
  167. package/dist/skill/upgrader.js +0 -366
  168. package/dist/skill/upgrader.js.map +0 -1
  169. package/dist/skill/validator.d.ts +0 -30
  170. package/dist/skill/validator.d.ts.map +0 -1
  171. package/dist/skill/validator.js +0 -272
  172. package/dist/skill/validator.js.map +0 -1
  173. package/dist/storage/ensure-binding.d.ts +0 -12
  174. package/dist/storage/ensure-binding.d.ts.map +0 -1
  175. package/dist/storage/ensure-binding.js +0 -53
  176. package/dist/storage/ensure-binding.js.map +0 -1
  177. package/dist/storage/sqlite.d.ts +0 -649
  178. package/dist/storage/sqlite.d.ts.map +0 -1
  179. package/dist/storage/sqlite.js +0 -2657
  180. package/dist/storage/sqlite.js.map +0 -1
  181. package/dist/storage/vector.d.ts +0 -12
  182. package/dist/storage/vector.d.ts.map +0 -1
  183. package/dist/storage/vector.js +0 -34
  184. package/dist/storage/vector.js.map +0 -1
  185. package/dist/telemetry.d.ts +0 -47
  186. package/dist/telemetry.d.ts.map +0 -1
  187. package/dist/telemetry.js +0 -312
  188. package/dist/telemetry.js.map +0 -1
  189. package/dist/tools/index.d.ts +0 -5
  190. package/dist/tools/index.d.ts.map +0 -1
  191. package/dist/tools/index.js +0 -12
  192. package/dist/tools/index.js.map +0 -1
  193. package/dist/tools/memory-get.d.ts +0 -4
  194. package/dist/tools/memory-get.d.ts.map +0 -1
  195. package/dist/tools/memory-get.js +0 -64
  196. package/dist/tools/memory-get.js.map +0 -1
  197. package/dist/tools/memory-search.d.ts +0 -7
  198. package/dist/tools/memory-search.d.ts.map +0 -1
  199. package/dist/tools/memory-search.js +0 -84
  200. package/dist/tools/memory-search.js.map +0 -1
  201. package/dist/tools/memory-timeline.d.ts +0 -4
  202. package/dist/tools/memory-timeline.d.ts.map +0 -1
  203. package/dist/tools/memory-timeline.js +0 -73
  204. package/dist/tools/memory-timeline.js.map +0 -1
  205. package/dist/tools/network-memory-detail.d.ts +0 -4
  206. package/dist/tools/network-memory-detail.d.ts.map +0 -1
  207. package/dist/tools/network-memory-detail.js +0 -34
  208. package/dist/tools/network-memory-detail.js.map +0 -1
  209. package/dist/types.d.ts +0 -330
  210. package/dist/types.d.ts.map +0 -1
  211. package/dist/types.js +0 -38
  212. package/dist/types.js.map +0 -1
  213. package/dist/update-check.d.ts +0 -21
  214. package/dist/update-check.d.ts.map +0 -1
  215. package/dist/update-check.js +0 -110
  216. package/dist/update-check.js.map +0 -1
  217. package/dist/viewer/html.d.ts +0 -2
  218. package/dist/viewer/html.d.ts.map +0 -1
  219. package/dist/viewer/html.js +0 -9168
  220. package/dist/viewer/html.js.map +0 -1
  221. package/dist/viewer/server.d.ts +0 -205
  222. package/dist/viewer/server.d.ts.map +0 -1
  223. package/dist/viewer/server.js +0 -4876
  224. package/dist/viewer/server.js.map +0 -1
@@ -1,253 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.loadOpenClawFallbackConfig = loadOpenClawFallbackConfig;
37
- exports.buildSkillConfigChain = buildSkillConfigChain;
38
- exports.callLLMOnce = callLLMOnce;
39
- exports.callLLMWithFallback = callLLMWithFallback;
40
- const fs = __importStar(require("fs"));
41
- const path = __importStar(require("path"));
42
- /**
43
- * Detect provider type from provider key name or base URL.
44
- */
45
- function detectProvider(providerKey, baseUrl) {
46
- const key = providerKey?.toLowerCase() ?? "";
47
- const url = baseUrl.toLowerCase();
48
- if (key.includes("anthropic") || url.includes("anthropic"))
49
- return "anthropic";
50
- if (key.includes("gemini") || url.includes("generativelanguage.googleapis.com")) {
51
- return "gemini";
52
- }
53
- if (key.includes("bedrock") || url.includes("bedrock"))
54
- return "bedrock";
55
- return "openai_compatible";
56
- }
57
- /**
58
- * Return the correct default endpoint for a given provider.
59
- */
60
- function defaultEndpointForProvider(provider, baseUrl) {
61
- const stripped = baseUrl.replace(/\/+$/, "");
62
- if (provider === "anthropic") {
63
- if (stripped.endsWith("/v1/messages"))
64
- return stripped;
65
- return `${stripped}/v1/messages`;
66
- }
67
- if (stripped.endsWith("/chat/completions"))
68
- return stripped;
69
- if (stripped.endsWith("/completions"))
70
- return stripped;
71
- return `${stripped}/chat/completions`;
72
- }
73
- /**
74
- * Build a SummarizerConfig from OpenClaw's native model configuration (openclaw.json).
75
- * Final fallback when both strongCfg and plugin summarizer fail or are absent.
76
- */
77
- function loadOpenClawFallbackConfig(log) {
78
- try {
79
- const home = process.env.HOME ?? process.env.USERPROFILE ?? "";
80
- const cfgPath = process.env.OPENCLAW_CONFIG_PATH
81
- || path.join(process.env.OPENCLAW_STATE_DIR || path.join(home, ".openclaw"), "openclaw.json");
82
- if (!fs.existsSync(cfgPath))
83
- return undefined;
84
- const raw = JSON.parse(fs.readFileSync(cfgPath, "utf-8"));
85
- const agentModel = raw?.agents?.defaults?.model?.primary;
86
- if (!agentModel)
87
- return undefined;
88
- const [providerKey, modelId] = agentModel.includes("/")
89
- ? agentModel.split("/", 2)
90
- : [undefined, agentModel];
91
- const providerCfg = providerKey
92
- ? raw?.models?.providers?.[providerKey]
93
- : Object.values(raw?.models?.providers ?? {})[0];
94
- if (!providerCfg)
95
- return undefined;
96
- const baseUrl = providerCfg.baseUrl;
97
- const apiKey = providerCfg.apiKey;
98
- if (!baseUrl || !apiKey)
99
- return undefined;
100
- const provider = detectProvider(providerKey, baseUrl);
101
- const endpoint = defaultEndpointForProvider(provider, baseUrl);
102
- log.debug(`OpenClaw fallback model: ${modelId} via ${baseUrl} (${provider})`);
103
- return {
104
- provider,
105
- endpoint,
106
- apiKey,
107
- model: modelId,
108
- };
109
- }
110
- catch (err) {
111
- log.debug(`Failed to load OpenClaw fallback config: ${err}`);
112
- return undefined;
113
- }
114
- }
115
- /**
116
- * Build the ordered fallback chain for skill-related LLM calls:
117
- * skillEvolution.summarizer → plugin summarizer → OpenClaw native model
118
- */
119
- function buildSkillConfigChain(ctx) {
120
- const chain = [];
121
- const skillCfg = ctx.config.skillEvolution?.summarizer;
122
- const pluginCfg = ctx.config.summarizer;
123
- const fallbackCfg = loadOpenClawFallbackConfig(ctx.log);
124
- if (skillCfg)
125
- chain.push(skillCfg);
126
- if (pluginCfg && pluginCfg !== skillCfg)
127
- chain.push(pluginCfg);
128
- if (fallbackCfg)
129
- chain.push(fallbackCfg);
130
- return chain;
131
- }
132
- function normalizeOpenAIEndpoint(url) {
133
- const stripped = url.replace(/\/+$/, "");
134
- if (stripped.endsWith("/chat/completions"))
135
- return stripped;
136
- if (stripped.endsWith("/completions"))
137
- return stripped;
138
- return `${stripped}/chat/completions`;
139
- }
140
- function normalizeAnthropicEndpoint(url) {
141
- const stripped = url.replace(/\/+$/, "");
142
- if (stripped.endsWith("/v1/messages"))
143
- return stripped;
144
- if (stripped.endsWith("/messages"))
145
- return stripped;
146
- return `${stripped}/v1/messages`;
147
- }
148
- function isAnthropicProvider(cfg) {
149
- return cfg.provider === "anthropic";
150
- }
151
- /**
152
- * Make a single LLM call with the given config. Throws on failure.
153
- * When cfg.provider === "openclaw", delegates to the OpenClaw host completion API.
154
- * Dispatches to Anthropic or OpenAI-compatible format based on provider.
155
- */
156
- async function callLLMOnce(cfg, prompt, opts = {}) {
157
- if (cfg.provider === "openclaw") {
158
- const api = opts.openclawAPI;
159
- if (!api) {
160
- throw new Error("OpenClaw API not available. Ensure sharing.capabilities.hostCompletion is enabled.");
161
- }
162
- const response = await api.complete({
163
- prompt,
164
- maxTokens: opts.maxTokens ?? 1024,
165
- temperature: opts.temperature ?? 0.1,
166
- model: cfg.model,
167
- });
168
- return response.text.trim();
169
- }
170
- if (isAnthropicProvider(cfg)) {
171
- return callLLMOnceAnthropic(cfg, prompt, opts);
172
- }
173
- return callLLMOnceOpenAI(cfg, prompt, opts);
174
- }
175
- async function callLLMOnceAnthropic(cfg, prompt, opts = {}) {
176
- const endpoint = normalizeAnthropicEndpoint(cfg.endpoint ?? "https://api.anthropic.com/v1/messages");
177
- const model = cfg.model ?? "claude-3-haiku-20240307";
178
- const headers = {
179
- "Content-Type": "application/json",
180
- "x-api-key": cfg.apiKey ?? "",
181
- "anthropic-version": "2023-06-01",
182
- ...cfg.headers,
183
- };
184
- const resp = await fetch(endpoint, {
185
- method: "POST",
186
- headers,
187
- body: JSON.stringify({
188
- model,
189
- temperature: opts.temperature ?? 0.1,
190
- max_tokens: opts.maxTokens ?? 1024,
191
- messages: [{ role: "user", content: prompt }],
192
- }),
193
- signal: AbortSignal.timeout(opts.timeoutMs ?? 30_000),
194
- });
195
- if (!resp.ok) {
196
- const body = await resp.text();
197
- throw new Error(`LLM call failed (${resp.status}): ${body}`);
198
- }
199
- const json = (await resp.json());
200
- return json.content.find((c) => c.type === "text")?.text?.trim() ?? "";
201
- }
202
- async function callLLMOnceOpenAI(cfg, prompt, opts = {}) {
203
- const endpoint = normalizeOpenAIEndpoint(cfg.endpoint ?? "https://api.openai.com/v1/chat/completions");
204
- const model = cfg.model ?? "gpt-4o-mini";
205
- const headers = {
206
- "Content-Type": "application/json",
207
- Authorization: `Bearer ${cfg.apiKey}`,
208
- ...cfg.headers,
209
- };
210
- const resp = await fetch(endpoint, {
211
- method: "POST",
212
- headers,
213
- body: JSON.stringify({
214
- model,
215
- temperature: opts.temperature ?? 0.1,
216
- max_tokens: opts.maxTokens ?? 1024,
217
- messages: [{ role: "user", content: prompt }],
218
- }),
219
- signal: AbortSignal.timeout(opts.timeoutMs ?? 30_000),
220
- });
221
- if (!resp.ok) {
222
- const body = await resp.text();
223
- throw new Error(`LLM call failed (${resp.status}): ${body}`);
224
- }
225
- const json = (await resp.json());
226
- return json.choices[0]?.message?.content?.trim() ?? "";
227
- }
228
- /**
229
- * Call LLM with fallback chain: tries each config in order until one succeeds.
230
- * Returns the result string, or throws if ALL configs fail.
231
- */
232
- async function callLLMWithFallback(chain, prompt, log, label, opts = {}) {
233
- if (chain.length === 0) {
234
- throw new Error(`${label}: no LLM config available`);
235
- }
236
- for (let i = 0; i < chain.length; i++) {
237
- try {
238
- return await callLLMOnce(chain[i], prompt, opts);
239
- }
240
- catch (err) {
241
- const modelInfo = `${chain[i].provider ?? "?"}/${chain[i].model ?? "?"}`;
242
- if (i < chain.length - 1) {
243
- log.warn(`${label} failed (${modelInfo}), trying next fallback: ${err}`);
244
- }
245
- else {
246
- log.error(`${label} failed (${modelInfo}), no more fallbacks: ${err}`);
247
- throw err;
248
- }
249
- }
250
- }
251
- throw new Error(`${label}: all models failed`);
252
- }
253
- //# sourceMappingURL=llm-call.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-call.js","sourceRoot":"","sources":["../../src/shared/llm-call.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.contract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.contract.d.ts","sourceRoot":"","sources":["../../src/sharing/types.contract.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.contract.js","sourceRoot":"","sources":["../../src/sharing/types.contract.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
1
- import type { ClientModeConfig, HubModeConfig, Role, SearchResult, SharingCapabilities, SharingConfig, SharingRole, SkillGenerateOutput } from "../types";
2
- export type HubScope = "local" | "group" | "all";
3
- export type SharedVisibility = "group" | "public";
4
- export type UserRole = "admin" | "member";
5
- export type UserStatus = "pending" | "active" | "blocked" | "rejected" | "removed" | "left";
6
- export type { ClientModeConfig, HubModeConfig, SharingCapabilities, SharingConfig, SharingRole };
7
- export interface GroupInfo {
8
- id: string;
9
- name: string;
10
- description?: string;
11
- }
12
- export interface UserInfo {
13
- id: string;
14
- username: string;
15
- deviceName?: string;
16
- role: UserRole;
17
- status: UserStatus;
18
- groups: GroupInfo[];
19
- }
20
- export interface HubSearchHit {
21
- remoteHitId: string;
22
- summary: string;
23
- excerpt: string;
24
- hubRank: number;
25
- taskTitle: string | null;
26
- ownerName: string;
27
- groupName: string | null;
28
- visibility: SharedVisibility;
29
- source: {
30
- ts: number;
31
- role: Role;
32
- };
33
- }
34
- export interface HubSearchMeta {
35
- totalCandidates: number;
36
- searchedGroups: string[];
37
- includedPublic: boolean;
38
- }
39
- export interface HubSearchResult {
40
- hits: HubSearchHit[];
41
- meta: HubSearchMeta;
42
- }
43
- export interface HubMemoryDetail {
44
- remoteHitId: string;
45
- content: string;
46
- summary: string;
47
- source: {
48
- ts: number;
49
- role: Role;
50
- };
51
- }
52
- export interface HubSkillHit {
53
- skillId: string;
54
- name: string;
55
- description: string;
56
- version: number;
57
- visibility: SharedVisibility;
58
- groupName: string | null;
59
- ownerName: string;
60
- qualityScore: number | null;
61
- }
62
- export interface HubSkillSearchResult {
63
- hits: HubSkillHit[];
64
- }
65
- export interface NetworkSearchResult {
66
- local: SearchResult;
67
- hub: HubSearchResult;
68
- }
69
- export interface SkillBundleMetadata {
70
- id: string;
71
- name: string;
72
- description: string;
73
- version: number;
74
- qualityScore: number | null;
75
- }
76
- export interface SkillBundle {
77
- metadata: SkillBundleMetadata;
78
- bundle: SkillGenerateOutput;
79
- }
80
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sharing/types.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sharing/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export declare const MEMORY_GUIDE_SKILL_MD: string;
2
- //# sourceMappingURL=bundled-memory-guide.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundled-memory-guide.d.ts","sourceRoot":"","sources":["../../src/skill/bundled-memory-guide.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,EAAE,MAA4C,CAAC"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.MEMORY_GUIDE_SKILL_MD = void 0;
37
- /**
38
- * Bundled MemOS memory-guide skill content.
39
- * Reads from skill/memos-memory-guide/SKILL.md at runtime (single source of truth).
40
- */
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const skillPath = path.join(__dirname, "..", "..", "skill", "memos-memory-guide", "SKILL.md");
44
- exports.MEMORY_GUIDE_SKILL_MD = fs.readFileSync(skillPath, "utf-8");
45
- //# sourceMappingURL=bundled-memory-guide.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bundled-memory-guide.js","sourceRoot":"","sources":["../../src/skill/bundled-memory-guide.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,uCAAyB;AACzB,2CAA6B;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;AACjF,QAAA,qBAAqB,GAAW,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC"}
@@ -1,28 +0,0 @@
1
- import type { Chunk, Task, Skill, PluginContext } from "../types";
2
- export interface CreateEvalResult {
3
- shouldGenerate: boolean;
4
- reason: string;
5
- suggestedName: string;
6
- suggestedTags: string[];
7
- confidence: number;
8
- }
9
- export interface UpgradeEvalResult {
10
- shouldUpgrade: boolean;
11
- upgradeType: "refine" | "extend" | "fix";
12
- dimensions: string[];
13
- reason: string;
14
- mergeStrategy: string;
15
- confidence: number;
16
- }
17
- export declare class SkillEvaluator {
18
- private ctx;
19
- constructor(ctx: PluginContext);
20
- passesRuleFilter(chunks: Chunk[], task: Task): {
21
- pass: boolean;
22
- skipReason: string;
23
- };
24
- evaluateCreate(task: Task): Promise<CreateEvalResult>;
25
- evaluateUpgrade(task: Task, skill: Skill, skillContent: string): Promise<UpgradeEvalResult>;
26
- private parseJSON;
27
- }
28
- //# sourceMappingURL=evaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../../src/skill/evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIlE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAuFD,qBAAa,cAAc;IACb,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAEtC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IA2B9E,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBrD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyBjG,OAAO,CAAC,SAAS;CASlB"}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SkillEvaluator = void 0;
4
- const types_1 = require("../types");
5
- const llm_call_1 = require("../shared/llm-call");
6
- const CREATE_EVAL_PROMPT = `You are a strict experience evaluation expert. Based on the completed task record below, decide whether this task contains **reusable, transferable** experience worth distilling into a "skill".
7
-
8
- A skill is a reusable guide that helps an AI agent handle **the same type of task** better in the future. The key question is: "Will someone likely need to do this exact type of thing again?"
9
-
10
- STRICT criteria — must meet ALL of:
11
- 1. **Repeatable**: The task type is likely to recur (not a one-off personal conversation)
12
- 2. **Transferable**: The approach/solution would help others facing the same problem
13
- 3. **Technical depth**: Contains non-trivial steps, commands, code, configs, or diagnostic reasoning
14
-
15
- Worth distilling (must meet criteria above AND at least ONE below):
16
- - Solves a recurring technical problem with a specific approach/workflow
17
- - Went through trial-and-error (wrong approach then corrected) — the learning is valuable
18
- - Involves non-obvious usage of specific tools, APIs, or frameworks
19
- - Contains debugging/troubleshooting with diagnostic reasoning
20
- - Shows how to combine multiple tools/services to accomplish a technical goal
21
- - Contains deployment, configuration, or infrastructure setup steps
22
- - Demonstrates a reusable data processing or automation pipeline
23
-
24
- NOT worth distilling (if ANY matches, return shouldGenerate=false):
25
- - Pure factual Q&A with no process ("what is TCP", "what's the capital of France")
26
- - Single-turn simple answers with no workflow
27
- - Conversation too fragmented or incoherent to extract a clear process
28
- - One-off personal tasks: identity confirmation, preference setting, self-introduction
29
- - Casual chat, opinion discussion, news commentary, brainstorming without actionable output
30
- - Simple information lookup or summarization (e.g. "summarize this article", "explain X concept")
31
- - Organizing/listing personal information (work history, resume, contacts)
32
- - Generic product/system overviews without specific operational steps
33
- - Tasks where the "steps" are just the AI answering questions (no real workflow)
34
-
35
- Task title: {TITLE}
36
- Task summary:
37
- {SUMMARY}
38
-
39
- LANGUAGE RULE (MUST FOLLOW): Detect the language of the task title/summary. If it is Chinese, the "reason" field MUST be in Chinese. If English, reason in English. Only "suggestedName" stays in English kebab-case. 如果任务标题/摘要是中文,reason 必须用中文。
40
-
41
- Reply in JSON only, no extra text:
42
- {
43
- "shouldGenerate": boolean,
44
- "reason": "brief explanation (same language as input)",
45
- "suggestedName": "kebab-case-name",
46
- "suggestedTags": ["tag1", "tag2"],
47
- "confidence": 0.0-1.0
48
- }`;
49
- const UPGRADE_EVAL_PROMPT = `You are a skill upgrade evaluation expert.
50
-
51
- Existing skill (v{VERSION}):
52
- Name: {SKILL_NAME}
53
- Content:
54
- {SKILL_CONTENT}
55
-
56
- Newly completed task:
57
- Title: {TITLE}
58
- Summary:
59
- {SUMMARY}
60
-
61
- Does the new task bring substantive improvements to the existing skill?
62
-
63
- Worth upgrading (any one qualifies):
64
- 1. Faster — shorter path discovered
65
- 2. More elegant — cleaner, follows best practices better
66
- 3. More convenient — fewer dependencies or complexity
67
- 4. Fewer tokens — less exploration/trial-and-error needed
68
- 5. More accurate — corrects wrong parameters/steps in old skill
69
- 6. More robust — adds edge cases, error handling
70
- 7. New scenario — covers a variant the old skill didn't
71
- 8. Fixes outdated info — old skill has stale information
72
-
73
- NOT worth upgrading:
74
- - New task is identical to existing skill
75
- - New task's approach is worse than existing skill
76
- - Differences are trivial
77
-
78
- LANGUAGE RULE: "reason" and "mergeStrategy" MUST use the SAME language as the task title/summary. Chinese input → Chinese output. English input → English output.
79
-
80
- Reply in JSON only, no extra text:
81
- {
82
- "shouldUpgrade": boolean,
83
- "upgradeType": "refine" | "extend" | "fix",
84
- "dimensions": ["faster", "more_elegant", "more_convenient", "fewer_tokens", "more_accurate", "more_robust", "new_scenario", "fix_outdated"],
85
- "reason": "what new value the task brings (same language as input)",
86
- "mergeStrategy": "which specific parts need updating (same language as input)",
87
- "confidence": 0.0-1.0
88
- }`;
89
- class SkillEvaluator {
90
- ctx;
91
- constructor(ctx) {
92
- this.ctx = ctx;
93
- }
94
- passesRuleFilter(chunks, task) {
95
- const minChunks = this.ctx.config.skillEvolution?.minChunksForEval ?? types_1.DEFAULTS.skillMinChunksForEval;
96
- if (chunks.length < minChunks) {
97
- return { pass: false, skipReason: `chunks不足 (${chunks.length} < ${minChunks})` };
98
- }
99
- if (task.status === "skipped") {
100
- return { pass: false, skipReason: "task状态为skipped" };
101
- }
102
- if (task.summary.length < 100) {
103
- return { pass: false, skipReason: `summary过短 (${task.summary.length} < 100)` };
104
- }
105
- const userChunks = chunks.filter(c => c.role === "user");
106
- if (userChunks.length === 0) {
107
- return { pass: false, skipReason: "无用户消息" };
108
- }
109
- const assistantChunks = chunks.filter(c => c.role === "assistant");
110
- if (assistantChunks.length === 0) {
111
- return { pass: false, skipReason: "无助手回复" };
112
- }
113
- return { pass: true, skipReason: "" };
114
- }
115
- async evaluateCreate(task) {
116
- const chain = (0, llm_call_1.buildSkillConfigChain)(this.ctx);
117
- if (chain.length === 0) {
118
- return { shouldGenerate: false, reason: "no LLM configured", suggestedName: "", suggestedTags: [], confidence: 0 };
119
- }
120
- const prompt = CREATE_EVAL_PROMPT
121
- .replace("{TITLE}", task.title)
122
- .replace("{SUMMARY}", task.summary.slice(0, 3000));
123
- try {
124
- const raw = await (0, llm_call_1.callLLMWithFallback)(chain, prompt, this.ctx.log, "SkillEvaluator.create", { openclawAPI: this.ctx.openclawAPI });
125
- return this.parseJSON(raw, {
126
- shouldGenerate: false, reason: "parse failed", suggestedName: "", suggestedTags: [], confidence: 0,
127
- });
128
- }
129
- catch (err) {
130
- this.ctx.log.warn(`SkillEvaluator.evaluateCreate failed: ${err}`);
131
- return { shouldGenerate: false, reason: `error: ${err}`, suggestedName: "", suggestedTags: [], confidence: 0 };
132
- }
133
- }
134
- async evaluateUpgrade(task, skill, skillContent) {
135
- const chain = (0, llm_call_1.buildSkillConfigChain)(this.ctx);
136
- if (chain.length === 0) {
137
- return { shouldUpgrade: false, upgradeType: "refine", dimensions: [], reason: "no LLM configured", mergeStrategy: "", confidence: 0 };
138
- }
139
- const prompt = UPGRADE_EVAL_PROMPT
140
- .replace("{VERSION}", String(skill.version))
141
- .replace("{SKILL_NAME}", skill.name)
142
- .replace("{SKILL_CONTENT}", skillContent.slice(0, 4000))
143
- .replace("{TITLE}", task.title)
144
- .replace("{SUMMARY}", task.summary.slice(0, 3000));
145
- try {
146
- const raw = await (0, llm_call_1.callLLMWithFallback)(chain, prompt, this.ctx.log, "SkillEvaluator.upgrade", { openclawAPI: this.ctx.openclawAPI });
147
- return this.parseJSON(raw, {
148
- shouldUpgrade: false, upgradeType: "refine", dimensions: [], reason: "parse failed", mergeStrategy: "", confidence: 0,
149
- });
150
- }
151
- catch (err) {
152
- this.ctx.log.warn(`SkillEvaluator.evaluateUpgrade failed: ${err}`);
153
- return { shouldUpgrade: false, upgradeType: "refine", dimensions: [], reason: `error: ${err}`, mergeStrategy: "", confidence: 0 };
154
- }
155
- }
156
- parseJSON(raw, fallback) {
157
- const jsonMatch = raw.match(/\{[\s\S]*\}/);
158
- if (!jsonMatch)
159
- return fallback;
160
- try {
161
- return JSON.parse(jsonMatch[0]);
162
- }
163
- catch {
164
- return fallback;
165
- }
166
- }
167
- }
168
- exports.SkillEvaluator = SkillEvaluator;
169
- //# sourceMappingURL=evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../src/skill/evaluator.ts"],"names":[],"mappings":"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"}