@hardkas/query-store 0.5.5-alpha → 0.6.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/dist/backend.d.ts +59 -0
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +13 -2
- package/dist/backend.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +21 -0
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +274 -91
- package/dist/indexer.js.map +1 -1
- package/dist/ledger-appender.d.ts +13 -0
- package/dist/ledger-appender.d.ts.map +1 -0
- package/dist/ledger-appender.js +46 -0
- package/dist/ledger-appender.js.map +1 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +198 -95
- package/dist/migrations.js.map +1 -1
- package/package.json +3 -3
package/dist/backend.d.ts
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
import { HardkasStore } from "./db.js";
|
|
2
2
|
import { ExecutionMode, NetworkId } from "@hardkas/core";
|
|
3
|
+
export interface DbArtifactRow {
|
|
4
|
+
readonly artifact_id: string;
|
|
5
|
+
readonly content_hash: string;
|
|
6
|
+
readonly schema: string;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
readonly kind: string;
|
|
9
|
+
readonly mode: string;
|
|
10
|
+
readonly network_id: string;
|
|
11
|
+
readonly tx_id: string | null;
|
|
12
|
+
readonly created_at: string | null;
|
|
13
|
+
readonly raw_json: string;
|
|
14
|
+
readonly file_path: string | null;
|
|
15
|
+
readonly file_mtime_ms: number | null;
|
|
16
|
+
readonly indexed_at: string | null;
|
|
17
|
+
}
|
|
18
|
+
export interface DbEventRow {
|
|
19
|
+
readonly event_id: string;
|
|
20
|
+
readonly kind: string;
|
|
21
|
+
readonly domain: string;
|
|
22
|
+
readonly timestamp: string | null;
|
|
23
|
+
readonly emitted_at: string | null;
|
|
24
|
+
readonly workflow_id: string;
|
|
25
|
+
readonly correlation_id: string;
|
|
26
|
+
readonly causation_id: string | null;
|
|
27
|
+
readonly tx_id: string | null;
|
|
28
|
+
readonly artifact_id: string | null;
|
|
29
|
+
readonly network_id: string;
|
|
30
|
+
readonly sequence_number: number;
|
|
31
|
+
readonly global_offset: number | null;
|
|
32
|
+
readonly source_subsystem: string;
|
|
33
|
+
readonly raw_json: string;
|
|
34
|
+
readonly file_path: string | null;
|
|
35
|
+
readonly file_mtime_ms: number | null;
|
|
36
|
+
readonly indexed_at: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface DbLineageEdgeRow {
|
|
39
|
+
readonly lineage_id: string;
|
|
40
|
+
readonly parent_artifact_id: string;
|
|
41
|
+
readonly child_artifact_id: string;
|
|
42
|
+
readonly edge_kind: string;
|
|
43
|
+
readonly created_at: string | null;
|
|
44
|
+
}
|
|
3
45
|
export interface ArtifactDocument {
|
|
4
46
|
readonly contentHash: string;
|
|
5
47
|
readonly schema: string;
|
|
@@ -57,10 +99,21 @@ export interface QueryBackend {
|
|
|
57
99
|
}>;
|
|
58
100
|
sync(options?: {
|
|
59
101
|
strict?: boolean;
|
|
102
|
+
cwd?: string;
|
|
103
|
+
}): Promise<any>;
|
|
104
|
+
syncPaths(paths: string[], options?: {
|
|
105
|
+
strict?: boolean;
|
|
106
|
+
cwd?: string;
|
|
60
107
|
}): Promise<any>;
|
|
61
108
|
rebuild(options?: {
|
|
62
109
|
strict?: boolean;
|
|
110
|
+
cwd?: string;
|
|
63
111
|
}): Promise<any>;
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated BOUNDARY DINÁMICO: Este es el ÚNICO boundary dinámico aceptado en el sistema
|
|
114
|
+
* que puede retornar `any[]` de forma intencional (SQLite devuelve filas genéricas).
|
|
115
|
+
* Todos los llamadores DEBEN validar el output estrictamente en runtime mediante guards.
|
|
116
|
+
*/
|
|
64
117
|
executeRawSql(sql: string): Promise<any[]>;
|
|
65
118
|
findReceipts(filters?: {
|
|
66
119
|
status?: string;
|
|
@@ -103,9 +156,15 @@ export declare class SqliteQueryBackend implements QueryBackend {
|
|
|
103
156
|
}>;
|
|
104
157
|
rebuild(options?: {
|
|
105
158
|
strict?: boolean;
|
|
159
|
+
cwd?: string;
|
|
106
160
|
}): Promise<any>;
|
|
107
161
|
sync(options?: {
|
|
108
162
|
strict?: boolean;
|
|
163
|
+
cwd?: string;
|
|
164
|
+
}): Promise<any>;
|
|
165
|
+
syncPaths(paths: string[], options?: {
|
|
166
|
+
strict?: boolean;
|
|
167
|
+
cwd?: string;
|
|
109
168
|
}): Promise<any>;
|
|
110
169
|
executeRawSql(sql: string): Promise<any[]>;
|
|
111
170
|
}
|
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
|
@@ -11,11 +11,16 @@ export class SqliteQueryBackend {
|
|
|
11
11
|
}
|
|
12
12
|
async findArtifacts(filters) {
|
|
13
13
|
const db = this.store.getDatabase();
|
|
14
|
+
// Force SQLite to flush WAL entries to visibility for this read connection
|
|
15
|
+
try {
|
|
16
|
+
db.pragma("wal_checkpoint(PASSIVE)");
|
|
17
|
+
}
|
|
18
|
+
catch (e) { }
|
|
14
19
|
let query = "SELECT * FROM artifacts WHERE 1=1";
|
|
15
20
|
const params = [];
|
|
16
21
|
if (filters?.schema) {
|
|
17
|
-
query += " AND schema
|
|
18
|
-
params.push(filters.schema);
|
|
22
|
+
query += " AND schema LIKE ?";
|
|
23
|
+
params.push(`${filters.schema}%`);
|
|
19
24
|
}
|
|
20
25
|
if (filters?.mode) {
|
|
21
26
|
query += " AND mode = ?";
|
|
@@ -167,6 +172,12 @@ export class SqliteQueryBackend {
|
|
|
167
172
|
const indexer = new HardkasIndexer(this.store.getDatabase(), options);
|
|
168
173
|
return indexer.sync();
|
|
169
174
|
}
|
|
175
|
+
async syncPaths(paths, options) {
|
|
176
|
+
this.store.migrate();
|
|
177
|
+
const { HardkasIndexer } = await import("./indexer.js");
|
|
178
|
+
const indexer = new HardkasIndexer(this.store.getDatabase(), options);
|
|
179
|
+
return indexer.syncPaths(paths);
|
|
180
|
+
}
|
|
170
181
|
async executeRawSql(sql) {
|
|
171
182
|
const db = this.store.getDatabase();
|
|
172
183
|
return db.prepare(sql).all();
|
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":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
|
package/dist/indexer.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface SyncResult {
|
|
|
17
17
|
warnings: string[];
|
|
18
18
|
errors: string[];
|
|
19
19
|
issues: CorruptionIssue[];
|
|
20
|
+
generationId?: string;
|
|
20
21
|
}
|
|
21
22
|
export interface DoctorReport {
|
|
22
23
|
ok: boolean;
|
|
@@ -24,6 +25,10 @@ export interface DoctorReport {
|
|
|
24
25
|
zombieArtifacts: number;
|
|
25
26
|
corruptedFiles: string[];
|
|
26
27
|
orphanEdges: number;
|
|
28
|
+
duplicateProjections: number;
|
|
29
|
+
brokenReplayDependencies: number;
|
|
30
|
+
duplicateEventSequences: number;
|
|
31
|
+
orphanEvents: number;
|
|
27
32
|
lastIndexedAt: string | null;
|
|
28
33
|
}
|
|
29
34
|
export declare class HardkasIndexer {
|
|
@@ -40,6 +45,11 @@ export declare class HardkasIndexer {
|
|
|
40
45
|
* Internal indexing logic without transaction management.
|
|
41
46
|
*/
|
|
42
47
|
private _syncInternal;
|
|
48
|
+
/**
|
|
49
|
+
* Performs an incremental sync of only specific paths (Targeted Reindex).
|
|
50
|
+
* Transactional.
|
|
51
|
+
*/
|
|
52
|
+
syncPaths(paths: string[]): Promise<SyncResult>;
|
|
43
53
|
/**
|
|
44
54
|
* Complete wipe and rebuild of the index.
|
|
45
55
|
*/
|
|
@@ -53,7 +63,18 @@ export declare class HardkasIndexer {
|
|
|
53
63
|
* Diagnostic check of the index integrity and freshness.
|
|
54
64
|
*/
|
|
55
65
|
doctor(): DoctorReport;
|
|
66
|
+
/**
|
|
67
|
+
* Checks if a file needs re-indexing based on mtime comparison.
|
|
68
|
+
* Returns true if the file has changed since last indexing.
|
|
69
|
+
*/
|
|
70
|
+
private needsReindex;
|
|
56
71
|
private syncArtifacts;
|
|
72
|
+
/**
|
|
73
|
+
* Builds the transitive closure of the lineage graph.
|
|
74
|
+
* For each edge (parent -> child), we also store (grandparent -> child), etc.
|
|
75
|
+
* This enables O(1) ancestor/descendant queries without recursive CTEs.
|
|
76
|
+
*/
|
|
77
|
+
private buildLineageClosure;
|
|
57
78
|
private syncEvents;
|
|
58
79
|
private syncTraces;
|
|
59
80
|
private cleanupZombies;
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAMA,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,yBAAyB,CAAC;IAClC,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;IAsB3B;;;OAGG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA6B5D;;OAEG;IACH;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAiC3C,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACI,MAAM,IAAI,YAAY;IA0F7B;;;OAGG;IACH,OAAO,CAAC,YAAY;YAaN,aAAa;IAwJ3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAmD3B,OAAO,CAAC,UAAU;IA+FlB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,IAAI;CAgBb"}
|
package/dist/indexer.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createRequire } from "node:module";
|
|
|
4
4
|
const require = createRequire(import.meta.url);
|
|
5
5
|
const { DatabaseSync } = require("node:sqlite");
|
|
6
6
|
import { calculateContentHash, verifyArtifactIntegrity } from "@hardkas/artifacts";
|
|
7
|
-
import { validateEventEnvelope, formatCorruptionIssue } from "@hardkas/core";
|
|
7
|
+
import { validateEventEnvelope, formatCorruptionIssue, EnvironmentTelemetry } from "@hardkas/core";
|
|
8
8
|
export class HardkasIndexer {
|
|
9
9
|
db;
|
|
10
10
|
hardkasDir;
|
|
@@ -50,14 +50,56 @@ export class HardkasIndexer {
|
|
|
50
50
|
/**
|
|
51
51
|
* Internal indexing logic without transaction management.
|
|
52
52
|
*/
|
|
53
|
-
async _syncInternal(result) {
|
|
54
|
-
await this.syncArtifacts(result);
|
|
53
|
+
async _syncInternal(result, specificPaths) {
|
|
54
|
+
await this.syncArtifacts(result, specificPaths);
|
|
55
55
|
this.syncEvents(result);
|
|
56
56
|
this.syncTraces();
|
|
57
57
|
this.cleanupZombies();
|
|
58
58
|
// Mark last sync
|
|
59
59
|
this.db.prepare("INSERT OR REPLACE INTO metadata (key, value) VALUES (?, ?)")
|
|
60
|
-
.run("last_indexed_at", new Date().toISOString());
|
|
60
|
+
.run("last_indexed_at", new Date().toISOString()); // hardkas-determinism-allow: last sync ambient metadata
|
|
61
|
+
if (result.artifacts.indexed > 0 || result.events.indexed > 0 || result.artifacts.corrupted > 0) {
|
|
62
|
+
const crypto = require("node:crypto");
|
|
63
|
+
const genId = crypto.randomUUID(); // hardkas-determinism-allow: random generation metadata ID
|
|
64
|
+
this.db.prepare("INSERT OR REPLACE INTO metadata (key, value) VALUES (?, ?)")
|
|
65
|
+
.run("generation_id", genId);
|
|
66
|
+
result.generationId = genId;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
const row = this.db.prepare("SELECT value FROM metadata WHERE key = 'generation_id'").get();
|
|
70
|
+
result.generationId = row ? row.value : null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Performs an incremental sync of only specific paths (Targeted Reindex).
|
|
75
|
+
* Transactional.
|
|
76
|
+
*/
|
|
77
|
+
async syncPaths(paths) {
|
|
78
|
+
const result = {
|
|
79
|
+
schema: "hardkas.queryRebuild.v1",
|
|
80
|
+
ok: true,
|
|
81
|
+
artifacts: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
82
|
+
events: { scanned: 0, indexed: 0, duplicates: 0, corrupted: 0 },
|
|
83
|
+
warnings: [],
|
|
84
|
+
errors: [],
|
|
85
|
+
issues: []
|
|
86
|
+
};
|
|
87
|
+
if (!fs.existsSync(this.hardkasDir)) {
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
this.db.exec("BEGIN TRANSACTION;");
|
|
91
|
+
try {
|
|
92
|
+
await this._syncInternal(result, paths);
|
|
93
|
+
this.db.exec("COMMIT;");
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
this.db.exec("ROLLBACK;");
|
|
97
|
+
result.ok = false;
|
|
98
|
+
result.errors.push(`Targeted Sync failed: ${e.message}`);
|
|
99
|
+
if (this.strict)
|
|
100
|
+
throw e;
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
61
103
|
}
|
|
62
104
|
/**
|
|
63
105
|
* Complete wipe and rebuild of the index.
|
|
@@ -80,6 +122,7 @@ export class HardkasIndexer {
|
|
|
80
122
|
try {
|
|
81
123
|
// 1. Wipe
|
|
82
124
|
this._wipeInternal();
|
|
125
|
+
EnvironmentTelemetry.logAnomaly("REPLAY_RECONCILIATION", "medium", "replay", "Full query rebuild executed");
|
|
83
126
|
// 2. Full Sync (using internal logic to avoid nested transaction)
|
|
84
127
|
if (fs.existsSync(this.hardkasDir)) {
|
|
85
128
|
await this._syncInternal(result);
|
|
@@ -98,9 +141,17 @@ export class HardkasIndexer {
|
|
|
98
141
|
_wipeInternal() {
|
|
99
142
|
this.db.exec("DELETE FROM traces;");
|
|
100
143
|
this.db.exec("DELETE FROM events;");
|
|
144
|
+
try {
|
|
145
|
+
this.db.exec("DELETE FROM lineage_closure;");
|
|
146
|
+
}
|
|
147
|
+
catch { } // v3+ table
|
|
101
148
|
this.db.exec("DELETE FROM lineage_edges;");
|
|
102
149
|
this.db.exec("DELETE FROM artifacts;");
|
|
103
150
|
this.db.exec("DELETE FROM metadata WHERE key = 'last_indexed_at';");
|
|
151
|
+
try {
|
|
152
|
+
this.db.exec("DELETE FROM lineage_stats;");
|
|
153
|
+
}
|
|
154
|
+
catch { } // v3+ table
|
|
104
155
|
}
|
|
105
156
|
/**
|
|
106
157
|
* Diagnostic check of the index integrity and freshness.
|
|
@@ -112,6 +163,10 @@ export class HardkasIndexer {
|
|
|
112
163
|
zombieArtifacts: 0,
|
|
113
164
|
corruptedFiles: [],
|
|
114
165
|
orphanEdges: 0,
|
|
166
|
+
duplicateProjections: 0,
|
|
167
|
+
brokenReplayDependencies: 0,
|
|
168
|
+
duplicateEventSequences: 0,
|
|
169
|
+
orphanEvents: 0,
|
|
115
170
|
lastIndexedAt: null
|
|
116
171
|
};
|
|
117
172
|
// 1. Check last indexed
|
|
@@ -131,50 +186,115 @@ export class HardkasIndexer {
|
|
|
131
186
|
}
|
|
132
187
|
}
|
|
133
188
|
// 3. Check for orphan edges
|
|
134
|
-
const orphans = this.db.prepare(`
|
|
135
|
-
SELECT COUNT(*) as count FROM lineage_edges
|
|
136
|
-
WHERE parent_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
137
|
-
OR child_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
189
|
+
const orphans = this.db.prepare(`
|
|
190
|
+
SELECT COUNT(*) as count FROM lineage_edges
|
|
191
|
+
WHERE parent_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
192
|
+
OR child_artifact_id NOT IN (SELECT artifact_id FROM artifacts)
|
|
138
193
|
`).get();
|
|
139
194
|
report.orphanEdges = orphans.count;
|
|
140
|
-
|
|
195
|
+
// 4. Duplicate projections (tx_id should be unique for specific schemas like receipts)
|
|
196
|
+
const duplicateProjections = this.db.prepare(`
|
|
197
|
+
SELECT COUNT(*) as count FROM (
|
|
198
|
+
SELECT tx_id FROM artifacts WHERE tx_id IS NOT NULL AND schema LIKE '%txReceipt%' GROUP BY tx_id HAVING COUNT(*) > 1
|
|
199
|
+
)
|
|
200
|
+
`).get();
|
|
201
|
+
report.duplicateProjections = duplicateProjections.count;
|
|
202
|
+
// 5. Broken replay dependencies
|
|
203
|
+
const brokenReplayDeps = this.db.prepare(`
|
|
204
|
+
SELECT COUNT(*) as count FROM artifacts a
|
|
205
|
+
LEFT JOIN artifacts target ON target.tx_id = json_extract(a.raw_json, '$.payload.txId')
|
|
206
|
+
WHERE a.schema = 'hardkas.replayReport.v1'
|
|
207
|
+
AND target.artifact_id IS NULL
|
|
208
|
+
`).get();
|
|
209
|
+
report.brokenReplayDependencies = brokenReplayDeps.count;
|
|
210
|
+
// Also check for corrupted artifacts in the database
|
|
211
|
+
const corruptedRows = this.db.prepare("SELECT file_path FROM artifacts WHERE kind = 'CORRUPTED'").all();
|
|
212
|
+
report.corruptedFiles = corruptedRows.map(r => r.file_path);
|
|
213
|
+
// 6. Duplicate Event Sequences (should be prevented by DB constraints, but good to verify)
|
|
214
|
+
const duplicateSequences = this.db.prepare(`
|
|
215
|
+
SELECT COUNT(*) as count FROM (
|
|
216
|
+
SELECT correlation_id, sequence_number, kind FROM events
|
|
217
|
+
GROUP BY correlation_id, sequence_number, kind HAVING COUNT(*) > 1
|
|
218
|
+
)
|
|
219
|
+
`).get();
|
|
220
|
+
report.duplicateEventSequences = duplicateSequences.count;
|
|
221
|
+
// 7. Orphan Events (events causing actions but missing root causation/workflow if required)
|
|
222
|
+
const orphanEvents = this.db.prepare(`
|
|
223
|
+
SELECT COUNT(*) as count FROM events e
|
|
224
|
+
WHERE e.causation_id IS NOT NULL AND e.causation_id NOT IN (SELECT event_id FROM events)
|
|
225
|
+
`).get();
|
|
226
|
+
report.orphanEvents = orphanEvents.count;
|
|
227
|
+
// Strict ok evaluation
|
|
228
|
+
report.ok =
|
|
229
|
+
report.staleArtifacts === 0 &&
|
|
230
|
+
report.zombieArtifacts === 0 &&
|
|
231
|
+
report.orphanEdges === 0 &&
|
|
232
|
+
report.duplicateProjections === 0 &&
|
|
233
|
+
report.brokenReplayDependencies === 0 &&
|
|
234
|
+
report.duplicateEventSequences === 0 &&
|
|
235
|
+
report.orphanEvents === 0 &&
|
|
236
|
+
report.corruptedFiles.length === 0;
|
|
141
237
|
return report;
|
|
142
238
|
}
|
|
143
|
-
|
|
239
|
+
/**
|
|
240
|
+
* Checks if a file needs re-indexing based on mtime comparison.
|
|
241
|
+
* Returns true if the file has changed since last indexing.
|
|
242
|
+
*/
|
|
243
|
+
needsReindex(filePath, currentMtimeMs) {
|
|
244
|
+
try {
|
|
245
|
+
const row = this.db.prepare("SELECT file_mtime_ms FROM artifacts WHERE file_path = ?").get(filePath);
|
|
246
|
+
if (!row || row.file_mtime_ms === null)
|
|
247
|
+
return true;
|
|
248
|
+
return row.file_mtime_ms !== currentMtimeMs;
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
async syncArtifacts(result, specificPaths) {
|
|
144
255
|
// Sort files to ensure deterministic indexing order
|
|
145
|
-
const files =
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
256
|
+
const files = specificPaths
|
|
257
|
+
? specificPaths.filter(p => fs.existsSync(p) && p.endsWith(".json") && !p.endsWith("events.jsonl")).sort()
|
|
258
|
+
: this.walk(this.hardkasDir).sort();
|
|
259
|
+
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
260
|
+
const upsertArtifact = this.db.prepare(`
|
|
261
|
+
INSERT INTO artifacts
|
|
262
|
+
(artifact_id, content_hash, schema, version, kind, mode, network_id, tx_id, created_at, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
263
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
264
|
+
ON CONFLICT(artifact_id) DO UPDATE SET
|
|
265
|
+
content_hash = excluded.content_hash,
|
|
266
|
+
schema = excluded.schema,
|
|
267
|
+
version = excluded.version,
|
|
268
|
+
kind = excluded.kind,
|
|
269
|
+
mode = excluded.mode,
|
|
270
|
+
network_id = excluded.network_id,
|
|
271
|
+
tx_id = excluded.tx_id,
|
|
272
|
+
created_at = excluded.created_at,
|
|
273
|
+
raw_json = excluded.raw_json,
|
|
274
|
+
file_path = excluded.file_path,
|
|
275
|
+
file_mtime_ms = excluded.file_mtime_ms,
|
|
276
|
+
indexed_at = excluded.indexed_at
|
|
164
277
|
`);
|
|
165
|
-
const insertEdge = this.db.prepare(`
|
|
166
|
-
INSERT OR REPLACE INTO lineage_edges (lineage_id, parent_artifact_id, child_artifact_id, edge_kind, created_at)
|
|
167
|
-
VALUES (?, ?, ?, ?, ?)
|
|
278
|
+
const insertEdge = this.db.prepare(`
|
|
279
|
+
INSERT OR REPLACE INTO lineage_edges (lineage_id, parent_artifact_id, child_artifact_id, edge_kind, created_at)
|
|
280
|
+
VALUES (?, ?, ?, ?, ?)
|
|
168
281
|
`);
|
|
169
282
|
const artifactsToLink = [];
|
|
283
|
+
let skipped = 0;
|
|
170
284
|
for (const file of files) {
|
|
171
285
|
result.artifacts.scanned++;
|
|
172
286
|
const stat = fs.statSync(file);
|
|
287
|
+
// Incremental sync optimization: skip unchanged files
|
|
288
|
+
if (!specificPaths && !this.needsReindex(file, stat.mtimeMs)) {
|
|
289
|
+
skipped++;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
173
292
|
try {
|
|
174
293
|
const verification = await verifyArtifactIntegrity(file);
|
|
175
|
-
|
|
294
|
+
const isCorrupt = !verification.ok;
|
|
295
|
+
if (isCorrupt) {
|
|
176
296
|
result.artifacts.corrupted++;
|
|
177
|
-
verification.issues.forEach(
|
|
297
|
+
verification.issues.forEach(issue => {
|
|
178
298
|
const corruptionIssue = {
|
|
179
299
|
code: issue.code,
|
|
180
300
|
severity: issue.severity === "warning" ? "warning" : "error",
|
|
@@ -185,18 +305,27 @@ export class HardkasIndexer {
|
|
|
185
305
|
result.warnings.push(formatCorruptionIssue(corruptionIssue));
|
|
186
306
|
});
|
|
187
307
|
if (this.strict) {
|
|
308
|
+
EnvironmentTelemetry.logAnomaly("EXTERNAL_MUTATION", "critical", "query-store", `Strict mode: corrupted artifact in ${file}`);
|
|
188
309
|
throw new Error(`Strict mode: corrupted artifact in ${file}`);
|
|
189
310
|
}
|
|
190
|
-
continue; // Skip corrupted artifact
|
|
191
311
|
}
|
|
192
312
|
const content = fs.readFileSync(file, "utf-8");
|
|
193
|
-
|
|
313
|
+
let parsed;
|
|
314
|
+
try {
|
|
315
|
+
parsed = JSON.parse(content);
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
// completely invalid JSON
|
|
319
|
+
const artifactId = path.basename(file, ".json");
|
|
320
|
+
upsertArtifact.run(artifactId, "INVALID_JSON", "unknown", 0, "CORRUPTED", "unknown", "unknown", null, null, content, file, stat.mtimeMs, indexedAt);
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
194
323
|
// Artifact ID is required for indexing
|
|
195
324
|
const artifactId = parsed.artifactId || parsed.contentHash || calculateContentHash(parsed);
|
|
196
|
-
const hash = parsed.contentHash || calculateContentHash(parsed);
|
|
197
|
-
upsertArtifact.run(artifactId, hash, parsed.schema, parsed.version, parsed.kind || parsed.schema, parsed.mode || "unknown", parsed.networkId || "unknown", parsed.txId || null, parsed.createdAt || null, content, file, stat.mtimeMs, indexedAt);
|
|
325
|
+
const hash = isCorrupt ? "MISMATCH" : (parsed.contentHash || calculateContentHash(parsed));
|
|
326
|
+
upsertArtifact.run(artifactId, hash, parsed.schema || "unknown", parsed.version || 0, isCorrupt ? "CORRUPTED" : (parsed.kind || parsed.schema), parsed.mode || "unknown", parsed.networkId || "unknown", parsed.txId || null, parsed.createdAt || null, content, file, stat.mtimeMs, indexedAt);
|
|
198
327
|
result.artifacts.indexed++;
|
|
199
|
-
if (parsed.lineage && parsed.lineage.parentArtifactId) {
|
|
328
|
+
if (!isCorrupt && parsed.lineage && parsed.lineage.parentArtifactId) {
|
|
200
329
|
artifactsToLink.push(parsed);
|
|
201
330
|
}
|
|
202
331
|
}
|
|
@@ -204,7 +333,7 @@ export class HardkasIndexer {
|
|
|
204
333
|
result.artifacts.corrupted++;
|
|
205
334
|
const code = e instanceof SyntaxError ? "ARTIFACT_JSON_INVALID" : "ARTIFACT_ID_INVALID";
|
|
206
335
|
const corruptionIssue = {
|
|
207
|
-
code
|
|
336
|
+
code,
|
|
208
337
|
severity: "error",
|
|
209
338
|
message: e.message,
|
|
210
339
|
path: file
|
|
@@ -224,33 +353,86 @@ export class HardkasIndexer {
|
|
|
224
353
|
result.warnings.push(`Failed to link lineage for ${parsed.artifactId}: ${e.message}`);
|
|
225
354
|
}
|
|
226
355
|
}
|
|
356
|
+
// Pass 3: Build lineage closure (transitive ancestor/descendant relationships)
|
|
357
|
+
this.buildLineageClosure();
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Builds the transitive closure of the lineage graph.
|
|
361
|
+
* For each edge (parent -> child), we also store (grandparent -> child), etc.
|
|
362
|
+
* This enables O(1) ancestor/descendant queries without recursive CTEs.
|
|
363
|
+
*/
|
|
364
|
+
buildLineageClosure() {
|
|
365
|
+
try {
|
|
366
|
+
// Wipe and rebuild closure from edges (idempotent)
|
|
367
|
+
this.db.exec("DELETE FROM lineage_closure;");
|
|
368
|
+
// Direct edges: depth 1
|
|
369
|
+
this.db.exec(`
|
|
370
|
+
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
371
|
+
SELECT parent_artifact_id, child_artifact_id, 1, created_at
|
|
372
|
+
FROM lineage_edges;
|
|
373
|
+
`);
|
|
374
|
+
// Transitive closure: iterate until no new rows are added
|
|
375
|
+
let added = 1;
|
|
376
|
+
let currentDepth = 1;
|
|
377
|
+
const maxDepth = 100; // Safety limit
|
|
378
|
+
while (added > 0 && currentDepth < maxDepth) {
|
|
379
|
+
currentDepth++;
|
|
380
|
+
const insertResult = this.db.prepare(`
|
|
381
|
+
INSERT OR IGNORE INTO lineage_closure (ancestor_id, descendant_id, depth, created_at)
|
|
382
|
+
SELECT c1.ancestor_id, c2.descendant_id, ? , c2.created_at
|
|
383
|
+
FROM lineage_closure c1
|
|
384
|
+
JOIN lineage_closure c2 ON c1.descendant_id = c2.ancestor_id
|
|
385
|
+
WHERE c1.depth = ? - 1
|
|
386
|
+
AND NOT EXISTS (
|
|
387
|
+
SELECT 1 FROM lineage_closure existing
|
|
388
|
+
WHERE existing.ancestor_id = c1.ancestor_id AND existing.descendant_id = c2.descendant_id
|
|
389
|
+
)
|
|
390
|
+
`).run(currentDepth, currentDepth);
|
|
391
|
+
added = insertResult.changes;
|
|
392
|
+
}
|
|
393
|
+
// Update lineage stats
|
|
394
|
+
const closureCount = this.db.prepare("SELECT COUNT(*) as count FROM lineage_closure").get().count;
|
|
395
|
+
const edgeCount = this.db.prepare("SELECT COUNT(*) as count FROM lineage_edges").get().count;
|
|
396
|
+
const maxLineageDepth = this.db.prepare("SELECT COALESCE(MAX(depth), 0) as maxDepth FROM lineage_closure").get().maxDepth;
|
|
397
|
+
const updateStat = this.db.prepare("INSERT OR REPLACE INTO lineage_stats (stat_key, stat_value, updated_at) VALUES (?, ?, ?)");
|
|
398
|
+
const now = new Date().toISOString(); // hardkas-determinism-allow: stats metadata timestamp
|
|
399
|
+
updateStat.run("closure_entries", String(closureCount), now);
|
|
400
|
+
updateStat.run("direct_edges", String(edgeCount), now);
|
|
401
|
+
updateStat.run("max_lineage_depth", String(maxLineageDepth), now);
|
|
402
|
+
}
|
|
403
|
+
catch (e) {
|
|
404
|
+
// lineage_closure table might not exist yet (pre-v3 migration)
|
|
405
|
+
// Silently skip - this is non-critical
|
|
406
|
+
}
|
|
227
407
|
}
|
|
228
408
|
syncEvents(result) {
|
|
229
409
|
const eventsPath = path.join(this.hardkasDir, "events.jsonl");
|
|
230
410
|
if (!fs.existsSync(eventsPath))
|
|
231
411
|
return;
|
|
232
412
|
const stat = fs.statSync(eventsPath);
|
|
233
|
-
const indexedAt = new Date().toISOString();
|
|
413
|
+
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
234
414
|
const content = fs.readFileSync(eventsPath, "utf-8");
|
|
235
415
|
const lines = content.split("\n");
|
|
236
|
-
const upsertEvent = this.db.prepare(`
|
|
237
|
-
INSERT INTO events
|
|
238
|
-
(event_id, kind, domain, timestamp, workflow_id, correlation_id, causation_id, tx_id, artifact_id, network_id, raw_json, file_path, file_mtime_ms, indexed_at)
|
|
239
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
240
|
-
ON CONFLICT(
|
|
241
|
-
|
|
242
|
-
domain = excluded.domain,
|
|
243
|
-
timestamp = excluded.timestamp,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
causation_id = excluded.causation_id,
|
|
247
|
-
tx_id = excluded.tx_id,
|
|
248
|
-
artifact_id = excluded.artifact_id,
|
|
249
|
-
network_id = excluded.network_id,
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
416
|
+
const upsertEvent = this.db.prepare(`
|
|
417
|
+
INSERT INTO events
|
|
418
|
+
(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)
|
|
419
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
420
|
+
ON CONFLICT(correlation_id, sequence_number, kind) DO UPDATE SET
|
|
421
|
+
event_id = excluded.event_id,
|
|
422
|
+
domain = excluded.domain,
|
|
423
|
+
timestamp = excluded.timestamp,
|
|
424
|
+
emitted_at = excluded.emitted_at,
|
|
425
|
+
workflow_id = excluded.workflow_id,
|
|
426
|
+
causation_id = excluded.causation_id,
|
|
427
|
+
tx_id = excluded.tx_id,
|
|
428
|
+
artifact_id = excluded.artifact_id,
|
|
429
|
+
network_id = excluded.network_id,
|
|
430
|
+
global_offset = excluded.global_offset,
|
|
431
|
+
source_subsystem = excluded.source_subsystem,
|
|
432
|
+
raw_json = excluded.raw_json,
|
|
433
|
+
file_path = excluded.file_path,
|
|
434
|
+
file_mtime_ms = excluded.file_mtime_ms,
|
|
435
|
+
indexed_at = excluded.indexed_at
|
|
254
436
|
`);
|
|
255
437
|
for (let i = 0; i < lines.length; i++) {
|
|
256
438
|
const line = lines[i].trim();
|
|
@@ -275,7 +457,7 @@ export class HardkasIndexer {
|
|
|
275
457
|
result.warnings.push(formatCorruptionIssue(issue));
|
|
276
458
|
continue;
|
|
277
459
|
}
|
|
278
|
-
upsertEvent.run(parsed.eventId, parsed.kind, parsed.domain, parsed.timestamp || null, parsed.workflowId, parsed.correlationId, parsed.causationId || null, parsed.txId || null, parsed.artifactId || null, parsed.networkId, line, eventsPath, stat.mtimeMs, indexedAt);
|
|
460
|
+
upsertEvent.run(parsed.eventId, parsed.kind, parsed.domain, parsed.timestamp || null, parsed.emittedAt || parsed.timestamp || null, parsed.workflowId, parsed.correlationId, parsed.causationId || null, parsed.txId || null, parsed.artifactId || null, parsed.networkId, parsed.sequenceNumber ?? 0, parsed.globalOffset ?? lineNum, parsed.sourceSubsystem || 'unknown', line, eventsPath, stat.mtimeMs, indexedAt);
|
|
279
461
|
result.events.indexed++;
|
|
280
462
|
}
|
|
281
463
|
catch (e) {
|
|
@@ -296,35 +478,35 @@ export class HardkasIndexer {
|
|
|
296
478
|
}
|
|
297
479
|
}
|
|
298
480
|
syncTraces() {
|
|
299
|
-
const upsertTrace = this.db.prepare(`
|
|
300
|
-
INSERT INTO traces (trace_id, workflow_id, root_event_id, status, started_at, ended_at)
|
|
301
|
-
SELECT
|
|
302
|
-
'trace-' || workflow_id as trace_id,
|
|
303
|
-
workflow_id,
|
|
304
|
-
event_id as root_event_id,
|
|
305
|
-
CASE
|
|
306
|
-
WHEN kind = 'workflow.completed' THEN 'completed'
|
|
307
|
-
WHEN kind = 'workflow.failed' THEN 'failed'
|
|
308
|
-
ELSE 'running'
|
|
309
|
-
END as status,
|
|
310
|
-
timestamp as started_at,
|
|
311
|
-
CASE
|
|
312
|
-
WHEN kind IN ('workflow.completed', 'workflow.failed') THEN timestamp
|
|
313
|
-
ELSE NULL
|
|
314
|
-
END as ended_at
|
|
315
|
-
FROM events
|
|
316
|
-
WHERE kind LIKE 'workflow.%'
|
|
317
|
-
ON CONFLICT(workflow_id) DO UPDATE SET
|
|
318
|
-
status = CASE
|
|
319
|
-
WHEN excluded.status IN ('completed', 'failed') THEN excluded.status
|
|
320
|
-
ELSE traces.status
|
|
321
|
-
END,
|
|
322
|
-
ended_at = CASE
|
|
323
|
-
WHEN excluded.status IN ('completed', 'failed') THEN excluded.ended_at
|
|
324
|
-
ELSE traces.ended_at
|
|
325
|
-
END,
|
|
326
|
-
root_event_id = COALESCE(traces.root_event_id, excluded.root_event_id),
|
|
327
|
-
started_at = COALESCE(traces.started_at, excluded.started_at)
|
|
481
|
+
const upsertTrace = this.db.prepare(`
|
|
482
|
+
INSERT INTO traces (trace_id, workflow_id, root_event_id, status, started_at, ended_at)
|
|
483
|
+
SELECT
|
|
484
|
+
'trace-' || workflow_id as trace_id,
|
|
485
|
+
workflow_id,
|
|
486
|
+
event_id as root_event_id,
|
|
487
|
+
CASE
|
|
488
|
+
WHEN kind = 'workflow.completed' THEN 'completed'
|
|
489
|
+
WHEN kind = 'workflow.failed' THEN 'failed'
|
|
490
|
+
ELSE 'running'
|
|
491
|
+
END as status,
|
|
492
|
+
timestamp as started_at,
|
|
493
|
+
CASE
|
|
494
|
+
WHEN kind IN ('workflow.completed', 'workflow.failed') THEN timestamp
|
|
495
|
+
ELSE NULL
|
|
496
|
+
END as ended_at
|
|
497
|
+
FROM events
|
|
498
|
+
WHERE kind LIKE 'workflow.%'
|
|
499
|
+
ON CONFLICT(workflow_id) DO UPDATE SET
|
|
500
|
+
status = CASE
|
|
501
|
+
WHEN excluded.status IN ('completed', 'failed') THEN excluded.status
|
|
502
|
+
ELSE traces.status
|
|
503
|
+
END,
|
|
504
|
+
ended_at = CASE
|
|
505
|
+
WHEN excluded.status IN ('completed', 'failed') THEN excluded.ended_at
|
|
506
|
+
ELSE traces.ended_at
|
|
507
|
+
END,
|
|
508
|
+
root_event_id = COALESCE(traces.root_event_id, excluded.root_event_id),
|
|
509
|
+
started_at = COALESCE(traces.started_at, excluded.started_at)
|
|
328
510
|
`);
|
|
329
511
|
upsertTrace.run();
|
|
330
512
|
}
|
|
@@ -333,6 +515,7 @@ export class HardkasIndexer {
|
|
|
333
515
|
const deleteArtifact = this.db.prepare("DELETE FROM artifacts WHERE artifact_id = ?");
|
|
334
516
|
for (const row of rows) {
|
|
335
517
|
if (!row.file_path || !fs.existsSync(row.file_path)) {
|
|
518
|
+
EnvironmentTelemetry.logAnomaly("EXTERNAL_MUTATION", "high", "query-store", `Zombie artifact cleaned up: ${row.artifact_id}`);
|
|
336
519
|
deleteArtifact.run(row.artifact_id);
|
|
337
520
|
}
|
|
338
521
|
}
|
|
@@ -351,11 +534,11 @@ export class HardkasIndexer {
|
|
|
351
534
|
const filePath = path.join(dir, file);
|
|
352
535
|
const stat = fs.statSync(filePath);
|
|
353
536
|
if (stat.isDirectory()) {
|
|
354
|
-
if (file === "node_modules" || file === ".git")
|
|
537
|
+
if (file === "node_modules" || file === ".git" || file === "keystore" || file === "snapshots")
|
|
355
538
|
continue;
|
|
356
539
|
results = results.concat(this.walk(filePath));
|
|
357
540
|
}
|
|
358
|
-
else if (file.endsWith(".json") && !file.endsWith("events.jsonl") && file !== "state.json") {
|
|
541
|
+
else if (file.endsWith(".json") && !file.endsWith("events.jsonl") && file !== "state.json" && !file.endsWith("localnet.json") && !file.endsWith("accounts.real.json") && !file.endsWith("sessions.json")) {
|
|
359
542
|
results.push(filePath);
|
|
360
543
|
}
|
|
361
544
|
}
|
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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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface LedgerAppenderOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Attaches a listener to the core in-memory event bus to persist
|
|
6
|
+
* all emitted events to the deterministic event ledger (.hardkas/events.jsonl).
|
|
7
|
+
*/
|
|
8
|
+
export declare function attachLedgerAppender(options?: LedgerAppenderOptions): () => void;
|
|
9
|
+
/**
|
|
10
|
+
* Detaches the current ledger appender if attached.
|
|
11
|
+
*/
|
|
12
|
+
export declare function detachLedgerAppender(): void;
|
|
13
|
+
//# sourceMappingURL=ledger-appender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-appender.d.ts","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,IAAI,CA8BpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,SAKnC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { coreEvents, AppendCoordinator } from "@hardkas/core";
|
|
4
|
+
let appenderUnsubscribe = null;
|
|
5
|
+
/**
|
|
6
|
+
* Attaches a listener to the core in-memory event bus to persist
|
|
7
|
+
* all emitted events to the deterministic event ledger (.hardkas/events.jsonl).
|
|
8
|
+
*/
|
|
9
|
+
export function attachLedgerAppender(options = {}) {
|
|
10
|
+
// Prevent duplicate attachments in the same process
|
|
11
|
+
if (appenderUnsubscribe) {
|
|
12
|
+
return appenderUnsubscribe;
|
|
13
|
+
}
|
|
14
|
+
const cwd = options.cwd || process.cwd();
|
|
15
|
+
const hardkasDir = path.join(cwd, ".hardkas");
|
|
16
|
+
const ledgerPath = path.join(hardkasDir, "events.jsonl");
|
|
17
|
+
// Ensure directory exists
|
|
18
|
+
if (!fs.existsSync(hardkasDir)) {
|
|
19
|
+
fs.mkdirSync(hardkasDir, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
const listener = (event) => {
|
|
22
|
+
try {
|
|
23
|
+
const line = JSON.stringify(event);
|
|
24
|
+
AppendCoordinator.appendAtomic(ledgerPath, line, cwd);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
// Intentionally swallow errors so the appender doesn't crash the main process.
|
|
28
|
+
// But in dev mode, we might want to log it.
|
|
29
|
+
if (process.env.DEBUG) {
|
|
30
|
+
console.error("Failed to append event to ledger:", e);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
appenderUnsubscribe = coreEvents.on(listener);
|
|
35
|
+
return appenderUnsubscribe;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detaches the current ledger appender if attached.
|
|
39
|
+
*/
|
|
40
|
+
export function detachLedgerAppender() {
|
|
41
|
+
if (appenderUnsubscribe) {
|
|
42
|
+
appenderUnsubscribe();
|
|
43
|
+
appenderUnsubscribe = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ledger-appender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger-appender.js","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAsB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAMlF,IAAI,mBAAmB,GAAwB,IAAI,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,oDAAoD;IACpD,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IAEzD,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,iBAAiB,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,+EAA+E;YAC/E,4CAA4C;YAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,mBAAmB,GAAG,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,mBAAmB,EAAE,CAAC;QACxB,mBAAmB,EAAE,CAAC;QACtB,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
package/dist/migrations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,GAAG;IAE3B;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAWjC;;OAEG;IACI,oBAAoB,IAAI,qBAAqB,EAAE;IAStD;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,cAAc,GAAG,QAAQ,CAAA;KAAE;IAkDtG;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO;CAkB/E;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IACd,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,GAAG;IAE3B;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAWjC;;OAEG;IACI,oBAAoB,IAAI,qBAAqB,EAAE;IAStD;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,IAAI,GAAG,cAAc,GAAG,QAAQ,CAAA;KAAE;IAkDtG;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO;CAkB/E;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAsMjC,CAAC"}
|
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
|
/**
|
|
@@ -58,7 +58,7 @@ export class MigrationRunner {
|
|
|
58
58
|
this.db.exec("BEGIN TRANSACTION;");
|
|
59
59
|
m.up(this.db);
|
|
60
60
|
const stmt = this.db.prepare("INSERT INTO hardkas_migrations (version, name, checksum, applied_at) VALUES (?, ?, ?, ?)");
|
|
61
|
-
stmt.run(m.version, m.name, m.checksum, new Date().toISOString());
|
|
61
|
+
stmt.run(m.version, m.name, m.checksum, new Date().toISOString()); // hardkas-determinism-allow: migrations applied_at metadata
|
|
62
62
|
this.db.exec("COMMIT;");
|
|
63
63
|
appliedCount++;
|
|
64
64
|
}
|
|
@@ -86,7 +86,7 @@ export class MigrationRunner {
|
|
|
86
86
|
for (const m of migrations) {
|
|
87
87
|
if (m.version <= knownVersion) {
|
|
88
88
|
const stmt = this.db.prepare("INSERT INTO hardkas_migrations (version, name, checksum, applied_at) VALUES (?, ?, ?, ?)");
|
|
89
|
-
stmt.run(m.version, m.name, m.checksum, new Date().toISOString());
|
|
89
|
+
stmt.run(m.version, m.name, m.checksum, new Date().toISOString()); // hardkas-determinism-allow: legacy bootstrap metadata
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
return true;
|
|
@@ -102,92 +102,195 @@ export const MIGRATIONS = [
|
|
|
102
102
|
name: "initial_schema",
|
|
103
103
|
checksum: "hardkas_v1_baseline",
|
|
104
104
|
up: (db) => {
|
|
105
|
-
db.exec(`
|
|
106
|
-
CREATE TABLE IF NOT EXISTS metadata (
|
|
107
|
-
key TEXT PRIMARY KEY,
|
|
108
|
-
value TEXT NOT NULL
|
|
109
|
-
);
|
|
110
|
-
|
|
111
|
-
CREATE TABLE IF NOT EXISTS artifacts (
|
|
112
|
-
artifact_id TEXT PRIMARY KEY,
|
|
113
|
-
content_hash TEXT NOT NULL,
|
|
114
|
-
schema TEXT NOT NULL,
|
|
115
|
-
version TEXT NOT NULL,
|
|
116
|
-
kind TEXT NOT NULL,
|
|
117
|
-
mode TEXT NOT NULL DEFAULT 'unknown',
|
|
118
|
-
network_id TEXT NOT NULL,
|
|
119
|
-
tx_id TEXT,
|
|
120
|
-
created_at TEXT,
|
|
121
|
-
raw_json TEXT NOT NULL,
|
|
122
|
-
file_path TEXT,
|
|
123
|
-
file_mtime_ms INTEGER,
|
|
124
|
-
indexed_at TEXT
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
|
|
128
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
|
|
129
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
|
|
130
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_mode ON artifacts(mode);
|
|
131
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
|
|
132
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
|
|
133
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
|
|
134
|
-
CREATE INDEX IF NOT EXISTS idx_artifacts_file_path ON artifacts(file_path);
|
|
135
|
-
|
|
136
|
-
CREATE TABLE IF NOT EXISTS lineage_edges (
|
|
137
|
-
lineage_id TEXT NOT NULL,
|
|
138
|
-
parent_artifact_id TEXT NOT NULL,
|
|
139
|
-
child_artifact_id TEXT NOT NULL,
|
|
140
|
-
edge_kind TEXT NOT NULL,
|
|
141
|
-
created_at TEXT,
|
|
142
|
-
PRIMARY KEY (parent_artifact_id, child_artifact_id),
|
|
143
|
-
FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
144
|
-
FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
145
|
-
);
|
|
146
|
-
|
|
147
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
|
|
148
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
|
|
149
|
-
CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
|
|
150
|
-
|
|
151
|
-
CREATE TABLE IF NOT EXISTS events (
|
|
152
|
-
event_id TEXT PRIMARY KEY,
|
|
153
|
-
kind TEXT NOT NULL,
|
|
154
|
-
domain TEXT NOT NULL,
|
|
155
|
-
timestamp TEXT,
|
|
156
|
-
workflow_id TEXT NOT NULL,
|
|
157
|
-
correlation_id TEXT NOT NULL,
|
|
158
|
-
causation_id TEXT,
|
|
159
|
-
tx_id TEXT,
|
|
160
|
-
artifact_id TEXT,
|
|
161
|
-
network_id TEXT NOT NULL,
|
|
162
|
-
raw_json TEXT NOT NULL,
|
|
163
|
-
file_path TEXT,
|
|
164
|
-
file_mtime_ms INTEGER,
|
|
165
|
-
indexed_at TEXT
|
|
166
|
-
);
|
|
167
|
-
|
|
168
|
-
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
169
|
-
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
170
|
-
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
171
|
-
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
172
|
-
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
173
|
-
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
174
|
-
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
175
|
-
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
176
|
-
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
177
|
-
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
178
|
-
|
|
179
|
-
CREATE TABLE IF NOT EXISTS traces (
|
|
180
|
-
trace_id TEXT PRIMARY KEY,
|
|
181
|
-
workflow_id TEXT UNIQUE NOT NULL,
|
|
182
|
-
root_event_id TEXT,
|
|
183
|
-
status TEXT NOT NULL,
|
|
184
|
-
started_at TEXT,
|
|
185
|
-
ended_at TEXT,
|
|
186
|
-
FOREIGN KEY (root_event_id) REFERENCES events(event_id) ON DELETE SET NULL
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
|
|
190
|
-
CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
|
|
105
|
+
db.exec(`
|
|
106
|
+
CREATE TABLE IF NOT EXISTS metadata (
|
|
107
|
+
key TEXT PRIMARY KEY,
|
|
108
|
+
value TEXT NOT NULL
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
CREATE TABLE IF NOT EXISTS artifacts (
|
|
112
|
+
artifact_id TEXT PRIMARY KEY,
|
|
113
|
+
content_hash TEXT NOT NULL,
|
|
114
|
+
schema TEXT NOT NULL,
|
|
115
|
+
version TEXT NOT NULL,
|
|
116
|
+
kind TEXT NOT NULL,
|
|
117
|
+
mode TEXT NOT NULL DEFAULT 'unknown',
|
|
118
|
+
network_id TEXT NOT NULL,
|
|
119
|
+
tx_id TEXT,
|
|
120
|
+
created_at TEXT,
|
|
121
|
+
raw_json TEXT NOT NULL,
|
|
122
|
+
file_path TEXT,
|
|
123
|
+
file_mtime_ms INTEGER,
|
|
124
|
+
indexed_at TEXT
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_content_hash ON artifacts(content_hash);
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_schema ON artifacts(schema);
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON artifacts(kind);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_mode ON artifacts(mode);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_network_id ON artifacts(network_id);
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_tx_id ON artifacts(tx_id);
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_created_at ON artifacts(created_at);
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_file_path ON artifacts(file_path);
|
|
135
|
+
|
|
136
|
+
CREATE TABLE IF NOT EXISTS lineage_edges (
|
|
137
|
+
lineage_id TEXT NOT NULL,
|
|
138
|
+
parent_artifact_id TEXT NOT NULL,
|
|
139
|
+
child_artifact_id TEXT NOT NULL,
|
|
140
|
+
edge_kind TEXT NOT NULL,
|
|
141
|
+
created_at TEXT,
|
|
142
|
+
PRIMARY KEY (parent_artifact_id, child_artifact_id),
|
|
143
|
+
FOREIGN KEY (parent_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
144
|
+
FOREIGN KEY (child_artifact_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
145
|
+
);
|
|
146
|
+
|
|
147
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_parent ON lineage_edges(parent_artifact_id);
|
|
148
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_child ON lineage_edges(child_artifact_id);
|
|
149
|
+
CREATE INDEX IF NOT EXISTS idx_lineage_id ON lineage_edges(lineage_id);
|
|
150
|
+
|
|
151
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
152
|
+
event_id TEXT PRIMARY KEY,
|
|
153
|
+
kind TEXT NOT NULL,
|
|
154
|
+
domain TEXT NOT NULL,
|
|
155
|
+
timestamp TEXT,
|
|
156
|
+
workflow_id TEXT NOT NULL,
|
|
157
|
+
correlation_id TEXT NOT NULL,
|
|
158
|
+
causation_id TEXT,
|
|
159
|
+
tx_id TEXT,
|
|
160
|
+
artifact_id TEXT,
|
|
161
|
+
network_id TEXT NOT NULL,
|
|
162
|
+
raw_json TEXT NOT NULL,
|
|
163
|
+
file_path TEXT,
|
|
164
|
+
file_mtime_ms INTEGER,
|
|
165
|
+
indexed_at TEXT
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
169
|
+
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
170
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
171
|
+
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
172
|
+
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
173
|
+
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
174
|
+
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
175
|
+
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
176
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
177
|
+
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
178
|
+
|
|
179
|
+
CREATE TABLE IF NOT EXISTS traces (
|
|
180
|
+
trace_id TEXT PRIMARY KEY,
|
|
181
|
+
workflow_id TEXT UNIQUE NOT NULL,
|
|
182
|
+
root_event_id TEXT,
|
|
183
|
+
status TEXT NOT NULL,
|
|
184
|
+
started_at TEXT,
|
|
185
|
+
ended_at TEXT,
|
|
186
|
+
FOREIGN KEY (root_event_id) REFERENCES events(event_id) ON DELETE SET NULL
|
|
187
|
+
);
|
|
188
|
+
|
|
189
|
+
CREATE INDEX IF NOT EXISTS idx_traces_workflow_id ON traces(workflow_id);
|
|
190
|
+
CREATE INDEX IF NOT EXISTS idx_traces_status ON traces(status);
|
|
191
|
+
`);
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
version: 2,
|
|
196
|
+
name: "event_persistence_guarantees",
|
|
197
|
+
checksum: "hardkas_v2_events",
|
|
198
|
+
up: (db) => {
|
|
199
|
+
db.exec(`
|
|
200
|
+
CREATE TABLE IF NOT EXISTS events_v2 (
|
|
201
|
+
event_id TEXT PRIMARY KEY,
|
|
202
|
+
kind TEXT NOT NULL,
|
|
203
|
+
domain TEXT NOT NULL,
|
|
204
|
+
timestamp TEXT,
|
|
205
|
+
emitted_at TEXT,
|
|
206
|
+
workflow_id TEXT NOT NULL,
|
|
207
|
+
correlation_id TEXT NOT NULL,
|
|
208
|
+
causation_id TEXT,
|
|
209
|
+
tx_id TEXT,
|
|
210
|
+
artifact_id TEXT,
|
|
211
|
+
network_id TEXT NOT NULL,
|
|
212
|
+
sequence_number INTEGER NOT NULL DEFAULT 0,
|
|
213
|
+
global_offset INTEGER,
|
|
214
|
+
source_subsystem TEXT NOT NULL DEFAULT 'unknown',
|
|
215
|
+
raw_json TEXT NOT NULL,
|
|
216
|
+
file_path TEXT,
|
|
217
|
+
file_mtime_ms INTEGER,
|
|
218
|
+
indexed_at TEXT,
|
|
219
|
+
UNIQUE(correlation_id, sequence_number, kind)
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
INSERT INTO events_v2 (
|
|
223
|
+
event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id,
|
|
224
|
+
tx_id, artifact_id, network_id, sequence_number, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at
|
|
225
|
+
)
|
|
226
|
+
SELECT
|
|
227
|
+
event_id, kind, domain, timestamp, timestamp, workflow_id, correlation_id, causation_id,
|
|
228
|
+
tx_id, artifact_id, network_id, 0, 'legacy', raw_json, file_path, file_mtime_ms, indexed_at
|
|
229
|
+
FROM events;
|
|
230
|
+
|
|
231
|
+
DROP TABLE events;
|
|
232
|
+
ALTER TABLE events_v2 RENAME TO events;
|
|
233
|
+
|
|
234
|
+
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
235
|
+
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
236
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
237
|
+
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
238
|
+
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
239
|
+
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
240
|
+
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
241
|
+
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
242
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
243
|
+
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
244
|
+
CREATE INDEX IF NOT EXISTS idx_events_global_offset ON events(global_offset);
|
|
245
|
+
`);
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
version: 3,
|
|
250
|
+
name: "lineage_closure_and_scale_indices",
|
|
251
|
+
checksum: "hardkas_v3_lineage_scale",
|
|
252
|
+
up: (db) => {
|
|
253
|
+
db.exec(`
|
|
254
|
+
-- Lineage closure table: transitive ancestor/descendant relationships
|
|
255
|
+
-- Enables O(1) "is X an ancestor of Y?" queries without recursive CTEs
|
|
256
|
+
CREATE TABLE IF NOT EXISTS lineage_closure (
|
|
257
|
+
ancestor_id TEXT NOT NULL,
|
|
258
|
+
descendant_id TEXT NOT NULL,
|
|
259
|
+
depth INTEGER NOT NULL DEFAULT 1,
|
|
260
|
+
path_hash TEXT,
|
|
261
|
+
created_at TEXT,
|
|
262
|
+
PRIMARY KEY (ancestor_id, descendant_id),
|
|
263
|
+
FOREIGN KEY (ancestor_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE,
|
|
264
|
+
FOREIGN KEY (descendant_id) REFERENCES artifacts(artifact_id) ON DELETE CASCADE
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
CREATE INDEX IF NOT EXISTS idx_closure_ancestor ON lineage_closure(ancestor_id);
|
|
268
|
+
CREATE INDEX IF NOT EXISTS idx_closure_descendant ON lineage_closure(descendant_id);
|
|
269
|
+
CREATE INDEX IF NOT EXISTS idx_closure_depth ON lineage_closure(depth);
|
|
270
|
+
|
|
271
|
+
-- Add depth column to lineage_edges for direct edge depth tracking
|
|
272
|
+
ALTER TABLE lineage_edges ADD COLUMN depth INTEGER NOT NULL DEFAULT 1;
|
|
273
|
+
|
|
274
|
+
-- File mtime index for incremental sync: skip unchanged files
|
|
275
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_file_mtime_ms ON artifacts(file_mtime_ms);
|
|
276
|
+
|
|
277
|
+
-- Lineage statistics metadata view for scale monitoring
|
|
278
|
+
CREATE TABLE IF NOT EXISTS lineage_stats (
|
|
279
|
+
stat_key TEXT PRIMARY KEY,
|
|
280
|
+
stat_value TEXT NOT NULL,
|
|
281
|
+
updated_at TEXT NOT NULL
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
-- Pruning history: track what was pruned and when
|
|
285
|
+
CREATE TABLE IF NOT EXISTS prune_history (
|
|
286
|
+
prune_id TEXT PRIMARY KEY,
|
|
287
|
+
pruned_at TEXT NOT NULL,
|
|
288
|
+
artifacts_pruned INTEGER NOT NULL DEFAULT 0,
|
|
289
|
+
traces_pruned INTEGER NOT NULL DEFAULT 0,
|
|
290
|
+
events_pruned INTEGER NOT NULL DEFAULT 0,
|
|
291
|
+
lineage_roots_preserved INTEGER NOT NULL DEFAULT 0,
|
|
292
|
+
total_bytes_freed INTEGER NOT NULL DEFAULT 0
|
|
293
|
+
);
|
|
191
294
|
`);
|
|
192
295
|
}
|
|
193
296
|
}
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAgB7C,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,EAAO;QAAP,OAAE,GAAF,EAAE,CAAK;IAAG,CAAC;IAE/B;;OAEG;IACI,kBAAkB;QACvB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;KAOZ,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,oBAAoB;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;YACtF,OAAO,IAAI,CAAC,GAAG,EAA6B,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACI,OAAO,CAAC,UAAuB;QACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,IAAI,YAAY,CACpB,mCAAmC,EACnC,2CAA2C,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,SAAS,QAAQ,CAAC,QAAQ,GAAG,CACtH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,UAAU;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;aACvC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAEnC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAEd,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,0FAA0F,CAAC,CAAC;gBACzH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hardkas/query-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1-alpha",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@hardkas/artifacts": "0.
|
|
15
|
-
"@hardkas/core": "0.
|
|
14
|
+
"@hardkas/artifacts": "0.6.1-alpha",
|
|
15
|
+
"@hardkas/core": "0.6.1-alpha"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"tsup": "^8.3.5",
|