recall-player 1.2.0 → 1.3.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.
Files changed (53) hide show
  1. package/backend/dist/db/claudemd-queries.d.ts +31 -0
  2. package/backend/dist/db/claudemd-queries.d.ts.map +1 -0
  3. package/backend/dist/db/claudemd-queries.js +152 -0
  4. package/backend/dist/db/claudemd-queries.js.map +1 -0
  5. package/backend/dist/db/claudemd-schema.d.ts +61 -0
  6. package/backend/dist/db/claudemd-schema.d.ts.map +1 -0
  7. package/backend/dist/db/claudemd-schema.js +7 -0
  8. package/backend/dist/db/claudemd-schema.js.map +1 -0
  9. package/backend/dist/db/connection.d.ts +4 -3
  10. package/backend/dist/db/connection.d.ts.map +1 -1
  11. package/backend/dist/db/connection.js +50 -4
  12. package/backend/dist/db/connection.js.map +1 -1
  13. package/backend/dist/db/transcript-queries.d.ts +1 -0
  14. package/backend/dist/db/transcript-queries.d.ts.map +1 -1
  15. package/backend/dist/db/transcript-queries.js +62 -29
  16. package/backend/dist/db/transcript-queries.js.map +1 -1
  17. package/backend/dist/middleware/validation.d.ts +46 -0
  18. package/backend/dist/middleware/validation.d.ts.map +1 -0
  19. package/backend/dist/middleware/validation.js +118 -0
  20. package/backend/dist/middleware/validation.js.map +1 -0
  21. package/backend/dist/parser/base-parser.d.ts +10 -1
  22. package/backend/dist/parser/base-parser.d.ts.map +1 -1
  23. package/backend/dist/parser/base-parser.js +80 -0
  24. package/backend/dist/parser/base-parser.js.map +1 -1
  25. package/backend/dist/parser/session-indexer.d.ts +19 -1
  26. package/backend/dist/parser/session-indexer.d.ts.map +1 -1
  27. package/backend/dist/parser/session-indexer.js +276 -141
  28. package/backend/dist/parser/session-indexer.js.map +1 -1
  29. package/backend/dist/routes/sessions.d.ts.map +1 -1
  30. package/backend/dist/routes/sessions.js +212 -55
  31. package/backend/dist/routes/sessions.js.map +1 -1
  32. package/backend/dist/services/claudemd-storage.d.ts +26 -0
  33. package/backend/dist/services/claudemd-storage.d.ts.map +1 -0
  34. package/backend/dist/services/claudemd-storage.js +66 -0
  35. package/backend/dist/services/claudemd-storage.js.map +1 -0
  36. package/backend/dist/services/transcript-importer.d.ts.map +1 -1
  37. package/backend/dist/services/transcript-importer.js +12 -0
  38. package/backend/dist/services/transcript-importer.js.map +1 -1
  39. package/backend/dist/types/transcript.d.ts +12 -0
  40. package/backend/dist/types/transcript.d.ts.map +1 -1
  41. package/backend/dist/utils/path-security.d.ts +26 -0
  42. package/backend/dist/utils/path-security.d.ts.map +1 -0
  43. package/backend/dist/utils/path-security.js +70 -0
  44. package/backend/dist/utils/path-security.js.map +1 -0
  45. package/backend/dist/validation/schemas.d.ts +81 -0
  46. package/backend/dist/validation/schemas.d.ts.map +1 -0
  47. package/backend/dist/validation/schemas.js +59 -0
  48. package/backend/dist/validation/schemas.js.map +1 -0
  49. package/backend/package.json +3 -1
  50. package/backend/public/assets/index--z98IWKF.js +268 -0
  51. package/backend/public/assets/index-Buf0F3bL.css +1 -0
  52. package/backend/public/index.html +2 -2
  53. package/package.json +15 -5
@@ -0,0 +1,31 @@
1
+ import type { ClaudeMdSnapshot, ClaudeMdHistoryResponse, ClaudeMdCompareResponse } from '../db/claudemd-schema';
2
+ /**
3
+ * Get CLAUDE.md snapshot by ID
4
+ */
5
+ export declare function getClaudeMdSnapshot(snapshotId: number): ClaudeMdSnapshot | null;
6
+ /**
7
+ * Get CLAUDE.md snapshot by content hash
8
+ */
9
+ export declare function getClaudeMdSnapshotByHash(contentHash: string): ClaudeMdSnapshot | null;
10
+ /**
11
+ * Create a new CLAUDE.md snapshot
12
+ */
13
+ export declare function createClaudeMdSnapshot(contentHash: string, filePath: string, content: string, firstSeenAt: string): ClaudeMdSnapshot;
14
+ /**
15
+ * Link a session to a CLAUDE.md snapshot
16
+ */
17
+ export declare function linkSessionToClaudeMd(sessionId: string, snapshotId: number, filePath: string, loadedAt: string): void;
18
+ /**
19
+ * Get CLAUDE.md history for a project
20
+ * Returns all versions used across sessions for the given project
21
+ */
22
+ export declare function getClaudeMdHistory(project: string): ClaudeMdHistoryResponse;
23
+ /**
24
+ * Compare two CLAUDE.md snapshots
25
+ */
26
+ export declare function compareClaudeMdSnapshots(fromId: number, toId: number): ClaudeMdCompareResponse | null;
27
+ /**
28
+ * Get CLAUDE.md snapshots for a specific session
29
+ */
30
+ export declare function getSessionClaudeMdSnapshots(sessionId: string): ClaudeMdSnapshot[];
31
+ //# sourceMappingURL=claudemd-queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudemd-queries.d.ts","sourceRoot":"","sources":["../../src/db/claudemd-queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQ/E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAQtF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,gBAAgB,CA+BlB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAsBN;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAsD3E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,uBAAuB,GAAG,IAAI,CAYhC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAgBjF"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getClaudeMdSnapshot = getClaudeMdSnapshot;
4
+ exports.getClaudeMdSnapshotByHash = getClaudeMdSnapshotByHash;
5
+ exports.createClaudeMdSnapshot = createClaudeMdSnapshot;
6
+ exports.linkSessionToClaudeMd = linkSessionToClaudeMd;
7
+ exports.getClaudeMdHistory = getClaudeMdHistory;
8
+ exports.compareClaudeMdSnapshots = compareClaudeMdSnapshots;
9
+ exports.getSessionClaudeMdSnapshots = getSessionClaudeMdSnapshots;
10
+ const connection_1 = require("../db/connection");
11
+ /**
12
+ * Get CLAUDE.md snapshot by ID
13
+ */
14
+ function getClaudeMdSnapshot(snapshotId) {
15
+ const db = (0, connection_1.getDbInstance)();
16
+ const snapshot = db.prepare('SELECT * FROM claudemd_snapshots WHERE id = ?').get(snapshotId);
17
+ return snapshot || null;
18
+ }
19
+ /**
20
+ * Get CLAUDE.md snapshot by content hash
21
+ */
22
+ function getClaudeMdSnapshotByHash(contentHash) {
23
+ const db = (0, connection_1.getDbInstance)();
24
+ const snapshot = db
25
+ .prepare('SELECT * FROM claudemd_snapshots WHERE content_hash = ?')
26
+ .get(contentHash);
27
+ return snapshot || null;
28
+ }
29
+ /**
30
+ * Create a new CLAUDE.md snapshot
31
+ */
32
+ function createClaudeMdSnapshot(contentHash, filePath, content, firstSeenAt) {
33
+ const db = (0, connection_1.getDbInstance)();
34
+ const now = new Date().toISOString();
35
+ const nowEpoch = Date.now();
36
+ const firstSeenEpoch = new Date(firstSeenAt).getTime();
37
+ const contentSize = Buffer.byteLength(content, 'utf8');
38
+ const result = db
39
+ .prepare(`
40
+ INSERT INTO claudemd_snapshots
41
+ (content_hash, file_path, content, content_size, first_seen_at, first_seen_at_epoch, created_at, created_at_epoch)
42
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
43
+ `)
44
+ .run(contentHash, filePath, content, contentSize, firstSeenAt, firstSeenEpoch, now, nowEpoch);
45
+ const snapshotId = result.lastInsertRowid;
46
+ return {
47
+ id: snapshotId,
48
+ content_hash: contentHash,
49
+ file_path: filePath,
50
+ content,
51
+ content_size: contentSize,
52
+ first_seen_at: firstSeenAt,
53
+ first_seen_at_epoch: firstSeenEpoch,
54
+ created_at: now,
55
+ created_at_epoch: nowEpoch,
56
+ };
57
+ }
58
+ /**
59
+ * Link a session to a CLAUDE.md snapshot
60
+ */
61
+ function linkSessionToClaudeMd(sessionId, snapshotId, filePath, loadedAt) {
62
+ const db = (0, connection_1.getDbInstance)();
63
+ const loadedAtEpoch = new Date(loadedAt).getTime();
64
+ // Check if link already exists
65
+ const existing = db
66
+ .prepare('SELECT id FROM session_claudemd WHERE session_id = ? AND snapshot_id = ?')
67
+ .get(sessionId, snapshotId);
68
+ if (existing) {
69
+ // Already linked, skip
70
+ return;
71
+ }
72
+ db.prepare(`
73
+ INSERT INTO session_claudemd
74
+ (session_id, snapshot_id, file_path, loaded_at, loaded_at_epoch)
75
+ VALUES (?, ?, ?, ?, ?)
76
+ `).run(sessionId, snapshotId, filePath, loadedAt, loadedAtEpoch);
77
+ }
78
+ /**
79
+ * Get CLAUDE.md history for a project
80
+ * Returns all versions used across sessions for the given project
81
+ */
82
+ function getClaudeMdHistory(project) {
83
+ const db = (0, connection_1.getDbInstance)();
84
+ const versions = db
85
+ .prepare(`
86
+ SELECT
87
+ s.id as snapshotId,
88
+ s.content_hash as contentHash,
89
+ s.file_path as filePath,
90
+ s.content,
91
+ s.content_size as contentSize,
92
+ s.first_seen_at as firstSeenAt,
93
+ COUNT(DISTINCT scm.session_id) as sessionCount,
94
+ MIN(sess.started_at) as dateFrom,
95
+ MAX(sess.started_at) as dateTo
96
+ FROM claudemd_snapshots s
97
+ INNER JOIN session_claudemd scm ON s.id = scm.snapshot_id
98
+ INNER JOIN sdk_sessions sess ON scm.session_id = sess.content_session_id
99
+ WHERE sess.project = ?
100
+ GROUP BY s.id
101
+ ORDER BY s.first_seen_at_epoch ASC
102
+ `)
103
+ .all(project);
104
+ const formattedVersions = versions.map((v) => ({
105
+ snapshotId: v.snapshotId,
106
+ contentHash: v.contentHash,
107
+ filePath: v.filePath,
108
+ content: v.content,
109
+ contentSize: v.contentSize,
110
+ firstSeenAt: v.firstSeenAt,
111
+ sessionCount: v.sessionCount,
112
+ dateRange: {
113
+ from: v.dateFrom,
114
+ to: v.dateTo,
115
+ },
116
+ }));
117
+ return {
118
+ project,
119
+ versions: formattedVersions,
120
+ };
121
+ }
122
+ /**
123
+ * Compare two CLAUDE.md snapshots
124
+ */
125
+ function compareClaudeMdSnapshots(fromId, toId) {
126
+ const fromSnapshot = getClaudeMdSnapshot(fromId);
127
+ const toSnapshot = getClaudeMdSnapshot(toId);
128
+ if (!fromSnapshot || !toSnapshot) {
129
+ return null;
130
+ }
131
+ return {
132
+ from: fromSnapshot,
133
+ to: toSnapshot,
134
+ };
135
+ }
136
+ /**
137
+ * Get CLAUDE.md snapshots for a specific session
138
+ */
139
+ function getSessionClaudeMdSnapshots(sessionId) {
140
+ const db = (0, connection_1.getDbInstance)();
141
+ const snapshots = db
142
+ .prepare(`
143
+ SELECT s.*
144
+ FROM claudemd_snapshots s
145
+ INNER JOIN session_claudemd scm ON s.id = scm.snapshot_id
146
+ WHERE scm.session_id = ?
147
+ ORDER BY scm.loaded_at_epoch ASC
148
+ `)
149
+ .all(sessionId);
150
+ return snapshots;
151
+ }
152
+ //# sourceMappingURL=claudemd-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudemd-queries.js","sourceRoot":"","sources":["../../src/db/claudemd-queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * TypeScript types for CLAUDE.md content versioning and evolution tracking
3
+ * Phase 2: CLAUDE.md Observability
4
+ */
5
+ /**
6
+ * CLAUDE.md content snapshot with deduplication via SHA-256 content hash
7
+ * Stores unique versions of CLAUDE.md files across all sessions
8
+ */
9
+ export interface ClaudeMdSnapshot {
10
+ id: number;
11
+ content_hash: string;
12
+ file_path: string;
13
+ content: string;
14
+ content_size: number;
15
+ first_seen_at: string;
16
+ first_seen_at_epoch: number;
17
+ created_at: string;
18
+ created_at_epoch: number;
19
+ }
20
+ /**
21
+ * Junction table linking sessions to CLAUDE.md snapshots
22
+ * Multiple sessions can reference the same snapshot (via content_hash deduplication)
23
+ * This enables tracking which version of CLAUDE.md was active during each session
24
+ */
25
+ export interface SessionClaudeMd {
26
+ id: number;
27
+ session_id: string;
28
+ snapshot_id: number;
29
+ file_path: string;
30
+ loaded_at: string;
31
+ loaded_at_epoch: number;
32
+ }
33
+ /**
34
+ * Full CLAUDE.md version info for timeline display
35
+ * Combines snapshot data with usage statistics
36
+ */
37
+ export interface ClaudeMdVersion {
38
+ snapshotId: number;
39
+ contentHash: string;
40
+ filePath: string;
41
+ content: string;
42
+ contentSize: number;
43
+ firstSeenAt: string;
44
+ sessionCount: number;
45
+ dateRange: {
46
+ from: string;
47
+ to: string;
48
+ };
49
+ }
50
+ /**
51
+ * API Response types
52
+ */
53
+ export interface ClaudeMdHistoryResponse {
54
+ project: string;
55
+ versions: ClaudeMdVersion[];
56
+ }
57
+ export interface ClaudeMdCompareResponse {
58
+ from: ClaudeMdSnapshot;
59
+ to: ClaudeMdSnapshot;
60
+ }
61
+ //# sourceMappingURL=claudemd-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudemd-schema.d.ts","sourceRoot":"","sources":["../../src/db/claudemd-schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,gBAAgB,CAAC;CACtB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * TypeScript types for CLAUDE.md content versioning and evolution tracking
4
+ * Phase 2: CLAUDE.md Observability
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=claudemd-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudemd-schema.js","sourceRoot":"","sources":["../../src/db/claudemd-schema.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -2,8 +2,9 @@ import Database from 'better-sqlite3';
2
2
  /**
3
3
  * Creates and configures a new SQLite database connection
4
4
  *
5
- * Opens the claude-mem database in read-only mode for safety.
6
- * This prevents accidental modifications to the user's session history.
5
+ * Opens the claude-mem database in read-write mode to support CLAUDE.md
6
+ * snapshot storage. The database is still opened with caution flags to
7
+ * prevent data corruption.
7
8
  *
8
9
  * @returns {Database.Database} Configured SQLite database instance
9
10
  * @throws {Error} If database file doesn't exist at DB_PATH
@@ -18,7 +19,7 @@ export declare function getDatabase(): Database.Database;
18
19
  * Get the singleton database instance
19
20
  *
20
21
  * Creates a new connection on first call, then reuses it for subsequent calls.
21
- * This is safe because SQLite handles concurrent reads well in read-only mode.
22
+ * This is safe because SQLite handles concurrent reads well.
22
23
  *
23
24
  * @returns {Database.Database} Singleton database instance
24
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAUtC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAgB/C;AAQD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,QAAQ,CAKjD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAUtC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAmB/C;AAgED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,IAAI,QAAQ,CAAC,QAAQ,CAKjD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
@@ -17,8 +17,9 @@ const DB_PATH = path_1.default.join(process.env.HOME || '', '.claude-mem', 'clau
17
17
  /**
18
18
  * Creates and configures a new SQLite database connection
19
19
  *
20
- * Opens the claude-mem database in read-only mode for safety.
21
- * This prevents accidental modifications to the user's session history.
20
+ * Opens the claude-mem database in read-write mode to support CLAUDE.md
21
+ * snapshot storage. The database is still opened with caution flags to
22
+ * prevent data corruption.
22
23
  *
23
24
  * @returns {Database.Database} Configured SQLite database instance
24
25
  * @throws {Error} If database file doesn't exist at DB_PATH
@@ -33,13 +34,58 @@ function getDatabase() {
33
34
  throw new Error(`Database not found at ${DB_PATH}. Make sure claude-mem is installed and has recorded sessions.`);
34
35
  }
35
36
  const db = new better_sqlite3_1.default(DB_PATH, {
36
- readonly: true, // Prevent accidental writes
37
+ readonly: false, // Allow writes for CLAUDE.md snapshots
37
38
  fileMustExist: true, // Fail if file doesn't exist
38
39
  });
39
40
  // Enable better error messages for foreign key violations
40
41
  db.pragma('foreign_keys = ON');
42
+ // Run migrations
43
+ runMigrations(db);
41
44
  return db;
42
45
  }
46
+ /**
47
+ * Run database migrations if needed
48
+ * Applies migration files in order to ensure schema is up-to-date
49
+ */
50
+ function runMigrations(db) {
51
+ // Check if migrations table exists
52
+ const tableExists = db
53
+ .prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name='schema_versions'`)
54
+ .get();
55
+ if (!tableExists) {
56
+ // Create migrations tracking table
57
+ db.exec(`
58
+ CREATE TABLE schema_versions (
59
+ id INTEGER PRIMARY KEY,
60
+ version INTEGER UNIQUE NOT NULL,
61
+ applied_at TEXT NOT NULL
62
+ );
63
+ `);
64
+ }
65
+ // Get current version
66
+ const currentVersion = db.prepare('SELECT MAX(version) as version FROM schema_versions').get()?.version || 0;
67
+ // Apply migrations
68
+ const migrationsDir = path_1.default.join(__dirname, 'migrations');
69
+ const migrationFiles = fs_1.default.existsSync(migrationsDir)
70
+ ? fs_1.default
71
+ .readdirSync(migrationsDir)
72
+ .filter((f) => f.endsWith('.sql'))
73
+ .sort()
74
+ : [];
75
+ for (const file of migrationFiles) {
76
+ const versionStr = file.split('_')[0];
77
+ if (!versionStr)
78
+ continue; // Skip files without version prefix
79
+ const version = parseInt(versionStr, 10);
80
+ if (isNaN(version) || version <= currentVersion)
81
+ continue;
82
+ console.log(`Applying migration ${file}...`);
83
+ const sql = fs_1.default.readFileSync(path_1.default.join(migrationsDir, file), 'utf-8');
84
+ db.exec(sql);
85
+ db.prepare('INSERT INTO schema_versions (version, applied_at) VALUES (?, ?)').run(version, new Date().toISOString());
86
+ console.log(`Migration ${file} applied successfully`);
87
+ }
88
+ }
43
89
  /**
44
90
  * Global database instance (singleton)
45
91
  * Reused across all requests to avoid connection overhead
@@ -49,7 +95,7 @@ let dbInstance = null;
49
95
  * Get the singleton database instance
50
96
  *
51
97
  * Creates a new connection on first call, then reuses it for subsequent calls.
52
- * This is safe because SQLite handles concurrent reads well in read-only mode.
98
+ * This is safe because SQLite handles concurrent reads well.
53
99
  *
54
100
  * @returns {Database.Database} Singleton database instance
55
101
  *
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":";;;;;AAwBA,kCAgBC;AAsBD,sCAKC;AAgBD,sCAKC;AAxFD,oEAAsC;AACtC,gDAAwB;AACxB,4CAAoB;AAEpB;;;GAGG;AACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAElF;;;;;;;;;;;;;GAaG;AACH,SAAgB,WAAW;IACzB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yBAAyB,OAAO,gEAAgE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,EAAE;QAC/B,QAAQ,EAAE,IAAI,EAAE,4BAA4B;QAC5C,aAAa,EAAE,IAAI,EAAE,6BAA6B;KACnD,CAAC,CAAC;IAEH,0DAA0D;IAC1D,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,IAAI,UAAU,GAA6B,IAAI,CAAC;AAEhD;;;;;;;;;;;;;GAaG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,aAAa;IAC3B,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ export declare function getTranscriptSessions(query: TranscriptSessionListQuery)
27
27
  };
28
28
  /**
29
29
  * Perform a global search across all transcript content
30
+ * Uses FTS5 for fast full-text search with BM25 ranking
30
31
  */
31
32
  export declare function searchGlobalFrames(req: SearchGlobalRequest): SearchGlobalResponse;
32
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-queries.d.ts","sourceRoot":"","sources":["../../src/db/transcript-queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAiIjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG;IACxE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAkEA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,oBAAoB,CA4HjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6BlF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,qBAAqB,GAC3B;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiD5C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA6CtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA+C5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAkDzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAuCvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA6BhF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAY/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CA8E9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAchD;AA6CD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAsBA"}
1
+ {"version":3,"file":"transcript-queries.d.ts","sourceRoot":"","sources":["../../src/db/transcript-queries.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKV,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CA0LjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG;IACxE,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf,CAkEA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,oBAAoB,CA6GjF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6BlF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,qBAAqB,GAC3B;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiD5C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA6CtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA+C5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,CAkDzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CAuCvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CA6BhF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAY/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CA8E9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAchD;AA6CD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAsBA"}
@@ -145,6 +145,55 @@ function initializeTranscriptSchema() {
145
145
  CREATE INDEX IF NOT EXISTS idx_parsing_status
146
146
  ON parsing_status(status);
147
147
  `);
148
+ // 6. FTS5 FULL-TEXT SEARCH
149
+ // Create FTS5 virtual table for playback_frames full-text search
150
+ db.exec(`
151
+ CREATE VIRTUAL TABLE IF NOT EXISTS playback_frames_fts USING fts5(
152
+ user_message_text,
153
+ thinking_text,
154
+ response_text,
155
+ content='playback_frames',
156
+ content_rowid='rowid',
157
+ tokenize='porter unicode61'
158
+ );
159
+ `);
160
+ // Populate FTS5 table if empty and playback_frames has data
161
+ const ftsCount = db.prepare('SELECT COUNT(*) as count FROM playback_frames_fts').get();
162
+ const framesCount = db.prepare('SELECT COUNT(*) as count FROM playback_frames').get();
163
+ if (ftsCount.count === 0 && framesCount.count > 0) {
164
+ db.exec(`
165
+ INSERT INTO playback_frames_fts(rowid, user_message_text, thinking_text, response_text)
166
+ SELECT
167
+ rowid,
168
+ user_message_text,
169
+ thinking_text,
170
+ response_text
171
+ FROM playback_frames;
172
+ `);
173
+ }
174
+ // Auto-sync triggers for FTS5
175
+ db.exec(`
176
+ DROP TRIGGER IF EXISTS playback_frames_ai;
177
+ CREATE TRIGGER playback_frames_ai AFTER INSERT ON playback_frames BEGIN
178
+ INSERT INTO playback_frames_fts(rowid, user_message_text, thinking_text, response_text)
179
+ VALUES (new.rowid, new.user_message_text, new.thinking_text, new.response_text);
180
+ END;
181
+
182
+ DROP TRIGGER IF EXISTS playback_frames_au;
183
+ CREATE TRIGGER playback_frames_au AFTER UPDATE ON playback_frames BEGIN
184
+ UPDATE playback_frames_fts
185
+ SET
186
+ user_message_text = new.user_message_text,
187
+ thinking_text = new.thinking_text,
188
+ response_text = new.response_text
189
+ WHERE rowid = old.rowid;
190
+ END;
191
+
192
+ DROP TRIGGER IF EXISTS playback_frames_ad;
193
+ CREATE TRIGGER playback_frames_ad AFTER DELETE ON playback_frames BEGIN
194
+ DELETE FROM playback_frames_fts WHERE rowid = old.rowid;
195
+ END;
196
+ `);
148
197
  }
149
198
  /**
150
199
  * Get all sessions with pagination and filtering
@@ -213,21 +262,16 @@ function getTranscriptSessions(query) {
213
262
  }
214
263
  /**
215
264
  * Perform a global search across all transcript content
265
+ * Uses FTS5 for fast full-text search with BM25 ranking
216
266
  */
217
267
  function searchGlobalFrames(req) {
218
268
  const db = (0, transcript_connection_1.getTranscriptDbInstance)();
219
269
  const { query, limit = 50, offset = 0, agent, project } = req;
220
- const likeQuery = `%${query}%`;
221
270
  const whereClauses = [];
222
- const params = { likeQuery };
223
- const searchClause = `(
224
- f.user_message_text LIKE @likeQuery OR
225
- f.thinking_text LIKE @likeQuery OR
226
- f.response_text LIKE @likeQuery OR
227
- t.output_content LIKE @likeQuery OR
228
- d.new_content LIKE @likeQuery
229
- )`;
230
- whereClauses.push(searchClause);
271
+ const params = { query };
272
+ // FTS5 MATCH clause for fast full-text search on playback_frames
273
+ // Note: Must reference the virtual table directly in MATCH clause
274
+ whereClauses.push('playback_frames_fts MATCH @query');
231
275
  if (agent) {
232
276
  whereClauses.push('s.agent_type = @agent');
233
277
  params.agent = agent;
@@ -237,17 +281,16 @@ function searchGlobalFrames(req) {
237
281
  params.project = project;
238
282
  }
239
283
  const whereClause = 'WHERE ' + whereClauses.join(' AND ');
240
- // Count total matches
284
+ // Count total matches using FTS5
241
285
  const countQuery = `
242
286
  SELECT COUNT(DISTINCT f.id) as total
243
287
  FROM playback_frames f
244
288
  JOIN session_metadata s ON f.session_id = s.session_id
245
- LEFT JOIN tool_executions t ON t.frame_id = f.id
246
- LEFT JOIN file_diffs d ON d.tool_execution_id = t.id
289
+ JOIN playback_frames_fts fts ON f.rowid = fts.rowid
247
290
  ${whereClause}
248
291
  `;
249
292
  const countResult = db.prepare(countQuery).get(params);
250
- // Get results with snippets
293
+ // Get results with BM25 ranking and snippets
251
294
  const resultsQuery = `
252
295
  SELECT
253
296
  f.id as frameId,
@@ -260,15 +303,12 @@ function searchGlobalFrames(req) {
260
303
  f.agent_type as agent,
261
304
  s.slug,
262
305
  s.project,
263
- t.output_content,
264
- d.new_content as file_content
306
+ bm25(playback_frames_fts) as rank
265
307
  FROM playback_frames f
266
308
  JOIN session_metadata s ON f.session_id = s.session_id
267
- LEFT JOIN tool_executions t ON t.frame_id = f.id
268
- LEFT JOIN file_diffs d ON d.tool_execution_id = t.id
309
+ JOIN playback_frames_fts fts ON f.rowid = fts.rowid
269
310
  ${whereClause}
270
- GROUP BY f.id
271
- ORDER BY f.timestamp_ms DESC
311
+ ORDER BY rank ASC, f.timestamp_ms DESC
272
312
  LIMIT @limit OFFSET @offset
273
313
  `;
274
314
  const rows = db.prepare(resultsQuery).all({ ...params, limit, offset });
@@ -291,6 +331,7 @@ function searchGlobalFrames(req) {
291
331
  };
292
332
  let snippet = '';
293
333
  let matchType = 'user_message';
334
+ // Determine match type and create snippet
294
335
  if (row.user_message_text?.toLowerCase().includes(query.toLowerCase())) {
295
336
  snippet = createSnippet(row.user_message_text) || '';
296
337
  matchType = 'user_message';
@@ -303,16 +344,8 @@ function searchGlobalFrames(req) {
303
344
  snippet = createSnippet(row.thinking_text) || '';
304
345
  matchType = 'thinking';
305
346
  }
306
- else if (row.output_content?.toLowerCase().includes(query.toLowerCase())) {
307
- snippet = createSnippet(row.output_content) || '';
308
- matchType = 'tool_output';
309
- }
310
- else if (row.file_content?.toLowerCase().includes(query.toLowerCase())) {
311
- snippet = createSnippet(row.file_content) || '';
312
- matchType = 'file_change';
313
- }
314
347
  else {
315
- // Fallback
348
+ // Fallback to any available text
316
349
  snippet = row.user_message_text || row.response_text || row.thinking_text || '';
317
350
  if (snippet.length > 100)
318
351
  snippet = snippet.substring(0, 100) + '...';
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-queries.js","sourceRoot":"","sources":["../../src/db/transcript-queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transcript-queries.js","sourceRoot":"","sources":["../../src/db/transcript-queries.ts"],"names":[],"mappings":"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"}