@hardkas/query 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/index.d.ts +416 -0
- package/dist/index.js +1899 -0
- package/package.json +30 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Javier Rodriguez
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
import { NetworkId, ContentHash, KaspaAddress, ArtifactId, LineageId, TxId } from '@hardkas/core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @hardkas/query — Core types for the HardKAS query and introspection engine.
|
|
5
|
+
*
|
|
6
|
+
* All query operations are deterministic pure functions over immutable artifact data.
|
|
7
|
+
* Non-deterministic metadata (timestamps, execution time) is isolated in `annotations`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/** Query domains available. */
|
|
11
|
+
type QueryDomain = "artifacts" | "lineage" | "replay" | "dag" | "events" | "tx";
|
|
12
|
+
/** Operations supported by the artifact adapter. */
|
|
13
|
+
type ArtifactOp = "list" | "inspect" | "diff" | "verify";
|
|
14
|
+
/** Operations supported by the lineage adapter. */
|
|
15
|
+
type LineageOp = "chain" | "transitions" | "orphans";
|
|
16
|
+
/** Operations supported by the replay adapter. */
|
|
17
|
+
type ReplayOp = "list" | "summary" | "divergences" | "invariants";
|
|
18
|
+
/** Operations supported by the DAG adapter. */
|
|
19
|
+
type DagOp = "conflicts" | "displaced" | "history" | "sink-path" | "anomalies";
|
|
20
|
+
/** Operations supported by the events adapter. */
|
|
21
|
+
type EventsOp = "list" | "summary";
|
|
22
|
+
/** Operations supported by the transaction aggregator. */
|
|
23
|
+
type TxOp = "aggregate";
|
|
24
|
+
type FilterOp = "eq" | "neq" | "gt" | "lt" | "gte" | "lte" | "in" | "contains" | "exists";
|
|
25
|
+
interface QueryFilter {
|
|
26
|
+
readonly field: string;
|
|
27
|
+
readonly op: FilterOp;
|
|
28
|
+
readonly value: string | number | boolean | readonly string[];
|
|
29
|
+
}
|
|
30
|
+
interface QuerySort {
|
|
31
|
+
readonly field: string;
|
|
32
|
+
readonly direction: "asc" | "desc";
|
|
33
|
+
}
|
|
34
|
+
interface QueryRequest {
|
|
35
|
+
readonly domain: QueryDomain;
|
|
36
|
+
readonly op: string;
|
|
37
|
+
readonly filters: readonly QueryFilter[];
|
|
38
|
+
readonly sort?: QuerySort | undefined;
|
|
39
|
+
readonly limit: number;
|
|
40
|
+
readonly offset: number;
|
|
41
|
+
readonly explain: "brief" | "full" | false;
|
|
42
|
+
readonly params: Readonly<Record<string, string>>;
|
|
43
|
+
}
|
|
44
|
+
interface QueryResult<T = unknown> {
|
|
45
|
+
readonly domain: QueryDomain;
|
|
46
|
+
readonly op: string;
|
|
47
|
+
readonly items: readonly T[];
|
|
48
|
+
readonly total: number;
|
|
49
|
+
readonly truncated: boolean;
|
|
50
|
+
readonly deterministic: boolean;
|
|
51
|
+
readonly queryHash: string;
|
|
52
|
+
readonly explain?: readonly ExplainChain[] | undefined;
|
|
53
|
+
readonly annotations: QueryAnnotations;
|
|
54
|
+
}
|
|
55
|
+
/** Non-deterministic metadata, always isolated from deterministic fields. */
|
|
56
|
+
interface QueryAnnotations {
|
|
57
|
+
readonly executedAt: string;
|
|
58
|
+
readonly executionMs: number;
|
|
59
|
+
readonly filesScanned?: number | undefined;
|
|
60
|
+
}
|
|
61
|
+
interface ExplainChain {
|
|
62
|
+
readonly question: string;
|
|
63
|
+
readonly conclusion: string;
|
|
64
|
+
readonly steps: readonly ReasoningStep[];
|
|
65
|
+
readonly model: string;
|
|
66
|
+
readonly confidence: "definitive" | "probable";
|
|
67
|
+
readonly references: readonly string[];
|
|
68
|
+
}
|
|
69
|
+
interface ReasoningStep {
|
|
70
|
+
readonly order: number;
|
|
71
|
+
readonly assertion: string;
|
|
72
|
+
readonly evidence: string;
|
|
73
|
+
readonly rule?: string | undefined;
|
|
74
|
+
}
|
|
75
|
+
interface QueryAdapter<T = unknown> {
|
|
76
|
+
readonly domain: QueryDomain;
|
|
77
|
+
execute(request: QueryRequest): Promise<QueryResult<T>>;
|
|
78
|
+
supportedOps(): readonly string[];
|
|
79
|
+
supportedFilters(): readonly string[];
|
|
80
|
+
}
|
|
81
|
+
interface ArtifactQueryItem {
|
|
82
|
+
readonly filePath: string;
|
|
83
|
+
readonly schema: string;
|
|
84
|
+
readonly version: string;
|
|
85
|
+
readonly networkId: NetworkId;
|
|
86
|
+
readonly mode: string;
|
|
87
|
+
readonly createdAt: string;
|
|
88
|
+
readonly contentHash?: ContentHash | undefined;
|
|
89
|
+
readonly from?: {
|
|
90
|
+
readonly address: KaspaAddress;
|
|
91
|
+
} | undefined;
|
|
92
|
+
readonly to?: {
|
|
93
|
+
readonly address: KaspaAddress;
|
|
94
|
+
} | undefined;
|
|
95
|
+
readonly amountSompi?: string | undefined;
|
|
96
|
+
readonly status?: string | undefined;
|
|
97
|
+
readonly lineage?: {
|
|
98
|
+
readonly artifactId: ArtifactId;
|
|
99
|
+
readonly parentArtifactId?: ArtifactId | undefined;
|
|
100
|
+
readonly rootArtifactId: ArtifactId;
|
|
101
|
+
readonly lineageId: LineageId;
|
|
102
|
+
readonly sequence?: number | undefined;
|
|
103
|
+
} | undefined;
|
|
104
|
+
}
|
|
105
|
+
interface ArtifactInspectResult {
|
|
106
|
+
readonly item: ArtifactQueryItem;
|
|
107
|
+
readonly integrity: {
|
|
108
|
+
readonly ok: boolean;
|
|
109
|
+
readonly hashMatch: boolean;
|
|
110
|
+
readonly schemaValid: boolean;
|
|
111
|
+
readonly errors: readonly string[];
|
|
112
|
+
};
|
|
113
|
+
readonly economics?: {
|
|
114
|
+
readonly ok: boolean;
|
|
115
|
+
readonly massReported: string;
|
|
116
|
+
readonly massRecomputed: string;
|
|
117
|
+
readonly feeReported: string;
|
|
118
|
+
readonly feeRecomputed: string;
|
|
119
|
+
readonly feeRate: string;
|
|
120
|
+
} | undefined;
|
|
121
|
+
readonly staleness: {
|
|
122
|
+
readonly ageHours: number;
|
|
123
|
+
readonly stale: boolean;
|
|
124
|
+
readonly classification: "fresh" | "aging" | "stale" | "expired";
|
|
125
|
+
};
|
|
126
|
+
readonly lineageStatus: "valid" | "orphan" | "missing" | "unknown";
|
|
127
|
+
}
|
|
128
|
+
interface ArtifactDiffEntry {
|
|
129
|
+
readonly field: string;
|
|
130
|
+
readonly left: string | undefined;
|
|
131
|
+
readonly right: string | undefined;
|
|
132
|
+
readonly kind: "value-change" | "added" | "removed" | "type-change";
|
|
133
|
+
}
|
|
134
|
+
interface ArtifactDiffResult {
|
|
135
|
+
readonly leftPath: string;
|
|
136
|
+
readonly rightPath: string;
|
|
137
|
+
readonly leftSchema: string;
|
|
138
|
+
readonly rightSchema: string;
|
|
139
|
+
readonly identical: boolean;
|
|
140
|
+
readonly entries: readonly ArtifactDiffEntry[];
|
|
141
|
+
}
|
|
142
|
+
interface LineageNode {
|
|
143
|
+
readonly contentHash: ContentHash;
|
|
144
|
+
readonly schema: string;
|
|
145
|
+
readonly artifactId: ArtifactId;
|
|
146
|
+
readonly parentArtifactId?: ArtifactId | undefined;
|
|
147
|
+
readonly rootArtifactId: ArtifactId;
|
|
148
|
+
readonly lineageId: LineageId;
|
|
149
|
+
readonly sequence?: number | undefined;
|
|
150
|
+
readonly filePath: string;
|
|
151
|
+
readonly networkId: NetworkId;
|
|
152
|
+
readonly mode: string;
|
|
153
|
+
readonly createdAt: string;
|
|
154
|
+
}
|
|
155
|
+
interface LineageTransition {
|
|
156
|
+
readonly from: LineageNode;
|
|
157
|
+
readonly to: LineageNode;
|
|
158
|
+
readonly valid: boolean;
|
|
159
|
+
readonly rule: string;
|
|
160
|
+
}
|
|
161
|
+
interface LineageChainResult {
|
|
162
|
+
readonly anchor: string;
|
|
163
|
+
readonly direction: "ancestors" | "descendants";
|
|
164
|
+
readonly nodes: readonly LineageNode[];
|
|
165
|
+
readonly transitions: readonly LineageTransition[];
|
|
166
|
+
readonly complete: boolean;
|
|
167
|
+
}
|
|
168
|
+
interface LineageOrphan {
|
|
169
|
+
readonly node: LineageNode;
|
|
170
|
+
readonly missingParentId: string;
|
|
171
|
+
readonly reason: string;
|
|
172
|
+
}
|
|
173
|
+
type DivergenceKind = "state-hash-mismatch" | "fee-mismatch" | "utxo-count-mismatch" | "status-mismatch" | "txid-mismatch" | "ordering-divergence";
|
|
174
|
+
interface ReplayDivergence {
|
|
175
|
+
readonly txId: string;
|
|
176
|
+
readonly kind: DivergenceKind;
|
|
177
|
+
readonly field: string;
|
|
178
|
+
readonly expected: string;
|
|
179
|
+
readonly actual: string;
|
|
180
|
+
}
|
|
181
|
+
interface ReplaySummaryResult {
|
|
182
|
+
readonly txId: TxId;
|
|
183
|
+
readonly status: string;
|
|
184
|
+
readonly mode: string;
|
|
185
|
+
readonly networkId: NetworkId;
|
|
186
|
+
readonly from: KaspaAddress;
|
|
187
|
+
readonly to: KaspaAddress;
|
|
188
|
+
readonly amountSompi: string;
|
|
189
|
+
readonly feeSompi: string;
|
|
190
|
+
readonly daaScore: string;
|
|
191
|
+
readonly preStateHash?: string | undefined;
|
|
192
|
+
readonly postStateHash?: string | undefined;
|
|
193
|
+
readonly spentUtxoCount: number;
|
|
194
|
+
readonly createdUtxoCount: number;
|
|
195
|
+
readonly hasTrace: boolean;
|
|
196
|
+
readonly traceEventCount: number;
|
|
197
|
+
}
|
|
198
|
+
interface ReplayInvariantsResult {
|
|
199
|
+
readonly txId: TxId;
|
|
200
|
+
readonly planIntegrity: boolean;
|
|
201
|
+
readonly receiptReproducible: boolean;
|
|
202
|
+
readonly stateTransitionValid: boolean;
|
|
203
|
+
readonly utxoConservation: boolean;
|
|
204
|
+
readonly issues: readonly string[];
|
|
205
|
+
}
|
|
206
|
+
interface DagConflict {
|
|
207
|
+
readonly outpoint: string;
|
|
208
|
+
readonly winnerTxId: TxId;
|
|
209
|
+
readonly loserTxIds: readonly TxId[];
|
|
210
|
+
}
|
|
211
|
+
interface DagDisplacement {
|
|
212
|
+
readonly txId: TxId;
|
|
213
|
+
readonly reason: string;
|
|
214
|
+
readonly currentlyAccepted: boolean;
|
|
215
|
+
}
|
|
216
|
+
interface DagTxHistory {
|
|
217
|
+
readonly txId: TxId;
|
|
218
|
+
readonly blockId: string;
|
|
219
|
+
readonly accepted: boolean;
|
|
220
|
+
readonly displaced: boolean;
|
|
221
|
+
readonly inSinkPath: boolean;
|
|
222
|
+
readonly daaScore: string;
|
|
223
|
+
}
|
|
224
|
+
interface DagSinkPath {
|
|
225
|
+
readonly nodes: readonly DagSinkPathNode[];
|
|
226
|
+
readonly sink: string;
|
|
227
|
+
readonly depth: number;
|
|
228
|
+
}
|
|
229
|
+
interface DagSinkPathNode {
|
|
230
|
+
readonly blockId: string;
|
|
231
|
+
readonly daaScore: string;
|
|
232
|
+
readonly acceptedTxCount: number;
|
|
233
|
+
readonly isGenesis: boolean;
|
|
234
|
+
}
|
|
235
|
+
interface DagAnomaly {
|
|
236
|
+
readonly kind: "displaced-never-reaccepted" | "unreachable-block" | "invariant-violation";
|
|
237
|
+
readonly description: string;
|
|
238
|
+
readonly txId?: string | undefined;
|
|
239
|
+
readonly blockId?: string | undefined;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
interface QueryEngineOptions {
|
|
243
|
+
/** Root directory for artifact/lineage scanning (typically .hardkas/ or project root). */
|
|
244
|
+
readonly artifactDir: string;
|
|
245
|
+
}
|
|
246
|
+
declare class QueryEngine {
|
|
247
|
+
private readonly adapters;
|
|
248
|
+
constructor(options: QueryEngineOptions);
|
|
249
|
+
/**
|
|
250
|
+
* Execute a query request against the appropriate adapter.
|
|
251
|
+
*/
|
|
252
|
+
execute<T = unknown>(request: QueryRequest): Promise<QueryResult<T>>;
|
|
253
|
+
/**
|
|
254
|
+
* List available domains and their operations.
|
|
255
|
+
*/
|
|
256
|
+
listCapabilities(): Array<{
|
|
257
|
+
domain: QueryDomain;
|
|
258
|
+
ops: readonly string[];
|
|
259
|
+
filters: readonly string[];
|
|
260
|
+
}>;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Creates a default QueryRequest with sensible defaults.
|
|
264
|
+
*/
|
|
265
|
+
declare function createQueryRequest(overrides: Partial<QueryRequest> & {
|
|
266
|
+
domain: QueryDomain;
|
|
267
|
+
op: string;
|
|
268
|
+
}): QueryRequest;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Filter evaluation engine.
|
|
272
|
+
* Evaluates QueryFilter[] predicates against arbitrary objects using dot-path field access.
|
|
273
|
+
* All evaluation is deterministic and null-safe.
|
|
274
|
+
*/
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Resolves a dot-separated field path on an object.
|
|
278
|
+
* Returns undefined if any segment is missing.
|
|
279
|
+
*/
|
|
280
|
+
declare function resolveFieldPath(obj: unknown, path: string): unknown;
|
|
281
|
+
/**
|
|
282
|
+
* Evaluates a single filter predicate against an item.
|
|
283
|
+
*/
|
|
284
|
+
declare function evaluateFilter(item: unknown, filter: QueryFilter): boolean;
|
|
285
|
+
/**
|
|
286
|
+
* Evaluates all filters (AND semantics). Returns true only if all pass.
|
|
287
|
+
*/
|
|
288
|
+
declare function evaluateFilters(item: unknown, filters: readonly QueryFilter[]): boolean;
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Computes a SHA-256 hash of the deterministic serialization of items.
|
|
292
|
+
* This hash is stable: identical items always produce identical hashes.
|
|
293
|
+
*/
|
|
294
|
+
declare function computeQueryHash(items: readonly unknown[]): string;
|
|
295
|
+
/**
|
|
296
|
+
* Serializes a QueryResult to deterministic JSON.
|
|
297
|
+
* The `annotations` block is included but clearly non-deterministic.
|
|
298
|
+
* The `queryHash` enables diffing results across environments.
|
|
299
|
+
*/
|
|
300
|
+
declare function serializeQueryResult(result: QueryResult): string;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Explainability engine.
|
|
304
|
+
*
|
|
305
|
+
* Generates structured, rule-driven ExplainChains for query results.
|
|
306
|
+
* Every explanation is based on explicit rules, deterministic evidence,
|
|
307
|
+
* and actual execution state. No speculative reasoning.
|
|
308
|
+
*/
|
|
309
|
+
|
|
310
|
+
declare function explainIntegrity(artifact: ArtifactQueryItem, integrity: {
|
|
311
|
+
ok: boolean;
|
|
312
|
+
hashMatch: boolean;
|
|
313
|
+
schemaValid: boolean;
|
|
314
|
+
errors: readonly string[];
|
|
315
|
+
}): ExplainChain;
|
|
316
|
+
declare function explainTransition(transition: LineageTransition): ExplainChain;
|
|
317
|
+
declare function explainOrphan(node: LineageNode, missingParentId: string): ExplainChain;
|
|
318
|
+
declare function formatExplainBrief(chain: ExplainChain): string;
|
|
319
|
+
declare function formatExplainFull(chain: ExplainChain): string;
|
|
320
|
+
|
|
321
|
+
declare class ArtifactQueryAdapter implements QueryAdapter {
|
|
322
|
+
readonly domain: "artifacts";
|
|
323
|
+
private readonly rootDir;
|
|
324
|
+
constructor(rootDir: string);
|
|
325
|
+
supportedOps(): readonly ["list", "inspect", "diff", "verify"];
|
|
326
|
+
supportedFilters(): readonly ["schema", "version", "networkId", "mode", "from.address", "to.address", "amountSompi", "status", "contentHash", "createdAt"];
|
|
327
|
+
execute(request: QueryRequest): Promise<QueryResult>;
|
|
328
|
+
private executeList;
|
|
329
|
+
private executeInspect;
|
|
330
|
+
private executeDiff;
|
|
331
|
+
private executeVerify;
|
|
332
|
+
private scanArtifactFiles;
|
|
333
|
+
private walkDir;
|
|
334
|
+
private readJsonSafe;
|
|
335
|
+
private resolveTarget;
|
|
336
|
+
private sortItems;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
declare class LineageQueryAdapter implements QueryAdapter {
|
|
340
|
+
readonly domain: "lineage";
|
|
341
|
+
private readonly rootDir;
|
|
342
|
+
constructor(rootDir: string);
|
|
343
|
+
supportedOps(): readonly ["chain", "transitions", "orphans"];
|
|
344
|
+
supportedFilters(): readonly ["schema", "networkId", "mode", "rootArtifactId", "lineageId"];
|
|
345
|
+
execute(request: QueryRequest): Promise<QueryResult<any>>;
|
|
346
|
+
private executeChain;
|
|
347
|
+
private executeTransitions;
|
|
348
|
+
private executeOrphans;
|
|
349
|
+
private buildGraph;
|
|
350
|
+
private walkAncestors;
|
|
351
|
+
private walkDescendants;
|
|
352
|
+
private scanJsonFiles;
|
|
353
|
+
private walkDir;
|
|
354
|
+
private readJsonSafe;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
declare class ReplayQueryAdapter implements QueryAdapter {
|
|
358
|
+
readonly domain: "replay";
|
|
359
|
+
private readonly rootDir;
|
|
360
|
+
constructor(rootDir: string);
|
|
361
|
+
supportedOps(): readonly ["list", "summary", "divergences", "invariants"];
|
|
362
|
+
supportedFilters(): readonly ["txId", "status", "networkId", "mode", "daaScore", "from.address", "to.address"];
|
|
363
|
+
execute(request: QueryRequest): Promise<QueryResult>;
|
|
364
|
+
private executeList;
|
|
365
|
+
private executeSummary;
|
|
366
|
+
private executeDivergences;
|
|
367
|
+
private executeInvariants;
|
|
368
|
+
private loadAllReceipts;
|
|
369
|
+
private loadAllTraces;
|
|
370
|
+
private loadReceipt;
|
|
371
|
+
private loadTrace;
|
|
372
|
+
private loadJsonDir;
|
|
373
|
+
private readJsonSafe;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
declare class DagQueryAdapter implements QueryAdapter {
|
|
377
|
+
readonly domain: "dag";
|
|
378
|
+
private readonly rootDir;
|
|
379
|
+
constructor(rootDir: string);
|
|
380
|
+
supportedOps(): readonly ["conflicts", "displaced", "history", "sink-path", "anomalies"];
|
|
381
|
+
supportedFilters(): readonly ["txId", "blockId", "daaScore"];
|
|
382
|
+
execute(request: QueryRequest): Promise<QueryResult>;
|
|
383
|
+
private executeConflicts;
|
|
384
|
+
private executeDisplaced;
|
|
385
|
+
private executeHistory;
|
|
386
|
+
private executeSinkPath;
|
|
387
|
+
private executeAnomalies;
|
|
388
|
+
private loadDag;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
declare class EventsQueryAdapter implements QueryAdapter {
|
|
392
|
+
readonly domain: "events";
|
|
393
|
+
private readonly rootDir;
|
|
394
|
+
constructor(rootDir: string);
|
|
395
|
+
supportedOps(): readonly ["list", "summary"];
|
|
396
|
+
supportedFilters(): readonly ["txId", "workflowId", "domain", "kind", "networkId", "artifactId"];
|
|
397
|
+
execute(request: QueryRequest): Promise<QueryResult>;
|
|
398
|
+
private executeList;
|
|
399
|
+
private loadEvents;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
declare class TxQueryAdapter implements QueryAdapter {
|
|
403
|
+
readonly domain: "tx";
|
|
404
|
+
private readonly rootDir;
|
|
405
|
+
constructor(rootDir: string);
|
|
406
|
+
supportedOps(): readonly ["aggregate"];
|
|
407
|
+
supportedFilters(): readonly ["txId"];
|
|
408
|
+
execute(request: QueryRequest): Promise<QueryResult>;
|
|
409
|
+
private executeAggregate;
|
|
410
|
+
private findArtifactsByTxId;
|
|
411
|
+
private findEventsByTxId;
|
|
412
|
+
private scanJsonFiles;
|
|
413
|
+
private walkDir;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
export { type ArtifactDiffEntry, type ArtifactDiffResult, type ArtifactInspectResult, type ArtifactOp, ArtifactQueryAdapter, type ArtifactQueryItem, type DagAnomaly, type DagConflict, type DagDisplacement, type DagOp, DagQueryAdapter, type DagSinkPath, type DagSinkPathNode, type DagTxHistory, type DivergenceKind, type EventsOp, EventsQueryAdapter, type ExplainChain, type FilterOp, type LineageChainResult, type LineageNode, type LineageOp, type LineageOrphan, LineageQueryAdapter, type LineageTransition, type QueryAdapter, type QueryAnnotations, type QueryDomain, QueryEngine, type QueryEngineOptions, type QueryFilter, type QueryRequest, type QueryResult, type QuerySort, type ReasoningStep, type ReplayDivergence, type ReplayInvariantsResult, type ReplayOp, ReplayQueryAdapter, type ReplaySummaryResult, type TxOp, TxQueryAdapter, computeQueryHash, createQueryRequest, evaluateFilter, evaluateFilters, explainIntegrity, explainOrphan, explainTransition, formatExplainBrief, formatExplainFull, resolveFieldPath, serializeQueryResult };
|