openclaw-cortex-memory 0.1.0-Alpha.3 → 0.1.0-Alpha.30

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 (82) hide show
  1. package/README.md +263 -204
  2. package/SKILL.md +77 -268
  3. package/dist/index.d.ts +92 -22
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1062 -1207
  6. package/dist/index.js.map +1 -1
  7. package/dist/openclaw.plugin.json +384 -15
  8. package/dist/src/dedup/three_stage_deduplicator.d.ts +25 -0
  9. package/dist/src/dedup/three_stage_deduplicator.d.ts.map +1 -0
  10. package/dist/src/dedup/three_stage_deduplicator.js +224 -0
  11. package/dist/src/dedup/three_stage_deduplicator.js.map +1 -0
  12. package/dist/src/engine/memory_engine.d.ts +2 -1
  13. package/dist/src/engine/memory_engine.d.ts.map +1 -1
  14. package/dist/src/engine/ts_engine.d.ts +126 -0
  15. package/dist/src/engine/ts_engine.d.ts.map +1 -1
  16. package/dist/src/engine/ts_engine.js +1145 -44
  17. package/dist/src/engine/ts_engine.js.map +1 -1
  18. package/dist/src/engine/types.d.ts +12 -0
  19. package/dist/src/engine/types.d.ts.map +1 -1
  20. package/dist/src/graph/ontology.d.ts +103 -0
  21. package/dist/src/graph/ontology.d.ts.map +1 -0
  22. package/dist/src/graph/ontology.js +564 -0
  23. package/dist/src/graph/ontology.js.map +1 -0
  24. package/dist/src/net/http_post.d.ts +17 -0
  25. package/dist/src/net/http_post.d.ts.map +1 -0
  26. package/dist/src/net/http_post.js +56 -0
  27. package/dist/src/net/http_post.js.map +1 -0
  28. package/dist/src/quality/llm_output_validator.d.ts +48 -0
  29. package/dist/src/quality/llm_output_validator.d.ts.map +1 -0
  30. package/dist/src/quality/llm_output_validator.js +404 -0
  31. package/dist/src/quality/llm_output_validator.js.map +1 -0
  32. package/dist/src/reflect/reflector.d.ts +7 -0
  33. package/dist/src/reflect/reflector.d.ts.map +1 -1
  34. package/dist/src/reflect/reflector.js +352 -8
  35. package/dist/src/reflect/reflector.js.map +1 -1
  36. package/dist/src/rules/rule_store.d.ts.map +1 -1
  37. package/dist/src/rules/rule_store.js +75 -16
  38. package/dist/src/rules/rule_store.js.map +1 -1
  39. package/dist/src/session/session_end.d.ts +33 -0
  40. package/dist/src/session/session_end.d.ts.map +1 -1
  41. package/dist/src/session/session_end.js +67 -64
  42. package/dist/src/session/session_end.js.map +1 -1
  43. package/dist/src/store/archive_store.d.ts +128 -0
  44. package/dist/src/store/archive_store.d.ts.map +1 -0
  45. package/dist/src/store/archive_store.js +475 -0
  46. package/dist/src/store/archive_store.js.map +1 -0
  47. package/dist/src/store/embedding_utils.d.ts +32 -0
  48. package/dist/src/store/embedding_utils.d.ts.map +1 -0
  49. package/dist/src/store/embedding_utils.js +173 -0
  50. package/dist/src/store/embedding_utils.js.map +1 -0
  51. package/dist/src/store/graph_memory_store.d.ts +44 -0
  52. package/dist/src/store/graph_memory_store.d.ts.map +1 -0
  53. package/dist/src/store/graph_memory_store.js +168 -0
  54. package/dist/src/store/graph_memory_store.js.map +1 -0
  55. package/dist/src/store/read_store.d.ts +86 -0
  56. package/dist/src/store/read_store.d.ts.map +1 -1
  57. package/dist/src/store/read_store.js +1661 -25
  58. package/dist/src/store/read_store.js.map +1 -1
  59. package/dist/src/store/vector_store.d.ts +44 -0
  60. package/dist/src/store/vector_store.d.ts.map +1 -0
  61. package/dist/src/store/vector_store.js +201 -0
  62. package/dist/src/store/vector_store.js.map +1 -0
  63. package/dist/src/store/write_store.d.ts +52 -0
  64. package/dist/src/store/write_store.d.ts.map +1 -1
  65. package/dist/src/store/write_store.js +239 -3
  66. package/dist/src/store/write_store.js.map +1 -1
  67. package/dist/src/sync/session_sync.d.ts +100 -2
  68. package/dist/src/sync/session_sync.d.ts.map +1 -1
  69. package/dist/src/sync/session_sync.js +725 -28
  70. package/dist/src/sync/session_sync.js.map +1 -1
  71. package/dist/src/utils/runtime_env.d.ts +4 -0
  72. package/dist/src/utils/runtime_env.d.ts.map +1 -0
  73. package/dist/src/utils/runtime_env.js +51 -0
  74. package/dist/src/utils/runtime_env.js.map +1 -0
  75. package/openclaw.plugin.json +384 -15
  76. package/package.json +53 -7
  77. package/schema/graph.schema.yaml +175 -0
  78. package/scripts/cli.js +19 -14
  79. package/scripts/repair-memory.js +321 -0
  80. package/scripts/uninstall.js +22 -5
  81. package/index.ts +0 -2142
  82. package/scripts/install.js +0 -27
@@ -37,6 +37,8 @@ exports.createWriteStore = createWriteStore;
37
37
  const crypto = __importStar(require("crypto"));
38
38
  const fs = __importStar(require("fs"));
39
39
  const path = __importStar(require("path"));
40
+ const http_post_1 = require("../net/http_post");
41
+ const llm_output_validator_1 = require("../quality/llm_output_validator");
40
42
  function normalizeText(input) {
41
43
  return input.replace(/\s+/g, " ").trim();
42
44
  }
@@ -85,6 +87,144 @@ function safeReadTailLines(filePath, maxLines) {
85
87
  function computeHash(text) {
86
88
  return crypto.createHash("sha256").update(text).digest("hex");
87
89
  }
90
+ function estimateTokenCount(text) {
91
+ const parts = text
92
+ .split(/[\s,.;:!?,。;:!?、()()[\]{}"'`~]+/)
93
+ .map(part => part.trim())
94
+ .filter(Boolean);
95
+ return parts.length;
96
+ }
97
+ function normalizeBaseUrl(value) {
98
+ if (!value)
99
+ return "";
100
+ return value.endsWith("/") ? value.slice(0, -1) : value;
101
+ }
102
+ function splitTextChunks(text, chunkSize, chunkOverlap) {
103
+ const normalizedSize = Number.isFinite(chunkSize) && chunkSize >= 200 ? Math.floor(chunkSize) : 600;
104
+ const normalizedOverlap = Number.isFinite(chunkOverlap) && chunkOverlap >= 0
105
+ ? Math.floor(chunkOverlap)
106
+ : 100;
107
+ const overlap = Math.min(normalizedOverlap, Math.max(0, normalizedSize - 50));
108
+ const output = [];
109
+ if (!text.trim()) {
110
+ return output;
111
+ }
112
+ let cursor = 0;
113
+ let index = 0;
114
+ const punctuationSet = new Set(["。", "!", "?", ".", "!", "?", "\n", ";", ";"]);
115
+ while (cursor < text.length) {
116
+ const rawEnd = Math.min(text.length, cursor + normalizedSize);
117
+ let end = rawEnd;
118
+ if (rawEnd < text.length) {
119
+ const backwardStart = Math.max(cursor + Math.floor(normalizedSize * 0.45), cursor + 1);
120
+ let found = -1;
121
+ for (let i = rawEnd - 1; i >= backwardStart; i -= 1) {
122
+ if (punctuationSet.has(text[i])) {
123
+ found = i + 1;
124
+ break;
125
+ }
126
+ }
127
+ if (found < 0) {
128
+ const forwardEnd = Math.min(text.length, rawEnd + Math.floor(normalizedSize * 0.2));
129
+ for (let i = rawEnd; i < forwardEnd; i += 1) {
130
+ if (punctuationSet.has(text[i])) {
131
+ found = i + 1;
132
+ break;
133
+ }
134
+ }
135
+ }
136
+ if (found > cursor) {
137
+ end = found;
138
+ }
139
+ }
140
+ if (end <= cursor) {
141
+ end = Math.min(text.length, cursor + normalizedSize);
142
+ }
143
+ const chunkText = text.slice(cursor, end).trim();
144
+ if (chunkText) {
145
+ output.push({ index, start: cursor, end, text: chunkText });
146
+ index += 1;
147
+ }
148
+ if (end >= text.length) {
149
+ break;
150
+ }
151
+ const nextCursor = Math.max(cursor + 1, end - overlap);
152
+ if (nextCursor <= cursor) {
153
+ cursor = end;
154
+ }
155
+ else {
156
+ cursor = nextCursor;
157
+ }
158
+ }
159
+ return output;
160
+ }
161
+ async function mapWithConcurrency(items, maxConcurrency, mapper) {
162
+ if (items.length === 0) {
163
+ return [];
164
+ }
165
+ const concurrency = Math.max(1, Math.min(maxConcurrency, items.length));
166
+ const results = new Array(items.length);
167
+ let cursor = 0;
168
+ async function worker() {
169
+ while (true) {
170
+ const current = cursor;
171
+ cursor += 1;
172
+ if (current >= items.length) {
173
+ break;
174
+ }
175
+ results[current] = await mapper(items[current], current);
176
+ }
177
+ }
178
+ await Promise.all(Array.from({ length: concurrency }, () => worker()));
179
+ return results;
180
+ }
181
+ async function requestEmbedding(args) {
182
+ const endpoint = args.baseUrl.endsWith("/embeddings") ? args.baseUrl : `${args.baseUrl}/embeddings`;
183
+ const body = {
184
+ input: args.text,
185
+ model: args.model,
186
+ };
187
+ if (typeof args.dimensions === "number" && Number.isFinite(args.dimensions) && args.dimensions > 0) {
188
+ body.dimensions = args.dimensions;
189
+ }
190
+ const timeoutMs = typeof args.timeoutMs === "number" && Number.isFinite(args.timeoutMs) && args.timeoutMs >= 1000
191
+ ? Math.floor(args.timeoutMs)
192
+ : 20000;
193
+ const maxRetries = typeof args.maxRetries === "number" && Number.isFinite(args.maxRetries) && args.maxRetries >= 1
194
+ ? Math.min(8, Math.floor(args.maxRetries))
195
+ : 4;
196
+ let lastError = null;
197
+ for (let attempt = 0; attempt < maxRetries; attempt += 1) {
198
+ const response = await (0, http_post_1.postJsonWithTimeout)({
199
+ endpoint,
200
+ apiKey: args.apiKey,
201
+ body,
202
+ timeoutMs,
203
+ });
204
+ if (!response.ok) {
205
+ lastError = new Error(response.status > 0 ? `embedding_http_${response.status}` : (response.error || "embedding_network_error"));
206
+ continue;
207
+ }
208
+ try {
209
+ const json = (response.json || {});
210
+ const embedding = json?.data?.[0]?.embedding;
211
+ if (Array.isArray(embedding) && embedding.length > 0) {
212
+ return embedding.filter(item => Number.isFinite(item));
213
+ }
214
+ lastError = new Error("embedding_empty");
215
+ }
216
+ catch (error) {
217
+ lastError = error;
218
+ }
219
+ if (attempt < maxRetries - 1) {
220
+ await new Promise(resolve => setTimeout(resolve, 300 * Math.pow(2, attempt)));
221
+ }
222
+ }
223
+ if (lastError) {
224
+ throw lastError;
225
+ }
226
+ return null;
227
+ }
88
228
  function createWriteStore(options) {
89
229
  const memoryRoot = options.dbPath ? path.resolve(options.dbPath) : path.join(options.projectRoot, "data", "memory");
90
230
  const activeSessionsPath = path.join(memoryRoot, "sessions", "active", "sessions.jsonl");
@@ -94,12 +234,18 @@ function createWriteStore(options) {
94
234
  return { status: "skipped", reason: "empty_text", error_code: "E204" };
95
235
  }
96
236
  const quality = scoreQuality(cleaned);
97
- if (quality.level === "low") {
237
+ const activeMinQualityScore = typeof options.writePolicy?.activeMinQualityScore === "number"
238
+ ? Math.max(0, Math.min(1, options.writePolicy.activeMinQualityScore))
239
+ : 0.45;
240
+ if (quality.score < activeMinQualityScore) {
98
241
  return { status: "skipped", reason: "low_quality", error_code: "E204", quality };
99
242
  }
100
243
  const textHash = computeHash(cleaned);
101
244
  try {
102
- const tailLines = safeReadTailLines(activeSessionsPath, 200);
245
+ const dedupTailLines = typeof options.writePolicy?.activeDedupTailLines === "number"
246
+ ? Math.max(20, Math.min(5000, Math.floor(options.writePolicy.activeDedupTailLines)))
247
+ : 200;
248
+ const tailLines = safeReadTailLines(activeSessionsPath, dedupTailLines);
103
249
  for (const line of tailLines) {
104
250
  try {
105
251
  const parsed = JSON.parse(line);
@@ -123,12 +269,102 @@ function createWriteStore(options) {
123
269
  role: args.role || "user",
124
270
  source: args.source || "message",
125
271
  content: cleaned,
272
+ layer: "active",
273
+ embedding_status: "pending",
274
+ llm_gate_decision: "active_only",
126
275
  quality_level: quality.level,
127
276
  quality_score: quality.score,
128
277
  text_hash: textHash,
278
+ char_count: cleaned.length,
279
+ token_count: estimateTokenCount(cleaned),
129
280
  };
281
+ const embeddingModel = options.embedding?.model || "";
282
+ const embeddingApiKey = options.embedding?.apiKey || "";
283
+ const embeddingBaseUrl = normalizeBaseUrl(options.embedding?.baseURL || options.embedding?.baseUrl);
284
+ const chunkSize = options.vectorChunking?.chunkSize ?? 600;
285
+ const chunkOverlap = options.vectorChunking?.chunkOverlap ?? 100;
286
+ const maxParallel = 6;
287
+ const vectorStore = options.vectorStore;
288
+ if (embeddingModel && embeddingApiKey && embeddingBaseUrl && vectorStore) {
289
+ const chunks = splitTextChunks(cleaned, chunkSize, chunkOverlap);
290
+ record.vector_chunks_total = chunks.length;
291
+ record.vector_chunks_ok = 0;
292
+ try {
293
+ await vectorStore.deleteBySourceMemory({ layer: "active", sourceMemoryId: record.id });
294
+ }
295
+ catch (error) {
296
+ options.logger.warn(`Active vector cleanup failed before upsert: ${error}`);
297
+ }
298
+ const chunkEmbeddings = await mapWithConcurrency(chunks, maxParallel, async (chunk) => {
299
+ try {
300
+ const embedding = await requestEmbedding({
301
+ text: chunk.text,
302
+ model: embeddingModel,
303
+ apiKey: embeddingApiKey,
304
+ baseUrl: embeddingBaseUrl,
305
+ dimensions: options.embedding?.dimensions,
306
+ timeoutMs: options.embedding?.timeoutMs,
307
+ maxRetries: options.embedding?.maxRetries,
308
+ });
309
+ if (!embedding || embedding.length === 0) {
310
+ return null;
311
+ }
312
+ return { chunk, embedding };
313
+ }
314
+ catch (error) {
315
+ options.logger.warn(`Active chunk embedding failed id=${record.id} chunk=${chunk.index} error=${error}`);
316
+ return null;
317
+ }
318
+ });
319
+ const validEmbeddings = chunkEmbeddings
320
+ .filter((item) => Boolean(item))
321
+ .sort((a, b) => a.chunk.index - b.chunk.index);
322
+ if (validEmbeddings.length > 0) {
323
+ record.embedding = validEmbeddings[0].embedding;
324
+ }
325
+ const upsertStatus = await mapWithConcurrency(validEmbeddings, maxParallel, async (item) => {
326
+ const { chunk, embedding } = item;
327
+ try {
328
+ await vectorStore.upsert({
329
+ id: `vec_${record.id}_c${chunk.index}`,
330
+ session_id: record.session_id,
331
+ event_type: "message",
332
+ summary: chunk.text,
333
+ timestamp: record.timestamp,
334
+ layer: "active",
335
+ source_memory_id: record.id,
336
+ source_memory_canonical_id: record.id,
337
+ embedding,
338
+ quality_score: record.quality_score,
339
+ char_count: chunk.text.length,
340
+ token_count: estimateTokenCount(chunk.text),
341
+ chunk_index: chunk.index,
342
+ chunk_total: chunks.length,
343
+ chunk_start: chunk.start,
344
+ chunk_end: chunk.end,
345
+ });
346
+ return true;
347
+ }
348
+ catch (error) {
349
+ options.logger.warn(`Active chunk embedding failed id=${record.id} chunk=${chunk.index} error=${error}`);
350
+ return false;
351
+ }
352
+ });
353
+ record.vector_chunks_ok = upsertStatus.filter(Boolean).length;
354
+ record.embedding_status = record.vector_chunks_total > 0 && record.vector_chunks_ok === record.vector_chunks_total
355
+ ? "ok"
356
+ : "failed";
357
+ }
130
358
  ensureDirForFile(activeSessionsPath);
131
- fs.appendFileSync(activeSessionsPath, `${JSON.stringify(record)}\n`, "utf-8");
359
+ const recordLine = JSON.stringify(record);
360
+ fs.appendFileSync(activeSessionsPath, `${recordLine}\n`, "utf-8");
361
+ const validation = (0, llm_output_validator_1.validateJsonlLine)(recordLine);
362
+ if (!validation.valid && validation.errors.length > 0) {
363
+ options.logger.warn(`active_write_integrity_check_failed errors=${validation.errors.join("|")}`);
364
+ }
365
+ if (record.vector_chunks_total && record.vector_chunks_total > 0) {
366
+ options.logger.info(`active_vector_chunks source=${record.id} ok=${record.vector_chunks_ok || 0}/${record.vector_chunks_total}`);
367
+ }
132
368
  options.logger.info(`TS write stored message for session ${args.sessionId}`);
133
369
  return { status: "ok", memory_id: id, quality };
134
370
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write_store.js","sourceRoot":"","sources":["../../../src/store/write_store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write_store.js","sourceRoot":"","sources":["../../../src/store/write_store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { WriteMemoryResult } from "../store/write_store";
1
+ import type { GraphQualityMode } from "../graph/ontology";
2
2
  interface LoggerLike {
3
3
  debug: (message: string, ...args: unknown[]) => void;
4
4
  info: (message: string, ...args: unknown[]) => void;
@@ -8,13 +8,83 @@ interface SessionSyncOptions {
8
8
  projectRoot: string;
9
9
  dbPath?: string;
10
10
  logger: LoggerLike;
11
+ llm?: {
12
+ model?: string;
13
+ apiKey?: string;
14
+ baseURL?: string;
15
+ baseUrl?: string;
16
+ };
17
+ graphQualityMode?: GraphQualityMode;
18
+ archiveStore: {
19
+ storeEvents(events: Array<{
20
+ event_type: string;
21
+ summary: string;
22
+ entities?: string[];
23
+ relations?: Array<{
24
+ source: string;
25
+ target: string;
26
+ type: string;
27
+ evidence_span?: string;
28
+ confidence?: number;
29
+ }>;
30
+ entity_types?: Record<string, string>;
31
+ outcome?: string;
32
+ session_id: string;
33
+ source_file: string;
34
+ source_text?: string;
35
+ confidence?: number;
36
+ source_event_id?: string;
37
+ actor?: string;
38
+ }>): Promise<{
39
+ stored: Array<{
40
+ id: string;
41
+ }>;
42
+ skipped: Array<{
43
+ summary: string;
44
+ reason: string;
45
+ }>;
46
+ }>;
47
+ };
48
+ graphMemoryStore?: {
49
+ append(input: {
50
+ sourceEventId: string;
51
+ sourceLayer: "archive_event" | "active_only";
52
+ archiveEventId?: string;
53
+ sessionId: string;
54
+ sourceFile?: string;
55
+ eventType?: string;
56
+ entities?: string[];
57
+ entity_types?: Record<string, string>;
58
+ relations?: Array<{
59
+ source: string;
60
+ target: string;
61
+ type: string;
62
+ evidence_span?: string;
63
+ confidence?: number;
64
+ }>;
65
+ gateSource: "sync" | "session_end" | "manual";
66
+ confidence?: number;
67
+ sourceText?: string;
68
+ }): Promise<{
69
+ success: boolean;
70
+ reason?: string;
71
+ }>;
72
+ };
11
73
  writeStore: {
12
74
  writeMemory(args: {
13
75
  text: string;
14
76
  role: string;
15
77
  source: string;
16
78
  sessionId: string;
17
- }): Promise<WriteMemoryResult>;
79
+ }): Promise<{
80
+ status: "ok" | "skipped";
81
+ reason?: string;
82
+ }>;
83
+ };
84
+ requireLlmForWrite?: boolean;
85
+ writePolicy?: {
86
+ activeTextMaxChars?: number;
87
+ archiveSourceTextMaxChars?: number;
18
88
  };
19
89
  }
20
90
  export declare function createSessionSync(options: SessionSyncOptions): {
@@ -22,6 +92,34 @@ export declare function createSessionSync(options: SessionSyncOptions): {
22
92
  imported: number;
23
93
  skipped: number;
24
94
  filesProcessed: number;
95
+ summaryImported: number;
96
+ summarySkipped: number;
97
+ llmDecisions: number;
98
+ activeOnly: number;
99
+ archiveEvent: number;
100
+ skipReasons: Record<string, number>;
101
+ }>;
102
+ syncDailySummaries(): Promise<{
103
+ imported: number;
104
+ skipped: number;
105
+ filesProcessed: number;
106
+ llmDecisions: number;
107
+ activeOnly: number;
108
+ archiveEvent: number;
109
+ skipReasons: Record<string, number>;
110
+ }>;
111
+ routeTranscript(args: {
112
+ sessionId: string;
113
+ sourceFile: string;
114
+ transcript: string;
115
+ }): Promise<{
116
+ imported: number;
117
+ skipped: number;
118
+ ok: boolean;
119
+ llmDecisions: number;
120
+ activeOnly: number;
121
+ archiveEvent: number;
122
+ skipReasons: Record<string, number>;
25
123
  }>;
26
124
  };
27
125
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"session_sync.d.ts","sourceRoot":"","sources":["../../../src/sync/session_sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,UAAU,UAAU;IAClB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrD;AAMD,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE;QACV,WAAW,CAAC,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;KAClH,CAAC;CACH;AAqHD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG;IAAE,UAAU,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAuEvJ"}
1
+ {"version":3,"file":"session_sync.d.ts","sourceRoot":"","sources":["../../../src/sync/session_sync.ts"],"names":[],"mappings":"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"}