@hardkas/query-store 0.8.20-alpha → 0.9.1-alpha
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/README.md +38 -33
- package/dist/backend.d.ts +12 -2
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +83 -5
- package/dist/backend.js.map +1 -1
- package/dist/indexer.d.ts +2 -1
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +109 -108
- package/dist/indexer.js.map +1 -1
- package/dist/migrations.d.ts +1 -1
- package/dist/migrations.js +181 -181
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,33 +1,38 @@
|
|
|
1
|
-
# `@hardkas/query-store`
|
|
2
|
-
|
|
3
|
-
The Query Store is a rebuildable, heavily indexed SQLite projection of the `.hardkas/` workspace. It provides fast reads for CLI and Dashboard interactions without scanning thousands of JSON files.
|
|
4
|
-
|
|
5
|
-
## 1. Indexing Architecture
|
|
6
|
-
|
|
7
|
-
The query store relies
|
|
8
|
-
|
|
9
|
-
### Flow: Incremental Sync (`hardkas query store sync`)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
# `@hardkas/query-store`
|
|
2
|
+
|
|
3
|
+
The Query Store is a rebuildable, heavily indexed SQLite projection of the `.hardkas/` workspace. It provides fast reads for CLI and Dashboard interactions without scanning thousands of JSON files.
|
|
4
|
+
|
|
5
|
+
## 1. Indexing Architecture
|
|
6
|
+
|
|
7
|
+
The query store relies _entirely_ on the filesystem (`artifacts/` and `events.jsonl`). The SQLite database itself is treated as ephemeral and rebuildable.
|
|
8
|
+
|
|
9
|
+
### Flow: Incremental Sync (`hardkas query store sync`)
|
|
10
|
+
|
|
11
|
+
1. The engine queries the current `MAX(eventId)` in the SQLite `events` table.
|
|
12
|
+
2. It opens `events.jsonl` and streams only lines where `id > MAX`.
|
|
13
|
+
3. It batch-inserts the new events in a single SQLite transaction to prevent corruption on crash.
|
|
14
|
+
4. It scans `artifacts/` for files newer than the last sync timestamp and updates the `artifacts` table.
|
|
15
|
+
|
|
16
|
+
### Variant: Full Rebuild (`hardkas rebuild --from-artifacts`)
|
|
17
|
+
|
|
18
|
+
If the SQLite file is deleted, corrupted, or schema migrations fail:
|
|
19
|
+
|
|
20
|
+
1. The SQLite file is purged.
|
|
21
|
+
2. `events.jsonl` is streamed from line 1.
|
|
22
|
+
3. `artifacts/` is traversed deeply.
|
|
23
|
+
4. The database is rebuilt from scratch, proving the mathematical determinism of the runtime.
|
|
24
|
+
|
|
25
|
+
## 2. Diagnostic Flows
|
|
26
|
+
|
|
27
|
+
Because the SQLite file is an ephemeral projection, it can diverge from the artifacts layer if a process is violently killed.
|
|
28
|
+
|
|
29
|
+
### Flow: Store Doctor (`hardkas query store doctor`)
|
|
30
|
+
|
|
31
|
+
1. Verifies the SQLite schema version against the current SDK version.
|
|
32
|
+
2. Runs `PRAGMA integrity_check`.
|
|
33
|
+
3. Counts rows in SQLite and compares them against the line count in `events.jsonl`.
|
|
34
|
+
4. If discrepancies are found, it prompts the user to run `sync` or `rebuild`.
|
|
35
|
+
|
|
36
|
+
### Variant: Silent Migration (`--migrate`)
|
|
37
|
+
|
|
38
|
+
If the schema is outdated (e.g., v3 to v4 after updating the HardKAS package), the `--migrate` flag triggers deterministic SQL `ALTER TABLE` statements. If a migration fails mid-way, the transaction rolls back, and the `Store Doctor` automatically triggers a Full Rebuild to ensure consistency.
|
package/dist/backend.d.ts
CHANGED
|
@@ -114,7 +114,10 @@ export interface QueryBackend {
|
|
|
114
114
|
* que puede retornar `any[]` de forma intencional (SQLite devuelve filas genéricas).
|
|
115
115
|
* Todos los llamadores DEBEN validar el output estrictamente en runtime mediante guards.
|
|
116
116
|
*/
|
|
117
|
-
executeRawSql(sql: string
|
|
117
|
+
executeRawSql(sql: string, options?: {
|
|
118
|
+
unsafeWrite?: boolean;
|
|
119
|
+
yes?: boolean;
|
|
120
|
+
}): Promise<any[]>;
|
|
118
121
|
findReceipts(filters?: {
|
|
119
122
|
status?: string;
|
|
120
123
|
networkId?: string;
|
|
@@ -166,6 +169,13 @@ export declare class SqliteQueryBackend implements QueryBackend {
|
|
|
166
169
|
strict?: boolean;
|
|
167
170
|
cwd?: string;
|
|
168
171
|
}): Promise<any>;
|
|
169
|
-
executeRawSql(sql: string
|
|
172
|
+
executeRawSql(sql: string, options?: {
|
|
173
|
+
unsafeWrite?: boolean;
|
|
174
|
+
yes?: boolean;
|
|
175
|
+
}): Promise<any[]>;
|
|
170
176
|
}
|
|
177
|
+
export declare function classifySqlSafety(sql: string): {
|
|
178
|
+
kind: "read" | "write" | "unknown";
|
|
179
|
+
reason?: string;
|
|
180
|
+
};
|
|
171
181
|
//# sourceMappingURL=backend.d.ts.map
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
|
package/dist/backend.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { HardkasSchemas } from "@hardkas/artifacts";
|
|
1
2
|
export class SqliteQueryBackend {
|
|
2
3
|
store;
|
|
3
4
|
constructor(store) {
|
|
@@ -120,12 +121,12 @@ export class SqliteQueryBackend {
|
|
|
120
121
|
}));
|
|
121
122
|
}
|
|
122
123
|
async findReceipts(filters) {
|
|
123
|
-
return this.findArtifacts({ schema:
|
|
124
|
+
return this.findArtifacts({ schema: HardkasSchemas.TxReceipt, ...filters });
|
|
124
125
|
}
|
|
125
126
|
async findTraces(filters) {
|
|
126
127
|
const db = this.store.getDatabase();
|
|
127
|
-
let query = "SELECT * FROM artifacts WHERE schema =
|
|
128
|
-
const params = [];
|
|
128
|
+
let query = "SELECT * FROM artifacts WHERE schema = ?";
|
|
129
|
+
const params = [HardkasSchemas.TxTrace];
|
|
129
130
|
if (filters?.txId) {
|
|
130
131
|
query += " AND tx_id = ?";
|
|
131
132
|
params.push(filters.txId);
|
|
@@ -185,9 +186,86 @@ export class SqliteQueryBackend {
|
|
|
185
186
|
const indexer = new HardkasIndexer(this.store.getDatabase(), options);
|
|
186
187
|
return indexer.syncPaths(paths);
|
|
187
188
|
}
|
|
188
|
-
|
|
189
|
+
executeRawSql(sql, options) {
|
|
190
|
+
const classification = classifySqlSafety(sql);
|
|
191
|
+
if (classification.kind === "write" || classification.kind === "unknown") {
|
|
192
|
+
if (!options?.unsafeWrite && !options?.yes) {
|
|
193
|
+
throw new Error("QUERY_STORE_READ_ONLY_VIOLATION: Query store is a derived projection. Artifacts are the source of truth. Mutation may corrupt projections. Use --unsafe-write and --yes to intentionally proceed.");
|
|
194
|
+
}
|
|
195
|
+
if (options?.unsafeWrite && !options?.yes) {
|
|
196
|
+
throw new Error("QUERY_STORE_WRITE_REQUIRES_YES: Query store is a derived projection. Artifacts are the source of truth. Mutation may corrupt projections. Use --yes to intentionally proceed.");
|
|
197
|
+
}
|
|
198
|
+
if (!options?.unsafeWrite && options?.yes) {
|
|
199
|
+
throw new Error("QUERY_STORE_WRITE_REQUIRES_UNSAFE_WRITE: Query store is a derived projection. Artifacts are the source of truth. Mutation may corrupt projections. Use --unsafe-write to intentionally proceed.");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
189
202
|
const db = this.store.getDatabase();
|
|
190
|
-
|
|
203
|
+
// SQLite has a readonly setting when opening the connection, but better-sqlite3
|
|
204
|
+
// opens a single connection for the whole app. We enforce lexical guards.
|
|
205
|
+
// To support multiple statements or writes, if unsafe is permitted, we use db.exec or db.prepare appropriately.
|
|
206
|
+
try {
|
|
207
|
+
if (classification.kind === "write" || classification.kind === "unknown") {
|
|
208
|
+
if (sql.includes(';')) {
|
|
209
|
+
db.exec(sql);
|
|
210
|
+
return Promise.resolve([]);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
const stmt = db.prepare(sql);
|
|
214
|
+
return Promise.resolve(stmt.all());
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
const stmt = db.prepare(sql);
|
|
219
|
+
return Promise.resolve(stmt.all());
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (e) {
|
|
223
|
+
if (e.message.includes('cannot execute multiple statements')) {
|
|
224
|
+
throw new Error("QUERY_STORE_READ_ONLY_VIOLATION: Multiple statements detected and blocked by default.");
|
|
225
|
+
}
|
|
226
|
+
throw e;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
export function classifySqlSafety(sql) {
|
|
231
|
+
// 1. Remove multi-line comments /* ... */
|
|
232
|
+
let cleanSql = sql.replace(new RegExp("/\\*[\\s\\S]*?\\*/", "g"), "");
|
|
233
|
+
// 2. Remove single-line comments -- ...
|
|
234
|
+
cleanSql = cleanSql.replace(/--.*$/gm, "");
|
|
235
|
+
// 3. Trim
|
|
236
|
+
cleanSql = cleanSql.trim().toUpperCase();
|
|
237
|
+
if (!cleanSql) {
|
|
238
|
+
return { kind: "unknown", reason: "Empty query" };
|
|
239
|
+
}
|
|
240
|
+
// 4. Multiple statements check
|
|
241
|
+
// Just a simple check for semicolons that aren't at the very end
|
|
242
|
+
const statements = cleanSql.split(';').map(s => s.trim()).filter(s => s.length > 0);
|
|
243
|
+
if (statements.length > 1) {
|
|
244
|
+
return { kind: "unknown", reason: "Multiple statements detected" };
|
|
245
|
+
}
|
|
246
|
+
const firstTokenMatch = cleanSql.match(/^([A-Z]+)/);
|
|
247
|
+
if (!firstTokenMatch) {
|
|
248
|
+
return { kind: "unknown", reason: "Could not identify first token" };
|
|
249
|
+
}
|
|
250
|
+
const firstToken = firstTokenMatch[1];
|
|
251
|
+
// Common safe read starts
|
|
252
|
+
if (firstToken === "SELECT" || firstToken === "EXPLAIN" || firstToken === "PRAGMA") {
|
|
253
|
+
// PRAGMA can be mutating (e.g. PRAGMA user_version = 1), but let's do a deeper check
|
|
254
|
+
if (cleanSql.includes("INSERT ") || cleanSql.includes("UPDATE ") || cleanSql.includes("DELETE ") ||
|
|
255
|
+
cleanSql.includes("DROP ") || cleanSql.includes("ALTER ") || cleanSql.includes("CREATE ") ||
|
|
256
|
+
cleanSql.includes("REPLACE ") || cleanSql.includes("TRUNCATE ") || cleanSql.includes("VACUUM ") ||
|
|
257
|
+
cleanSql.includes("ATTACH ") || cleanSql.includes("DETACH ") || cleanSql.includes("INTO ")) {
|
|
258
|
+
return { kind: "write", reason: "Found mutating keyword" };
|
|
259
|
+
}
|
|
260
|
+
return { kind: "read" };
|
|
261
|
+
}
|
|
262
|
+
if (firstToken === "WITH") {
|
|
263
|
+
// WITH ... SELECT ...
|
|
264
|
+
if (cleanSql.includes("INSERT ") || cleanSql.includes("UPDATE ") || cleanSql.includes("DELETE ")) {
|
|
265
|
+
return { kind: "write", reason: "Mutating CTE" };
|
|
266
|
+
}
|
|
267
|
+
return { kind: "read" };
|
|
191
268
|
}
|
|
269
|
+
return { kind: "write", reason: "Unrecognized or explicitly mutating first token" };
|
|
192
270
|
}
|
|
193
271
|
//# sourceMappingURL=backend.js.map
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AA6HpD,MAAM,OAAO,kBAAkB;IACrB,KAAK,CAAe;IAE5B,YAAY,KAAmB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,OAAO;QACL,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;QAC3C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAInB;QACC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpC,2EAA2E;QAC3E,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;QAEd,IAAI,KAAK,GAAG,mCAAmC,CAAC;QAChD,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,KAAK,IAAI,oBAAoB,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,eAAe,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,KAAK,IAAI,qBAAqB,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoB,CAAC;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAkB;YAC5C,SAAS,EAAE,CAAC,CAAC,UAAuB;YACpC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW;YAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CACN,gFAAgF,CACjF;aACA,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAA8B,CAAC;QAElE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QAEtB,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS,CAAkB;YAC9C,SAAS,EAAE,GAAG,CAAC,UAAuB;YACtC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,IAAI,EAAE,GAAG,CAAC,KAAK;YACf,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,WAAW;YACtC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA0C;QACxD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,KAAK,GAAG,gCAAgC,CAAC;QAC7C,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,eAAe,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,gBAAgB,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAiB,CAAC;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,aAAa,EAAE,CAAC,CAAC,cAAc;YAC/B,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAGrB;QACC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,KAAK,GAAG,uCAAuC,CAAC;QACpD,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACxB,KAAK,IAAI,6BAA6B,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,KAAK,IAAI,4BAA4B,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAuB,CAAC;QACpE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,gBAAgB,EAAE,CAAC,CAAC,kBAAkB;YACtC,eAAe,EAAE,CAAC,CAAC,iBAAiB;YACpC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,IAAI,EAAE,CAAC,CAAC,SAAS;YACjB,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAGlB;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAA2B;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,KAAK,GAAG,0CAA0C,CAAC;QACvD,MAAM,MAAM,GAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,KAAK,IAAI,gBAAgB,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAoB,CAAC;QACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAkB;YAC5C,SAAS,EAAE,CAAC,CAAC,UAAuB;YACpC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,IAAI,EAAE,CAAC,CAAC,KAAK;YACb,UAAU,EAAE,CAAC,CAAC,WAAW;YACzB,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW;YAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAE7C,OAAO;YACL,GAAG,aAAa;YAChB,EAAE,EAAE,aAAa,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE;YACtC,WAAW,EAAE,WAAW,CAAC,MAAM;SAChC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA4C;QACxD,6CAA6C;QAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA4C;QACrD,0CAA0C;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAErB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,SAAS,CACb,KAAe,EACf,OAA4C;QAE5C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,OAAkD;QAC3E,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,mMAAmM,CAAC,CAAC;YACvN,CAAC;YACD,IAAI,OAAO,EAAE,WAAW,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,+KAA+K,CAAC,CAAC;YACnM,CAAC;YACD,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,iMAAiM,CAAC,CAAC;YACrN,CAAC;QACH,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpC,gFAAgF;QAChF,0EAA0E;QAC1E,gHAAgH;QAEhH,IAAI,CAAC;YACH,IAAI,cAAc,CAAC,IAAI,KAAK,OAAO,IAAI,cAAc,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBACb,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACJ,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAW,CAAC,CAAC;gBAChD,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACL,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAW,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;YAC9G,CAAC;YACD,MAAM,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,0CAA0C;IAC1C,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,wCAAwC;IACxC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3C,UAAU;IACV,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACpD,CAAC;IAED,+BAA+B;IAC/B,iEAAiE;IACjE,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;IAEtC,0BAA0B;IAC1B,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjF,qFAAqF;QACrF,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC5F,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YACzF,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC/F,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACxB,sBAAsB;QACtB,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;AACtF,CAAC"}
|
package/dist/indexer.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { HardkasSchemas } from "@hardkas/artifacts";
|
|
1
2
|
import { type CorruptionIssue } from "@hardkas/core";
|
|
2
3
|
export interface IndexerOptions {
|
|
3
4
|
cwd?: string;
|
|
@@ -10,7 +11,7 @@ export interface SyncStats {
|
|
|
10
11
|
corrupted: number;
|
|
11
12
|
}
|
|
12
13
|
export interface SyncResult {
|
|
13
|
-
schema:
|
|
14
|
+
schema: typeof HardkasSchemas.QueryRebuildV1;
|
|
14
15
|
ok: boolean;
|
|
15
16
|
artifacts: SyncStats;
|
|
16
17
|
events: SyncStats;
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,OAAO,EAGL,KAAK,eAAe,EAIrB,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,cAAc,CAAC,cAAc,CAAC;IAC7C,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAQD,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAU;gBAEZ,EAAE,EAAE,GAAG,EAAE,OAAO,GAAE,cAAmB;IAMjD;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA+BxC;;OAEG;YACW,aAAa;IAiC3B;;;OAGG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA6B5D;;OAEG;IACH;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAsC3C,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACI,MAAM,IAAI,YAAY;IAoH7B;;;OAGG;IACH,OAAO,CAAC,YAAY;YAaN,aAAa;IA4K3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAmE3B,OAAO,CAAC,UAAU;IA+FlB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,IAAI;CAsFb"}
|
package/dist/indexer.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import { HardkasSchemas } from "@hardkas/artifacts";
|
|
3
4
|
import { createRequire } from "node:module";
|
|
4
5
|
const require = createRequire(import.meta.url);
|
|
5
6
|
const { DatabaseSync } = require("node:sqlite");
|
|
@@ -20,7 +21,7 @@ export class HardkasIndexer {
|
|
|
20
21
|
*/
|
|
21
22
|
async sync() {
|
|
22
23
|
const result = {
|
|
23
|
-
schema:
|
|
24
|
+
schema: HardkasSchemas.QueryRebuildV1,
|
|
24
25
|
ok: true,
|
|
25
26
|
artifacts: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
26
27
|
events: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
@@ -82,7 +83,7 @@ export class HardkasIndexer {
|
|
|
82
83
|
*/
|
|
83
84
|
async syncPaths(paths) {
|
|
84
85
|
const result = {
|
|
85
|
-
schema:
|
|
86
|
+
schema: HardkasSchemas.QueryRebuildV1,
|
|
86
87
|
ok: true,
|
|
87
88
|
artifacts: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
88
89
|
events: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
@@ -116,7 +117,7 @@ export class HardkasIndexer {
|
|
|
116
117
|
*/
|
|
117
118
|
async rebuild() {
|
|
118
119
|
const result = {
|
|
119
|
-
schema:
|
|
120
|
+
schema: HardkasSchemas.QueryRebuildV1,
|
|
120
121
|
ok: true,
|
|
121
122
|
artifacts: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
122
123
|
events: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
@@ -197,31 +198,31 @@ export class HardkasIndexer {
|
|
|
197
198
|
}
|
|
198
199
|
// 3. Check for orphan edges
|
|
199
200
|
const orphans = this.db
|
|
200
|
-
.prepare(`
|
|
201
|
-
SELECT COUNT(*) as count FROM lineage_edges
|
|
202
|
-
WHERE parent_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
203
|
-
OR child_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
201
|
+
.prepare(`
|
|
202
|
+
SELECT COUNT(*) as count FROM lineage_edges
|
|
203
|
+
WHERE parent_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
204
|
+
OR child_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
204
205
|
`)
|
|
205
206
|
.get();
|
|
206
207
|
report.orphanEdges = orphans.count;
|
|
207
208
|
// 4. Duplicate projections (tx_id should be unique for specific schemas like receipts)
|
|
208
209
|
const duplicateProjections = this.db
|
|
209
|
-
.prepare(`
|
|
210
|
-
SELECT COUNT(*) as count FROM (
|
|
211
|
-
SELECT tx_id FROM artifacts WHERE tx_id IS NOT NULL AND schema LIKE '%txReceipt%' GROUP BY tx_id HAVING COUNT(*) > 1
|
|
212
|
-
)
|
|
210
|
+
.prepare(`
|
|
211
|
+
SELECT COUNT(*) as count FROM (
|
|
212
|
+
SELECT tx_id FROM artifacts WHERE tx_id IS NOT NULL AND schema LIKE '%txReceipt%' GROUP BY tx_id HAVING COUNT(*) > 1
|
|
213
|
+
)
|
|
213
214
|
`)
|
|
214
215
|
.get();
|
|
215
216
|
report.duplicateProjections = duplicateProjections.count;
|
|
216
217
|
// 5. Broken replay dependencies
|
|
217
218
|
const brokenReplayDeps = this.db
|
|
218
|
-
.prepare(`
|
|
219
|
-
SELECT COUNT(*) as count FROM artifacts a
|
|
220
|
-
LEFT JOIN artifacts target ON target.tx_id = json_extract(a.raw_json, '$.payload.txId')
|
|
221
|
-
WHERE a.schema =
|
|
222
|
-
AND target.artifact_id IS NULL
|
|
219
|
+
.prepare(`
|
|
220
|
+
SELECT COUNT(*) as count FROM artifacts a
|
|
221
|
+
LEFT JOIN artifacts target ON target.tx_id = json_extract(a.raw_json, '$.payload.txId')
|
|
222
|
+
WHERE a.schema = ?
|
|
223
|
+
AND target.artifact_id IS NULL
|
|
223
224
|
`)
|
|
224
|
-
.get();
|
|
225
|
+
.get(HardkasSchemas.ReplayReportV1);
|
|
225
226
|
report.brokenReplayDependencies = brokenReplayDeps.count;
|
|
226
227
|
// Also check for corrupted artifacts in the database
|
|
227
228
|
const corruptedRows = this.db
|
|
@@ -230,19 +231,19 @@ export class HardkasIndexer {
|
|
|
230
231
|
report.corruptedFiles = corruptedRows.map((r) => r.file_path);
|
|
231
232
|
// 6. Duplicate Event Sequences (should be prevented by DB constraints, but good to verify)
|
|
232
233
|
const duplicateSequences = this.db
|
|
233
|
-
.prepare(`
|
|
234
|
-
SELECT COUNT(*) as count FROM (
|
|
235
|
-
SELECT correlation_id, sequence_number, kind FROM events
|
|
236
|
-
GROUP BY correlation_id, sequence_number, kind HAVING COUNT(*) > 1
|
|
237
|
-
)
|
|
234
|
+
.prepare(`
|
|
235
|
+
SELECT COUNT(*) as count FROM (
|
|
236
|
+
SELECT correlation_id, sequence_number, kind FROM events
|
|
237
|
+
GROUP BY correlation_id, sequence_number, kind HAVING COUNT(*) > 1
|
|
238
|
+
)
|
|
238
239
|
`)
|
|
239
240
|
.get();
|
|
240
241
|
report.duplicateEventSequences = duplicateSequences.count;
|
|
241
242
|
// 7. Orphan Events (events causing actions but missing root causation/workflow if required)
|
|
242
243
|
const orphanEvents = this.db
|
|
243
|
-
.prepare(`
|
|
244
|
-
SELECT COUNT(*) as count FROM events e
|
|
245
|
-
WHERE e.causation_id IS NOT NULL AND e.causation_id NOT IN (SELECT event_id FROM events)
|
|
244
|
+
.prepare(`
|
|
245
|
+
SELECT COUNT(*) as count FROM events e
|
|
246
|
+
WHERE e.causation_id IS NOT NULL AND e.causation_id NOT IN (SELECT event_id FROM events)
|
|
246
247
|
`)
|
|
247
248
|
.get();
|
|
248
249
|
report.orphanEvents = orphanEvents.count;
|
|
@@ -283,27 +284,27 @@ export class HardkasIndexer {
|
|
|
283
284
|
.sort()
|
|
284
285
|
: this.walk(this.hardkasDir).sort();
|
|
285
286
|
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
286
|
-
const upsertArtifact = this.db.prepare(`
|
|
287
|
-
INSERT INTO artifacts
|
|
288
|
-
(artifact_id, content_hash, schema, version, kind, mode, network_id, tx_id, created_at, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
289
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
290
|
-
ON CONFLICT(artifact_id) DO UPDATE SET
|
|
291
|
-
content_hash = excluded.content_hash,
|
|
292
|
-
schema = excluded.schema,
|
|
293
|
-
version = excluded.version,
|
|
294
|
-
kind = excluded.kind,
|
|
295
|
-
mode = excluded.mode,
|
|
296
|
-
network_id = excluded.network_id,
|
|
297
|
-
tx_id = excluded.tx_id,
|
|
298
|
-
created_at = excluded.created_at,
|
|
299
|
-
raw_json = excluded.raw_json,
|
|
300
|
-
file_path = excluded.file_path,
|
|
301
|
-
file_mtime_ms = excluded.file_mtime_ms,
|
|
302
|
-
indexed_at = excluded.indexed_at
|
|
287
|
+
const upsertArtifact = this.db.prepare(`
|
|
288
|
+
INSERT INTO artifacts
|
|
289
|
+
(artifact_id, content_hash, schema, version, kind, mode, network_id, tx_id, created_at, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
290
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
291
|
+
ON CONFLICT(artifact_id) DO UPDATE SET
|
|
292
|
+
content_hash = excluded.content_hash,
|
|
293
|
+
schema = excluded.schema,
|
|
294
|
+
version = excluded.version,
|
|
295
|
+
kind = excluded.kind,
|
|
296
|
+
mode = excluded.mode,
|
|
297
|
+
network_id = excluded.network_id,
|
|
298
|
+
tx_id = excluded.tx_id,
|
|
299
|
+
created_at = excluded.created_at,
|
|
300
|
+
raw_json = excluded.raw_json,
|
|
301
|
+
file_path = excluded.file_path,
|
|
302
|
+
file_mtime_ms = excluded.file_mtime_ms,
|
|
303
|
+
indexed_at = excluded.indexed_at
|
|
303
304
|
`);
|
|
304
|
-
const insertEdge = this.db.prepare(`
|
|
305
|
-
INSERT OR REPLACE INTO lineage_edges (lineage_id, parent_artifact_id, child_artifact_id, edge_kind, created_at)
|
|
306
|
-
VALUES (?, ?, ?, ?, ?)
|
|
305
|
+
const insertEdge = this.db.prepare(`
|
|
306
|
+
INSERT OR REPLACE INTO lineage_edges (lineage_id, parent_artifact_id, child_artifact_id, edge_kind, created_at)
|
|
307
|
+
VALUES (?, ?, ?, ?, ?)
|
|
307
308
|
`);
|
|
308
309
|
const artifactsToLink = [];
|
|
309
310
|
let skipped = 0;
|
|
@@ -399,10 +400,10 @@ export class HardkasIndexer {
|
|
|
399
400
|
// Wipe and rebuild closure from edges (idempotent)
|
|
400
401
|
this.db.exec("DELETE FROM lineage_closure;");
|
|
401
402
|
// Direct edges: depth 1
|
|
402
|
-
this.db.exec(`
|
|
403
|
-
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
404
|
-
SELECT parent_artifact_id, child_artifact_id, 1, created_at
|
|
405
|
-
FROM lineage_edges;
|
|
403
|
+
this.db.exec(`
|
|
404
|
+
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
405
|
+
SELECT parent_artifact_id, child_artifact_id, 1, created_at
|
|
406
|
+
FROM lineage_edges;
|
|
406
407
|
`);
|
|
407
408
|
// Transitive closure: iterate until no new rows are added
|
|
408
409
|
let added = 1;
|
|
@@ -411,16 +412,16 @@ export class HardkasIndexer {
|
|
|
411
412
|
while (added > 0 && currentDepth < maxDepth) {
|
|
412
413
|
currentDepth++;
|
|
413
414
|
const insertResult = this.db
|
|
414
|
-
.prepare(`
|
|
415
|
-
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
416
|
-
SELECT c1.ancestor_id, c2.descendant_id, ? , c2.created_at
|
|
417
|
-
FROM lineage_closure c1
|
|
418
|
-
JOIN lineage_closure c2 ON c1.descendant_id = c2.ancestor_id
|
|
419
|
-
WHERE c1.depth = ? - 1
|
|
420
|
-
AND NOT EXISTS (
|
|
421
|
-
SELECT 1 FROM lineage_closure existing
|
|
422
|
-
WHERE existing.ancestor_id = c1.ancestor_id AND existing.descendant_id = c2.descendant_id
|
|
423
|
-
)
|
|
415
|
+
.prepare(`
|
|
416
|
+
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
417
|
+
SELECT c1.ancestor_id, c2.descendant_id, ? , c2.created_at
|
|
418
|
+
FROM lineage_closure c1
|
|
419
|
+
JOIN lineage_closure c2 ON c1.descendant_id = c2.ancestor_id
|
|
420
|
+
WHERE c1.depth = ? - 1
|
|
421
|
+
AND NOT EXISTS (
|
|
422
|
+
SELECT 1 FROM lineage_closure existing
|
|
423
|
+
WHERE existing.ancestor_id = c1.ancestor_id AND existing.descendant_id = c2.descendant_id
|
|
424
|
+
)
|
|
424
425
|
`)
|
|
425
426
|
.run(currentDepth, currentDepth);
|
|
426
427
|
added = insertResult.changes;
|
|
@@ -450,26 +451,26 @@ export class HardkasIndexer {
|
|
|
450
451
|
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
451
452
|
const content = fs.readFileSync(eventsPath, "utf-8");
|
|
452
453
|
const lines = content.split("\n");
|
|
453
|
-
const upsertEvent = this.db.prepare(`
|
|
454
|
-
INSERT INTO events
|
|
455
|
-
(event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id, tx_id, artifact_id, network_id, sequence_number, global_offset, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
456
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
457
|
-
ON CONFLICT(correlation_id, sequence_number, kind) DO UPDATE SET
|
|
458
|
-
event_id = excluded.event_id,
|
|
459
|
-
domain = excluded.domain,
|
|
460
|
-
timestamp = excluded.timestamp,
|
|
461
|
-
emitted_at = excluded.emitted_at,
|
|
462
|
-
workflow_id = excluded.workflow_id,
|
|
463
|
-
causation_id = excluded.causation_id,
|
|
464
|
-
tx_id = excluded.tx_id,
|
|
465
|
-
artifact_id = excluded.artifact_id,
|
|
466
|
-
network_id = excluded.network_id,
|
|
467
|
-
global_offset = excluded.global_offset,
|
|
468
|
-
source_subsystem = excluded.source_subsystem,
|
|
469
|
-
raw_json = excluded.raw_json,
|
|
470
|
-
file_path = excluded.file_path,
|
|
471
|
-
file_mtime_ms = excluded.file_mtime_ms,
|
|
472
|
-
indexed_at = excluded.indexed_at
|
|
454
|
+
const upsertEvent = this.db.prepare(`
|
|
455
|
+
INSERT INTO events
|
|
456
|
+
(event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id, tx_id, artifact_id, network_id, sequence_number, global_offset, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
457
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
458
|
+
ON CONFLICT(correlation_id, sequence_number, kind) DO UPDATE SET
|
|
459
|
+
event_id = excluded.event_id,
|
|
460
|
+
domain = excluded.domain,
|
|
461
|
+
timestamp = excluded.timestamp,
|
|
462
|
+
emitted_at = excluded.emitted_at,
|
|
463
|
+
workflow_id = excluded.workflow_id,
|
|
464
|
+
causation_id = excluded.causation_id,
|
|
465
|
+
tx_id = excluded.tx_id,
|
|
466
|
+
artifact_id = excluded.artifact_id,
|
|
467
|
+
network_id = excluded.network_id,
|
|
468
|
+
global_offset = excluded.global_offset,
|
|
469
|
+
source_subsystem = excluded.source_subsystem,
|
|
470
|
+
raw_json = excluded.raw_json,
|
|
471
|
+
file_path = excluded.file_path,
|
|
472
|
+
file_mtime_ms = excluded.file_mtime_ms,
|
|
473
|
+
indexed_at = excluded.indexed_at
|
|
473
474
|
`);
|
|
474
475
|
for (let i = 0; i < lines.length; i++) {
|
|
475
476
|
const line = lines[i].trim();
|
|
@@ -515,35 +516,35 @@ export class HardkasIndexer {
|
|
|
515
516
|
}
|
|
516
517
|
}
|
|
517
518
|
syncTraces() {
|
|
518
|
-
const upsertTrace = this.db.prepare(`
|
|
519
|
-
INSERT INTO traces (trace_id, workflow_id, root_event_id, status, started_at, ended_at)
|
|
520
|
-
SELECT
|
|
521
|
-
'trace-' || workflow_id as trace_id,
|
|
522
|
-
workflow_id,
|
|
523
|
-
event_id as root_event_id,
|
|
524
|
-
CASE
|
|
525
|
-
WHEN kind = 'workflow.completed' THEN 'completed'
|
|
526
|
-
WHEN kind = 'workflow.failed' THEN 'failed'
|
|
527
|
-
ELSE 'running'
|
|
528
|
-
END as status,
|
|
529
|
-
timestamp as started_at,
|
|
530
|
-
CASE
|
|
531
|
-
WHEN kind IN ('workflow.completed', 'workflow.failed') THEN timestamp
|
|
532
|
-
ELSE NULL
|
|
533
|
-
END as ended_at
|
|
534
|
-
FROM events
|
|
535
|
-
WHERE kind LIKE 'workflow.%'
|
|
536
|
-
ON CONFLICT(workflow_id) DO UPDATE SET
|
|
537
|
-
status = CASE
|
|
538
|
-
WHEN excluded.status IN ('completed', 'failed') THEN excluded.status
|
|
539
|
-
ELSE traces.status
|
|
540
|
-
END,
|
|
541
|
-
ended_at = CASE
|
|
542
|
-
WHEN excluded.status IN ('completed', 'failed') THEN excluded.ended_at
|
|
543
|
-
ELSE traces.ended_at
|
|
544
|
-
END,
|
|
545
|
-
root_event_id = COALESCE(traces.root_event_id, excluded.root_event_id),
|
|
546
|
-
started_at = COALESCE(traces.started_at, excluded.started_at)
|
|
519
|
+
const upsertTrace = this.db.prepare(`
|
|
520
|
+
INSERT INTO traces (trace_id, workflow_id, root_event_id, status, started_at, ended_at)
|
|
521
|
+
SELECT
|
|
522
|
+
'trace-' || workflow_id as trace_id,
|
|
523
|
+
workflow_id,
|
|
524
|
+
event_id as root_event_id,
|
|
525
|
+
CASE
|
|
526
|
+
WHEN kind = 'workflow.completed' THEN 'completed'
|
|
527
|
+
WHEN kind = 'workflow.failed' THEN 'failed'
|
|
528
|
+
ELSE 'running'
|
|
529
|
+
END as status,
|
|
530
|
+
timestamp as started_at,
|
|
531
|
+
CASE
|
|
532
|
+
WHEN kind IN ('workflow.completed', 'workflow.failed') THEN timestamp
|
|
533
|
+
ELSE NULL
|
|
534
|
+
END as ended_at
|
|
535
|
+
FROM events
|
|
536
|
+
WHERE kind LIKE 'workflow.%'
|
|
537
|
+
ON CONFLICT(workflow_id) DO UPDATE SET
|
|
538
|
+
status = CASE
|
|
539
|
+
WHEN excluded.status IN ('completed', 'failed') THEN excluded.status
|
|
540
|
+
ELSE traces.status
|
|
541
|
+
END,
|
|
542
|
+
ended_at = CASE
|
|
543
|
+
WHEN excluded.status IN ('completed', 'failed') THEN excluded.ended_at
|
|
544
|
+
ELSE traces.ended_at
|
|
545
|
+
END,
|
|
546
|
+
root_event_id = COALESCE(traces.root_event_id, excluded.root_event_id),
|
|
547
|
+
started_at = COALESCE(traces.started_at, excluded.started_at)
|
|
547
548
|
`);
|
|
548
549
|
upsertTrace.run();
|
|
549
550
|
}
|
package/dist/indexer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"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"}
|
package/dist/migrations.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export declare class MigrationRunner {
|
|
|
36
36
|
}
|
|
37
37
|
/**
|
|
38
38
|
* Registry of all query-store migrations.
|
|
39
|
-
* Version 1: Initial schema (Baseline 0.
|
|
39
|
+
* Version 1: Initial schema (Baseline 0.9.1-alpha).
|
|
40
40
|
*/
|
|
41
41
|
export declare const MIGRATIONS: Migration[];
|
|
42
42
|
//# sourceMappingURL=migrations.d.ts.map
|
package/dist/migrations.js
CHANGED
|
@@ -11,13 +11,13 @@ export class MigrationRunner {
|
|
|
11
11
|
* Ensures the migration history table exists.
|
|
12
12
|
*/
|
|
13
13
|
ensureHistoryTable() {
|
|
14
|
-
this.db.exec(`
|
|
15
|
-
CREATE TABLE IF NOT EXISTS hardkas_migrations (
|
|
16
|
-
version INTEGER PRIMARY KEY,
|
|
17
|
-
name TEXT NOT NULL,
|
|
18
|
-
checksum TEXT NOT NULL,
|
|
19
|
-
applied_at TEXT NOT NULL
|
|
20
|
-
);
|
|
14
|
+
this.db.exec(`
|
|
15
|
+
CREATE TABLE IF NOT EXISTS hardkas_migrations (
|
|
16
|
+
version INTEGER PRIMARY KEY,
|
|
17
|
+
name TEXT NOT NULL,
|
|
18
|
+
checksum TEXT NOT NULL,
|
|
19
|
+
applied_at TEXT NOT NULL
|
|
20
|
+
);
|
|
21
21
|
`);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
@@ -96,7 +96,7 @@ export class MigrationRunner {
|
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* Registry of all query-store migrations.
|
|
99
|
-
* Version 1: Initial schema (Baseline 0.
|
|
99
|
+
* Version 1: Initial schema (Baseline 0.9.1-alpha).
|
|
100
100
|
*/
|
|
101
101
|
export const MIGRATIONS = [
|
|
102
102
|
{
|
|
@@ -104,92 +104,92 @@ export const MIGRATIONS = [
|
|
|
104
104
|
name: "initial_schema",
|
|
105
105
|
checksum: "hardkas_v1_baseline",
|
|
106
106
|
up: (db) => {
|
|
107
|
-
db.exec(`
|
|
108
|
-
CREATE TABLE IF NOT EXISTS metadata (
|
|
109
|
-
key TEXT PRIMARY KEY,
|
|
110
|
-
value TEXT NOT NULL
|
|
111
|
-
);
|
|
112
|
-
|
|
113
|
-
CREATE TABLE IF NOT EXISTS artifacts (
|
|
114
|
-
artifact_id TEXT PRIMARY KEY,
|
|
115
|
-
content_hash TEXT NOT NULL,
|
|
116
|
-
schema TEXT NOT NULL,
|
|
117
|
-
version TEXT NOT NULL,
|
|
118
|
-
kind TEXT NOT NULL,
|
|
119
|
-
mode TEXT NOT NULL DEFAULT 'unknown',
|
|
120
|
-
network_id TEXT NOT NULL,
|
|
121
|
-
tx_id TEXT,
|
|
122
|
-
created_at TEXT,
|
|
123
|
-
raw_json TEXT NOT NULL,
|
|
124
|
-
file_path TEXT,
|
|
125
|
-
file_mtime_ms INTEGER,
|
|
126
|
-
indexed_at TEXT
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
|
|
130
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
|
|
131
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
|
|
132
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_mode ON artifacts(mode);
|
|
133
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
|
|
134
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
|
|
135
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
|
|
136
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_file_path ON artifacts(file_path);
|
|
137
|
-
|
|
138
|
-
CREATE TABLE IF NOT EXISTS lineage_edges (
|
|
139
|
-
lineage_id TEXT NOT NULL,
|
|
140
|
-
parent_artifact_id TEXT NOT NULL,
|
|
141
|
-
child_artifact_id TEXT NOT NULL,
|
|
142
|
-
edge_kind TEXT NOT NULL,
|
|
143
|
-
created_at TEXT,
|
|
144
|
-
PRIMARY KEY (parent_artifact_id, child_artifact_id),
|
|
145
|
-
FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
146
|
-
FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
147
|
-
);
|
|
148
|
-
|
|
149
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
|
|
150
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
|
|
151
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
|
|
152
|
-
|
|
153
|
-
CREATE TABLE IF NOT EXISTS events (
|
|
154
|
-
event_id TEXT PRIMARY KEY,
|
|
155
|
-
kind TEXT NOT NULL,
|
|
156
|
-
domain TEXT NOT NULL,
|
|
157
|
-
timestamp TEXT,
|
|
158
|
-
workflow_id TEXT NOT NULL,
|
|
159
|
-
correlation_id TEXT NOT NULL,
|
|
160
|
-
causation_id TEXT,
|
|
161
|
-
tx_id TEXT,
|
|
162
|
-
artifact_id TEXT,
|
|
163
|
-
network_id TEXT NOT NULL,
|
|
164
|
-
raw_json TEXT NOT NULL,
|
|
165
|
-
file_path TEXT,
|
|
166
|
-
file_mtime_ms INTEGER,
|
|
167
|
-
indexed_at TEXT
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
171
|
-
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
172
|
-
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
173
|
-
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
174
|
-
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
175
|
-
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
176
|
-
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
177
|
-
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
178
|
-
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
179
|
-
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
180
|
-
|
|
181
|
-
CREATE TABLE IF NOT EXISTS traces (
|
|
182
|
-
trace_id TEXT PRIMARY KEY,
|
|
183
|
-
workflow_id TEXT UNIQUE NOT NULL,
|
|
184
|
-
root_event_id TEXT,
|
|
185
|
-
status TEXT NOT NULL,
|
|
186
|
-
started_at TEXT,
|
|
187
|
-
ended_at TEXT,
|
|
188
|
-
FOREIGN KEY (root_event_id) REFERENCES events(event_id) ON DELETE SET NULL
|
|
189
|
-
);
|
|
190
|
-
|
|
191
|
-
CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
|
|
192
|
-
CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
|
|
107
|
+
db.exec(`
|
|
108
|
+
CREATE TABLE IF NOT EXISTS metadata (
|
|
109
|
+
key TEXT PRIMARY KEY,
|
|
110
|
+
value TEXT NOT NULL
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
CREATE TABLE IF NOT EXISTS artifacts (
|
|
114
|
+
artifact_id TEXT PRIMARY KEY,
|
|
115
|
+
content_hash TEXT NOT NULL,
|
|
116
|
+
schema TEXT NOT NULL,
|
|
117
|
+
version TEXT NOT NULL,
|
|
118
|
+
kind TEXT NOT NULL,
|
|
119
|
+
mode TEXT NOT NULL DEFAULT 'unknown',
|
|
120
|
+
network_id TEXT NOT NULL,
|
|
121
|
+
tx_id TEXT,
|
|
122
|
+
created_at TEXT,
|
|
123
|
+
raw_json TEXT NOT NULL,
|
|
124
|
+
file_path TEXT,
|
|
125
|
+
file_mtime_ms INTEGER,
|
|
126
|
+
indexed_at TEXT
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_mode ON artifacts(mode);
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_file_path ON artifacts(file_path);
|
|
137
|
+
|
|
138
|
+
CREATE TABLE IF NOT EXISTS lineage_edges (
|
|
139
|
+
lineage_id TEXT NOT NULL,
|
|
140
|
+
parent_artifact_id TEXT NOT NULL,
|
|
141
|
+
child_artifact_id TEXT NOT NULL,
|
|
142
|
+
edge_kind TEXT NOT NULL,
|
|
143
|
+
created_at TEXT,
|
|
144
|
+
PRIMARY KEY (parent_artifact_id, child_artifact_id),
|
|
145
|
+
FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
146
|
+
FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
|
|
150
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
|
|
152
|
+
|
|
153
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
154
|
+
event_id TEXT PRIMARY KEY,
|
|
155
|
+
kind TEXT NOT NULL,
|
|
156
|
+
domain TEXT NOT NULL,
|
|
157
|
+
timestamp TEXT,
|
|
158
|
+
workflow_id TEXT NOT NULL,
|
|
159
|
+
correlation_id TEXT NOT NULL,
|
|
160
|
+
causation_id TEXT,
|
|
161
|
+
tx_id TEXT,
|
|
162
|
+
artifact_id TEXT,
|
|
163
|
+
network_id TEXT NOT NULL,
|
|
164
|
+
raw_json TEXT NOT NULL,
|
|
165
|
+
file_path TEXT,
|
|
166
|
+
file_mtime_ms INTEGER,
|
|
167
|
+
indexed_at TEXT
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
171
|
+
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
172
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
173
|
+
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
174
|
+
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
175
|
+
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
176
|
+
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
177
|
+
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
178
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
179
|
+
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
180
|
+
|
|
181
|
+
CREATE TABLE IF NOT EXISTS traces (
|
|
182
|
+
trace_id TEXT PRIMARY KEY,
|
|
183
|
+
workflow_id TEXT UNIQUE NOT NULL,
|
|
184
|
+
root_event_id TEXT,
|
|
185
|
+
status TEXT NOT NULL,
|
|
186
|
+
started_at TEXT,
|
|
187
|
+
ended_at TEXT,
|
|
188
|
+
FOREIGN KEY (root_event_id) REFERENCES events(event_id) ON DELETE SET NULL
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
|
|
192
|
+
CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
|
|
193
193
|
`);
|
|
194
194
|
}
|
|
195
195
|
},
|
|
@@ -198,52 +198,52 @@ export const MIGRATIONS = [
|
|
|
198
198
|
name: "event_persistence_guarantees",
|
|
199
199
|
checksum: "hardkas_v2_events",
|
|
200
200
|
up: (db) => {
|
|
201
|
-
db.exec(`
|
|
202
|
-
CREATE TABLE IF NOT EXISTS events_v2 (
|
|
203
|
-
event_id TEXT PRIMARY KEY,
|
|
204
|
-
kind TEXT NOT NULL,
|
|
205
|
-
domain TEXT NOT NULL,
|
|
206
|
-
timestamp TEXT,
|
|
207
|
-
emitted_at TEXT,
|
|
208
|
-
workflow_id TEXT NOT NULL,
|
|
209
|
-
correlation_id TEXT NOT NULL,
|
|
210
|
-
causation_id TEXT,
|
|
211
|
-
tx_id TEXT,
|
|
212
|
-
artifact_id TEXT,
|
|
213
|
-
network_id TEXT NOT NULL,
|
|
214
|
-
sequence_number INTEGER NOT NULL DEFAULT 0,
|
|
215
|
-
global_offset INTEGER,
|
|
216
|
-
source_subsystem TEXT NOT NULL DEFAULT 'unknown',
|
|
217
|
-
raw_json TEXT NOT NULL,
|
|
218
|
-
file_path TEXT,
|
|
219
|
-
file_mtime_ms INTEGER,
|
|
220
|
-
indexed_at TEXT,
|
|
221
|
-
UNIQUE(correlation_id, sequence_number, kind)
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
INSERT INTO events_v2 (
|
|
225
|
-
event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id,
|
|
226
|
-
tx_id, artifact_id, network_id, sequence_number, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at
|
|
227
|
-
)
|
|
228
|
-
SELECT
|
|
229
|
-
event_id, kind, domain, timestamp, timestamp, workflow_id, correlation_id, causation_id,
|
|
230
|
-
tx_id, artifact_id, network_id, 0, 'legacy', raw_json, file_path, file_mtime_ms, indexed_at
|
|
231
|
-
FROM events;
|
|
232
|
-
|
|
233
|
-
DROP TABLE events;
|
|
234
|
-
ALTER TABLE events_v2 RENAME TO events;
|
|
235
|
-
|
|
236
|
-
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
237
|
-
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
238
|
-
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
239
|
-
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
240
|
-
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
241
|
-
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
242
|
-
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
243
|
-
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
244
|
-
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
245
|
-
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
246
|
-
CREATE INDEX IF NOT EXISTS idx_events_global_offset ON events(global_offset);
|
|
201
|
+
db.exec(`
|
|
202
|
+
CREATE TABLE IF NOT EXISTS events_v2 (
|
|
203
|
+
event_id TEXT PRIMARY KEY,
|
|
204
|
+
kind TEXT NOT NULL,
|
|
205
|
+
domain TEXT NOT NULL,
|
|
206
|
+
timestamp TEXT,
|
|
207
|
+
emitted_at TEXT,
|
|
208
|
+
workflow_id TEXT NOT NULL,
|
|
209
|
+
correlation_id TEXT NOT NULL,
|
|
210
|
+
causation_id TEXT,
|
|
211
|
+
tx_id TEXT,
|
|
212
|
+
artifact_id TEXT,
|
|
213
|
+
network_id TEXT NOT NULL,
|
|
214
|
+
sequence_number INTEGER NOT NULL DEFAULT 0,
|
|
215
|
+
global_offset INTEGER,
|
|
216
|
+
source_subsystem TEXT NOT NULL DEFAULT 'unknown',
|
|
217
|
+
raw_json TEXT NOT NULL,
|
|
218
|
+
file_path TEXT,
|
|
219
|
+
file_mtime_ms INTEGER,
|
|
220
|
+
indexed_at TEXT,
|
|
221
|
+
UNIQUE(correlation_id, sequence_number, kind)
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
INSERT INTO events_v2 (
|
|
225
|
+
event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id,
|
|
226
|
+
tx_id, artifact_id, network_id, sequence_number, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at
|
|
227
|
+
)
|
|
228
|
+
SELECT
|
|
229
|
+
event_id, kind, domain, timestamp, timestamp, workflow_id, correlation_id, causation_id,
|
|
230
|
+
tx_id, artifact_id, network_id, 0, 'legacy', raw_json, file_path, file_mtime_ms, indexed_at
|
|
231
|
+
FROM events;
|
|
232
|
+
|
|
233
|
+
DROP TABLE events;
|
|
234
|
+
ALTER TABLE events_v2 RENAME TO events;
|
|
235
|
+
|
|
236
|
+
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
237
|
+
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
238
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
239
|
+
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
240
|
+
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
241
|
+
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
242
|
+
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
243
|
+
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
244
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
245
|
+
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
246
|
+
CREATE INDEX IF NOT EXISTS idx_events_global_offset ON events(global_offset);
|
|
247
247
|
`);
|
|
248
248
|
}
|
|
249
249
|
},
|
|
@@ -252,47 +252,47 @@ export const MIGRATIONS = [
|
|
|
252
252
|
name: "lineage_closure_and_scale_indices",
|
|
253
253
|
checksum: "hardkas_v3_lineage_scale",
|
|
254
254
|
up: (db) => {
|
|
255
|
-
db.exec(`
|
|
256
|
-
-- Lineage closure table: transitive ancestor/descendant relationships
|
|
257
|
-
-- Enables O(1) "is X an ancestor of Y?" queries without recursive CTEs
|
|
258
|
-
CREATE TABLE IF NOT EXISTS lineage_closure (
|
|
259
|
-
ancestor_id TEXT NOT NULL,
|
|
260
|
-
descendant_id TEXT NOT NULL,
|
|
261
|
-
depth INTEGER NOT NULL DEFAULT 1,
|
|
262
|
-
path_hash TEXT,
|
|
263
|
-
created_at TEXT,
|
|
264
|
-
PRIMARY KEY (ancestor_id, descendant_id),
|
|
265
|
-
FOREIGN KEY (ancestor_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
266
|
-
FOREIGN KEY (descendant_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
267
|
-
);
|
|
268
|
-
|
|
269
|
-
CREATE INDEX IF NOT EXISTS idx_closure_ancestor ON lineage_closure(ancestor_id);
|
|
270
|
-
CREATE INDEX IF NOT EXISTS idx_closure_descendant ON lineage_closure(descendant_id);
|
|
271
|
-
CREATE INDEX IF NOT EXISTS idx_closure_depth ON lineage_closure(depth);
|
|
272
|
-
|
|
273
|
-
-- Add depth column to lineage_edges for direct edge depth tracking
|
|
274
|
-
ALTER TABLE lineage_edges ADD COLUMN depth INTEGER NOT NULL DEFAULT 1;
|
|
275
|
-
|
|
276
|
-
-- File mtime index for incremental sync: skip unchanged files
|
|
277
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_file_mtime_ms ON artifacts(file_mtime_ms);
|
|
278
|
-
|
|
279
|
-
-- Lineage statistics metadata view for scale monitoring
|
|
280
|
-
CREATE TABLE IF NOT EXISTS lineage_stats (
|
|
281
|
-
stat_key TEXT PRIMARY KEY,
|
|
282
|
-
stat_value TEXT NOT NULL,
|
|
283
|
-
updated_at TEXT NOT NULL
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
-- Pruning history: track what was pruned and when
|
|
287
|
-
CREATE TABLE IF NOT EXISTS prune_history (
|
|
288
|
-
prune_id TEXT PRIMARY KEY,
|
|
289
|
-
pruned_at TEXT NOT NULL,
|
|
290
|
-
artifacts_pruned INTEGER NOT NULL DEFAULT 0,
|
|
291
|
-
traces_pruned INTEGER NOT NULL DEFAULT 0,
|
|
292
|
-
events_pruned INTEGER NOT NULL DEFAULT 0,
|
|
293
|
-
lineage_roots_preserved INTEGER NOT NULL DEFAULT 0,
|
|
294
|
-
total_bytes_freed INTEGER NOT NULL DEFAULT 0
|
|
295
|
-
);
|
|
255
|
+
db.exec(`
|
|
256
|
+
-- Lineage closure table: transitive ancestor/descendant relationships
|
|
257
|
+
-- Enables O(1) "is X an ancestor of Y?" queries without recursive CTEs
|
|
258
|
+
CREATE TABLE IF NOT EXISTS lineage_closure (
|
|
259
|
+
ancestor_id TEXT NOT NULL,
|
|
260
|
+
descendant_id TEXT NOT NULL,
|
|
261
|
+
depth INTEGER NOT NULL DEFAULT 1,
|
|
262
|
+
path_hash TEXT,
|
|
263
|
+
created_at TEXT,
|
|
264
|
+
PRIMARY KEY (ancestor_id, descendant_id),
|
|
265
|
+
FOREIGN KEY (ancestor_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
266
|
+
FOREIGN KEY (descendant_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
CREATE INDEX IF NOT EXISTS idx_closure_ancestor ON lineage_closure(ancestor_id);
|
|
270
|
+
CREATE INDEX IF NOT EXISTS idx_closure_descendant ON lineage_closure(descendant_id);
|
|
271
|
+
CREATE INDEX IF NOT EXISTS idx_closure_depth ON lineage_closure(depth);
|
|
272
|
+
|
|
273
|
+
-- Add depth column to lineage_edges for direct edge depth tracking
|
|
274
|
+
ALTER TABLE lineage_edges ADD COLUMN depth INTEGER NOT NULL DEFAULT 1;
|
|
275
|
+
|
|
276
|
+
-- File mtime index for incremental sync: skip unchanged files
|
|
277
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_file_mtime_ms ON artifacts(file_mtime_ms);
|
|
278
|
+
|
|
279
|
+
-- Lineage statistics metadata view for scale monitoring
|
|
280
|
+
CREATE TABLE IF NOT EXISTS lineage_stats (
|
|
281
|
+
stat_key TEXT PRIMARY KEY,
|
|
282
|
+
stat_value TEXT NOT NULL,
|
|
283
|
+
updated_at TEXT NOT NULL
|
|
284
|
+
);
|
|
285
|
+
|
|
286
|
+
-- Pruning history: track what was pruned and when
|
|
287
|
+
CREATE TABLE IF NOT EXISTS prune_history (
|
|
288
|
+
prune_id TEXT PRIMARY KEY,
|
|
289
|
+
pruned_at TEXT NOT NULL,
|
|
290
|
+
artifacts_pruned INTEGER NOT NULL DEFAULT 0,
|
|
291
|
+
traces_pruned INTEGER NOT NULL DEFAULT 0,
|
|
292
|
+
events_pruned INTEGER NOT NULL DEFAULT 0,
|
|
293
|
+
lineage_roots_preserved INTEGER NOT NULL DEFAULT 0,
|
|
294
|
+
total_bytes_freed INTEGER NOT NULL DEFAULT 0
|
|
295
|
+
);
|
|
296
296
|
`);
|
|
297
297
|
}
|
|
298
298
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardkas/query-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1-alpha",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@hardkas/
|
|
16
|
-
"@hardkas/
|
|
15
|
+
"@hardkas/artifacts": "0.9.1-alpha",
|
|
16
|
+
"@hardkas/core": "0.9.1-alpha"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "^22.10.0",
|