@sashabogi/foundation 2.2.0 → 3.0.1

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 (43) hide show
  1. package/dist/cli.js +3 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/tools/demerzel/engine.d.ts +3 -2
  4. package/dist/tools/demerzel/engine.d.ts.map +1 -1
  5. package/dist/tools/demerzel/engine.js +7 -7
  6. package/dist/tools/demerzel/engine.js.map +1 -1
  7. package/dist/tools/demerzel/enhanced-snapshot.d.ts +10 -2
  8. package/dist/tools/demerzel/enhanced-snapshot.d.ts.map +1 -1
  9. package/dist/tools/demerzel/enhanced-snapshot.js +156 -77
  10. package/dist/tools/demerzel/enhanced-snapshot.js.map +1 -1
  11. package/dist/tools/demerzel/index.d.ts +1 -1
  12. package/dist/tools/demerzel/index.d.ts.map +1 -1
  13. package/dist/tools/demerzel/index.js +53 -36
  14. package/dist/tools/demerzel/index.js.map +1 -1
  15. package/dist/tools/demerzel/semantic-search.d.ts +2 -2
  16. package/dist/tools/demerzel/semantic-search.d.ts.map +1 -1
  17. package/dist/tools/demerzel/semantic-search.js +4 -3
  18. package/dist/tools/demerzel/semantic-search.js.map +1 -1
  19. package/dist/tools/demerzel/snapshot.d.ts +34 -1
  20. package/dist/tools/demerzel/snapshot.d.ts.map +1 -1
  21. package/dist/tools/demerzel/snapshot.js +70 -34
  22. package/dist/tools/demerzel/snapshot.js.map +1 -1
  23. package/dist/tools/demerzel/zstd-io.d.ts +40 -0
  24. package/dist/tools/demerzel/zstd-io.d.ts.map +1 -0
  25. package/dist/tools/demerzel/zstd-io.js +69 -0
  26. package/dist/tools/demerzel/zstd-io.js.map +1 -0
  27. package/dist/tools/gaia/index.d.ts +5 -4
  28. package/dist/tools/gaia/index.d.ts.map +1 -1
  29. package/dist/tools/gaia/index.js +155 -8
  30. package/dist/tools/gaia/index.js.map +1 -1
  31. package/dist/tools/gaia/storage.d.ts +29 -2
  32. package/dist/tools/gaia/storage.d.ts.map +1 -1
  33. package/dist/tools/gaia/storage.js +100 -7
  34. package/dist/tools/gaia/storage.js.map +1 -1
  35. package/dist/tools/gaia/transcript-ingester.d.ts +81 -0
  36. package/dist/tools/gaia/transcript-ingester.d.ts.map +1 -0
  37. package/dist/tools/gaia/transcript-ingester.js +418 -0
  38. package/dist/tools/gaia/transcript-ingester.js.map +1 -0
  39. package/dist/vault/sync.d.ts.map +1 -1
  40. package/dist/vault/sync.js +24 -12
  41. package/dist/vault/sync.js.map +1 -1
  42. package/package.json +2 -1
  43. package/docs/foundation +0 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Transcript Ingester
3
+ *
4
+ * Walks ~/.claude/projects/**‌/*.jsonl, parses Claude Code conversation
5
+ * transcripts, and indexes human + assistant prose into Gaia's FTS5 store.
6
+ *
7
+ * Design:
8
+ * - Streams JSONL line-by-line (never loads full file into memory)
9
+ * - Incremental: tracks last-ingested byte offset per file in SQLite
10
+ * - Dedupes on (file_path, message_index) to survive re-runs
11
+ * - Skips noise: tool_result, system messages, sidechain, pure tool_use-only turns
12
+ */
13
+ import Database from 'better-sqlite3';
14
+ import type { MemoriaStorage } from './storage.js';
15
+ export interface IngestOptions {
16
+ /** Root directory to walk. Defaults to ~/.claude/projects */
17
+ rootDir?: string;
18
+ /** Substring to match against project slug (e.g. "foundation") */
19
+ projectFilter?: string;
20
+ /** Only ingest messages newer than this ISO timestamp */
21
+ since?: string;
22
+ /** Walk and report without writing to DB */
23
+ dryRun?: boolean;
24
+ }
25
+ export interface IngestStats {
26
+ filesFound: number;
27
+ filesSkipped: number;
28
+ messagesIngested: number;
29
+ messagesSkipped: number;
30
+ bytesProcessed: number;
31
+ projectSlugs: string[];
32
+ dateRange: {
33
+ earliest: string | null;
34
+ latest: string | null;
35
+ };
36
+ parseErrors: number;
37
+ parseErrorSamples: string[];
38
+ dryRun: boolean;
39
+ }
40
+ /** A single parsed message ready for indexing */
41
+ export interface ParsedMessage {
42
+ sessionId: string;
43
+ messageIndex: number;
44
+ timestamp: number;
45
+ role: 'user' | 'assistant';
46
+ text: string;
47
+ projectSlug: string;
48
+ cwd: string | null;
49
+ filePath: string;
50
+ lineOffset: number;
51
+ }
52
+ export declare const INGEST_STATE_DDL = "\n CREATE TABLE IF NOT EXISTS transcript_ingest_state (\n file_path TEXT NOT NULL PRIMARY KEY,\n last_byte_offset INTEGER NOT NULL DEFAULT 0,\n last_ingested_at INTEGER NOT NULL,\n messages_ingested INTEGER NOT NULL DEFAULT 0\n );\n\n CREATE TABLE IF NOT EXISTS transcript_dedup (\n file_path TEXT NOT NULL,\n message_index INTEGER NOT NULL,\n memory_id TEXT NOT NULL,\n PRIMARY KEY (file_path, message_index)\n );\n\n CREATE INDEX IF NOT EXISTS idx_dedup_file ON transcript_dedup(file_path);\n";
53
+ export declare class TranscriptIngester {
54
+ private db;
55
+ private memoria;
56
+ constructor(memoriaDb: Database.Database, memoria: MemoriaStorage);
57
+ private ensureSchema;
58
+ ingest(options?: IngestOptions): Promise<IngestStats>;
59
+ private collectJsonlFiles;
60
+ private processFile;
61
+ private streamFile;
62
+ private updateIngestState;
63
+ private updateDateRange;
64
+ /** Returns ingest state rows for testing incremental behavior */
65
+ getIngestState(): Array<{
66
+ file_path: string;
67
+ last_byte_offset: number;
68
+ messages_ingested: number;
69
+ }>;
70
+ /** Returns dedup row count for a given file */
71
+ getDedupCount(filePath: string): number;
72
+ /** Nano-id helper (re-exported so tests can use it) */
73
+ static generateId(): string;
74
+ }
75
+ /**
76
+ * MemoriaStorage keeps its `db` private. We expose it through this module
77
+ * by accepting the db instance directly (tests pass an in-memory DB;
78
+ * the MCP tool passes the real db through getInternalDb).
79
+ */
80
+ export declare function createIngester(db: Database.Database, memoria: MemoriaStorage): TranscriptIngester;
81
+ //# sourceMappingURL=transcript-ingester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-ingester.d.ts","sourceRoot":"","sources":["../../../src/tools/gaia/transcript-ingester.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMnD,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9D,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAOD,eAAO,MAAM,gBAAgB,ghBAgB5B,CAAC;AA2HF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc;IAMjE,OAAO,CAAC,YAAY;IAQd,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IA2D/D,OAAO,CAAC,iBAAiB;YA4CX,WAAW;IAwGzB,OAAO,CAAC,UAAU;IA+DlB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,eAAe;IAiBvB,iEAAiE;IACjE,cAAc,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAMnG,+CAA+C;IAC/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOvC,uDAAuD;IACvD,MAAM,CAAC,UAAU,IAAI,MAAM;CAG5B;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,GAAG,kBAAkB,CAEjG"}
@@ -0,0 +1,418 @@
1
+ /**
2
+ * Transcript Ingester
3
+ *
4
+ * Walks ~/.claude/projects/**‌/*.jsonl, parses Claude Code conversation
5
+ * transcripts, and indexes human + assistant prose into Gaia's FTS5 store.
6
+ *
7
+ * Design:
8
+ * - Streams JSONL line-by-line (never loads full file into memory)
9
+ * - Incremental: tracks last-ingested byte offset per file in SQLite
10
+ * - Dedupes on (file_path, message_index) to survive re-runs
11
+ * - Skips noise: tool_result, system messages, sidechain, pure tool_use-only turns
12
+ */
13
+ import { createReadStream, existsSync, readdirSync, statSync } from 'fs';
14
+ import { join, basename } from 'path';
15
+ import { homedir } from 'os';
16
+ import { createInterface } from 'readline';
17
+ import { nanoid } from 'nanoid';
18
+ // =============================================================================
19
+ // Schema helpers — call against the MemoriaStorage db instance (accessed via
20
+ // the exposed `getDb` accessor we add to storage, or by passing db directly)
21
+ // =============================================================================
22
+ export const INGEST_STATE_DDL = `
23
+ CREATE TABLE IF NOT EXISTS transcript_ingest_state (
24
+ file_path TEXT NOT NULL PRIMARY KEY,
25
+ last_byte_offset INTEGER NOT NULL DEFAULT 0,
26
+ last_ingested_at INTEGER NOT NULL,
27
+ messages_ingested INTEGER NOT NULL DEFAULT 0
28
+ );
29
+
30
+ CREATE TABLE IF NOT EXISTS transcript_dedup (
31
+ file_path TEXT NOT NULL,
32
+ message_index INTEGER NOT NULL,
33
+ memory_id TEXT NOT NULL,
34
+ PRIMARY KEY (file_path, message_index)
35
+ );
36
+
37
+ CREATE INDEX IF NOT EXISTS idx_dedup_file ON transcript_dedup(file_path);
38
+ `;
39
+ // =============================================================================
40
+ // JSONL parsing helpers
41
+ // =============================================================================
42
+ /**
43
+ * Extract plain text from Claude Code message content.
44
+ * Content may be a plain string or an array of content blocks.
45
+ * We only keep `text` blocks — tool_use and tool_result blocks are dropped.
46
+ */
47
+ function extractText(content) {
48
+ if (typeof content === 'string') {
49
+ const trimmed = content.trim();
50
+ return trimmed.length > 0 ? trimmed : null;
51
+ }
52
+ if (!Array.isArray(content))
53
+ return null;
54
+ const parts = [];
55
+ for (const block of content) {
56
+ if (typeof block !== 'object' || block === null)
57
+ continue;
58
+ const b = block;
59
+ if (b['type'] === 'text' && typeof b['text'] === 'string') {
60
+ const t = b['text'].trim();
61
+ if (t.length > 0)
62
+ parts.push(t);
63
+ }
64
+ // Explicitly skip: tool_use, tool_result, image, document, etc.
65
+ }
66
+ return parts.length > 0 ? parts.join('\n\n') : null;
67
+ }
68
+ /**
69
+ * Parse a single JSONL line into a ParsedMessage or null if it should be
70
+ * skipped (noise, metadata, sidechain, system).
71
+ */
72
+ function parseLine(rawLine, lineIndex, filePath, projectSlug, sinceMs) {
73
+ let obj;
74
+ try {
75
+ obj = JSON.parse(rawLine);
76
+ }
77
+ catch {
78
+ return null;
79
+ }
80
+ const type = obj['type'];
81
+ // Only process user + assistant prose turns
82
+ if (type !== 'user' && type !== 'assistant')
83
+ return null;
84
+ // Skip sidechain messages (sub-agent internal turns)
85
+ if (obj['isSidechain'] === true)
86
+ return null;
87
+ // Require a message wrapper
88
+ const msg = obj['message'];
89
+ if (typeof msg !== 'object' || msg === null)
90
+ return null;
91
+ const msgObj = msg;
92
+ const role = msgObj['role'];
93
+ if (role !== 'user' && role !== 'assistant')
94
+ return null;
95
+ const text = extractText(msgObj['content']);
96
+ if (!text)
97
+ return null;
98
+ // Parse timestamp — field is "timestamp" on both user and assistant rows
99
+ let timestamp = 0;
100
+ const ts = obj['timestamp'];
101
+ if (typeof ts === 'string') {
102
+ const parsed = Date.parse(ts);
103
+ if (!isNaN(parsed))
104
+ timestamp = parsed;
105
+ }
106
+ else if (typeof ts === 'number') {
107
+ timestamp = ts;
108
+ }
109
+ // Since filter
110
+ if (sinceMs !== null && timestamp > 0 && timestamp < sinceMs)
111
+ return null;
112
+ const sessionId = typeof obj['sessionId'] === 'string' ? obj['sessionId'] : 'unknown';
113
+ const cwd = typeof obj['cwd'] === 'string' ? obj['cwd'] : null;
114
+ return {
115
+ sessionId,
116
+ messageIndex: lineIndex,
117
+ timestamp,
118
+ role: role,
119
+ text,
120
+ projectSlug,
121
+ cwd,
122
+ filePath,
123
+ lineOffset: lineIndex,
124
+ };
125
+ }
126
+ // =============================================================================
127
+ // Project slug extraction
128
+ // =============================================================================
129
+ /**
130
+ * Derive human-readable project name from the JSONL path.
131
+ * ~/.claude/projects/<slug>/<uuid>.jsonl → slug
132
+ */
133
+ function slugFromPath(filePath, rootDir) {
134
+ // Strip rootDir prefix
135
+ const relative = filePath.startsWith(rootDir)
136
+ ? filePath.slice(rootDir.length + 1)
137
+ : filePath;
138
+ // First path component is the project slug
139
+ const slug = relative.split('/')[0] ?? basename(filePath);
140
+ return slug;
141
+ }
142
+ // =============================================================================
143
+ // Core ingester
144
+ // =============================================================================
145
+ export class TranscriptIngester {
146
+ db;
147
+ memoria;
148
+ constructor(memoriaDb, memoria) {
149
+ this.db = memoriaDb;
150
+ this.memoria = memoria;
151
+ this.ensureSchema();
152
+ }
153
+ ensureSchema() {
154
+ this.db.exec(INGEST_STATE_DDL);
155
+ }
156
+ // ---------------------------------------------------------------------------
157
+ // Public API
158
+ // ---------------------------------------------------------------------------
159
+ async ingest(options = {}) {
160
+ const { rootDir = join(homedir(), '.claude', 'projects'), projectFilter, since, dryRun = false, } = options;
161
+ const sinceMs = since ? Date.parse(since) : null;
162
+ if (since && (sinceMs === null || isNaN(sinceMs))) {
163
+ throw new Error(`Invalid since timestamp: ${since}`);
164
+ }
165
+ const stats = {
166
+ filesFound: 0,
167
+ filesSkipped: 0,
168
+ messagesIngested: 0,
169
+ messagesSkipped: 0,
170
+ bytesProcessed: 0,
171
+ projectSlugs: [],
172
+ dateRange: { earliest: null, latest: null },
173
+ parseErrors: 0,
174
+ parseErrorSamples: [],
175
+ dryRun,
176
+ };
177
+ if (!existsSync(rootDir)) {
178
+ return stats;
179
+ }
180
+ // Walk rootDir/slug/*.jsonl
181
+ const slugSet = new Set();
182
+ const jsonlFiles = this.collectJsonlFiles(rootDir, projectFilter);
183
+ for (const filePath of jsonlFiles) {
184
+ const slug = slugFromPath(filePath, rootDir);
185
+ slugSet.add(slug);
186
+ stats.filesFound++;
187
+ try {
188
+ await this.processFile(filePath, slug, sinceMs, dryRun, stats);
189
+ }
190
+ catch (err) {
191
+ stats.parseErrors++;
192
+ if (stats.parseErrorSamples.length < 3) {
193
+ stats.parseErrorSamples.push(`${filePath}: ${err instanceof Error ? err.message : String(err)}`);
194
+ }
195
+ }
196
+ }
197
+ stats.projectSlugs = Array.from(slugSet).sort();
198
+ return stats;
199
+ }
200
+ // ---------------------------------------------------------------------------
201
+ // File collection
202
+ // ---------------------------------------------------------------------------
203
+ collectJsonlFiles(rootDir, projectFilter) {
204
+ const results = [];
205
+ let slugDirs;
206
+ try {
207
+ slugDirs = readdirSync(rootDir);
208
+ }
209
+ catch {
210
+ return results;
211
+ }
212
+ for (const slug of slugDirs) {
213
+ if (projectFilter && !slug.includes(projectFilter))
214
+ continue;
215
+ const slugPath = join(rootDir, slug);
216
+ let isDir = false;
217
+ try {
218
+ isDir = statSync(slugPath).isDirectory();
219
+ }
220
+ catch {
221
+ continue;
222
+ }
223
+ if (!isDir)
224
+ continue;
225
+ let entries;
226
+ try {
227
+ entries = readdirSync(slugPath);
228
+ }
229
+ catch {
230
+ continue;
231
+ }
232
+ for (const entry of entries) {
233
+ if (entry.endsWith('.jsonl')) {
234
+ results.push(join(slugPath, entry));
235
+ }
236
+ }
237
+ }
238
+ return results;
239
+ }
240
+ // ---------------------------------------------------------------------------
241
+ // Per-file processing
242
+ // ---------------------------------------------------------------------------
243
+ async processFile(filePath, projectSlug, sinceMs, dryRun, stats) {
244
+ // Get last known offset for incremental processing
245
+ const stateRow = this.db.prepare(`SELECT last_byte_offset FROM transcript_ingest_state WHERE file_path = ?`).get(filePath);
246
+ const startOffset = stateRow?.last_byte_offset ?? 0;
247
+ // Get current file size to determine if there's new content
248
+ let fileSize = 0;
249
+ try {
250
+ fileSize = statSync(filePath).size;
251
+ }
252
+ catch {
253
+ stats.filesSkipped++;
254
+ return;
255
+ }
256
+ if (fileSize <= startOffset) {
257
+ stats.filesSkipped++;
258
+ return;
259
+ }
260
+ // Stream the file from start (we need to track line indices from 0 for dedup)
261
+ const messages = await this.streamFile(filePath, projectSlug, sinceMs, startOffset, stats);
262
+ if (messages.length === 0) {
263
+ // Update state even if no messages were parseable (to advance offset)
264
+ if (!dryRun) {
265
+ this.updateIngestState(filePath, fileSize, 0);
266
+ }
267
+ return;
268
+ }
269
+ if (dryRun) {
270
+ stats.messagesIngested += messages.length;
271
+ this.updateDateRange(stats, messages);
272
+ return;
273
+ }
274
+ // Insert in a transaction for atomicity
275
+ const insertCount = this.db.transaction(() => {
276
+ let inserted = 0;
277
+ for (const msg of messages) {
278
+ // Check dedup
279
+ const exists = this.db.prepare(`SELECT 1 FROM transcript_dedup WHERE file_path = ? AND message_index = ?`).get(msg.filePath, msg.messageIndex);
280
+ if (exists) {
281
+ stats.messagesSkipped++;
282
+ continue;
283
+ }
284
+ // Build memory content — prefix with role for search quality
285
+ const roleLabel = msg.role === 'user' ? '[User]' : '[Assistant]';
286
+ const content = `${roleLabel} ${msg.text}`;
287
+ // Save into Gaia memory store
288
+ const memory = this.memoria.saveMemory({
289
+ tier: 'project',
290
+ content,
291
+ tags: ['transcript', msg.role, msg.projectSlug],
292
+ related_files: [],
293
+ session_id: msg.sessionId,
294
+ project_path: msg.cwd ?? msg.projectSlug,
295
+ metadata: {
296
+ source: 'transcript',
297
+ session_id: msg.sessionId,
298
+ message_index: msg.messageIndex,
299
+ role: msg.role,
300
+ project_slug: msg.projectSlug,
301
+ file_path: msg.filePath,
302
+ line_offset: msg.lineOffset,
303
+ original_timestamp: msg.timestamp > 0 ? new Date(msg.timestamp).toISOString() : null,
304
+ },
305
+ });
306
+ // Record dedup entry
307
+ this.db.prepare(`INSERT OR IGNORE INTO transcript_dedup (file_path, message_index, memory_id) VALUES (?, ?, ?)`).run(msg.filePath, msg.messageIndex, memory.id);
308
+ inserted++;
309
+ stats.messagesIngested++;
310
+ }
311
+ return inserted;
312
+ })();
313
+ // Update incremental state to the current file size
314
+ this.updateIngestState(filePath, fileSize, insertCount);
315
+ this.updateDateRange(stats, messages);
316
+ stats.bytesProcessed += fileSize - startOffset;
317
+ }
318
+ // ---------------------------------------------------------------------------
319
+ // Streaming JSONL parser
320
+ // ---------------------------------------------------------------------------
321
+ streamFile(filePath, projectSlug, sinceMs, startOffset, stats) {
322
+ return new Promise((resolve, reject) => {
323
+ const messages = [];
324
+ // We always read from byte 0 to maintain correct lineIndex for dedup.
325
+ // Lines before startOffset are checked against dedup table and skipped
326
+ // in processFile, but we need their indices. For very large files already
327
+ // fully ingested, startOffset == fileSize so we return early above.
328
+ // The cost here is line counting from the start — acceptable since we
329
+ // only reach this if there's new content beyond the last offset.
330
+ const stream = createReadStream(filePath, { encoding: 'utf8' });
331
+ const rl = createInterface({ input: stream, crlfDelay: Infinity });
332
+ let lineIndex = 0;
333
+ let currentByteOffset = 0;
334
+ rl.on('line', (rawLine) => {
335
+ const lineByteLength = Buffer.byteLength(rawLine + '\n', 'utf8');
336
+ const lineStartOffset = currentByteOffset;
337
+ currentByteOffset += lineByteLength;
338
+ // Lines within already-ingested region: skip parsing but increment index
339
+ if (currentByteOffset <= startOffset) {
340
+ lineIndex++;
341
+ return;
342
+ }
343
+ // Parse line
344
+ let parsed = null;
345
+ try {
346
+ parsed = parseLine(rawLine, lineIndex, filePath, projectSlug, sinceMs);
347
+ }
348
+ catch (err) {
349
+ stats.parseErrors++;
350
+ if (stats.parseErrorSamples.length < 3) {
351
+ stats.parseErrorSamples.push(`${filePath}:${lineIndex}: ${err instanceof Error ? err.message : String(err)}`);
352
+ }
353
+ }
354
+ if (parsed) {
355
+ messages.push(parsed);
356
+ }
357
+ lineIndex++;
358
+ });
359
+ rl.on('close', () => resolve(messages));
360
+ rl.on('error', reject);
361
+ stream.on('error', reject);
362
+ });
363
+ }
364
+ // ---------------------------------------------------------------------------
365
+ // State tracking
366
+ // ---------------------------------------------------------------------------
367
+ updateIngestState(filePath, byteOffset, inserted) {
368
+ this.db.prepare(`
369
+ INSERT INTO transcript_ingest_state (file_path, last_byte_offset, last_ingested_at, messages_ingested)
370
+ VALUES (?, ?, ?, ?)
371
+ ON CONFLICT(file_path) DO UPDATE SET
372
+ last_byte_offset = excluded.last_byte_offset,
373
+ last_ingested_at = excluded.last_ingested_at,
374
+ messages_ingested = messages_ingested + excluded.messages_ingested
375
+ `).run(filePath, byteOffset, Date.now(), inserted);
376
+ }
377
+ updateDateRange(stats, messages) {
378
+ for (const msg of messages) {
379
+ if (msg.timestamp <= 0)
380
+ continue;
381
+ const iso = new Date(msg.timestamp).toISOString();
382
+ if (!stats.dateRange.earliest || iso < stats.dateRange.earliest) {
383
+ stats.dateRange.earliest = iso;
384
+ }
385
+ if (!stats.dateRange.latest || iso > stats.dateRange.latest) {
386
+ stats.dateRange.latest = iso;
387
+ }
388
+ }
389
+ }
390
+ // ---------------------------------------------------------------------------
391
+ // Utility: exposed for tests
392
+ // ---------------------------------------------------------------------------
393
+ /** Returns ingest state rows for testing incremental behavior */
394
+ getIngestState() {
395
+ return this.db.prepare(`SELECT file_path, last_byte_offset, messages_ingested FROM transcript_ingest_state`).all();
396
+ }
397
+ /** Returns dedup row count for a given file */
398
+ getDedupCount(filePath) {
399
+ const row = this.db.prepare(`SELECT COUNT(*) as count FROM transcript_dedup WHERE file_path = ?`).get(filePath);
400
+ return row.count;
401
+ }
402
+ /** Nano-id helper (re-exported so tests can use it) */
403
+ static generateId() {
404
+ return `mem_${nanoid()}`;
405
+ }
406
+ }
407
+ // =============================================================================
408
+ // Standalone helper: build a TranscriptIngester from an existing MemoriaStorage
409
+ // =============================================================================
410
+ /**
411
+ * MemoriaStorage keeps its `db` private. We expose it through this module
412
+ * by accepting the db instance directly (tests pass an in-memory DB;
413
+ * the MCP tool passes the real db through getInternalDb).
414
+ */
415
+ export function createIngester(db, memoria) {
416
+ return new TranscriptIngester(db, memoria);
417
+ }
418
+ //# sourceMappingURL=transcript-ingester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-ingester.js","sourceRoot":"","sources":["../../../src/tools/gaia/transcript-ingester.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/vault/sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0BH,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoBD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAQ/B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAajC;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC;IAa5C;;OAEG;IACH,SAAS,IAAI,SAAS,GAAG,IAAI;IAa7B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;YAQL,gBAAgB;YAwFhB,kBAAkB;IAoEhC;;;OAGG;IACH,OAAO,CAAC,YAAY;CAgDrB"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/vault/sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0BH,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoBD,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAQ/B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAajC;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC;IAa5C;;OAEG;IACH,SAAS,IAAI,SAAS,GAAG,IAAI;IAa7B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;YAQL,gBAAgB;YAwFhB,kBAAkB;IAoEhC;;;OAGG;IACH,OAAO,CAAC,YAAY;CA4DrB"}
@@ -282,18 +282,30 @@ export class VaultSync {
282
282
  walkAndClean(fullPath);
283
283
  }
284
284
  else if (entry.endsWith('.md')) {
285
- // Extract memory id from filename: e.g. mem_abc123-some-slug.md
286
- const match = entry.match(/^(mem_[A-Za-z0-9_-]+?)(?:-|\.md)/);
287
- if (match) {
288
- const id = match[1];
289
- if (id && !currentIds.has(id)) {
290
- try {
291
- unlinkSync(fullPath);
292
- deleted++;
293
- }
294
- catch {
295
- // File may have already been removed — ignore
296
- }
285
+ // Recover the memory id from the filename.
286
+ //
287
+ // Filename format: ${memory.id}-${slug}.md where memory.id = mem_${nanoid()}.
288
+ // Because nanoid produces hyphens, both the id and the id-to-slug separator
289
+ // use '-', making regex-based extraction ambiguous. Instead, we consult
290
+ // state.synced_memories — the authoritative record of every id vault-sync
291
+ // has ever written — and check whether any of those ids is a prefix of
292
+ // this filename's stem. This is unambiguous and never deletes user files
293
+ // that vault-sync did not create.
294
+ const stem = entry.slice(0, -3); // strip .md
295
+ let matchedId = null;
296
+ for (const id of Object.keys(state.synced_memories)) {
297
+ if (stem === id || stem.startsWith(id + '-')) {
298
+ matchedId = id;
299
+ break;
300
+ }
301
+ }
302
+ if (matchedId && !currentIds.has(matchedId)) {
303
+ try {
304
+ unlinkSync(fullPath);
305
+ deleted++;
306
+ }
307
+ catch {
308
+ // File may have already been removed — ignore
297
309
  }
298
310
  }
299
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/vault/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/vault/sync.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,GACT,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,IAAI,EAAY,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAgC,MAAM,0BAA0B,CAAC;AACxF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA+BnD,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,mBAAmB;IACnB,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,yBAAyB;IACzB,WAAW;CACZ,CAAC;AAEF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,MAAM,OAAO,SAAS;IACZ,MAAM,CAAc;IAE5B,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAE9E;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,aAAa,CAAC,aAAa,EAAE,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,YAAY,GAAe,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9F,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjC,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,YAAY,GAAe,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAE9F,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjC,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,CAAC;QAED,OAAO,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAc,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,4BAA4B;IAC5B,8EAA8E;IAEtE,aAAa;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAClC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YACjC,cAAc,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACzC,eAAe,EAAE,EAAE;SACpB,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,KAAgB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAClD,uEAAuE;QACvE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAEtE,WAAW,CAAC,OAAe;QACjC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,8EAA8E;IAC9E,qBAAqB;IACrB,8EAA8E;IAEtE,KAAK,CAAC,gBAAgB,CAAC,WAAoB;QACjD,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEnC,IAAI,OAAO,GAA0B,IAAI,CAAC;QAE1C,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAEpC,oBAAoB;YACpB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAiB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;YAEtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;YAErC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE1B,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;oBACpD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAExC,iDAAiD;oBACjD,IAAI,WAAW,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC7D,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,SAAS;oBACX,CAAC;oBAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACrE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;oBAE5C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC7C,CAAC;oBAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAChD,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;oBAE1C,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;oBAExC,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAEtD,sCAAsC;YACtC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;gBACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,KAAK,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,mCAAmC;IACnC,8EAA8E;IAEtE,KAAK,CAAC,kBAAkB;QAC9B,MAAM,MAAM,GAAe,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1F,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAEtD,IAAI,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAEpD,4DAA4D;gBAC5D,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBAC7D,IAAI,IAAI,GAAG,SAAS,CAAC;gBAErB,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAA4B,CAAC;wBACjE,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;4BACvC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;wBACxB,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,sDAAsD;oBACxD,CAAC;gBACH,CAAC;gBAED,sEAAsE;gBACtE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;gBACjE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;gBAEvC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAE5C,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8EAA8E;IAC9E,0BAA0B;IAC1B,8EAA8E;IAE9E;;;OAGG;IACK,YAAY,CAAC,UAAuB,EAAE,KAAgB;QAC5D,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEjE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,OAAO,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG,CAAC,GAAW,EAAQ,EAAE;YACzC,IAAI,OAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAElC,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC;oBACH,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,2CAA2C;oBAC3C,EAAE;oBACF,8EAA8E;oBAC9E,4EAA4E;oBAC5E,wEAAwE;oBACxE,0EAA0E;oBAC1E,uEAAuE;oBACvE,yEAAyE;oBACzE,kCAAkC;oBAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;oBAC7C,IAAI,SAAS,GAAkB,IAAI,CAAC;oBACpC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;wBACpD,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;4BAC7C,SAAS,GAAG,EAAE,CAAC;4BACf,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC5C,IAAI,CAAC;4BACH,UAAU,CAAC,QAAQ,CAAC,CAAC;4BACrB,OAAO,EAAE,CAAC;wBACZ,CAAC;wBAAC,MAAM,CAAC;4BACP,8CAA8C;wBAChD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;CAEF;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,SAAS,YAAY,CAAC,CAAa,EAAE,CAAa;IAChD,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;QAC9B,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAEhD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,OAAe,EAAE,GAAW,EAAE,KAAa;IACzE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,+BAA+B;QAC/B,OAAO,QAAQ,GAAG,KAAK,KAAK,YAAY,OAAO,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,QAAQ,GAAG,KAAK,KAAK,YAAY,OAAO,EAAE,CAAC;IACpD,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAEpC,+BAA+B;IAC/B,IAAI,IAAI,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4BAA4B;IAC5B,MAAM,cAAc,GAAG,GAAG,CAAC;IAC3B,OAAO,CACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC;QAChC,KAAK,GAAG,KAAK,KAAK,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAC9B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sashabogi/foundation",
3
- "version": "2.2.0",
3
+ "version": "3.0.1",
4
4
  "description": "Unified MCP server for AI-assisted development: codebase intelligence, multi-agent orchestration, and workflow patterns with advanced memory",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -56,6 +56,7 @@
56
56
  "@anthropic-ai/sdk": "^0.71.0",
57
57
  "@clack/prompts": "^1.0.0",
58
58
  "@modelcontextprotocol/sdk": "^1.0.0",
59
+ "@mongodb-js/zstd": "^7.0.0",
59
60
  "better-sqlite3": "^12.0.0",
60
61
  "chalk": "^5.3.0",
61
62
  "commander": "^12.1.0",
package/docs/foundation DELETED
Binary file