@memtensor/memos-local-openclaw-plugin 0.1.0
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/.env.example +11 -0
- package/README.md +251 -0
- package/SKILL.md +43 -0
- package/dist/capture/index.d.ts +16 -0
- package/dist/capture/index.d.ts.map +1 -0
- package/dist/capture/index.js +80 -0
- package/dist/capture/index.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +96 -0
- package/dist/config.js.map +1 -0
- package/dist/embedding/index.d.ts +12 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +75 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/local.d.ts +3 -0
- package/dist/embedding/local.d.ts.map +1 -0
- package/dist/embedding/local.js +65 -0
- package/dist/embedding/local.js.map +1 -0
- package/dist/embedding/providers/cohere.d.ts +4 -0
- package/dist/embedding/providers/cohere.d.ts.map +1 -0
- package/dist/embedding/providers/cohere.js +57 -0
- package/dist/embedding/providers/cohere.js.map +1 -0
- package/dist/embedding/providers/gemini.d.ts +3 -0
- package/dist/embedding/providers/gemini.d.ts.map +1 -0
- package/dist/embedding/providers/gemini.js +31 -0
- package/dist/embedding/providers/gemini.js.map +1 -0
- package/dist/embedding/providers/mistral.d.ts +3 -0
- package/dist/embedding/providers/mistral.d.ts.map +1 -0
- package/dist/embedding/providers/mistral.js +25 -0
- package/dist/embedding/providers/mistral.js.map +1 -0
- package/dist/embedding/providers/openai.d.ts +3 -0
- package/dist/embedding/providers/openai.d.ts.map +1 -0
- package/dist/embedding/providers/openai.js +35 -0
- package/dist/embedding/providers/openai.js.map +1 -0
- package/dist/embedding/providers/voyage.d.ts +3 -0
- package/dist/embedding/providers/voyage.d.ts.map +1 -0
- package/dist/embedding/providers/voyage.js +25 -0
- package/dist/embedding/providers/voyage.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest/chunker.d.ts +15 -0
- package/dist/ingest/chunker.d.ts.map +1 -0
- package/dist/ingest/chunker.js +193 -0
- package/dist/ingest/chunker.js.map +1 -0
- package/dist/ingest/dedup.d.ts +11 -0
- package/dist/ingest/dedup.d.ts.map +1 -0
- package/dist/ingest/dedup.js +29 -0
- package/dist/ingest/dedup.js.map +1 -0
- package/dist/ingest/providers/anthropic.d.ts +3 -0
- package/dist/ingest/providers/anthropic.d.ts.map +1 -0
- package/dist/ingest/providers/anthropic.js +33 -0
- package/dist/ingest/providers/anthropic.js.map +1 -0
- package/dist/ingest/providers/bedrock.d.ts +8 -0
- package/dist/ingest/providers/bedrock.d.ts.map +1 -0
- package/dist/ingest/providers/bedrock.js +41 -0
- package/dist/ingest/providers/bedrock.js.map +1 -0
- package/dist/ingest/providers/gemini.d.ts +3 -0
- package/dist/ingest/providers/gemini.d.ts.map +1 -0
- package/dist/ingest/providers/gemini.js +31 -0
- package/dist/ingest/providers/gemini.js.map +1 -0
- package/dist/ingest/providers/index.d.ts +9 -0
- package/dist/ingest/providers/index.d.ts.map +1 -0
- package/dist/ingest/providers/index.js +68 -0
- package/dist/ingest/providers/index.js.map +1 -0
- package/dist/ingest/providers/openai.d.ts +3 -0
- package/dist/ingest/providers/openai.d.ts.map +1 -0
- package/dist/ingest/providers/openai.js +41 -0
- package/dist/ingest/providers/openai.js.map +1 -0
- package/dist/ingest/worker.d.ts +21 -0
- package/dist/ingest/worker.d.ts.map +1 -0
- package/dist/ingest/worker.js +111 -0
- package/dist/ingest/worker.js.map +1 -0
- package/dist/recall/engine.d.ts +23 -0
- package/dist/recall/engine.d.ts.map +1 -0
- package/dist/recall/engine.js +153 -0
- package/dist/recall/engine.js.map +1 -0
- package/dist/recall/mmr.d.ts +17 -0
- package/dist/recall/mmr.d.ts.map +1 -0
- package/dist/recall/mmr.js +51 -0
- package/dist/recall/mmr.js.map +1 -0
- package/dist/recall/recency.d.ts +20 -0
- package/dist/recall/recency.d.ts.map +1 -0
- package/dist/recall/recency.js +26 -0
- package/dist/recall/recency.js.map +1 -0
- package/dist/recall/rrf.d.ts +16 -0
- package/dist/recall/rrf.d.ts.map +1 -0
- package/dist/recall/rrf.js +15 -0
- package/dist/recall/rrf.js.map +1 -0
- package/dist/storage/sqlite.d.ts +34 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +274 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/storage/vector.d.ts +13 -0
- package/dist/storage/vector.d.ts.map +1 -0
- package/dist/storage/vector.js +33 -0
- package/dist/storage/vector.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/memory-get.d.ts +4 -0
- package/dist/tools/memory-get.d.ts.map +1 -0
- package/dist/tools/memory-get.js +59 -0
- package/dist/tools/memory-get.js.map +1 -0
- package/dist/tools/memory-search.d.ts +4 -0
- package/dist/tools/memory-search.d.ts.map +1 -0
- package/dist/tools/memory-search.js +36 -0
- package/dist/tools/memory-search.js.map +1 -0
- package/dist/tools/memory-timeline.d.ts +4 -0
- package/dist/tools/memory-timeline.d.ts.map +1 -0
- package/dist/tools/memory-timeline.js +64 -0
- package/dist/tools/memory-timeline.js.map +1 -0
- package/dist/types.d.ts +158 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -0
- package/dist/viewer/html.d.ts +2 -0
- package/dist/viewer/html.d.ts.map +1 -0
- package/dist/viewer/html.js +686 -0
- package/dist/viewer/html.js.map +1 -0
- package/dist/viewer/server.d.ts +48 -0
- package/dist/viewer/server.d.ts.map +1 -0
- package/dist/viewer/server.js +470 -0
- package/dist/viewer/server.js.map +1 -0
- package/index.ts +357 -0
- package/openclaw.plugin.json +57 -0
- package/package.json +57 -0
- package/src/capture/index.ts +92 -0
- package/src/config.ts +67 -0
- package/src/embedding/index.ts +76 -0
- package/src/embedding/local.ts +35 -0
- package/src/embedding/providers/cohere.ts +69 -0
- package/src/embedding/providers/gemini.ts +41 -0
- package/src/embedding/providers/mistral.ts +32 -0
- package/src/embedding/providers/openai.ts +42 -0
- package/src/embedding/providers/voyage.ts +32 -0
- package/src/index.ts +106 -0
- package/src/ingest/chunker.ts +217 -0
- package/src/ingest/dedup.ts +37 -0
- package/src/ingest/providers/anthropic.ts +41 -0
- package/src/ingest/providers/bedrock.ts +50 -0
- package/src/ingest/providers/gemini.ts +41 -0
- package/src/ingest/providers/index.ts +67 -0
- package/src/ingest/providers/openai.ts +48 -0
- package/src/ingest/worker.ts +130 -0
- package/src/recall/engine.ts +182 -0
- package/src/recall/mmr.ts +60 -0
- package/src/recall/recency.ts +27 -0
- package/src/recall/rrf.ts +31 -0
- package/src/storage/sqlite.ts +305 -0
- package/src/storage/vector.ts +39 -0
- package/src/tools/index.ts +3 -0
- package/src/tools/memory-get.ts +68 -0
- package/src/tools/memory-search.ts +36 -0
- package/src/tools/memory-timeline.ts +73 -0
- package/src/types.ts +214 -0
- package/src/viewer/html.ts +682 -0
- package/src/viewer/server.ts +464 -0
- package/www/index.html +606 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
// ─── Role & Message ───
|
|
2
|
+
|
|
3
|
+
export type Role = "user" | "assistant" | "system" | "tool";
|
|
4
|
+
|
|
5
|
+
export interface ConversationMessage {
|
|
6
|
+
role: Role;
|
|
7
|
+
content: string;
|
|
8
|
+
timestamp: number;
|
|
9
|
+
turnId: string;
|
|
10
|
+
sessionKey: string;
|
|
11
|
+
toolName?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// ─── Chunk & Storage ───
|
|
15
|
+
|
|
16
|
+
export interface Chunk {
|
|
17
|
+
id: string;
|
|
18
|
+
sessionKey: string;
|
|
19
|
+
turnId: string;
|
|
20
|
+
seq: number;
|
|
21
|
+
role: Role;
|
|
22
|
+
content: string;
|
|
23
|
+
kind: ChunkKind;
|
|
24
|
+
summary: string;
|
|
25
|
+
embedding: number[] | null;
|
|
26
|
+
createdAt: number;
|
|
27
|
+
updatedAt: number;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export type ChunkKind =
|
|
31
|
+
| "paragraph"
|
|
32
|
+
| "code_block"
|
|
33
|
+
| "error_stack"
|
|
34
|
+
| "command"
|
|
35
|
+
| "list"
|
|
36
|
+
| "mixed"
|
|
37
|
+
| "tool_result";
|
|
38
|
+
|
|
39
|
+
export interface ChunkRef {
|
|
40
|
+
sessionKey: string;
|
|
41
|
+
chunkId: string;
|
|
42
|
+
turnId: string;
|
|
43
|
+
seq: number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ─── Search / Recall ───
|
|
47
|
+
|
|
48
|
+
export interface SearchHit {
|
|
49
|
+
summary: string;
|
|
50
|
+
original_excerpt: string;
|
|
51
|
+
ref: ChunkRef;
|
|
52
|
+
score: number;
|
|
53
|
+
source: {
|
|
54
|
+
ts: number;
|
|
55
|
+
role: Role;
|
|
56
|
+
sessionKey: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface SearchResult {
|
|
61
|
+
hits: SearchHit[];
|
|
62
|
+
meta: {
|
|
63
|
+
usedMinScore: number;
|
|
64
|
+
usedMaxResults: number;
|
|
65
|
+
totalCandidates: number;
|
|
66
|
+
note?: string;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface TimelineEntry {
|
|
71
|
+
excerpt: string;
|
|
72
|
+
ref: ChunkRef;
|
|
73
|
+
role: Role;
|
|
74
|
+
ts: number;
|
|
75
|
+
relation: "before" | "current" | "after";
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export interface TimelineResult {
|
|
79
|
+
entries: TimelineEntry[];
|
|
80
|
+
anchorRef: ChunkRef;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface GetResult {
|
|
84
|
+
content: string;
|
|
85
|
+
ref: ChunkRef;
|
|
86
|
+
source: {
|
|
87
|
+
ts: number;
|
|
88
|
+
role: Role;
|
|
89
|
+
sessionKey: string;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// ─── Candidate (internal) ───
|
|
94
|
+
|
|
95
|
+
export interface RankedCandidate {
|
|
96
|
+
chunkId: string;
|
|
97
|
+
ftsScore: number | null;
|
|
98
|
+
vecScore: number | null;
|
|
99
|
+
rrfScore: number;
|
|
100
|
+
mmrScore: number;
|
|
101
|
+
recencyScore: number;
|
|
102
|
+
finalScore: number;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// ─── Provider ───
|
|
106
|
+
|
|
107
|
+
export type SummaryProvider =
|
|
108
|
+
| "openai"
|
|
109
|
+
| "openai_compatible"
|
|
110
|
+
| "anthropic"
|
|
111
|
+
| "gemini"
|
|
112
|
+
| "azure_openai"
|
|
113
|
+
| "bedrock";
|
|
114
|
+
|
|
115
|
+
export type EmbeddingProvider =
|
|
116
|
+
| "openai"
|
|
117
|
+
| "openai_compatible"
|
|
118
|
+
| "gemini"
|
|
119
|
+
| "azure_openai"
|
|
120
|
+
| "cohere"
|
|
121
|
+
| "mistral"
|
|
122
|
+
| "voyage"
|
|
123
|
+
| "local";
|
|
124
|
+
|
|
125
|
+
export interface ProviderConfig {
|
|
126
|
+
provider: string;
|
|
127
|
+
endpoint?: string;
|
|
128
|
+
apiKey?: string;
|
|
129
|
+
model?: string;
|
|
130
|
+
headers?: Record<string, string>;
|
|
131
|
+
timeoutMs?: number;
|
|
132
|
+
temperature?: number;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface SummarizerConfig extends ProviderConfig {
|
|
136
|
+
provider: SummaryProvider;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface EmbeddingConfig extends ProviderConfig {
|
|
140
|
+
provider: EmbeddingProvider;
|
|
141
|
+
batchSize?: number;
|
|
142
|
+
dimensions?: number;
|
|
143
|
+
retry?: number;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// ─── Plugin Config ───
|
|
147
|
+
|
|
148
|
+
export interface MemosLocalConfig {
|
|
149
|
+
summarizer?: SummarizerConfig;
|
|
150
|
+
embedding?: EmbeddingConfig;
|
|
151
|
+
storage?: {
|
|
152
|
+
dbPath?: string;
|
|
153
|
+
};
|
|
154
|
+
recall?: {
|
|
155
|
+
maxResultsDefault?: number;
|
|
156
|
+
maxResultsMax?: number;
|
|
157
|
+
minScoreDefault?: number;
|
|
158
|
+
minScoreFloor?: number;
|
|
159
|
+
rrfK?: number;
|
|
160
|
+
mmrLambda?: number;
|
|
161
|
+
recencyHalfLifeDays?: number;
|
|
162
|
+
};
|
|
163
|
+
dedup?: {
|
|
164
|
+
similarityThreshold?: number;
|
|
165
|
+
};
|
|
166
|
+
capture?: {
|
|
167
|
+
evidenceWrapperTag?: string;
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// ─── Defaults ───
|
|
172
|
+
|
|
173
|
+
export const DEFAULTS = {
|
|
174
|
+
maxResultsDefault: 6,
|
|
175
|
+
maxResultsMax: 20,
|
|
176
|
+
minScoreDefault: 0.45,
|
|
177
|
+
minScoreFloor: 0.35,
|
|
178
|
+
rrfK: 60,
|
|
179
|
+
mmrLambda: 0.7,
|
|
180
|
+
recencyHalfLifeDays: 14,
|
|
181
|
+
dedupSimilarityThreshold: 0.93,
|
|
182
|
+
evidenceWrapperTag: "STORED_MEMORY",
|
|
183
|
+
excerptMinChars: 200,
|
|
184
|
+
excerptMaxChars: 500,
|
|
185
|
+
getMaxCharsDefault: 2000,
|
|
186
|
+
getMaxCharsMax: 8000,
|
|
187
|
+
timelineWindowDefault: 2,
|
|
188
|
+
localEmbeddingModel: "Xenova/all-MiniLM-L6-v2",
|
|
189
|
+
localEmbeddingDimensions: 384,
|
|
190
|
+
toolResultMaxChars: 2000,
|
|
191
|
+
} as const;
|
|
192
|
+
|
|
193
|
+
// ─── Plugin Hooks (OpenClaw integration) ───
|
|
194
|
+
|
|
195
|
+
export interface PluginContext {
|
|
196
|
+
stateDir: string;
|
|
197
|
+
workspaceDir: string;
|
|
198
|
+
config: MemosLocalConfig;
|
|
199
|
+
log: Logger;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export interface Logger {
|
|
203
|
+
debug(msg: string, ...args: unknown[]): void;
|
|
204
|
+
info(msg: string, ...args: unknown[]): void;
|
|
205
|
+
warn(msg: string, ...args: unknown[]): void;
|
|
206
|
+
error(msg: string, ...args: unknown[]): void;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
export interface ToolDefinition {
|
|
210
|
+
name: string;
|
|
211
|
+
description: string;
|
|
212
|
+
inputSchema: Record<string, unknown>;
|
|
213
|
+
handler: (input: Record<string, unknown>) => Promise<unknown>;
|
|
214
|
+
}
|