@hardkas/query-store 0.12.0-rc.26 → 0.12.0-rc.27
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/db.d.ts +10 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +31 -0
- package/dist/db.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 +11 -4
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +100 -136
- package/dist/indexer.js.map +1 -1
- package/dist/ledger-appender.d.ts +3 -2
- package/dist/ledger-appender.d.ts.map +1 -1
- package/dist/ledger-appender.js +5 -25
- package/dist/ledger-appender.js.map +1 -1
- package/dist/migrations.d.ts +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +57 -1
- package/dist/migrations.js.map +1 -1
- package/dist/projection-status.d.ts +31 -0
- package/dist/projection-status.d.ts.map +1 -0
- package/dist/projection-status.js +106 -0
- package/dist/projection-status.js.map +1 -0
- package/package.json +3 -3
package/dist/db.d.ts
CHANGED
|
@@ -6,11 +6,21 @@ export declare class HardkasStore {
|
|
|
6
6
|
dbPath?: string;
|
|
7
7
|
memory?: boolean;
|
|
8
8
|
});
|
|
9
|
+
/**
|
|
10
|
+
* WORKSPACE-AUTHORITY-1 (WA-I3) · opens a projection that already exists, for reading, with no side effect: it never
|
|
11
|
+
* creates the file or its directory, never migrates, never switches the journal mode. A plain connection is used on
|
|
12
|
+
* purpose: node:sqlite's read-only connection leaves `-wal`/`-shm` files behind, while this one has SQLite remove them
|
|
13
|
+
* when it closes (on `disconnect()`, or when the process exits). Absent → null.
|
|
14
|
+
*/
|
|
15
|
+
static openExisting(dbPath: string): HardkasStore | null;
|
|
16
|
+
private closeOnExit;
|
|
9
17
|
connect(options?: {
|
|
10
18
|
autoMigrate?: boolean;
|
|
11
19
|
readOnly?: boolean;
|
|
12
20
|
}): void;
|
|
13
21
|
disconnect(): void;
|
|
22
|
+
/** The projection file this store reads or writes. */
|
|
23
|
+
get path(): string;
|
|
14
24
|
getDatabase(): any;
|
|
15
25
|
/**
|
|
16
26
|
* Safe migration entry point.
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAI9D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,eAAe,EAAE,MAAM,eAAe,CAAC;AAI9D,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;IAQ/D;;;;;OAKG;WACW,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAkB/D,OAAO,CAAC,WAAW,CAA6B;IAEzC,OAAO,CACZ,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAA2B;IAgC1E,UAAU;IAWjB,sDAAsD;IACtD,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,WAAW,IAAI,GAAG;IAOzB;;;OAGG;IACI,OAAO,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAYrD,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACI,WAAW,IAAI;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,EAAE,CAAA;KAAE;CA4EjE"}
|
package/dist/db.js
CHANGED
|
@@ -16,6 +16,29 @@ export class HardkasStore {
|
|
|
16
16
|
this.dbPath = options.dbPath || path.join(process.cwd(), ".hardkas", "store.db");
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* WORKSPACE-AUTHORITY-1 (WA-I3) · opens a projection that already exists, for reading, with no side effect: it never
|
|
21
|
+
* creates the file or its directory, never migrates, never switches the journal mode. A plain connection is used on
|
|
22
|
+
* purpose: node:sqlite's read-only connection leaves `-wal`/`-shm` files behind, while this one has SQLite remove them
|
|
23
|
+
* when it closes (on `disconnect()`, or when the process exits). Absent → null.
|
|
24
|
+
*/
|
|
25
|
+
static openExisting(dbPath) {
|
|
26
|
+
if (!fs.existsSync(dbPath))
|
|
27
|
+
return null;
|
|
28
|
+
const store = new HardkasStore({ dbPath });
|
|
29
|
+
try {
|
|
30
|
+
store.db = new DatabaseSync(dbPath);
|
|
31
|
+
store.db.exec("PRAGMA busy_timeout = 15000;");
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
store.db = null;
|
|
35
|
+
throw new HardkasError("PROJECTION_UNREADABLE", `Failed to open query projection ${dbPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
36
|
+
}
|
|
37
|
+
store.closeOnExit = () => store.disconnect();
|
|
38
|
+
process.once("exit", store.closeOnExit);
|
|
39
|
+
return store;
|
|
40
|
+
}
|
|
41
|
+
closeOnExit = null;
|
|
19
42
|
connect(options = { autoMigrate: false }) {
|
|
20
43
|
if (this.db)
|
|
21
44
|
return;
|
|
@@ -42,11 +65,19 @@ export class HardkasStore {
|
|
|
42
65
|
}
|
|
43
66
|
}
|
|
44
67
|
disconnect() {
|
|
68
|
+
if (this.closeOnExit) {
|
|
69
|
+
process.removeListener("exit", this.closeOnExit);
|
|
70
|
+
this.closeOnExit = null;
|
|
71
|
+
}
|
|
45
72
|
if (this.db) {
|
|
46
73
|
this.db.close();
|
|
47
74
|
this.db = null;
|
|
48
75
|
}
|
|
49
76
|
}
|
|
77
|
+
/** The projection file this store reads or writes. */
|
|
78
|
+
get path() {
|
|
79
|
+
return this.dbPath;
|
|
80
|
+
}
|
|
50
81
|
getDatabase() {
|
|
51
82
|
if (!this.db) {
|
|
52
83
|
throw new Error("Store not connected. Call connect() first.");
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.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,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,YAAY,EAAmB,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,OAAO,YAAY;IACf,EAAE,GAAe,IAAI,CAAC;IACb,MAAM,CAAS;IAEhC,YAAY,UAAiD,EAAE;QAC7D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.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;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,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;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,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;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,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;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC"}
|
package/dist/indexer.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export interface DoctorReport {
|
|
|
34
34
|
}
|
|
35
35
|
export declare class HardkasIndexer {
|
|
36
36
|
private db;
|
|
37
|
+
private workspaceRoot;
|
|
37
38
|
private hardkasDir;
|
|
38
39
|
private strict;
|
|
39
40
|
constructor(db: any, options?: IndexerOptions);
|
|
@@ -65,10 +66,13 @@ export declare class HardkasIndexer {
|
|
|
65
66
|
*/
|
|
66
67
|
doctor(): DoctorReport;
|
|
67
68
|
/**
|
|
68
|
-
*
|
|
69
|
-
*
|
|
69
|
+
* Whether the indexed row of a file already holds exactly its current content. WORKSPACE-AUTHORITY-1 (WA-I2): an equal
|
|
70
|
+
* mtime alone is not proof (a rewrite within the clock's resolution keeps it), and a projection that claims freshness
|
|
71
|
+
* must hold what the files hold.
|
|
70
72
|
*/
|
|
71
|
-
private
|
|
73
|
+
private isIndexedAsIs;
|
|
74
|
+
/** The given paths that belong to the canonical store set (compared by real path), sorted. */
|
|
75
|
+
private inCanonicalSet;
|
|
72
76
|
private syncArtifacts;
|
|
73
77
|
/**
|
|
74
78
|
* Builds the transitive closure of the lineage graph.
|
|
@@ -78,7 +82,10 @@ export declare class HardkasIndexer {
|
|
|
78
82
|
private buildLineageClosure;
|
|
79
83
|
private syncEvents;
|
|
80
84
|
private syncTraces;
|
|
85
|
+
/**
|
|
86
|
+
* Drops the rows of files that are gone and, after a full sync, of files outside the canonical store set (the
|
|
87
|
+
* projection holds that set and nothing else). With no ledger, there are no events.
|
|
88
|
+
*/
|
|
81
89
|
private cleanupZombies;
|
|
82
|
-
private walk;
|
|
83
90
|
}
|
|
84
91
|
//# sourceMappingURL=indexer.d.ts.map
|
package/dist/indexer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,EAMrB,MAAM,eAAe,CAAC;AAGvB,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,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAU;gBAEZ,EAAE,EAAE,GAAG,EAAE,OAAO,GAAE,cAAmB;IAOjD;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAoCxC;;OAEG;YACW,aAAa;IAqC3B;;;OAGG;IACU,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IA6B5D;;OAEG;IACH;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAqD3C,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACI,MAAM,IAAI,YAAY;IAqH7B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAWrB,8FAA8F;IAC9F,OAAO,CAAC,cAAc;YAYR,aAAa;IAiN3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAmE3B,OAAO,CAAC,UAAU;IAiHlB,OAAO,CAAC,UAAU;IAmClB;;;OAGG;IACH,OAAO,CAAC,cAAc;CA0BvB"}
|
package/dist/indexer.js
CHANGED
|
@@ -4,15 +4,18 @@ import { HardkasSchemas } from "@hardkas/artifacts";
|
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
const require = createRequire(import.meta.url);
|
|
6
6
|
const { DatabaseSync } = require("node:sqlite");
|
|
7
|
-
import { verifyArtifactIntegrity } from "@hardkas/artifacts";
|
|
8
|
-
import { validateEventEnvelope, formatCorruptionIssue, EnvironmentTelemetry } from "@hardkas/core";
|
|
7
|
+
import { verifyArtifactIntegrity, listWorkspaceStoreFilesSync, compareStoreCopies } from "@hardkas/artifacts";
|
|
8
|
+
import { validateEventEnvelope, formatCorruptionIssue, EnvironmentTelemetry, eventLedgerPath, legacyEventLedgerPath } from "@hardkas/core";
|
|
9
|
+
import { computeAuthorityFingerprint, recordProjectionAuthority } from "./projection-status.js";
|
|
9
10
|
export class HardkasIndexer {
|
|
10
11
|
db;
|
|
12
|
+
workspaceRoot;
|
|
11
13
|
hardkasDir;
|
|
12
14
|
strict;
|
|
13
15
|
constructor(db, options = {}) {
|
|
14
16
|
this.db = db;
|
|
15
|
-
this.
|
|
17
|
+
this.workspaceRoot = path.resolve(options.cwd || process.cwd());
|
|
18
|
+
this.hardkasDir = path.join(this.workspaceRoot, ".hardkas");
|
|
16
19
|
this.strict = options.strict || false;
|
|
17
20
|
}
|
|
18
21
|
/**
|
|
@@ -32,11 +35,15 @@ export class HardkasIndexer {
|
|
|
32
35
|
if (!fs.existsSync(this.hardkasDir)) {
|
|
33
36
|
return result;
|
|
34
37
|
}
|
|
38
|
+
// WORKSPACE-AUTHORITY-1 (WA-I2): the authority this sync derives from, taken BEFORE anything is read, so a change
|
|
39
|
+
// that lands while it runs can only make the projection look stale, never fresh.
|
|
40
|
+
const fingerprint = computeAuthorityFingerprint(this.workspaceRoot);
|
|
35
41
|
// HardKAS Policy: Do not nest transactions.
|
|
36
42
|
// Sync handles its own transaction.
|
|
37
43
|
this.db.exec("BEGIN TRANSACTION;");
|
|
38
44
|
try {
|
|
39
45
|
await this._syncInternal(result);
|
|
46
|
+
recordProjectionAuthority(this.db, fingerprint);
|
|
40
47
|
this.db.exec("COMMIT;");
|
|
41
48
|
}
|
|
42
49
|
catch (e) {
|
|
@@ -52,10 +59,14 @@ export class HardkasIndexer {
|
|
|
52
59
|
* Internal indexing logic without transaction management.
|
|
53
60
|
*/
|
|
54
61
|
async _syncInternal(result, specificPaths) {
|
|
55
|
-
|
|
62
|
+
// WORKSPACE-AUTHORITY-1 (C1): the projection indexes exactly the artifact store the resolver reads (its root and its
|
|
63
|
+
// canonical subdirectories), never every JSON file under .hardkas/. A targeted sync only takes paths of that set.
|
|
64
|
+
const canonical = listWorkspaceStoreFilesSync(this.workspaceRoot).map((f) => f.path);
|
|
65
|
+
const files = specificPaths ? this.inCanonicalSet(specificPaths, canonical) : canonical;
|
|
66
|
+
await this.syncArtifacts(result, files, !specificPaths);
|
|
56
67
|
this.syncEvents(result);
|
|
57
68
|
this.syncTraces();
|
|
58
|
-
this.cleanupZombies();
|
|
69
|
+
this.cleanupZombies(specificPaths ? undefined : new Set(canonical));
|
|
59
70
|
// Mark last sync
|
|
60
71
|
this.db
|
|
61
72
|
.prepare("INSERT OR REPLACE INTO metadata (key, value) VALUES (?, ?)")
|
|
@@ -147,6 +158,8 @@ export class HardkasIndexer {
|
|
|
147
158
|
throw e;
|
|
148
159
|
}
|
|
149
160
|
try {
|
|
161
|
+
// WORKSPACE-AUTHORITY-1 (WA-I2): taken before the store is read (see sync)
|
|
162
|
+
const fingerprint = computeAuthorityFingerprint(this.workspaceRoot);
|
|
150
163
|
this.db.exec("BEGIN TRANSACTION;");
|
|
151
164
|
try {
|
|
152
165
|
this._wipeInternal();
|
|
@@ -154,6 +167,7 @@ export class HardkasIndexer {
|
|
|
154
167
|
if (fs.existsSync(this.hardkasDir)) {
|
|
155
168
|
await this._syncInternal(result);
|
|
156
169
|
}
|
|
170
|
+
recordProjectionAuthority(this.db, fingerprint);
|
|
157
171
|
this.db.exec("COMMIT;");
|
|
158
172
|
}
|
|
159
173
|
catch (e) {
|
|
@@ -181,7 +195,7 @@ export class HardkasIndexer {
|
|
|
181
195
|
catch { } // v3+ table
|
|
182
196
|
this.db.exec("DELETE FROM lineage_edges;");
|
|
183
197
|
this.db.exec("DELETE FROM artifacts;");
|
|
184
|
-
this.db.exec("DELETE FROM metadata WHERE key
|
|
198
|
+
this.db.exec("DELETE FROM metadata WHERE key IN ('last_indexed_at', 'authority_fingerprint', 'projection_contract');");
|
|
185
199
|
try {
|
|
186
200
|
this.db.exec("DELETE FROM lineage_stats;");
|
|
187
201
|
}
|
|
@@ -256,7 +270,9 @@ export class HardkasIndexer {
|
|
|
256
270
|
.prepare("SELECT file_path FROM artifacts WHERE kind = 'CORRUPTED'")
|
|
257
271
|
.all();
|
|
258
272
|
report.corruptedFiles = corruptedRows.map((r) => r.file_path);
|
|
259
|
-
// 6.
|
|
273
|
+
// 6. Event sequence positions shared by DISTINCT events. WORKSPACE-AUTHORITY-1 (A): the index keeps one row per event
|
|
274
|
+
// identity, so these are the ledger's own data (e.g. every standalone SDK `artifact.written` is wf_unknown_standalone/1),
|
|
275
|
+
// reported for producers, never a projection defect: they do not make the projection unhealthy.
|
|
260
276
|
const duplicateSequences = this.db
|
|
261
277
|
.prepare(`
|
|
262
278
|
SELECT COUNT(*) as count FROM (
|
|
@@ -281,41 +297,43 @@ export class HardkasIndexer {
|
|
|
281
297
|
report.orphanEdges === 0 &&
|
|
282
298
|
report.duplicateProjections === 0 &&
|
|
283
299
|
report.brokenReplayDependencies === 0 &&
|
|
284
|
-
report.duplicateEventSequences === 0 &&
|
|
285
300
|
report.orphanEvents === 0 &&
|
|
286
301
|
report.corruptedFiles.length === 0;
|
|
287
302
|
return report;
|
|
288
303
|
}
|
|
289
304
|
/**
|
|
290
|
-
*
|
|
291
|
-
*
|
|
305
|
+
* Whether the indexed row of a file already holds exactly its current content. WORKSPACE-AUTHORITY-1 (WA-I2): an equal
|
|
306
|
+
* mtime alone is not proof (a rewrite within the clock's resolution keeps it), and a projection that claims freshness
|
|
307
|
+
* must hold what the files hold.
|
|
292
308
|
*/
|
|
293
|
-
|
|
309
|
+
isIndexedAsIs(filePath, currentMtimeMs, content) {
|
|
294
310
|
try {
|
|
295
311
|
const row = this.db
|
|
296
|
-
.prepare("SELECT file_mtime_ms FROM artifacts WHERE file_path = ?")
|
|
312
|
+
.prepare("SELECT file_mtime_ms, raw_json FROM artifacts WHERE file_path = ?")
|
|
297
313
|
.get(filePath);
|
|
298
|
-
|
|
299
|
-
return true;
|
|
300
|
-
return row.file_mtime_ms !== currentMtimeMs;
|
|
314
|
+
return !!row && row.file_mtime_ms === currentMtimeMs && row.raw_json === content;
|
|
301
315
|
}
|
|
302
316
|
catch {
|
|
303
|
-
return
|
|
317
|
+
return false;
|
|
304
318
|
}
|
|
305
319
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
320
|
+
/** The given paths that belong to the canonical store set (compared by real path), sorted. */
|
|
321
|
+
inCanonicalSet(paths, canonical) {
|
|
322
|
+
const set = new Set(canonical);
|
|
323
|
+
const real = (p) => {
|
|
324
|
+
try {
|
|
325
|
+
return path.resolve(fs.realpathSync(p));
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
return path.resolve(p);
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
return [...new Set(paths.map(real).filter((p) => set.has(p)))].sort();
|
|
332
|
+
}
|
|
333
|
+
async syncArtifacts(result, canonicalFiles, incremental) {
|
|
334
|
+
// Sort files to ensure deterministic indexing order. WORKSPACE-AUTHORITY-1 (C1): an identity's canonical copy comes
|
|
335
|
+
// first, so it is the one its row keeps (the filesystem backend shows the same copy).
|
|
336
|
+
const files = [...canonicalFiles].sort(compareStoreCopies);
|
|
319
337
|
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
320
338
|
const upsertArtifact = this.db.prepare(`
|
|
321
339
|
INSERT INTO artifacts
|
|
@@ -343,9 +361,17 @@ export class HardkasIndexer {
|
|
|
343
361
|
let skipped = 0;
|
|
344
362
|
for (const file of files) {
|
|
345
363
|
result.artifacts.scanned++;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
364
|
+
let stat;
|
|
365
|
+
let currentContent;
|
|
366
|
+
try {
|
|
367
|
+
stat = fs.statSync(file);
|
|
368
|
+
currentContent = fs.readFileSync(file, "utf-8");
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
continue; // gone since it was listed; the zombie cleanup drops its row
|
|
372
|
+
}
|
|
373
|
+
// Incremental sync optimization: skip files whose row already holds exactly their content
|
|
374
|
+
if (incremental && this.isIndexedAsIs(file, stat.mtimeMs, currentContent)) {
|
|
349
375
|
skipped++;
|
|
350
376
|
continue;
|
|
351
377
|
}
|
|
@@ -374,7 +400,7 @@ export class HardkasIndexer {
|
|
|
374
400
|
throw new Error(`Strict mode: corrupted artifact in ${file}`);
|
|
375
401
|
}
|
|
376
402
|
}
|
|
377
|
-
const content =
|
|
403
|
+
const content = currentContent;
|
|
378
404
|
// Wave 1.2 · N2 / IC-5′.9: the index key is the RECOMPUTED artifactId (the
|
|
379
405
|
// verifier's actualHash under the declared version). A file that does not
|
|
380
406
|
// verify is stored as CORRUPTED under a path-derived key, never under the
|
|
@@ -401,7 +427,13 @@ export class HardkasIndexer {
|
|
|
401
427
|
.get(artifactId);
|
|
402
428
|
if (existing && existing.file_path !== file) {
|
|
403
429
|
if (existing.content_hash === hash && existing.file_path && fs.existsSync(existing.file_path)) {
|
|
404
|
-
// An identical copy of an artifact already indexed from another file.
|
|
430
|
+
// An identical copy of an artifact already indexed from another file. The row keeps the canonical copy
|
|
431
|
+
// (compareStoreCopies), whichever of the two was indexed first.
|
|
432
|
+
if (compareStoreCopies(file, existing.file_path) < 0) {
|
|
433
|
+
this.db
|
|
434
|
+
.prepare("UPDATE artifacts SET file_path = ?, file_mtime_ms = ?, raw_json = ? WHERE artifact_id = ?")
|
|
435
|
+
.run(file, stat.mtimeMs, content, artifactId);
|
|
436
|
+
}
|
|
405
437
|
result.artifacts.duplicates++;
|
|
406
438
|
continue;
|
|
407
439
|
}
|
|
@@ -507,19 +539,30 @@ export class HardkasIndexer {
|
|
|
507
539
|
}
|
|
508
540
|
}
|
|
509
541
|
syncEvents(result) {
|
|
510
|
-
|
|
542
|
+
// WORKSPACE-AUTHORITY-1 (A): the workspace's one event ledger (`eventLedgerPath`), never a file under .hardkas/. A
|
|
543
|
+
// legacy `.hardkas/events.jsonl` is never merged into it: it is only reported.
|
|
544
|
+
const eventsPath = eventLedgerPath(this.workspaceRoot);
|
|
545
|
+
const legacyPath = legacyEventLedgerPath(this.workspaceRoot);
|
|
546
|
+
if (fs.existsSync(legacyPath)) {
|
|
547
|
+
result.warnings.push(`A legacy event ledger exists at ${legacyPath}; it is not this workspace's ledger (${eventsPath}) and was not indexed or merged.`);
|
|
548
|
+
}
|
|
511
549
|
if (!fs.existsSync(eventsPath))
|
|
512
550
|
return;
|
|
513
551
|
const stat = fs.statSync(eventsPath);
|
|
514
552
|
const indexedAt = new Date().toISOString(); // hardkas-determinism-allow: index time metadata
|
|
515
553
|
const content = fs.readFileSync(eventsPath, "utf-8");
|
|
516
554
|
const lines = content.split("\n");
|
|
555
|
+
// The index mirrors the ledger: one row per event identity (eventId), every event of the ledger and nothing else.
|
|
556
|
+
this.db.exec("CREATE TEMP TABLE IF NOT EXISTS ledger_event_ids (event_id TEXT PRIMARY KEY); DELETE FROM ledger_event_ids;");
|
|
557
|
+
const markSeen = this.db.prepare("INSERT OR IGNORE INTO ledger_event_ids (event_id) VALUES (?)");
|
|
517
558
|
const upsertEvent = this.db.prepare(`
|
|
518
|
-
INSERT INTO events
|
|
559
|
+
INSERT INTO events
|
|
519
560
|
(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)
|
|
520
561
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
521
|
-
ON CONFLICT(
|
|
522
|
-
|
|
562
|
+
ON CONFLICT(event_id) DO UPDATE SET
|
|
563
|
+
kind = excluded.kind,
|
|
564
|
+
correlation_id = excluded.correlation_id,
|
|
565
|
+
sequence_number = excluded.sequence_number,
|
|
523
566
|
domain = excluded.domain,
|
|
524
567
|
timestamp = excluded.timestamp,
|
|
525
568
|
emitted_at = excluded.emitted_at,
|
|
@@ -559,7 +602,11 @@ export class HardkasIndexer {
|
|
|
559
602
|
continue;
|
|
560
603
|
}
|
|
561
604
|
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);
|
|
562
|
-
|
|
605
|
+
// the same event appended twice is one event
|
|
606
|
+
if (markSeen.run(parsed.eventId).changes === 0)
|
|
607
|
+
result.events.duplicates++;
|
|
608
|
+
else
|
|
609
|
+
result.events.indexed++;
|
|
563
610
|
}
|
|
564
611
|
catch (e) {
|
|
565
612
|
result.events.corrupted++;
|
|
@@ -577,6 +624,8 @@ export class HardkasIndexer {
|
|
|
577
624
|
result.warnings.push(formatCorruptionIssue(issue));
|
|
578
625
|
}
|
|
579
626
|
}
|
|
627
|
+
// an event that is no longer in the ledger (a truncated tail) is no longer in the index
|
|
628
|
+
this.db.exec("DELETE FROM events WHERE event_id NOT IN (SELECT event_id FROM ledger_event_ids);");
|
|
580
629
|
}
|
|
581
630
|
syncTraces() {
|
|
582
631
|
const upsertTrace = this.db.prepare(`
|
|
@@ -611,113 +660,28 @@ export class HardkasIndexer {
|
|
|
611
660
|
`);
|
|
612
661
|
upsertTrace.run();
|
|
613
662
|
}
|
|
614
|
-
|
|
663
|
+
/**
|
|
664
|
+
* Drops the rows of files that are gone and, after a full sync, of files outside the canonical store set (the
|
|
665
|
+
* projection holds that set and nothing else). With no ledger, there are no events.
|
|
666
|
+
*/
|
|
667
|
+
cleanupZombies(canonical) {
|
|
615
668
|
const rows = this.db
|
|
616
669
|
.prepare("SELECT artifact_id, file_path FROM artifacts")
|
|
617
670
|
.all();
|
|
618
671
|
const deleteArtifact = this.db.prepare("DELETE FROM artifacts WHERE artifact_id = ?");
|
|
619
672
|
for (const row of rows) {
|
|
620
|
-
|
|
621
|
-
|
|
673
|
+
const gone = !row.file_path || !fs.existsSync(row.file_path);
|
|
674
|
+
if (gone || (canonical && !canonical.has(row.file_path))) {
|
|
675
|
+
if (gone) {
|
|
676
|
+
EnvironmentTelemetry.logAnomaly("EXTERNAL_MUTATION", "high", "query-store", `Zombie artifact cleaned up: ${row.artifact_id}`);
|
|
677
|
+
}
|
|
622
678
|
deleteArtifact.run(row.artifact_id);
|
|
623
679
|
}
|
|
624
680
|
}
|
|
625
|
-
// Events cleanup (if
|
|
626
|
-
|
|
627
|
-
if (!fs.existsSync(eventsPath)) {
|
|
681
|
+
// Events cleanup (if the workspace's ledger is gone, all events are gone)
|
|
682
|
+
if (!fs.existsSync(eventLedgerPath(this.workspaceRoot))) {
|
|
628
683
|
this.db.exec("DELETE FROM events;");
|
|
629
684
|
}
|
|
630
685
|
}
|
|
631
|
-
walk(dir, visited = new Set()) {
|
|
632
|
-
let results = [];
|
|
633
|
-
let realDir;
|
|
634
|
-
try {
|
|
635
|
-
realDir = fs.realpathSync(dir);
|
|
636
|
-
}
|
|
637
|
-
catch {
|
|
638
|
-
return results;
|
|
639
|
-
}
|
|
640
|
-
if (visited.has(realDir))
|
|
641
|
-
return results;
|
|
642
|
-
visited.add(realDir);
|
|
643
|
-
let realHardkasDir;
|
|
644
|
-
try {
|
|
645
|
-
realHardkasDir = fs.realpathSync(this.hardkasDir);
|
|
646
|
-
}
|
|
647
|
-
catch {
|
|
648
|
-
return results;
|
|
649
|
-
}
|
|
650
|
-
const isInside = (child, parent) => {
|
|
651
|
-
// Handle windows casing
|
|
652
|
-
const c = child.toLowerCase();
|
|
653
|
-
const p = parent.toLowerCase();
|
|
654
|
-
if (c === p)
|
|
655
|
-
return true;
|
|
656
|
-
const parentWithSep = p.endsWith(path.sep) ? p : p + path.sep;
|
|
657
|
-
const result = c.startsWith(parentWithSep);
|
|
658
|
-
return result;
|
|
659
|
-
};
|
|
660
|
-
if (!isInside(realDir, realHardkasDir)) {
|
|
661
|
-
return results;
|
|
662
|
-
}
|
|
663
|
-
let list;
|
|
664
|
-
try {
|
|
665
|
-
list = fs.readdirSync(dir);
|
|
666
|
-
}
|
|
667
|
-
catch {
|
|
668
|
-
return results;
|
|
669
|
-
}
|
|
670
|
-
for (const file of list) {
|
|
671
|
-
const filePath = path.join(dir, file);
|
|
672
|
-
let stat;
|
|
673
|
-
try {
|
|
674
|
-
stat = fs.lstatSync(filePath);
|
|
675
|
-
}
|
|
676
|
-
catch {
|
|
677
|
-
continue;
|
|
678
|
-
}
|
|
679
|
-
let isDir = stat.isDirectory();
|
|
680
|
-
if (stat.isSymbolicLink()) {
|
|
681
|
-
try {
|
|
682
|
-
const real = fs.realpathSync(filePath);
|
|
683
|
-
if (!isInside(real, realHardkasDir)) {
|
|
684
|
-
continue;
|
|
685
|
-
}
|
|
686
|
-
isDir = fs.statSync(real).isDirectory();
|
|
687
|
-
}
|
|
688
|
-
catch {
|
|
689
|
-
continue;
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
if (isDir) {
|
|
693
|
-
if (file === "node_modules" ||
|
|
694
|
-
file === ".git" ||
|
|
695
|
-
file === "keystore" ||
|
|
696
|
-
file === "dev-accounts" ||
|
|
697
|
-
file === "snapshots" ||
|
|
698
|
-
// First contact · E07: operational output, never canonical artifacts —
|
|
699
|
-
// test-run bookkeeping, torture/chaos reports, deployment tracking records
|
|
700
|
-
// and the managed node's data directory.
|
|
701
|
-
file === "runs" ||
|
|
702
|
-
file === "reports" ||
|
|
703
|
-
file === "deployments" ||
|
|
704
|
-
file === "kaspad")
|
|
705
|
-
continue;
|
|
706
|
-
results = results.concat(this.walk(filePath, visited));
|
|
707
|
-
}
|
|
708
|
-
else if (file.endsWith(".json") &&
|
|
709
|
-
!file.endsWith("events.jsonl") &&
|
|
710
|
-
file !== "state.json" &&
|
|
711
|
-
file !== "keystore.json" &&
|
|
712
|
-
!file.endsWith("localnet.json") &&
|
|
713
|
-
!file.endsWith("localnet-state.json") &&
|
|
714
|
-
!file.endsWith("localnet-indexer.json") &&
|
|
715
|
-
!file.endsWith("accounts.real.json") &&
|
|
716
|
-
!file.endsWith("sessions.json")) {
|
|
717
|
-
results.push(filePath);
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
return results;
|
|
721
|
-
}
|
|
722
686
|
}
|
|
723
687
|
//# sourceMappingURL=indexer.js.map
|
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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"}
|
|
@@ -2,8 +2,9 @@ export interface LedgerAppenderOptions {
|
|
|
2
2
|
cwd?: string;
|
|
3
3
|
}
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* @deprecated WORKSPACE-AUTHORITY-1 (A2): a workspace has ONE event ledger, `<root>/events.jsonl`, and one writer for it,
|
|
6
|
+
* `@hardkas/core`'s `attachLedgerAppender`. This entry point (never used by HardKAS itself) used to write a second ledger
|
|
7
|
+
* under `.hardkas/events.jsonl`; it is kept only so its importers keep working, and it attaches that same writer.
|
|
7
8
|
*/
|
|
8
9
|
export declare function attachLedgerAppender(options?: LedgerAppenderOptions): () => void;
|
|
9
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-appender.d.ts","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ledger-appender.d.ts","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,IAAI,CAOpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,SAKnC"}
|
package/dist/ledger-appender.js
CHANGED
|
@@ -1,37 +1,17 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
1
|
import path from "node:path";
|
|
3
|
-
import {
|
|
2
|
+
import { attachLedgerAppender as attachWorkspaceLedgerAppender } from "@hardkas/core";
|
|
4
3
|
let appenderUnsubscribe = null;
|
|
5
4
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* @deprecated WORKSPACE-AUTHORITY-1 (A2): a workspace has ONE event ledger, `<root>/events.jsonl`, and one writer for it,
|
|
6
|
+
* `@hardkas/core`'s `attachLedgerAppender`. This entry point (never used by HardKAS itself) used to write a second ledger
|
|
7
|
+
* under `.hardkas/events.jsonl`; it is kept only so its importers keep working, and it attaches that same writer.
|
|
8
8
|
*/
|
|
9
9
|
export function attachLedgerAppender(options = {}) {
|
|
10
10
|
// Prevent duplicate attachments in the same process
|
|
11
11
|
if (appenderUnsubscribe) {
|
|
12
12
|
return appenderUnsubscribe;
|
|
13
13
|
}
|
|
14
|
-
|
|
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);
|
|
14
|
+
appenderUnsubscribe = attachWorkspaceLedgerAppender(path.resolve(options.cwd || process.cwd()));
|
|
35
15
|
return appenderUnsubscribe;
|
|
36
16
|
}
|
|
37
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-appender.js","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ledger-appender.js","sourceRoot":"","sources":["../src/ledger-appender.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,IAAI,6BAA6B,EAAE,MAAM,eAAe,CAAC;AAMtF,IAAI,mBAAmB,GAAwB,IAAI,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAiC,EAAE;IACtE,oDAAoD;IACpD,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,mBAAmB,GAAG,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChG,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
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.12.0-rc.
|
|
39
|
+
* Version 1: Initial schema (Baseline 0.12.0-rc.27).
|
|
40
40
|
*/
|
|
41
41
|
export declare const MIGRATIONS: Migration[];
|
|
42
42
|
//# sourceMappingURL=migrations.d.ts.map
|
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;IAWtD;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,IAAI,GAAG,cAAc,GAAG,QAAQ,CAAC;KAC1C;IAoDD;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO;CAsB/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;IAWtD;;OAEG;IACI,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,IAAI,GAAG,cAAc,GAAG,QAAQ,CAAC;KAC1C;IAoDD;;;OAGG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO;CAsB/E;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EA8PjC,CAAC"}
|
package/dist/migrations.js
CHANGED
|
@@ -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.12.0-rc.
|
|
99
|
+
* Version 1: Initial schema (Baseline 0.12.0-rc.27).
|
|
100
100
|
*/
|
|
101
101
|
export const MIGRATIONS = [
|
|
102
102
|
{
|
|
@@ -295,6 +295,62 @@ export const MIGRATIONS = [
|
|
|
295
295
|
);
|
|
296
296
|
`);
|
|
297
297
|
}
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
// WORKSPACE-AUTHORITY-1 (A): an event row is keyed by the event's identity (event_id) alone. The v2 key
|
|
301
|
+
// UNIQUE(correlation_id, sequence_number, kind) merged distinct events that share those three values into one row.
|
|
302
|
+
version: 4,
|
|
303
|
+
name: "event_identity_key",
|
|
304
|
+
checksum: "hardkas_v4_event_identity",
|
|
305
|
+
up: (db) => {
|
|
306
|
+
db.exec(`
|
|
307
|
+
CREATE TABLE IF NOT EXISTS events_v4 (
|
|
308
|
+
event_id TEXT PRIMARY KEY,
|
|
309
|
+
kind TEXT NOT NULL,
|
|
310
|
+
domain TEXT NOT NULL,
|
|
311
|
+
timestamp TEXT,
|
|
312
|
+
emitted_at TEXT,
|
|
313
|
+
workflow_id TEXT NOT NULL,
|
|
314
|
+
correlation_id TEXT NOT NULL,
|
|
315
|
+
causation_id TEXT,
|
|
316
|
+
tx_id TEXT,
|
|
317
|
+
artifact_id TEXT,
|
|
318
|
+
network_id TEXT NOT NULL,
|
|
319
|
+
sequence_number INTEGER NOT NULL DEFAULT 0,
|
|
320
|
+
global_offset INTEGER,
|
|
321
|
+
source_subsystem TEXT NOT NULL DEFAULT 'unknown',
|
|
322
|
+
raw_json TEXT NOT NULL,
|
|
323
|
+
file_path TEXT,
|
|
324
|
+
file_mtime_ms INTEGER,
|
|
325
|
+
indexed_at TEXT
|
|
326
|
+
);
|
|
327
|
+
|
|
328
|
+
INSERT INTO events_v4 (
|
|
329
|
+
event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id, tx_id, artifact_id,
|
|
330
|
+
network_id, sequence_number, global_offset, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at
|
|
331
|
+
)
|
|
332
|
+
SELECT
|
|
333
|
+
event_id, kind, domain, timestamp, emitted_at, workflow_id, correlation_id, causation_id, tx_id, artifact_id,
|
|
334
|
+
network_id, sequence_number, global_offset, source_subsystem, raw_json, file_path, file_mtime_ms, indexed_at
|
|
335
|
+
FROM events;
|
|
336
|
+
|
|
337
|
+
DROP TABLE events;
|
|
338
|
+
ALTER TABLE events_v4 RENAME TO events;
|
|
339
|
+
|
|
340
|
+
CREATE INDEX IF NOT EXISTS idx_events_kind ON events(kind);
|
|
341
|
+
CREATE INDEX IF NOT EXISTS idx_events_domain ON events(domain);
|
|
342
|
+
CREATE INDEX IF NOT EXISTS idx_events_workflow_id ON events(workflow_id);
|
|
343
|
+
CREATE INDEX IF NOT EXISTS idx_events_correlation_id ON events(correlation_id);
|
|
344
|
+
CREATE INDEX IF NOT EXISTS idx_events_causation_id ON events(causation_id);
|
|
345
|
+
CREATE INDEX IF NOT EXISTS idx_events_tx_id ON events(tx_id);
|
|
346
|
+
CREATE INDEX IF NOT EXISTS idx_events_artifact_id ON events(artifact_id);
|
|
347
|
+
CREATE INDEX IF NOT EXISTS idx_events_network_id ON events(network_id);
|
|
348
|
+
CREATE INDEX IF NOT EXISTS idx_events_timestamp ON events(timestamp);
|
|
349
|
+
CREATE INDEX IF NOT EXISTS idx_events_file_path ON events(file_path);
|
|
350
|
+
CREATE INDEX IF NOT EXISTS idx_events_global_offset ON events(global_offset);
|
|
351
|
+
CREATE INDEX IF NOT EXISTS idx_events_sequence ON events(correlation_id, sequence_number, kind);
|
|
352
|
+
`);
|
|
353
|
+
}
|
|
298
354
|
}
|
|
299
355
|
];
|
|
300
356
|
//# sourceMappingURL=migrations.js.map
|
package/dist/migrations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { HardkasStore } from "./db.js";
|
|
2
|
+
/**
|
|
3
|
+
* What a projection holds and how it is keyed. Any change to that meaning (the indexed set, the event key) bumps it, and a
|
|
4
|
+
* projection built under another contract is stale until it is rebuilt.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PROJECTION_CONTRACT = "wa1-v1";
|
|
7
|
+
export type ProjectionState = "fresh" | "stale" | "absent" | "unreadable";
|
|
8
|
+
export interface ProjectionStatus {
|
|
9
|
+
/** fresh: built from exactly the current authority · stale: the authority changed since, or freshness cannot be shown ·
|
|
10
|
+
* absent: no projection (no file, or a file that holds none) · unreadable: a file that cannot be read as one. */
|
|
11
|
+
state: ProjectionState;
|
|
12
|
+
dbPath: string;
|
|
13
|
+
reason: string;
|
|
14
|
+
/** When the projection was last indexed, as it records it. */
|
|
15
|
+
indexedAt?: string | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function projectionDbPath(workspaceRoot: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* The authority a projection derives from, as one deterministic digest: every file of the artifact store the resolver
|
|
20
|
+
* reads (its store path and the sha-256 of its bytes, in the resolver's sorted order) and the event ledger (its size and
|
|
21
|
+
* the sha-256 of its bytes). Two states share it only when they hold byte-identical files at the same store paths and a
|
|
22
|
+
* byte-identical ledger, so no count or timestamp coincidence can pass for freshness.
|
|
23
|
+
*/
|
|
24
|
+
export declare function computeAuthorityFingerprint(workspaceRoot: string): string;
|
|
25
|
+
/** Records, inside the caller's transaction, which authority a full rebuild or sync derived the projection from. */
|
|
26
|
+
export declare function recordProjectionAuthority(db: any, fingerprint: string): void;
|
|
27
|
+
/** The state of an open projection against the workspace it belongs to (reads only). */
|
|
28
|
+
export declare function projectionStatusOf(store: HardkasStore, workspaceRoot: string): ProjectionStatus;
|
|
29
|
+
/** The projection's state without creating, migrating or keeping anything open. */
|
|
30
|
+
export declare function readProjectionStatus(workspaceRoot: string, dbPath?: string): ProjectionStatus;
|
|
31
|
+
//# sourceMappingURL=projection-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-status.d.ts","sourceRoot":"","sources":["../src/projection-status.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAC/B;qHACiH;IACjH,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAE9D;AAID;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAoBzE;AAED,oHAAoH;AACpH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAI5E;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,gBAAgB,CA+B/F;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,MAAwC,GAAG,gBAAgB,CAa9H"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import crypto from "node:crypto";
|
|
4
|
+
import { listWorkspaceStoreFilesSync } from "@hardkas/artifacts";
|
|
5
|
+
import { eventLedgerPath } from "@hardkas/core";
|
|
6
|
+
import { HardkasStore } from "./db.js";
|
|
7
|
+
// WORKSPACE-AUTHORITY-1 · WA-I2: a projection (.hardkas/store.db) is derived state. It never becomes the truth merely
|
|
8
|
+
// because the file exists: it answers only when it is proven current with the authority it was built from — the
|
|
9
|
+
// workspace's canonical artifact entries (as the verified resolver enumerates them) and its event ledger.
|
|
10
|
+
/**
|
|
11
|
+
* What a projection holds and how it is keyed. Any change to that meaning (the indexed set, the event key) bumps it, and a
|
|
12
|
+
* projection built under another contract is stale until it is rebuilt.
|
|
13
|
+
*/
|
|
14
|
+
export const PROJECTION_CONTRACT = "wa1-v1";
|
|
15
|
+
export function projectionDbPath(workspaceRoot) {
|
|
16
|
+
return path.join(workspaceRoot, ".hardkas", "store.db");
|
|
17
|
+
}
|
|
18
|
+
const sha256 = (bytes) => crypto.createHash("sha256").update(bytes).digest("hex");
|
|
19
|
+
/**
|
|
20
|
+
* The authority a projection derives from, as one deterministic digest: every file of the artifact store the resolver
|
|
21
|
+
* reads (its store path and the sha-256 of its bytes, in the resolver's sorted order) and the event ledger (its size and
|
|
22
|
+
* the sha-256 of its bytes). Two states share it only when they hold byte-identical files at the same store paths and a
|
|
23
|
+
* byte-identical ledger, so no count or timestamp coincidence can pass for freshness.
|
|
24
|
+
*/
|
|
25
|
+
export function computeAuthorityFingerprint(workspaceRoot) {
|
|
26
|
+
const digest = crypto.createHash("sha256");
|
|
27
|
+
digest.update(`${PROJECTION_CONTRACT}\n`);
|
|
28
|
+
for (const entry of listWorkspaceStoreFilesSync(workspaceRoot)) {
|
|
29
|
+
let bytes;
|
|
30
|
+
try {
|
|
31
|
+
bytes = fs.readFileSync(entry.path);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
continue; // gone since it was listed: not part of the authority any more
|
|
35
|
+
}
|
|
36
|
+
digest.update(`artifact\0${entry.relativeSubpath}\0${sha256(bytes)}\n`);
|
|
37
|
+
}
|
|
38
|
+
let ledger;
|
|
39
|
+
try {
|
|
40
|
+
ledger = fs.readFileSync(eventLedgerPath(workspaceRoot));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
ledger = undefined;
|
|
44
|
+
}
|
|
45
|
+
digest.update(ledger ? `ledger\0${ledger.length}\0${sha256(ledger)}\n` : "ledger\0absent\n");
|
|
46
|
+
return digest.digest("hex");
|
|
47
|
+
}
|
|
48
|
+
/** Records, inside the caller's transaction, which authority a full rebuild or sync derived the projection from. */
|
|
49
|
+
export function recordProjectionAuthority(db, fingerprint) {
|
|
50
|
+
const put = db.prepare("INSERT OR REPLACE INTO metadata (key, value) VALUES (?, ?)");
|
|
51
|
+
put.run("projection_contract", PROJECTION_CONTRACT);
|
|
52
|
+
put.run("authority_fingerprint", fingerprint);
|
|
53
|
+
}
|
|
54
|
+
/** The state of an open projection against the workspace it belongs to (reads only). */
|
|
55
|
+
export function projectionStatusOf(store, workspaceRoot) {
|
|
56
|
+
const dbPath = store.path;
|
|
57
|
+
let meta;
|
|
58
|
+
try {
|
|
59
|
+
const rows = store
|
|
60
|
+
.getDatabase()
|
|
61
|
+
.prepare("SELECT key, value FROM metadata WHERE key IN ('projection_contract', 'authority_fingerprint', 'last_indexed_at')")
|
|
62
|
+
.all();
|
|
63
|
+
meta = Object.fromEntries(rows.map((r) => [r.key, r.value]));
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
67
|
+
if (/no such table/i.test(message)) {
|
|
68
|
+
return { state: "absent", dbPath, reason: "the file holds no projection (it was never built)" };
|
|
69
|
+
}
|
|
70
|
+
return { state: "unreadable", dbPath, reason: message };
|
|
71
|
+
}
|
|
72
|
+
const indexedAt = meta.last_indexed_at ?? null;
|
|
73
|
+
if (!meta.authority_fingerprint) {
|
|
74
|
+
return { state: "stale", dbPath, indexedAt, reason: "it records no authority it was built from; rebuild it to establish freshness" };
|
|
75
|
+
}
|
|
76
|
+
if (meta.projection_contract !== PROJECTION_CONTRACT) {
|
|
77
|
+
return {
|
|
78
|
+
state: "stale",
|
|
79
|
+
dbPath,
|
|
80
|
+
indexedAt,
|
|
81
|
+
reason: `it was built under projection contract ${meta.projection_contract ?? "(none)"}, this HardKAS reads ${PROJECTION_CONTRACT}; rebuild it`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return meta.authority_fingerprint === computeAuthorityFingerprint(workspaceRoot)
|
|
85
|
+
? { state: "fresh", dbPath, indexedAt, reason: "built from exactly the workspace's current artifacts and event ledger" }
|
|
86
|
+
: { state: "stale", dbPath, indexedAt, reason: "the workspace's artifacts or event ledger changed after it was built" };
|
|
87
|
+
}
|
|
88
|
+
/** The projection's state without creating, migrating or keeping anything open. */
|
|
89
|
+
export function readProjectionStatus(workspaceRoot, dbPath = projectionDbPath(workspaceRoot)) {
|
|
90
|
+
let store;
|
|
91
|
+
try {
|
|
92
|
+
store = HardkasStore.openExisting(dbPath);
|
|
93
|
+
}
|
|
94
|
+
catch (err) {
|
|
95
|
+
return { state: "unreadable", dbPath, reason: err instanceof Error ? err.message : String(err) };
|
|
96
|
+
}
|
|
97
|
+
if (!store)
|
|
98
|
+
return { state: "absent", dbPath, reason: "there is no projection file; queries read the workspace" };
|
|
99
|
+
try {
|
|
100
|
+
return projectionStatusOf(store, workspaceRoot);
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
store.disconnect();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=projection-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-status.js","sourceRoot":"","sources":["../src/projection-status.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.12.0-rc.
|
|
3
|
+
"version": "0.12.0-rc.27",
|
|
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/artifacts": "0.12.0-rc.
|
|
16
|
-
"@hardkas/core": "0.12.0-rc.
|
|
15
|
+
"@hardkas/artifacts": "0.12.0-rc.27",
|
|
16
|
+
"@hardkas/core": "0.12.0-rc.27"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "^22.10.0",
|