@hardkas/query-store 0.2.2-alpha → 0.3.0-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 CHANGED
@@ -1,14 +1,17 @@
1
1
  import { HardkasStore } from "./db.js";
2
+ import { ExecutionMode, NetworkId } from "@hardkas/core";
2
3
  export interface ArtifactDocument {
3
4
  readonly contentHash: string;
4
5
  readonly schema: string;
5
6
  readonly version: string;
6
7
  readonly kind: string;
7
- readonly networkId: string;
8
+ readonly mode: ExecutionMode;
9
+ readonly networkId: NetworkId;
8
10
  readonly createdAt: string | null;
9
11
  readonly txId: string | null;
10
12
  readonly artifactId: string;
11
- readonly payload: unknown;
13
+ readonly path: string;
14
+ readonly payload: any;
12
15
  }
13
16
  export interface EventDocument {
14
17
  readonly eventId: string;
@@ -24,14 +27,15 @@ export interface EventDocument {
24
27
  readonly payload: unknown;
25
28
  }
26
29
  export interface LineageEdgeDocument {
27
- readonly lineageId: string;
28
30
  readonly parentArtifactId: string;
29
31
  readonly childArtifactId: string;
30
- readonly edgeKind: string;
32
+ readonly lineageId: string;
33
+ readonly rule: string;
31
34
  readonly createdAt: string | null;
32
35
  }
33
36
  export interface QueryBackend {
34
37
  isReady(): boolean;
38
+ kind(): "sqlite" | "filesystem";
35
39
  findArtifacts(filters?: {
36
40
  schema?: string;
37
41
  mode?: string;
@@ -46,11 +50,31 @@ export interface QueryBackend {
46
50
  parentHash?: string;
47
51
  childHash?: string;
48
52
  }): Promise<LineageEdgeDocument[]>;
53
+ getStoreStatus(): Promise<string>;
54
+ doctor(): Promise<any>;
55
+ migrate(): Promise<{
56
+ applied: number;
57
+ }>;
58
+ sync(options?: {
59
+ strict?: boolean;
60
+ }): Promise<any>;
61
+ rebuild(options?: {
62
+ strict?: boolean;
63
+ }): Promise<any>;
64
+ executeRawSql(sql: string): Promise<any[]>;
65
+ findReceipts(filters?: {
66
+ status?: string;
67
+ networkId?: string;
68
+ }): Promise<ArtifactDocument[]>;
69
+ findTraces(filters?: {
70
+ txId?: string;
71
+ }): Promise<ArtifactDocument[]>;
49
72
  }
50
73
  export declare class SqliteQueryBackend implements QueryBackend {
51
74
  private store;
52
75
  constructor(store: HardkasStore);
53
76
  isReady(): boolean;
77
+ kind(): "sqlite";
54
78
  findArtifacts(filters?: {
55
79
  schema?: string;
56
80
  mode?: string;
@@ -65,5 +89,24 @@ export declare class SqliteQueryBackend implements QueryBackend {
65
89
  parentHash?: string;
66
90
  childHash?: string;
67
91
  }): Promise<LineageEdgeDocument[]>;
92
+ findReceipts(filters?: {
93
+ status?: string;
94
+ networkId?: string;
95
+ }): Promise<ArtifactDocument[]>;
96
+ findTraces(filters?: {
97
+ txId?: string;
98
+ }): Promise<ArtifactDocument[]>;
99
+ getStoreStatus(): Promise<string>;
100
+ doctor(): Promise<any>;
101
+ migrate(): Promise<{
102
+ applied: number;
103
+ }>;
104
+ rebuild(options?: {
105
+ strict?: boolean;
106
+ }): Promise<any>;
107
+ sync(options?: {
108
+ strict?: boolean;
109
+ }): Promise<any>;
110
+ executeRawSql(sql: string): Promise<any[]>;
68
111
  }
69
112
  //# sourceMappingURL=backend.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/backend.js CHANGED
@@ -6,6 +6,9 @@ export class SqliteQueryBackend {
6
6
  isReady() {
7
7
  return this.store.getDatabase() !== null;
8
8
  }
9
+ kind() {
10
+ return "sqlite";
11
+ }
9
12
  async findArtifacts(filters) {
10
13
  const db = this.store.getDatabase();
11
14
  let query = "SELECT * FROM artifacts WHERE 1=1";
@@ -28,16 +31,18 @@ export class SqliteQueryBackend {
28
31
  schema: r.schema,
29
32
  version: r.version,
30
33
  kind: r.kind,
34
+ mode: (r.mode || "unknown"),
31
35
  networkId: r.network_id,
32
36
  createdAt: r.created_at,
33
37
  txId: r.tx_id,
34
38
  artifactId: r.artifact_id,
39
+ path: r.file_path || r.artifact_id,
35
40
  payload: JSON.parse(r.raw_json)
36
41
  }));
37
42
  }
38
43
  async getArtifact(idOrHash) {
39
44
  const db = this.store.getDatabase();
40
- const row = db.prepare("SELECT * FROM artifacts WHERE artifact_id = ? OR content_hash = ?").get(idOrHash, idOrHash);
45
+ const row = db.prepare("SELECT * FROM artifacts WHERE artifact_id = ? OR content_hash = ? OR tx_id = ?").get(idOrHash, idOrHash, idOrHash);
41
46
  if (!row)
42
47
  return null;
43
48
  return {
@@ -45,10 +50,12 @@ export class SqliteQueryBackend {
45
50
  schema: row.schema,
46
51
  version: row.version,
47
52
  kind: row.kind,
53
+ mode: (row.mode || "unknown"),
48
54
  networkId: row.network_id,
49
55
  createdAt: row.created_at,
50
56
  txId: row.tx_id,
51
57
  artifactId: row.artifact_id,
58
+ path: row.file_path || row.artifact_id,
52
59
  payload: JSON.parse(row.raw_json)
53
60
  };
54
61
  }
@@ -84,21 +91,85 @@ export class SqliteQueryBackend {
84
91
  let query = "SELECT * FROM lineage_edges WHERE 1=1";
85
92
  const params = [];
86
93
  if (filters?.parentHash) {
87
- query += " AND parent_hash = ?";
94
+ query += " AND parent_artifact_id = ?";
88
95
  params.push(filters.parentHash);
89
96
  }
90
97
  if (filters?.childHash) {
91
- query += " AND child_hash = ?";
98
+ query += " AND child_artifact_id = ?";
92
99
  params.push(filters.childHash);
93
100
  }
94
101
  const rows = db.prepare(query).all(...params);
95
102
  return rows.map(r => ({
96
- lineageId: r.lineage_id,
97
103
  parentArtifactId: r.parent_artifact_id,
98
104
  childArtifactId: r.child_artifact_id,
99
- edgeKind: r.edge_kind,
105
+ lineageId: r.lineage_id,
106
+ rule: r.edge_kind,
100
107
  createdAt: r.created_at
101
108
  }));
102
109
  }
110
+ async findReceipts(filters) {
111
+ return this.findArtifacts({ schema: "hardkas.txReceipt", ...filters });
112
+ }
113
+ async findTraces(filters) {
114
+ const db = this.store.getDatabase();
115
+ let query = "SELECT * FROM artifacts WHERE schema = 'hardkas.txTrace'";
116
+ const params = [];
117
+ if (filters?.txId) {
118
+ query += " AND tx_id = ?";
119
+ params.push(filters.txId);
120
+ }
121
+ const rows = db.prepare(query).all(...params);
122
+ return rows.map(r => ({
123
+ contentHash: r.content_hash,
124
+ schema: r.schema,
125
+ version: r.version,
126
+ kind: r.kind,
127
+ mode: (r.mode || "unknown"),
128
+ networkId: r.network_id,
129
+ createdAt: r.created_at,
130
+ txId: r.tx_id,
131
+ artifactId: r.artifact_id,
132
+ path: r.file_path || r.artifact_id,
133
+ payload: JSON.parse(r.raw_json)
134
+ }));
135
+ }
136
+ async getStoreStatus() {
137
+ const { HardkasIndexer } = await import("./indexer.js");
138
+ const indexer = new HardkasIndexer(this.store.getDatabase());
139
+ const report = indexer.doctor();
140
+ return report.ok ? "fresh" : "stale";
141
+ }
142
+ async doctor() {
143
+ const { HardkasIndexer } = await import("./indexer.js");
144
+ const indexer = new HardkasIndexer(this.store.getDatabase());
145
+ const indexerReport = indexer.doctor();
146
+ const storeHealth = this.store.checkHealth();
147
+ return {
148
+ ...indexerReport,
149
+ ok: indexerReport.ok && storeHealth.ok,
150
+ storeIssues: storeHealth.issues
151
+ };
152
+ }
153
+ async migrate() {
154
+ return this.store.migrate();
155
+ }
156
+ async rebuild(options) {
157
+ // Ensure schema is up to date before rebuild
158
+ this.store.migrate();
159
+ const { HardkasIndexer } = await import("./indexer.js");
160
+ const indexer = new HardkasIndexer(this.store.getDatabase(), options);
161
+ return indexer.rebuild();
162
+ }
163
+ async sync(options) {
164
+ // Ensure schema is up to date before sync
165
+ this.store.migrate();
166
+ const { HardkasIndexer } = await import("./indexer.js");
167
+ const indexer = new HardkasIndexer(this.store.getDatabase(), options);
168
+ return indexer.sync();
169
+ }
170
+ async executeRawSql(sql) {
171
+ const db = this.store.getDatabase();
172
+ return db.prepare(sql).all();
173
+ }
103
174
  }
104
175
  //# sourceMappingURL=backend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/db.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DatabaseSync } from "node:sqlite";
1
+ import { CorruptionIssue } from "@hardkas/core";
2
2
  export declare class HardkasStore {
3
3
  private db;
4
4
  private readonly dbPath;
@@ -6,9 +6,26 @@ export declare class HardkasStore {
6
6
  dbPath?: string;
7
7
  memory?: boolean;
8
8
  });
9
- connect(): void;
9
+ connect(options?: {
10
+ autoMigrate?: boolean;
11
+ }): void;
10
12
  disconnect(): void;
11
- getDatabase(): DatabaseSync;
13
+ getDatabase(): any;
14
+ /**
15
+ * Safe migration entry point.
16
+ * Must be called under query-store lock for non-memory DBs.
17
+ */
18
+ migrate(): {
19
+ applied: number;
20
+ status: string;
21
+ };
12
22
  private initialize;
23
+ /**
24
+ * Performs a health check on the store.
25
+ */
26
+ checkHealth(): {
27
+ ok: boolean;
28
+ issues: CorruptionIssue[];
29
+ };
13
30
  }
14
31
  //# sourceMappingURL=db.d.ts.map
package/dist/db.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,qBAAa,YAAY;IACvB,OAAO,CAAC,EAAE,CAA6B;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;IAQxD,OAAO;IAcP,UAAU;IAOV,WAAW,IAAI,YAAY;IAOlC,OAAO,CAAC,UAAU;CA4CnB"}
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;IAQxD,OAAO,CAAC,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAA2B;IAuBnE,UAAU;IAOV,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;CA0EjE"}
package/dist/db.js CHANGED
@@ -1,7 +1,10 @@
1
- import { DatabaseSync } from "node:sqlite";
1
+ import { createRequire } from "node:module";
2
+ const require = createRequire(import.meta.url);
3
+ const { DatabaseSync } = require("node:sqlite");
2
4
  import path from "node:path";
3
5
  import fs from "node:fs";
4
- import { DDL, SCHEMA_VERSION } from "./schema.js";
6
+ import { HardkasError } from "@hardkas/core";
7
+ import { MigrationRunner, MIGRATIONS } from "./migrations.js";
5
8
  export class HardkasStore {
6
9
  db = null;
7
10
  dbPath;
@@ -13,7 +16,7 @@ export class HardkasStore {
13
16
  this.dbPath = options.dbPath || path.join(process.cwd(), ".hardkas", "store.db");
14
17
  }
15
18
  }
16
- connect() {
19
+ connect(options = { autoMigrate: false }) {
17
20
  if (this.db)
18
21
  return;
19
22
  if (this.dbPath !== ":memory:") {
@@ -23,7 +26,14 @@ export class HardkasStore {
23
26
  }
24
27
  }
25
28
  this.db = new DatabaseSync(this.dbPath);
26
- this.initialize();
29
+ this.db.exec("PRAGMA foreign_keys = ON;");
30
+ // Core SQLite tuning
31
+ this.db.exec("PRAGMA journal_mode = WAL;");
32
+ this.db.exec("PRAGMA synchronous = FULL;");
33
+ this.db.exec("PRAGMA foreign_keys = ON;");
34
+ if (options.autoMigrate) {
35
+ this.initialize();
36
+ }
27
37
  }
28
38
  disconnect() {
29
39
  if (this.db) {
@@ -37,46 +47,106 @@ export class HardkasStore {
37
47
  }
38
48
  return this.db;
39
49
  }
50
+ /**
51
+ * Safe migration entry point.
52
+ * Must be called under query-store lock for non-memory DBs.
53
+ */
54
+ migrate() {
55
+ if (!this.db)
56
+ throw new Error("Database not connected");
57
+ const runner = new MigrationRunner(this.db);
58
+ // 1. Handle legacy transition (version 1 baseline)
59
+ runner.bootstrapLegacy(1, MIGRATIONS);
60
+ // 2. Run pending migrations
61
+ return runner.migrate(MIGRATIONS);
62
+ }
40
63
  initialize() {
41
64
  if (!this.db)
42
65
  return;
43
- // Enable WAL mode for better concurrency
44
- this.db.exec("PRAGMA journal_mode = WAL;");
45
- this.db.exec("PRAGMA synchronous = NORMAL;");
46
- this.db.exec("PRAGMA foreign_keys = ON;");
47
- // Apply schema
48
- this.db.exec(DDL);
49
- // Check version
50
- const stmt = this.db.prepare("SELECT value FROM metadata WHERE key = 'version'");
51
- let version = 0;
66
+ // We only perform non-destructive initialization here.
67
+ // Full migrations or rebuilds are triggered via migrate() or indexer.
52
68
  try {
53
- const row = stmt.get();
54
- if (row) {
55
- version = parseInt(row.value, 10);
56
- }
69
+ this.migrate();
57
70
  }
58
71
  catch (e) {
59
- // Ignore if table was just created
72
+ // If auto-migration fails during connect, we log but don't crash
73
+ // unless it's a critical error. The doctor will catch it.
74
+ if (e instanceof HardkasError && e.code === "STORE_MIGRATION_CHECKSUM_MISMATCH") {
75
+ console.error(`\n ❌ ${e.message}`);
76
+ }
60
77
  }
61
- if (version === 0) {
62
- const insert = this.db.prepare("INSERT INTO metadata (key, value) VALUES ('version', ?)");
63
- insert.run(SCHEMA_VERSION.toString());
78
+ }
79
+ /**
80
+ * Performs a health check on the store.
81
+ */
82
+ checkHealth() {
83
+ const issues = [];
84
+ if (this.dbPath === ":memory:")
85
+ return { ok: true, issues: [] };
86
+ if (!fs.existsSync(this.dbPath)) {
87
+ issues.push({
88
+ code: "STORE_REBUILD_REQUIRED",
89
+ severity: "error",
90
+ message: "Query store database file is missing.",
91
+ suggestion: "Run 'hardkas query store rebuild' to recreate the read model."
92
+ });
93
+ return { ok: false, issues };
64
94
  }
65
- else if (version !== SCHEMA_VERSION) {
66
- console.warn(`Schema version mismatch (expected ${SCHEMA_VERSION}, got ${version}). Developer Preview: Recreating schema.`);
67
- // Developer Preview Migration: Drop and Recreate
68
- this.db.exec("PRAGMA foreign_keys = OFF;");
69
- this.db.exec("DROP TABLE IF EXISTS artifacts;");
70
- this.db.exec("DROP TABLE IF EXISTS lineage_edges;");
71
- this.db.exec("DROP TABLE IF EXISTS events;");
72
- this.db.exec("DROP TABLE IF EXISTS traces;");
73
- this.db.exec("DROP TABLE IF EXISTS metadata;");
74
- this.db.exec("PRAGMA foreign_keys = ON;");
75
- // Re-initialize
76
- this.db.exec(DDL);
77
- const insert = this.db.prepare("INSERT INTO metadata (key, value) VALUES ('version', ?)");
78
- insert.run(SCHEMA_VERSION.toString());
95
+ try {
96
+ const stats = fs.statSync(this.dbPath);
97
+ if (stats.size === 0) {
98
+ issues.push({
99
+ code: "STORE_CORRUPT",
100
+ severity: "error",
101
+ message: "Query store database file is empty.",
102
+ suggestion: "Run 'hardkas query store rebuild'."
103
+ });
104
+ }
105
+ }
106
+ catch (e) {
107
+ issues.push({
108
+ code: "STORE_CORRUPT",
109
+ severity: "error",
110
+ message: `Failed to access store database: ${e instanceof Error ? e.message : String(e)}`
111
+ });
112
+ }
113
+ // Migration/Version check
114
+ if (this.db) {
115
+ try {
116
+ const runner = new MigrationRunner(this.db);
117
+ const applied = runner.getAppliedMigrations();
118
+ const appliedMap = new Map(applied.map(m => [m.version, m]));
119
+ const pending = MIGRATIONS.filter((m) => !appliedMap.has(m.version));
120
+ if (pending.length > 0) {
121
+ issues.push({
122
+ code: "STORE_MIGRATION_REQUIRED",
123
+ severity: "warning",
124
+ message: `${pending.length} pending schema migration(s) detected.`,
125
+ suggestion: "Run 'hardkas query store migrate' or 'hardkas query store rebuild'."
126
+ });
127
+ }
128
+ // Checksums
129
+ for (const m of MIGRATIONS) {
130
+ const existing = appliedMap.get(m.version);
131
+ if (existing && existing.checksum !== m.checksum) {
132
+ issues.push({
133
+ code: "STORE_MIGRATION_CHECKSUM_MISMATCH",
134
+ severity: "error",
135
+ message: `Integrity violation: Migration ${m.version} checksum changed.`,
136
+ suggestion: "The database schema was modified externally or migrations were edited. A full rebuild is recommended."
137
+ });
138
+ }
139
+ }
140
+ }
141
+ catch (e) {
142
+ issues.push({
143
+ code: "STORE_CORRUPT",
144
+ severity: "error",
145
+ message: "Could not read migration history from store database."
146
+ });
147
+ }
79
148
  }
149
+ return { ok: issues.length === 0, issues };
80
150
  }
81
151
  }
82
152
  //# sourceMappingURL=db.js.map
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,OAAO,YAAY;IACf,EAAE,GAAwB,IAAI,CAAC;IACtB,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;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,EAAE;YAAE,OAAO;QAEpB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO;QAErB,yCAAyC;QACzC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAE1C,eAAe;QACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElB,gBAAgB;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;QACjF,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAmC,CAAC;YACxD,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mCAAmC;QACrC,CAAC;QAED,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;YAC1F,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,qCAAqC,cAAc,SAAS,OAAO,0CAA0C,CAAC,CAAC;YAE5H,iDAAiD;YACjD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACpD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YAC/C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAE1C,gBAAgB;YAChB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC;YAC1F,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/indexer.d.ts CHANGED
@@ -1,14 +1,62 @@
1
- import { DatabaseSync } from "node:sqlite";
1
+ import { type CorruptionIssue } from "@hardkas/core";
2
2
  export interface IndexerOptions {
3
3
  cwd?: string;
4
+ strict?: boolean;
5
+ }
6
+ export interface SyncStats {
7
+ scanned: number;
8
+ indexed: number;
9
+ duplicates: number;
10
+ corrupted: number;
11
+ }
12
+ export interface SyncResult {
13
+ schema: "hardkas.queryRebuild.v1";
14
+ ok: boolean;
15
+ artifacts: SyncStats;
16
+ events: SyncStats;
17
+ warnings: string[];
18
+ errors: string[];
19
+ issues: CorruptionIssue[];
20
+ }
21
+ export interface DoctorReport {
22
+ ok: boolean;
23
+ staleArtifacts: number;
24
+ zombieArtifacts: number;
25
+ corruptedFiles: string[];
26
+ orphanEdges: number;
27
+ lastIndexedAt: string | null;
4
28
  }
5
29
  export declare class HardkasIndexer {
6
30
  private db;
7
31
  private hardkasDir;
8
- constructor(db: DatabaseSync, options?: IndexerOptions);
9
- sync(): void;
32
+ private strict;
33
+ constructor(db: any, options?: IndexerOptions);
34
+ /**
35
+ * Performs an incremental sync of the index.
36
+ * Transactional.
37
+ */
38
+ sync(): Promise<SyncResult>;
39
+ /**
40
+ * Internal indexing logic without transaction management.
41
+ */
42
+ private _syncInternal;
43
+ /**
44
+ * Complete wipe and rebuild of the index.
45
+ */
46
+ /**
47
+ * Complete wipe and rebuild of the index.
48
+ * Atomic across wipe and first sync.
49
+ */
50
+ rebuild(): Promise<SyncResult>;
51
+ private _wipeInternal;
52
+ /**
53
+ * Diagnostic check of the index integrity and freshness.
54
+ */
55
+ doctor(): DoctorReport;
10
56
  private syncArtifacts;
11
57
  private syncEvents;
12
58
  private syncTraces;
59
+ private cleanupZombies;
60
+ private walk;
13
61
  }
14
62
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,EAAE,EAAE,YAAY,EAAE,OAAO,GAAE,cAAmB;IAKnD,IAAI;IAeX,OAAO,CAAC,aAAa;IA8ErB,OAAO,CAAC,UAAU;IA6ClB,OAAO,CAAC,UAAU;CAkCnB"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../src/indexer.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,eAAe,EAErB,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;CAC3B;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,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,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;IAW3B;;OAEG;IACH;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IAgC3C,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACI,MAAM,IAAI,YAAY;YAuCf,aAAa;IAmH3B,OAAO,CAAC,UAAU;IAyFlB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,IAAI;CAgBb"}