@memtensor/memos-local-openclaw-plugin 0.1.3 → 0.1.5

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 (117) hide show
  1. package/.env.example +13 -5
  2. package/README.md +283 -91
  3. package/dist/capture/index.d.ts +5 -7
  4. package/dist/capture/index.d.ts.map +1 -1
  5. package/dist/capture/index.js +72 -43
  6. package/dist/capture/index.js.map +1 -1
  7. package/dist/ingest/dedup.d.ts +8 -0
  8. package/dist/ingest/dedup.d.ts.map +1 -1
  9. package/dist/ingest/dedup.js +21 -0
  10. package/dist/ingest/dedup.js.map +1 -1
  11. package/dist/ingest/providers/anthropic.d.ts +16 -0
  12. package/dist/ingest/providers/anthropic.d.ts.map +1 -1
  13. package/dist/ingest/providers/anthropic.js +214 -1
  14. package/dist/ingest/providers/anthropic.js.map +1 -1
  15. package/dist/ingest/providers/bedrock.d.ts +16 -5
  16. package/dist/ingest/providers/bedrock.d.ts.map +1 -1
  17. package/dist/ingest/providers/bedrock.js +210 -6
  18. package/dist/ingest/providers/bedrock.js.map +1 -1
  19. package/dist/ingest/providers/gemini.d.ts +16 -0
  20. package/dist/ingest/providers/gemini.d.ts.map +1 -1
  21. package/dist/ingest/providers/gemini.js +202 -1
  22. package/dist/ingest/providers/gemini.js.map +1 -1
  23. package/dist/ingest/providers/index.d.ts +31 -0
  24. package/dist/ingest/providers/index.d.ts.map +1 -1
  25. package/dist/ingest/providers/index.js +134 -4
  26. package/dist/ingest/providers/index.js.map +1 -1
  27. package/dist/ingest/providers/openai.d.ts +24 -0
  28. package/dist/ingest/providers/openai.d.ts.map +1 -1
  29. package/dist/ingest/providers/openai.js +255 -1
  30. package/dist/ingest/providers/openai.js.map +1 -1
  31. package/dist/ingest/task-processor.d.ts +65 -0
  32. package/dist/ingest/task-processor.d.ts.map +1 -0
  33. package/dist/ingest/task-processor.js +354 -0
  34. package/dist/ingest/task-processor.js.map +1 -0
  35. package/dist/ingest/worker.d.ts +3 -1
  36. package/dist/ingest/worker.d.ts.map +1 -1
  37. package/dist/ingest/worker.js +131 -23
  38. package/dist/ingest/worker.js.map +1 -1
  39. package/dist/recall/engine.d.ts +1 -0
  40. package/dist/recall/engine.d.ts.map +1 -1
  41. package/dist/recall/engine.js +22 -11
  42. package/dist/recall/engine.js.map +1 -1
  43. package/dist/recall/mmr.d.ts.map +1 -1
  44. package/dist/recall/mmr.js +3 -1
  45. package/dist/recall/mmr.js.map +1 -1
  46. package/dist/skill/bundled-memory-guide.d.ts +6 -0
  47. package/dist/skill/bundled-memory-guide.d.ts.map +1 -0
  48. package/dist/skill/bundled-memory-guide.js +95 -0
  49. package/dist/skill/bundled-memory-guide.js.map +1 -0
  50. package/dist/skill/evaluator.d.ts +31 -0
  51. package/dist/skill/evaluator.d.ts.map +1 -0
  52. package/dist/skill/evaluator.js +194 -0
  53. package/dist/skill/evaluator.js.map +1 -0
  54. package/dist/skill/evolver.d.ts +22 -0
  55. package/dist/skill/evolver.d.ts.map +1 -0
  56. package/dist/skill/evolver.js +193 -0
  57. package/dist/skill/evolver.js.map +1 -0
  58. package/dist/skill/generator.d.ts +25 -0
  59. package/dist/skill/generator.d.ts.map +1 -0
  60. package/dist/skill/generator.js +477 -0
  61. package/dist/skill/generator.js.map +1 -0
  62. package/dist/skill/installer.d.ts +16 -0
  63. package/dist/skill/installer.d.ts.map +1 -0
  64. package/dist/skill/installer.js +89 -0
  65. package/dist/skill/installer.js.map +1 -0
  66. package/dist/skill/upgrader.d.ts +19 -0
  67. package/dist/skill/upgrader.d.ts.map +1 -0
  68. package/dist/skill/upgrader.js +263 -0
  69. package/dist/skill/upgrader.js.map +1 -0
  70. package/dist/skill/validator.d.ts +29 -0
  71. package/dist/skill/validator.d.ts.map +1 -0
  72. package/dist/skill/validator.js +227 -0
  73. package/dist/skill/validator.js.map +1 -0
  74. package/dist/storage/sqlite.d.ts +141 -1
  75. package/dist/storage/sqlite.d.ts.map +1 -1
  76. package/dist/storage/sqlite.js +664 -7
  77. package/dist/storage/sqlite.js.map +1 -1
  78. package/dist/types.d.ts +93 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/types.js +8 -0
  81. package/dist/types.js.map +1 -1
  82. package/dist/viewer/html.d.ts +1 -1
  83. package/dist/viewer/html.d.ts.map +1 -1
  84. package/dist/viewer/html.js +2391 -159
  85. package/dist/viewer/html.js.map +1 -1
  86. package/dist/viewer/server.d.ts +16 -0
  87. package/dist/viewer/server.d.ts.map +1 -1
  88. package/dist/viewer/server.js +346 -3
  89. package/dist/viewer/server.js.map +1 -1
  90. package/index.ts +572 -89
  91. package/openclaw.plugin.json +20 -45
  92. package/package.json +3 -4
  93. package/skill/memos-memory-guide/SKILL.md +86 -0
  94. package/src/capture/index.ts +85 -45
  95. package/src/ingest/dedup.ts +29 -0
  96. package/src/ingest/providers/anthropic.ts +258 -1
  97. package/src/ingest/providers/bedrock.ts +256 -6
  98. package/src/ingest/providers/gemini.ts +252 -1
  99. package/src/ingest/providers/index.ts +156 -8
  100. package/src/ingest/providers/openai.ts +304 -1
  101. package/src/ingest/task-processor.ts +396 -0
  102. package/src/ingest/worker.ts +145 -34
  103. package/src/recall/engine.ts +23 -12
  104. package/src/recall/mmr.ts +3 -1
  105. package/src/skill/bundled-memory-guide.ts +91 -0
  106. package/src/skill/evaluator.ts +220 -0
  107. package/src/skill/evolver.ts +169 -0
  108. package/src/skill/generator.ts +506 -0
  109. package/src/skill/installer.ts +59 -0
  110. package/src/skill/upgrader.ts +257 -0
  111. package/src/skill/validator.ts +227 -0
  112. package/src/storage/sqlite.ts +802 -7
  113. package/src/types.ts +96 -0
  114. package/src/viewer/html.ts +2391 -159
  115. package/src/viewer/server.ts +346 -3
  116. package/SKILL.md +0 -43
  117. package/www/index.html +0 -632
package/src/types.ts CHANGED
@@ -13,6 +13,8 @@ export interface ConversationMessage {
13
13
 
14
14
  // ─── Chunk & Storage ───
15
15
 
16
+ export type DedupStatus = "active" | "duplicate" | "merged";
17
+
16
18
  export interface Chunk {
17
19
  id: string;
18
20
  sessionKey: string;
@@ -23,10 +25,33 @@ export interface Chunk {
23
25
  kind: ChunkKind;
24
26
  summary: string;
25
27
  embedding: number[] | null;
28
+ taskId: string | null;
29
+ skillId: string | null;
30
+ dedupStatus: DedupStatus;
31
+ dedupTarget: string | null;
32
+ dedupReason: string | null;
33
+ mergeCount: number;
34
+ lastHitAt: number | null;
35
+ mergeHistory: string;
26
36
  createdAt: number;
27
37
  updatedAt: number;
28
38
  }
29
39
 
40
+ // ─── Task ───
41
+
42
+ export type TaskStatus = "active" | "completed" | "skipped";
43
+
44
+ export interface Task {
45
+ id: string;
46
+ sessionKey: string;
47
+ title: string;
48
+ summary: string;
49
+ status: TaskStatus;
50
+ startedAt: number;
51
+ endedAt: number | null;
52
+ updatedAt: number;
53
+ }
54
+
30
55
  export type ChunkKind =
31
56
  | "paragraph"
32
57
  | "code_block"
@@ -50,6 +75,8 @@ export interface SearchHit {
50
75
  original_excerpt: string;
51
76
  ref: ChunkRef;
52
77
  score: number;
78
+ taskId: string | null;
79
+ skillId: string | null;
53
80
  source: {
54
81
  ts: number;
55
82
  role: Role;
@@ -143,8 +170,68 @@ export interface EmbeddingConfig extends ProviderConfig {
143
170
  retry?: number;
144
171
  }
145
172
 
173
+ // ─── Skill ───
174
+
175
+ export type SkillStatus = "active" | "archived" | "draft";
176
+ export type SkillUpgradeType = "create" | "refine" | "extend" | "fix";
177
+ export type TaskSkillRelation = "generated_from" | "evolved_from" | "applied_to";
178
+
179
+ export interface Skill {
180
+ id: string;
181
+ name: string;
182
+ description: string;
183
+ version: number;
184
+ status: SkillStatus;
185
+ tags: string;
186
+ sourceType: "task" | "manual";
187
+ dirPath: string;
188
+ installed: number;
189
+ qualityScore: number | null;
190
+ createdAt: number;
191
+ updatedAt: number;
192
+ }
193
+
194
+ export interface SkillVersion {
195
+ id: string;
196
+ skillId: string;
197
+ version: number;
198
+ content: string;
199
+ changelog: string;
200
+ changeSummary: string;
201
+ upgradeType: SkillUpgradeType;
202
+ sourceTaskId: string | null;
203
+ metrics: string;
204
+ qualityScore: number | null;
205
+ createdAt: number;
206
+ }
207
+
208
+ export interface SkillGenerateOutput {
209
+ skill_md: string;
210
+ scripts: Array<{ filename: string; content: string }>;
211
+ references: Array<{ filename: string; content: string }>;
212
+ evals: Array<{ id: number; prompt: string; expectations: string[] }>;
213
+ }
214
+
215
+ export interface TaskSkillLink {
216
+ taskId: string;
217
+ skillId: string;
218
+ relation: TaskSkillRelation;
219
+ versionAt: number;
220
+ createdAt: number;
221
+ }
222
+
146
223
  // ─── Plugin Config ───
147
224
 
225
+ export interface SkillEvolutionConfig {
226
+ enabled?: boolean;
227
+ autoEvaluate?: boolean;
228
+ minChunksForEval?: number;
229
+ minConfidence?: number;
230
+ maxSkillLines?: number;
231
+ autoInstall?: boolean;
232
+ summarizer?: SummarizerConfig;
233
+ }
234
+
148
235
  export interface MemosLocalConfig {
149
236
  summarizer?: SummarizerConfig;
150
237
  embedding?: EmbeddingConfig;
@@ -166,6 +253,7 @@ export interface MemosLocalConfig {
166
253
  capture?: {
167
254
  evidenceWrapperTag?: string;
168
255
  };
256
+ skillEvolution?: SkillEvolutionConfig;
169
257
  }
170
258
 
171
259
  // ─── Defaults ───
@@ -188,6 +276,14 @@ export const DEFAULTS = {
188
276
  localEmbeddingModel: "Xenova/all-MiniLM-L6-v2",
189
277
  localEmbeddingDimensions: 384,
190
278
  toolResultMaxChars: 2000,
279
+ taskIdleTimeoutMs: 2 * 60 * 60 * 1000, // 2 hour gap → new task
280
+ taskSummaryMaxTokens: 2000,
281
+ skillEvolutionEnabled: true,
282
+ skillAutoEvaluate: true,
283
+ skillMinChunksForEval: 6,
284
+ skillMinConfidence: 0.7,
285
+ skillMaxLines: 400,
286
+ skillAutoInstall: false,
191
287
  } as const;
192
288
 
193
289
  // ─── Plugin Hooks (OpenClaw integration) ───