@defai.digital/sqlite-adapter 13.3.0 → 13.4.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/dist/index.d.ts CHANGED
@@ -3,4 +3,5 @@ export { SqliteTraceStore, SqliteTraceStoreError, SqliteTraceStoreErrorCodes, cr
3
3
  export { SQLiteFTSStore, FTSStoreError, FTSStoreErrorCodes, createSQLiteFTSStore, type FTSResult, type FTSSearchOptions, type FTSItem, } from './fts-store.js';
4
4
  export { SqliteCheckpointStorage, SqliteCheckpointStoreError, SqliteCheckpointStoreErrorCodes, createSqliteCheckpointStorage, } from './checkpoint-store.js';
5
5
  export { SqliteDeadLetterStorage, SqliteDeadLetterStoreError, SqliteDeadLetterStoreErrorCodes, createSqliteDeadLetterStorage, } from './dead-letter-store.js';
6
+ export { SqliteSemanticStore, SemanticStoreError, SemanticStoreErrorCodes, createSqliteSemanticStore, } from './semantic-store.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,OAAO,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,OAAO,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,5 @@ export { SqliteTraceStore, SqliteTraceStoreError, SqliteTraceStoreErrorCodes, cr
3
3
  export { SQLiteFTSStore, FTSStoreError, FTSStoreErrorCodes, createSQLiteFTSStore, } from './fts-store.js';
4
4
  export { SqliteCheckpointStorage, SqliteCheckpointStoreError, SqliteCheckpointStoreErrorCodes, createSqliteCheckpointStorage, } from './checkpoint-store.js';
5
5
  export { SqliteDeadLetterStorage, SqliteDeadLetterStoreError, SqliteDeadLetterStoreErrorCodes, createSqliteDeadLetterStorage, } from './dead-letter-store.js';
6
+ export { SqliteSemanticStore, SemanticStoreError, SemanticStoreErrorCodes, createSqliteSemanticStore, } from './semantic-store.js';
6
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GAIrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GAIrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * SQLite Semantic Store
3
+ *
4
+ * Provides semantic search with vector embeddings using SQLite.
5
+ * Stores embeddings as binary blobs for efficient storage.
6
+ *
7
+ * Invariants:
8
+ * - INV-SEM-001: Embeddings computed on store, cached until content changes
9
+ * - INV-SEM-002: Search returns results sorted by similarity descending
10
+ * - INV-SEM-003: Similarity scores normalized to 0-1 range
11
+ * - INV-SEM-004: Namespace isolation
12
+ */
13
+ import type Database from 'better-sqlite3';
14
+ import type { SemanticItem, SemanticSearchRequest, SemanticSearchResponse, SemanticStoreRequest, SemanticStoreResponse, SemanticListRequest, SemanticListResponse, SemanticDeleteResponse } from '@defai.digital/contracts';
15
+ import type { SemanticStorePort, SemanticStoreStats } from '@defai.digital/semantic-context';
16
+ /**
17
+ * Error thrown by semantic store operations
18
+ */
19
+ export declare class SemanticStoreError extends Error {
20
+ readonly code: string;
21
+ readonly details?: Record<string, unknown> | undefined;
22
+ constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
23
+ }
24
+ /**
25
+ * Error codes for semantic store
26
+ */
27
+ export declare const SemanticStoreErrorCodes: {
28
+ readonly STORE_ERROR: "SEMANTIC_STORE_ERROR";
29
+ readonly SEARCH_ERROR: "SEMANTIC_SEARCH_ERROR";
30
+ readonly DATABASE_ERROR: "SEMANTIC_DATABASE_ERROR";
31
+ readonly INVALID_TABLE_NAME: "SEMANTIC_INVALID_TABLE_NAME";
32
+ readonly DIMENSION_MISMATCH: "SEMANTIC_DIMENSION_MISMATCH";
33
+ };
34
+ /**
35
+ * SQLite Semantic Store implementation
36
+ */
37
+ export declare class SqliteSemanticStore implements SemanticStorePort {
38
+ private readonly db;
39
+ private readonly tableName;
40
+ constructor(db: Database.Database, tableName?: string);
41
+ /**
42
+ * Initialize database schema
43
+ */
44
+ private initialize;
45
+ /**
46
+ * Store item with embedding
47
+ * INV-SEM-001: Caches embedding until content changes
48
+ */
49
+ store(request: SemanticStoreRequest): Promise<SemanticStoreResponse>;
50
+ /**
51
+ * Search by semantic similarity
52
+ * INV-SEM-002: Results sorted by similarity descending
53
+ * INV-SEM-003: Scores normalized to [0, 1]
54
+ * INV-SEM-004: Namespace isolation
55
+ */
56
+ search(request: SemanticSearchRequest): Promise<SemanticSearchResponse>;
57
+ /**
58
+ * Get item by key
59
+ */
60
+ get(key: string, namespace?: string): Promise<SemanticItem | null>;
61
+ /**
62
+ * List items
63
+ */
64
+ list(request: SemanticListRequest): Promise<SemanticListResponse>;
65
+ /**
66
+ * Delete item
67
+ */
68
+ delete(key: string, namespace?: string): Promise<SemanticDeleteResponse>;
69
+ /**
70
+ * Check if item exists
71
+ */
72
+ exists(key: string, namespace?: string): Promise<boolean>;
73
+ /**
74
+ * Get statistics
75
+ */
76
+ getStats(namespace?: string): Promise<SemanticStoreStats>;
77
+ /**
78
+ * Clear namespace
79
+ */
80
+ clear(namespace?: string): Promise<number>;
81
+ /**
82
+ * Convert database row to SemanticItem
83
+ */
84
+ private rowToItem;
85
+ }
86
+ /**
87
+ * Creates a SQLite semantic store
88
+ */
89
+ export declare function createSqliteSemanticStore(db: Database.Database, tableName?: string): SqliteSemanticStore;
90
+ //# sourceMappingURL=semantic-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-store.d.ts","sourceRoot":"","sources":["../src/semantic-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAGzC;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;aAEzB,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;CAM1B,CAAC;AAmEX;;GAEG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAmB;IAY/D;;OAEG;IACH,OAAO,CAAC,UAAU;IAgClB;;;OAGG;IACG,KAAK,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmE1E;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwF7E;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAY3E;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwDvE;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAejF;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAUlE;;OAEG;IACG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2D/D;;OAEG;IACG,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAehD;;OAEG;IACH,OAAO,CAAC,SAAS;CA8BlB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,CAAC,EAAE,MAAM,GACjB,mBAAmB,CAErB"}
@@ -0,0 +1,448 @@
1
+ /**
2
+ * SQLite Semantic Store
3
+ *
4
+ * Provides semantic search with vector embeddings using SQLite.
5
+ * Stores embeddings as binary blobs for efficient storage.
6
+ *
7
+ * Invariants:
8
+ * - INV-SEM-001: Embeddings computed on store, cached until content changes
9
+ * - INV-SEM-002: Search returns results sorted by similarity descending
10
+ * - INV-SEM-003: Similarity scores normalized to 0-1 range
11
+ * - INV-SEM-004: Namespace isolation
12
+ */
13
+ import { isValidTableName, invalidTableNameMessage } from './validation.js';
14
+ /**
15
+ * Error thrown by semantic store operations
16
+ */
17
+ export class SemanticStoreError extends Error {
18
+ code;
19
+ details;
20
+ constructor(code, message, details) {
21
+ super(message);
22
+ this.code = code;
23
+ this.details = details;
24
+ this.name = 'SemanticStoreError';
25
+ }
26
+ }
27
+ /**
28
+ * Error codes for semantic store
29
+ */
30
+ export const SemanticStoreErrorCodes = {
31
+ STORE_ERROR: 'SEMANTIC_STORE_ERROR',
32
+ SEARCH_ERROR: 'SEMANTIC_SEARCH_ERROR',
33
+ DATABASE_ERROR: 'SEMANTIC_DATABASE_ERROR',
34
+ INVALID_TABLE_NAME: 'SEMANTIC_INVALID_TABLE_NAME',
35
+ DIMENSION_MISMATCH: 'SEMANTIC_DIMENSION_MISMATCH',
36
+ };
37
+ /**
38
+ * Convert embedding array to buffer for storage
39
+ */
40
+ function embeddingToBuffer(embedding) {
41
+ const buffer = Buffer.alloc(embedding.length * 8);
42
+ for (let i = 0; i < embedding.length; i++) {
43
+ buffer.writeDoubleLE(embedding[i], i * 8);
44
+ }
45
+ return buffer;
46
+ }
47
+ /**
48
+ * Convert buffer back to embedding array
49
+ */
50
+ function bufferToEmbedding(buffer) {
51
+ const embedding = [];
52
+ for (let i = 0; i < buffer.length; i += 8) {
53
+ embedding.push(buffer.readDoubleLE(i));
54
+ }
55
+ return embedding;
56
+ }
57
+ /**
58
+ * Compute cosine similarity between two embeddings
59
+ * INV-SEM-003: Returns normalized score in [0, 1]
60
+ */
61
+ function cosineSimilarity(a, b) {
62
+ if (a.length !== b.length)
63
+ return 0;
64
+ if (a.length === 0)
65
+ return 0;
66
+ let dot = 0;
67
+ let normA = 0;
68
+ let normB = 0;
69
+ for (let i = 0; i < a.length; i++) {
70
+ dot += a[i] * b[i];
71
+ normA += a[i] * a[i];
72
+ normB += b[i] * b[i];
73
+ }
74
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
75
+ if (denom === 0)
76
+ return 0;
77
+ // Normalize from [-1, 1] to [0, 1]
78
+ return (dot / denom + 1) / 2;
79
+ }
80
+ /**
81
+ * SQLite Semantic Store implementation
82
+ */
83
+ export class SqliteSemanticStore {
84
+ db;
85
+ tableName;
86
+ constructor(db, tableName = 'semantic_items') {
87
+ if (!isValidTableName(tableName)) {
88
+ throw new SemanticStoreError(SemanticStoreErrorCodes.INVALID_TABLE_NAME, invalidTableNameMessage(tableName));
89
+ }
90
+ this.db = db;
91
+ this.tableName = tableName;
92
+ this.initialize();
93
+ }
94
+ /**
95
+ * Initialize database schema
96
+ */
97
+ initialize() {
98
+ this.db.exec(`
99
+ CREATE TABLE IF NOT EXISTS ${this.tableName} (
100
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
101
+ key TEXT NOT NULL,
102
+ namespace TEXT NOT NULL DEFAULT 'default',
103
+ content TEXT NOT NULL,
104
+ embedding BLOB,
105
+ embedding_dimension INTEGER,
106
+ embedding_model TEXT,
107
+ content_hash TEXT,
108
+ tags TEXT,
109
+ metadata TEXT,
110
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
111
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
112
+ UNIQUE(key, namespace)
113
+ );
114
+
115
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_namespace
116
+ ON ${this.tableName}(namespace);
117
+
118
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_content_hash
119
+ ON ${this.tableName}(content_hash);
120
+
121
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_created_at
122
+ ON ${this.tableName}(created_at DESC);
123
+
124
+ CREATE INDEX IF NOT EXISTS idx_${this.tableName}_dimension
125
+ ON ${this.tableName}(embedding_dimension);
126
+ `);
127
+ }
128
+ /**
129
+ * Store item with embedding
130
+ * INV-SEM-001: Caches embedding until content changes
131
+ */
132
+ async store(request) {
133
+ const namespace = request.namespace ?? 'default';
134
+ const tagsStr = request.tags?.join(',') ?? null;
135
+ const metadataStr = request.metadata ? JSON.stringify(request.metadata) : null;
136
+ const embeddingBuffer = request.embedding ? embeddingToBuffer(request.embedding) : null;
137
+ const embeddingDimension = request.embedding?.length ?? null;
138
+ try {
139
+ // Check if item exists
140
+ const existingStmt = this.db.prepare(`
141
+ SELECT id, created_at FROM ${this.tableName}
142
+ WHERE key = ? AND namespace = ?
143
+ `);
144
+ const existing = existingStmt.get(request.key, namespace);
145
+ const stmt = this.db.prepare(`
146
+ INSERT INTO ${this.tableName} (
147
+ key, namespace, content, embedding, embedding_dimension,
148
+ embedding_model, content_hash, tags, metadata
149
+ )
150
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
151
+ ON CONFLICT(key, namespace) DO UPDATE SET
152
+ content = excluded.content,
153
+ embedding = excluded.embedding,
154
+ embedding_dimension = excluded.embedding_dimension,
155
+ embedding_model = excluded.embedding_model,
156
+ content_hash = excluded.content_hash,
157
+ tags = excluded.tags,
158
+ metadata = excluded.metadata,
159
+ updated_at = datetime('now')
160
+ `);
161
+ stmt.run(request.key, namespace, request.content, embeddingBuffer, embeddingDimension, null, // embedding model not tracked in request
162
+ null, // content hash computed elsewhere
163
+ tagsStr, metadataStr);
164
+ // Get the stored item
165
+ const itemStmt = this.db.prepare(`
166
+ SELECT * FROM ${this.tableName}
167
+ WHERE key = ? AND namespace = ?
168
+ `);
169
+ const row = itemStmt.get(request.key, namespace);
170
+ const item = this.rowToItem(row, false);
171
+ return {
172
+ success: true,
173
+ item,
174
+ created: !existing,
175
+ embeddingComputed: false, // SQLite adapter doesn't compute embeddings
176
+ };
177
+ }
178
+ catch (error) {
179
+ throw new SemanticStoreError(SemanticStoreErrorCodes.STORE_ERROR, `Failed to store item: ${error instanceof Error ? error.message : 'Unknown error'}`);
180
+ }
181
+ }
182
+ /**
183
+ * Search by semantic similarity
184
+ * INV-SEM-002: Results sorted by similarity descending
185
+ * INV-SEM-003: Scores normalized to [0, 1]
186
+ * INV-SEM-004: Namespace isolation
187
+ */
188
+ async search(request) {
189
+ const startTime = Date.now();
190
+ try {
191
+ // Build query
192
+ let sql = `SELECT * FROM ${this.tableName} WHERE embedding IS NOT NULL`;
193
+ const params = [];
194
+ // INV-SEM-004: Namespace isolation
195
+ if (request.namespace) {
196
+ sql += ` AND namespace = ?`;
197
+ params.push(request.namespace);
198
+ }
199
+ // Tag filtering
200
+ if (request.filterTags && request.filterTags.length > 0) {
201
+ for (const tag of request.filterTags) {
202
+ sql += ` AND tags LIKE ?`;
203
+ params.push(`%${tag}%`);
204
+ }
205
+ }
206
+ const stmt = this.db.prepare(sql);
207
+ const rows = stmt.all(...params);
208
+ // SQLite adapter doesn't compute embeddings, so semantic search requires
209
+ // external embedding computation. For now, we do a simple content-based filter.
210
+ // The request type doesn't include queryEmbedding - that would be computed
211
+ // by a higher-level manager using an embedding service.
212
+ // Return empty results indicating semantic search is not available in this adapter.
213
+ const supportsSemanticSearch = false; // Would need query embedding support
214
+ if (!supportsSemanticSearch) {
215
+ return {
216
+ results: [],
217
+ totalMatches: 0,
218
+ query: request.query,
219
+ namespace: request.namespace,
220
+ durationMs: Date.now() - startTime,
221
+ };
222
+ }
223
+ // Below code is unreachable until semantic search is properly implemented
224
+ // with embedding service integration
225
+ const queryEmbedding = [];
226
+ const minSimilarity = request.minSimilarity;
227
+ const topK = request.topK ?? 10;
228
+ const scored = rows
229
+ .map((row) => {
230
+ const embedding = row.embedding ? bufferToEmbedding(row.embedding) : null;
231
+ if (!embedding)
232
+ return null;
233
+ const similarity = cosineSimilarity(queryEmbedding, embedding);
234
+ return { row, similarity };
235
+ })
236
+ .filter((s) => s !== null && s.similarity >= minSimilarity);
237
+ // INV-SEM-002: Sort by similarity descending
238
+ scored.sort((a, b) => b.similarity - a.similarity);
239
+ // Take top K
240
+ const topResults = scored.slice(0, topK);
241
+ const results = topResults.map((s, index) => ({
242
+ item: this.rowToItem(s.row, request.includeEmbeddings ?? false),
243
+ similarity: s.similarity,
244
+ rank: index + 1,
245
+ snippet: s.row.content.slice(0, 200),
246
+ }));
247
+ return {
248
+ results,
249
+ totalMatches: scored.length,
250
+ query: request.query,
251
+ namespace: request.namespace,
252
+ durationMs: Date.now() - startTime,
253
+ queryEmbedding: request.includeEmbeddings ? queryEmbedding : undefined,
254
+ };
255
+ }
256
+ catch (error) {
257
+ throw new SemanticStoreError(SemanticStoreErrorCodes.SEARCH_ERROR, `Search failed: ${error instanceof Error ? error.message : 'Unknown error'}`, { query: request.query });
258
+ }
259
+ }
260
+ /**
261
+ * Get item by key
262
+ */
263
+ async get(key, namespace = 'default') {
264
+ const stmt = this.db.prepare(`
265
+ SELECT * FROM ${this.tableName}
266
+ WHERE key = ? AND namespace = ?
267
+ `);
268
+ const row = stmt.get(key, namespace);
269
+ if (!row)
270
+ return null;
271
+ return this.rowToItem(row, true);
272
+ }
273
+ /**
274
+ * List items
275
+ */
276
+ async list(request) {
277
+ const namespace = request.namespace ?? 'default';
278
+ const limit = request.limit ?? 10;
279
+ const offset = request.offset ?? 0;
280
+ const orderBy = request.orderBy ?? 'createdAt';
281
+ const orderDir = request.orderDir ?? 'desc';
282
+ // Map orderBy to column name
283
+ const columnMap = {
284
+ createdAt: 'created_at',
285
+ updatedAt: 'updated_at',
286
+ key: 'key',
287
+ };
288
+ const column = columnMap[orderBy] ?? 'created_at';
289
+ const direction = orderDir === 'asc' ? 'ASC' : 'DESC';
290
+ let sql = `SELECT * FROM ${this.tableName} WHERE namespace = ?`;
291
+ const params = [namespace];
292
+ // Key prefix filter
293
+ if (request.keyPrefix) {
294
+ sql += ` AND key LIKE ?`;
295
+ params.push(`${request.keyPrefix}%`);
296
+ }
297
+ // Tag filter
298
+ if (request.filterTags && request.filterTags.length > 0) {
299
+ for (const tag of request.filterTags) {
300
+ sql += ` AND tags LIKE ?`;
301
+ params.push(`%${tag}%`);
302
+ }
303
+ }
304
+ // Get total count
305
+ const countSql = sql.replace('SELECT *', 'SELECT COUNT(*) as count');
306
+ const countStmt = this.db.prepare(countSql);
307
+ const countRow = countStmt.get(...params);
308
+ const total = countRow.count;
309
+ // Add ordering and pagination
310
+ sql += ` ORDER BY ${column} ${direction} LIMIT ? OFFSET ?`;
311
+ params.push(limit, offset);
312
+ const stmt = this.db.prepare(sql);
313
+ const rows = stmt.all(...params);
314
+ const items = rows.map((row) => this.rowToItem(row, false));
315
+ return {
316
+ items,
317
+ total,
318
+ hasMore: offset + limit < total,
319
+ namespace,
320
+ };
321
+ }
322
+ /**
323
+ * Delete item
324
+ */
325
+ async delete(key, namespace = 'default') {
326
+ const stmt = this.db.prepare(`
327
+ DELETE FROM ${this.tableName}
328
+ WHERE key = ? AND namespace = ?
329
+ `);
330
+ const result = stmt.run(key, namespace);
331
+ return {
332
+ deleted: result.changes > 0,
333
+ key,
334
+ namespace,
335
+ };
336
+ }
337
+ /**
338
+ * Check if item exists
339
+ */
340
+ async exists(key, namespace = 'default') {
341
+ const stmt = this.db.prepare(`
342
+ SELECT 1 FROM ${this.tableName}
343
+ WHERE key = ? AND namespace = ?
344
+ `);
345
+ const row = stmt.get(key, namespace);
346
+ return row !== undefined;
347
+ }
348
+ /**
349
+ * Get statistics
350
+ */
351
+ async getStats(namespace) {
352
+ let sql = `
353
+ SELECT
354
+ COUNT(*) as total_items,
355
+ COUNT(embedding) as items_with_embeddings,
356
+ MIN(embedding_dimension) as min_dim,
357
+ MAX(embedding_dimension) as max_dim
358
+ FROM ${this.tableName}
359
+ `;
360
+ const params = [];
361
+ if (namespace) {
362
+ sql += ` WHERE namespace = ?`;
363
+ params.push(namespace);
364
+ }
365
+ const stmt = this.db.prepare(sql);
366
+ const row = stmt.get(...params);
367
+ // Get embedding model
368
+ const modelStmt = this.db.prepare(`
369
+ SELECT DISTINCT embedding_model FROM ${this.tableName}
370
+ WHERE embedding_model IS NOT NULL
371
+ ${namespace ? 'AND namespace = ?' : ''}
372
+ LIMIT 1
373
+ `);
374
+ const modelRow = modelStmt.get(...params);
375
+ // Get namespaces if not filtering
376
+ let namespaces;
377
+ if (!namespace) {
378
+ const nsStmt = this.db.prepare(`
379
+ SELECT DISTINCT namespace FROM ${this.tableName}
380
+ `);
381
+ const nsRows = nsStmt.all();
382
+ namespaces = nsRows.map((r) => r.namespace);
383
+ }
384
+ const result = {
385
+ totalItems: row.total_items,
386
+ itemsWithEmbeddings: row.items_with_embeddings,
387
+ embeddingDimension: row.min_dim ?? null,
388
+ embeddingModel: modelRow?.embedding_model ?? null,
389
+ namespace: namespace ?? null,
390
+ };
391
+ // Only include namespaces if not filtering by specific namespace
392
+ if (!namespace && namespaces) {
393
+ result.namespaces = namespaces;
394
+ }
395
+ return result;
396
+ }
397
+ /**
398
+ * Clear namespace
399
+ */
400
+ async clear(namespace) {
401
+ let sql = `DELETE FROM ${this.tableName}`;
402
+ const params = [];
403
+ if (namespace) {
404
+ sql += ` WHERE namespace = ?`;
405
+ params.push(namespace);
406
+ }
407
+ const stmt = this.db.prepare(sql);
408
+ const result = stmt.run(...params);
409
+ return result.changes;
410
+ }
411
+ /**
412
+ * Convert database row to SemanticItem
413
+ */
414
+ rowToItem(row, includeEmbedding) {
415
+ const item = {
416
+ key: row.key,
417
+ namespace: row.namespace,
418
+ content: row.content,
419
+ embeddingDimension: row.embedding_dimension ?? undefined,
420
+ embeddingModel: row.embedding_model ?? undefined,
421
+ contentHash: row.content_hash ?? undefined,
422
+ createdAt: row.created_at,
423
+ updatedAt: row.updated_at,
424
+ };
425
+ if (includeEmbedding && row.embedding) {
426
+ item.embedding = bufferToEmbedding(row.embedding);
427
+ }
428
+ if (row.tags) {
429
+ item.tags = row.tags.split(',').filter((t) => t.length > 0);
430
+ }
431
+ if (row.metadata) {
432
+ try {
433
+ item.metadata = JSON.parse(row.metadata);
434
+ }
435
+ catch {
436
+ // Ignore parsing errors
437
+ }
438
+ }
439
+ return item;
440
+ }
441
+ }
442
+ /**
443
+ * Creates a SQLite semantic store
444
+ */
445
+ export function createSqliteSemanticStore(db, tableName) {
446
+ return new SqliteSemanticStore(db, tableName);
447
+ }
448
+ //# sourceMappingURL=semantic-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-store.js","sourceRoot":"","sources":["../src/semantic-store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { TraceEvent } from '@defai.digital/contracts';
2
- import type { TraceStore, TraceSummary } from '@defai.digital/trace-domain';
2
+ import type { TraceStore, TraceSummary, TraceTreeNode } from '@defai.digital/trace-domain';
3
3
  import type Database from 'better-sqlite3';
4
4
  /**
5
5
  * Error thrown by SQLite trace store operations
@@ -31,6 +31,10 @@ export declare class SqliteTraceStore implements TraceStore {
31
31
  * Initializes the database schema
32
32
  */
33
33
  private initialize;
34
+ /**
35
+ * Adds hierarchy columns to existing tables (migration)
36
+ */
37
+ private migrateHierarchyColumns;
34
38
  /**
35
39
  * Writes a trace event
36
40
  * INV-TR-002: Events must be strictly ordered
@@ -58,10 +62,37 @@ export declare class SqliteTraceStore implements TraceStore {
58
62
  * Updates trace summary based on event
59
63
  */
60
64
  private updateSummary;
65
+ /**
66
+ * Gets all traces that share the same root trace ID
67
+ * INV-TR-020: All traces in hierarchy share rootTraceId
68
+ */
69
+ getTracesByRoot(rootTraceId: string): Promise<TraceSummary[]>;
70
+ /**
71
+ * Gets direct children of a trace
72
+ * INV-TR-021: Child traces reference parentTraceId
73
+ */
74
+ getChildTraces(parentTraceId: string): Promise<TraceSummary[]>;
75
+ /**
76
+ * Gets all traces in a session
77
+ * INV-TR-023: Session trace correlation
78
+ */
79
+ getTracesBySession(sessionId: string): Promise<TraceSummary[]>;
80
+ /**
81
+ * Builds a hierarchical tree from a root trace
82
+ * Returns the complete tree structure for visualization
83
+ */
84
+ getTraceTree(traceId: string): Promise<TraceTreeNode | undefined>;
61
85
  /**
62
86
  * Clears all traces (for testing only)
63
87
  */
64
88
  clear(): void;
89
+ /**
90
+ * Closes stuck traces that have been running longer than maxAgeMs
91
+ * Writes a run.end event marking them as failed
92
+ * @param maxAgeMs Maximum age in milliseconds (default: 1 hour)
93
+ * @returns number of traces that were closed
94
+ */
95
+ closeStuckTraces(maxAgeMs?: number): Promise<number>;
65
96
  /**
66
97
  * Deletes a trace and all its events
67
98
  * @returns true if trace existed and was deleted
@@ -1 +1 @@
1
- {"version":3,"file":"trace-store.d.ts","sourceRoot":"","sources":["../src/trace-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;CAI7B,CAAC;AAEX;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,SAAiB,EAC5B,cAAc,SAAoB;IAqBpC;;OAEG;IACH,OAAO,CAAC,UAAU;IA8ClB;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvC;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAahD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAY3E;;OAEG;IACH,UAAU,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAahD;;OAEG;IACH,OAAO,CAAC,aAAa;IA6DrB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAuB/C;AAqGD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,gBAAgB,CAElB"}
1
+ {"version":3,"file":"trace-store.d.ts","sourceRoot":"","sources":["../src/trace-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,0BAA0B,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aAE5B,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;CAI7B,CAAC;AAEX;;;;GAIG;AACH,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,SAAiB,EAC5B,cAAc,SAAoB;IAqBpC;;OAEG;IACH,OAAO,CAAC,UAAU;IAiElB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAY/B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCvC;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAahD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAY3E;;OAEG;IACH,UAAU,CAAC,KAAK,SAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAchD;;OAEG;IACH,OAAO,CAAC,aAAa;IA0FrB;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc7D;;;OAGG;IACH,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc9D;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc9D;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAwDvE;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACG,gBAAgB,CAAC,QAAQ,SAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAsD3D;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAuB/C;AAiHD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,GACtB,gBAAgB,CAElB"}
@@ -80,6 +80,12 @@ export class SqliteTraceStore {
80
80
  event_count INTEGER NOT NULL DEFAULT 0,
81
81
  error_count INTEGER NOT NULL DEFAULT 0,
82
82
  duration_ms INTEGER,
83
+ -- Hierarchical tracing fields (INV-TR-020 through INV-TR-024)
84
+ parent_trace_id TEXT,
85
+ root_trace_id TEXT,
86
+ trace_depth INTEGER,
87
+ session_id TEXT,
88
+ agent_id TEXT,
83
89
  updated_at TEXT NOT NULL DEFAULT (datetime('now'))
84
90
  );
85
91
 
@@ -88,7 +94,34 @@ export class SqliteTraceStore {
88
94
 
89
95
  CREATE INDEX IF NOT EXISTS idx_${this.summariesTable}_status
90
96
  ON ${this.summariesTable}(status);
97
+
98
+ -- Indexes for hierarchical tracing queries
99
+ CREATE INDEX IF NOT EXISTS idx_${this.summariesTable}_parent_trace_id
100
+ ON ${this.summariesTable}(parent_trace_id);
101
+
102
+ CREATE INDEX IF NOT EXISTS idx_${this.summariesTable}_root_trace_id
103
+ ON ${this.summariesTable}(root_trace_id);
104
+
105
+ CREATE INDEX IF NOT EXISTS idx_${this.summariesTable}_session_id
106
+ ON ${this.summariesTable}(session_id);
91
107
  `);
108
+ // Migrate existing tables to add hierarchy columns if they don't exist
109
+ this.migrateHierarchyColumns();
110
+ }
111
+ /**
112
+ * Adds hierarchy columns to existing tables (migration)
113
+ */
114
+ migrateHierarchyColumns() {
115
+ // Check if columns exist and add them if not
116
+ const columns = ['parent_trace_id', 'root_trace_id', 'trace_depth', 'session_id', 'agent_id'];
117
+ for (const column of columns) {
118
+ try {
119
+ this.db.exec(`ALTER TABLE ${this.summariesTable} ADD COLUMN ${column} TEXT`);
120
+ }
121
+ catch {
122
+ // Column already exists - ignore
123
+ }
124
+ }
92
125
  }
93
126
  /**
94
127
  * Writes a trace event
@@ -153,7 +186,8 @@ export class SqliteTraceStore {
153
186
  listTraces(limit = 100) {
154
187
  const stmt = this.db.prepare(`
155
188
  SELECT trace_id, start_time, end_time, status,
156
- event_count, error_count, duration_ms
189
+ event_count, error_count, duration_ms,
190
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
157
191
  FROM ${this.summariesTable}
158
192
  ORDER BY id DESC
159
193
  LIMIT ?
@@ -165,19 +199,21 @@ export class SqliteTraceStore {
165
199
  * Updates trace summary based on event
166
200
  */
167
201
  updateSummary(event) {
202
+ const context = event.context;
168
203
  // Check if summary exists
169
204
  const checkStmt = this.db.prepare(`
170
205
  SELECT trace_id FROM ${this.summariesTable} WHERE trace_id = ?
171
206
  `);
172
207
  const existing = checkStmt.get(event.traceId);
173
208
  if (existing === undefined) {
174
- // Insert new summary
209
+ // Insert new summary with hierarchy fields (INV-TR-020 through INV-TR-024)
175
210
  const insertStmt = this.db.prepare(`
176
211
  INSERT INTO ${this.summariesTable} (
177
- trace_id, start_time, status, event_count, error_count
178
- ) VALUES (?, ?, ?, 1, ?)
212
+ trace_id, start_time, status, event_count, error_count,
213
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
214
+ ) VALUES (?, ?, ?, 1, ?, ?, ?, ?, ?, ?)
179
215
  `);
180
- insertStmt.run(event.traceId, event.timestamp, event.status ?? 'pending', event.type === 'error' ? 1 : 0);
216
+ insertStmt.run(event.traceId, event.timestamp, event.status ?? 'pending', event.type === 'error' ? 1 : 0, context?.parentTraceId ?? null, context?.rootTraceId ?? null, context?.traceDepth ?? null, context?.sessionId ?? null, context?.agentId ?? null);
181
217
  }
182
218
  else {
183
219
  // Update existing summary
@@ -193,6 +229,27 @@ export class SqliteTraceStore {
193
229
  if (event.type === 'run.start') {
194
230
  updateSql += ', start_time = ?, status = ?';
195
231
  params.push(event.timestamp, 'running');
232
+ // Update hierarchy fields on run.start if provided
233
+ if (context?.parentTraceId) {
234
+ updateSql += ', parent_trace_id = COALESCE(parent_trace_id, ?)';
235
+ params.push(context.parentTraceId);
236
+ }
237
+ if (context?.rootTraceId) {
238
+ updateSql += ', root_trace_id = COALESCE(root_trace_id, ?)';
239
+ params.push(context.rootTraceId);
240
+ }
241
+ if (context?.traceDepth !== undefined) {
242
+ updateSql += ', trace_depth = COALESCE(trace_depth, ?)';
243
+ params.push(context.traceDepth);
244
+ }
245
+ if (context?.sessionId) {
246
+ updateSql += ', session_id = COALESCE(session_id, ?)';
247
+ params.push(context.sessionId);
248
+ }
249
+ if (context?.agentId) {
250
+ updateSql += ', agent_id = COALESCE(agent_id, ?)';
251
+ params.push(context.agentId);
252
+ }
196
253
  }
197
254
  if (event.type === 'run.end') {
198
255
  updateSql += ', end_time = ?, status = ?';
@@ -214,6 +271,100 @@ export class SqliteTraceStore {
214
271
  updateStmt.run(...params);
215
272
  }
216
273
  }
274
+ /**
275
+ * Gets all traces that share the same root trace ID
276
+ * INV-TR-020: All traces in hierarchy share rootTraceId
277
+ */
278
+ getTracesByRoot(rootTraceId) {
279
+ const stmt = this.db.prepare(`
280
+ SELECT trace_id, start_time, end_time, status,
281
+ event_count, error_count, duration_ms,
282
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
283
+ FROM ${this.summariesTable}
284
+ WHERE root_trace_id = ? OR trace_id = ?
285
+ ORDER BY COALESCE(trace_depth, 0) ASC, start_time ASC
286
+ `);
287
+ const rows = stmt.all(rootTraceId, rootTraceId);
288
+ return Promise.resolve(rows.map(rowToTraceSummary));
289
+ }
290
+ /**
291
+ * Gets direct children of a trace
292
+ * INV-TR-021: Child traces reference parentTraceId
293
+ */
294
+ getChildTraces(parentTraceId) {
295
+ const stmt = this.db.prepare(`
296
+ SELECT trace_id, start_time, end_time, status,
297
+ event_count, error_count, duration_ms,
298
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
299
+ FROM ${this.summariesTable}
300
+ WHERE parent_trace_id = ?
301
+ ORDER BY start_time ASC
302
+ `);
303
+ const rows = stmt.all(parentTraceId);
304
+ return Promise.resolve(rows.map(rowToTraceSummary));
305
+ }
306
+ /**
307
+ * Gets all traces in a session
308
+ * INV-TR-023: Session trace correlation
309
+ */
310
+ getTracesBySession(sessionId) {
311
+ const stmt = this.db.prepare(`
312
+ SELECT trace_id, start_time, end_time, status,
313
+ event_count, error_count, duration_ms,
314
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
315
+ FROM ${this.summariesTable}
316
+ WHERE session_id = ?
317
+ ORDER BY start_time ASC
318
+ `);
319
+ const rows = stmt.all(sessionId);
320
+ return Promise.resolve(rows.map(rowToTraceSummary));
321
+ }
322
+ /**
323
+ * Builds a hierarchical tree from a root trace
324
+ * Returns the complete tree structure for visualization
325
+ */
326
+ async getTraceTree(traceId) {
327
+ // Get the root summary
328
+ const rootStmt = this.db.prepare(`
329
+ SELECT trace_id, start_time, end_time, status,
330
+ event_count, error_count, duration_ms,
331
+ parent_trace_id, root_trace_id, trace_depth, session_id, agent_id
332
+ FROM ${this.summariesTable}
333
+ WHERE trace_id = ?
334
+ `);
335
+ const rootRow = rootStmt.get(traceId);
336
+ if (!rootRow)
337
+ return undefined;
338
+ const rootSummary = rowToTraceSummary(rootRow);
339
+ // Determine the effective root trace ID
340
+ const effectiveRootId = rootSummary.rootTraceId ?? traceId;
341
+ // Get all traces in this hierarchy
342
+ const allTraces = await this.getTracesByRoot(effectiveRootId);
343
+ // Create a map for quick lookup
344
+ const traceMap = new Map();
345
+ for (const trace of allTraces) {
346
+ traceMap.set(trace.traceId, trace);
347
+ }
348
+ // Build tree recursively
349
+ const buildNode = (summary) => {
350
+ const children = allTraces
351
+ .filter((t) => t.parentTraceId === summary.traceId)
352
+ .map((childSummary) => buildNode(childSummary));
353
+ const childDuration = children.reduce((sum, child) => sum + (child.totalDurationMs ?? 0), 0);
354
+ const childEventCount = children.reduce((sum, child) => sum + child.totalEventCount, 0);
355
+ return {
356
+ trace: summary,
357
+ children,
358
+ totalDurationMs: (summary.durationMs ?? 0) + childDuration,
359
+ totalEventCount: summary.eventCount + childEventCount,
360
+ };
361
+ };
362
+ // Build tree starting from the requested trace
363
+ const targetSummary = traceMap.get(traceId);
364
+ if (!targetSummary)
365
+ return undefined;
366
+ return buildNode(targetSummary);
367
+ }
217
368
  /**
218
369
  * Clears all traces (for testing only)
219
370
  */
@@ -221,6 +372,56 @@ export class SqliteTraceStore {
221
372
  this.db.exec(`DELETE FROM ${this.eventsTable}`);
222
373
  this.db.exec(`DELETE FROM ${this.summariesTable}`);
223
374
  }
375
+ /**
376
+ * Closes stuck traces that have been running longer than maxAgeMs
377
+ * Writes a run.end event marking them as failed
378
+ * @param maxAgeMs Maximum age in milliseconds (default: 1 hour)
379
+ * @returns number of traces that were closed
380
+ */
381
+ async closeStuckTraces(maxAgeMs = 3600000) {
382
+ // Input validation
383
+ if (maxAgeMs <= 0) {
384
+ throw new Error('maxAgeMs must be a positive number');
385
+ }
386
+ try {
387
+ const currentTime = Date.now();
388
+ const cutoffDate = new Date(currentTime - maxAgeMs).toISOString();
389
+ // Find all stuck traces (running or pending status and started before cutoff)
390
+ // Note: status may be 'pending' if summary update didn't set to 'running'
391
+ const stuckTracesStmt = this.db.prepare(`
392
+ SELECT trace_id, start_time
393
+ FROM ${this.summariesTable}
394
+ WHERE status IN ('running', 'pending') AND start_time < ?
395
+ `);
396
+ const stuckTraces = stuckTracesStmt.all(cutoffDate);
397
+ let closedCount = 0;
398
+ for (const trace of stuckTraces) {
399
+ const startTime = new Date(trace.start_time).getTime();
400
+ const durationMs = currentTime - startTime;
401
+ // Write a run.end event to close the trace
402
+ // Use timestamp in eventId to prevent collisions on repeated cleanup calls
403
+ const endEvent = {
404
+ eventId: `${trace.trace_id}-auto-close-${currentTime}`,
405
+ traceId: trace.trace_id,
406
+ type: 'run.end',
407
+ timestamp: new Date().toISOString(),
408
+ payload: {
409
+ success: false,
410
+ error: 'Trace closed automatically - exceeded maximum running time',
411
+ autoClose: true,
412
+ },
413
+ status: 'failure',
414
+ durationMs,
415
+ };
416
+ await this.write(endEvent);
417
+ closedCount++;
418
+ }
419
+ return closedCount;
420
+ }
421
+ catch (error) {
422
+ throw new SqliteTraceStoreError(SqliteTraceStoreErrorCodes.DATABASE_ERROR, `Failed to close stuck traces: ${error instanceof Error ? error.message : 'Unknown error'}`);
423
+ }
424
+ }
224
425
  /**
225
426
  * Deletes a trace and all its events
226
427
  * @returns true if trace existed and was deleted
@@ -296,6 +497,12 @@ function rowToTraceSummary(row) {
296
497
  status: row.status,
297
498
  eventCount: row.event_count,
298
499
  errorCount: row.error_count,
500
+ // Hierarchical tracing fields (INV-TR-020 through INV-TR-024)
501
+ parentTraceId: row.parent_trace_id ?? undefined,
502
+ rootTraceId: row.root_trace_id ?? undefined,
503
+ traceDepth: row.trace_depth ?? undefined,
504
+ sessionId: row.session_id ?? undefined,
505
+ agentId: row.agent_id ?? undefined,
299
506
  };
300
507
  if (row.end_time !== null) {
301
508
  summary.endTime = row.end_time;
@@ -1 +1 @@
1
- {"version":3,"file":"trace-store.js","sourceRoot":"","sources":["../src/trace-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-store.js","sourceRoot":"","sources":["../src/trace-store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/sqlite-adapter",
3
- "version": "13.3.0",
3
+ "version": "13.4.0",
4
4
  "type": "module",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "DEFAI Private Limited",
@@ -30,11 +30,12 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "better-sqlite3": "^11.6.0",
33
- "@defai.digital/agent-execution": "13.3.0",
34
- "@defai.digital/contracts": "13.3.0",
35
- "@defai.digital/memory-domain": "13.3.0",
36
- "@defai.digital/cross-cutting": "13.3.0",
37
- "@defai.digital/trace-domain": "13.3.0"
33
+ "@defai.digital/contracts": "13.4.0",
34
+ "@defai.digital/cross-cutting": "13.4.0",
35
+ "@defai.digital/semantic-context": "13.4.0",
36
+ "@defai.digital/memory-domain": "13.4.0",
37
+ "@defai.digital/trace-domain": "13.4.0",
38
+ "@defai.digital/agent-execution": "13.4.0"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@types/better-sqlite3": "^7.6.11",