@descryy/runtime-evidence-correlation 0.2.1 → 0.4.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 +6 -0
- package/dist/collector-version.d.ts +1 -8
- package/dist/collector-version.d.ts.map +1 -1
- package/dist/collector-version.js +1 -8
- package/dist/collector-version.js.map +1 -1
- package/dist/correlate-execution.d.ts +80 -158
- package/dist/correlate-execution.d.ts.map +1 -1
- package/dist/correlate-execution.js +90 -181
- package/dist/correlate-execution.js.map +1 -1
- package/package.json +13 -8
package/LICENSE
ADDED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `Evidence.collectorVersion`'s source for the `source: "harness"` rows this
|
|
3
|
-
* package writes when the correlation pass itself breaks. Read from this
|
|
4
|
-
* package's own `package.json` rather than hand-duplicated into a second
|
|
5
|
-
* string that can drift from what actually shipped — the same rule
|
|
6
|
-
* `packages/orchestrator/src/collector-version.ts` already states for the
|
|
7
|
-
* orchestrator's own direct emissions.
|
|
8
|
-
*/
|
|
1
|
+
/** `Evidence.collectorVersion` for `source: "harness"` rows. Read from `package.json`, not hand-duplicated, so it can't drift from what shipped. */
|
|
9
2
|
export declare const CORRELATOR_VERSION: string;
|
|
10
3
|
//# sourceMappingURL=collector-version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector-version.d.ts","sourceRoot":"","sources":["../src/collector-version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"collector-version.d.ts","sourceRoot":"","sources":["../src/collector-version.ts"],"names":[],"mappings":"AAAA,oJAAoJ;AAMpJ,eAAO,MAAM,kBAAkB,EAAE,MAA6E,CAAC"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `Evidence.collectorVersion`'s source for the `source: "harness"` rows this
|
|
3
|
-
* package writes when the correlation pass itself breaks. Read from this
|
|
4
|
-
* package's own `package.json` rather than hand-duplicated into a second
|
|
5
|
-
* string that can drift from what actually shipped — the same rule
|
|
6
|
-
* `packages/orchestrator/src/collector-version.ts` already states for the
|
|
7
|
-
* orchestrator's own direct emissions.
|
|
8
|
-
*/
|
|
1
|
+
/** `Evidence.collectorVersion` for `source: "harness"` rows. Read from `package.json`, not hand-duplicated, so it can't drift from what shipped. */
|
|
9
2
|
import { createRequire } from "node:module";
|
|
10
3
|
const require = createRequire(import.meta.url);
|
|
11
4
|
export const CORRELATOR_VERSION = require("../package.json").version;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collector-version.js","sourceRoot":"","sources":["../src/collector-version.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"collector-version.js","sourceRoot":"","sources":["../src/collector-version.ts"],"names":[],"mappings":"AAAA,oJAAoJ;AAEpJ,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,MAAM,kBAAkB,GAAY,OAAO,CAAC,iBAAiB,CAAkC,CAAC,OAAO,CAAC"}
|
|
@@ -1,132 +1,66 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* `
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* `
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* (`openapi-observation`'s `compareObservedEndpoint` /
|
|
47
|
-
* `compareObservedExchange`) was left out because "folding a conformance
|
|
48
|
-
* verdict into an attribution pass would put two different claims in one
|
|
49
|
-
* output." That objection was right about the risk and wrong about the
|
|
50
|
-
* remedy: the two claims must not share **an output**, which is not the same
|
|
51
|
-
* as not sharing **a pass**. So the family is wired, and the separation is
|
|
52
|
-
* structural rather than by omission:
|
|
53
|
-
*
|
|
54
|
-
* - **One graph query, not two.** `compareObservedEndpoint` *calls*
|
|
55
|
-
* `resolveEndpointNode` and returns the very same node under
|
|
56
|
-
* `documented`. Running both would ask the graph the identical question
|
|
57
|
-
* twice and let two families race for `Evidence.graphNodeId`. The HTTP
|
|
58
|
-
* family therefore routes **through** the wrapper, which is strictly more
|
|
59
|
-
* informative and resolves exactly once.
|
|
60
|
-
* - **Identity keeps its own vocabulary.** `attributed` and `refusals` are
|
|
61
|
-
* unchanged: a resolved endpoint is `family: "endpoint"`,
|
|
62
|
-
* `method: "request-url"`; a miss is `not-found`, the same discriminant
|
|
63
|
-
* `resolveEndpointNode` itself returns, carrying the wrapper's reason
|
|
64
|
-
* verbatim. `undocumented` / `wrong-method` are contract words, and they
|
|
65
|
-
* stay out of the identity channel.
|
|
66
|
-
* - **Conformance is its own field** (`conformance`, `CorrelationConformance`),
|
|
67
|
-
* never persisted, never written to the evidence stream, never an
|
|
68
|
-
* `EvidenceAttribution`. A reader that only cares about identity can
|
|
69
|
-
* ignore it entirely, which is what "not one output" has to mean to be
|
|
70
|
-
* worth anything.
|
|
71
|
-
*
|
|
72
|
-
* **What the exchange half needs, and what supplies it.** `compareObservedExchange`
|
|
73
|
-
* additionally consumes an observed **status** and, optionally, the request /
|
|
74
|
-
* response **bodies** — all three come off evidence that already exists:
|
|
75
|
-
* `InboundProxy` emits `{method, path, status}` on `NETWORK_RESPONSE` and
|
|
76
|
-
* `HTTP_ERROR`, and `BrowserNetworkCollector`'s `HTTP_ERROR` adds the captured
|
|
77
|
-
* response `body`. No declared OpenAPI *document* is read here or anywhere at
|
|
78
|
-
* runtime: the contract is whatever `adapter-openapi` already wrote into the
|
|
79
|
-
* graph (`API_ROUTE --SERVES_API--> API_ENDPOINT --`, `--USES_TYPE(roles)--> DTO`),
|
|
80
|
-
* so nothing new has to be supplied by a run. Two honest limits follow, and are
|
|
81
|
-
* reported rather than papered over:
|
|
82
|
-
*
|
|
83
|
-
* 1. A graph whose `API_ENDPOINT` nodes came from a **framework extractor**
|
|
84
|
-
* rather than an OpenAPI document has no DTOs at all, and every declared
|
|
85
|
-
* role reads empty — which `compareObservedExchange` correctly reports as
|
|
86
|
-
* `statusSurprising: true`, meaning "this operation declares no shape for
|
|
87
|
-
* an outcome like this one." Read alone that is indistinguishable from a
|
|
88
|
-
* contract violation, so `contractSchemasDeclared` is reported beside it:
|
|
89
|
-
* `false` means there was no contract to violate.
|
|
90
|
-
* 2. A `NETWORK_REQUEST` carries a request body (`postData`) but no status, so
|
|
91
|
-
* only the endpoint half runs for it — request-body conformance needs the
|
|
92
|
-
* exchange, and a status is not invented to obtain one.
|
|
93
|
-
*
|
|
94
|
-
* Bodies are read **after** `EvidenceStore` redaction, which re-serializes a
|
|
95
|
-
* JSON body with sensitive values replaced by a marker string. Field
|
|
96
|
-
* *presence* survives that intact; a `type-mismatch` on a non-string-typed
|
|
97
|
-
* field whose name matches a credential/PII pattern would be redaction's
|
|
98
|
-
* artifact, not the app's bug.
|
|
99
|
-
*
|
|
100
|
-
* ## Families still not wired here, named rather than left implicit
|
|
101
|
-
*
|
|
102
|
-
* **`resolveObservedFrontendCaller`** is deliberately excluded, not
|
|
103
|
-
* pending. It answers "which frontend function calls this endpoint", which
|
|
104
|
-
* is a question about a *node*, not about an evidence item, and it falls
|
|
105
|
-
* back to a structural answer when the observed stack does not resolve.
|
|
106
|
-
* Attributing evidence to a structurally-derived caller would break the
|
|
107
|
-
* rule the whole confirmed/strongly-supported gate rests on: a named node
|
|
108
|
-
* must be named by the observation itself.
|
|
2
|
+
* The production correlation pass (RT-230): owns both an `EvidenceStore` and
|
|
3
|
+
* a graph `driver` and performs resolve-then-attribute. Before this, every
|
|
4
|
+
* real `attribute()` call site lived only in `test/` files — the per-package
|
|
5
|
+
* wrappers (`openapi-observation`, `database-observation`, `test-runner`)
|
|
6
|
+
* can't call it themselves since it needs an `evidenceId` that only exists
|
|
7
|
+
* after `store.write()` returns.
|
|
8
|
+
*
|
|
9
|
+
* Kept separate from `runInstrumentedExecution` per that module's own
|
|
10
|
+
* boundary (does not correlate to graph nodes). This is a post-run pass,
|
|
11
|
+
* taking the graph as a parameter like every other production function here.
|
|
12
|
+
* Stage order (architecture §3): collectors → evidence store → graph
|
|
13
|
+
* correlator → runtime findings — this package depends on `graph-correlator`;
|
|
14
|
+
* `finding` depends on neither.
|
|
15
|
+
*
|
|
16
|
+
* Does NOT: compose findings (RT-027, that's `finding`'s job), open or walk
|
|
17
|
+
* the graph itself (`traceApi` is the caller's call, RT-026), or decide
|
|
18
|
+
* confidence. Resolves and attributes, nothing else.
|
|
19
|
+
*
|
|
20
|
+
* ## OpenAPI family (RT-232)
|
|
21
|
+
*
|
|
22
|
+
* Routes through `openapi-observation`'s wrapper rather than calling
|
|
23
|
+
* `resolveEndpointNode` directly, so identity resolves once instead of two
|
|
24
|
+
* families racing for `Evidence.graphNodeId`. `conformance`
|
|
25
|
+
* (`CorrelationConformance`) is a separate field, never persisted and never
|
|
26
|
+
* written to the evidence stream — a contract verdict isn't an observation
|
|
27
|
+
* about the run.
|
|
28
|
+
*
|
|
29
|
+
* Exchange comparison needs an observed status plus bodies, all read off
|
|
30
|
+
* existing evidence. No OpenAPI document is read at runtime — the contract
|
|
31
|
+
* is whatever `adapter-openapi` already wrote into the graph. Two disclosed
|
|
32
|
+
* limits: (1) a framework-extractor `API_ENDPOINT` has no DTOs, so
|
|
33
|
+
* `statusSurprising: true` pairs with `contractSchemasDeclared: false` (no
|
|
34
|
+
* contract to violate, not a violation); (2) a request with `postData` but
|
|
35
|
+
* no status only runs the endpoint half — a status is never invented.
|
|
36
|
+
*
|
|
37
|
+
* Bodies are read after `EvidenceStore` redaction; field *presence*
|
|
38
|
+
* survives, so a `type-mismatch` on a credential/PII-named field may be
|
|
39
|
+
* redaction's artifact, not the app's bug.
|
|
40
|
+
*
|
|
41
|
+
* `resolveObservedFrontendCaller` is deliberately excluded, not pending: it
|
|
42
|
+
* answers a question about a *node*, falling back to a structural guess when
|
|
43
|
+
* the stack doesn't resolve — attributing to that would break the rule the
|
|
44
|
+
* confirmed/strongly-supported gate rests on: a named node must be named by
|
|
45
|
+
* the observation itself.
|
|
109
46
|
*
|
|
110
47
|
* ## Refusals stay refusals (RT-229)
|
|
111
48
|
*
|
|
112
49
|
* `not-found` / `ambiguous` / `line-mismatch` / `producer-emitted-none` /
|
|
113
|
-
* `no-table` / `no-location` are
|
|
50
|
+
* `no-table` / `no-location` are honest refusals, carried through verbatim —
|
|
114
51
|
* RT-229 ruled that writing `COLLECTOR_ERROR` for one would be a false
|
|
115
|
-
* failure signal.
|
|
116
|
-
*
|
|
117
|
-
* The only thing that becomes `COLLECTOR_ERROR` is a resolver or the store
|
|
118
|
-
* genuinely **throwing** — see `harnessErrors` below.
|
|
52
|
+
* failure signal. Only a resolver or the store actually **throwing** becomes
|
|
53
|
+
* `COLLECTOR_ERROR` (see `harnessErrors` below).
|
|
119
54
|
*/
|
|
120
55
|
import type { Evidence } from "@descryy/runtime-contracts";
|
|
121
56
|
import type { EvidenceStore } from "@descryy/runtime-evidence-store";
|
|
122
57
|
import type { SqlDriver } from "@descryy/core";
|
|
123
58
|
import { type EndpointComparison, type StatusBucket } from "@descryy/runtime-openapi-observation";
|
|
124
59
|
/**
|
|
125
|
-
* Which resolver answered (or refused). Not a confidence ranking —
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
* graph entities).
|
|
60
|
+
* Which resolver answered (or refused). Not a confidence ranking — families
|
|
61
|
+
* are disjoint by evidence read, except `log-text-endpoint` is a *second*
|
|
62
|
+
* naming a backend line can carry alongside its own stack frame (RT-052:
|
|
63
|
+
* one observation, two real graph entities).
|
|
130
64
|
*/
|
|
131
65
|
export type CorrelationFamily = "endpoint" | "symbol" | "database-table" | "test-case" | "log-text-endpoint";
|
|
132
66
|
/**
|
|
@@ -134,13 +68,10 @@ export type CorrelationFamily = "endpoint" | "symbol" | "database-table" | "test
|
|
|
134
68
|
* its symbols belong to, and the on-disk root its runtime paths are
|
|
135
69
|
* absolute against.
|
|
136
70
|
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
* service with no entry here has its symbol-family and test-family evidence
|
|
142
|
-
* left alone and its name reported in `unscopedServices`; it is never
|
|
143
|
-
* resolved against a repository nobody named.
|
|
71
|
+
* Required, never defaulted — a guessed repo could resolve the wrong
|
|
72
|
+
* repository's identically named file (RT-031). A service with no entry
|
|
73
|
+
* here has its symbol/test evidence left alone and named in
|
|
74
|
+
* `unscopedServices` rather than resolved against a guess.
|
|
144
75
|
*/
|
|
145
76
|
export interface CorrelationScope {
|
|
146
77
|
readonly repo: string;
|
|
@@ -150,52 +81,46 @@ export interface CorrelationScope {
|
|
|
150
81
|
readonly cwd?: string;
|
|
151
82
|
}
|
|
152
83
|
export interface CorrelateExecutionInput {
|
|
153
|
-
/**
|
|
84
|
+
/** Provided, never constructed — caller owns its lifetime. */
|
|
154
85
|
readonly store: EvidenceStore;
|
|
155
|
-
/** The `descry-core` graph
|
|
86
|
+
/** The `descry-core` graph evidence resolves against. Consumed, never modified. */
|
|
156
87
|
readonly driver: SqlDriver;
|
|
157
88
|
readonly executionId: string;
|
|
158
|
-
/** Service name (`Evidence.service`) →
|
|
89
|
+
/** Service name (`Evidence.service`) → repository scope its symbols resolve in. */
|
|
159
90
|
readonly scopeByService?: Readonly<Record<string, CorrelationScope>>;
|
|
160
91
|
}
|
|
161
92
|
/**
|
|
162
93
|
* One (evidence, node) association this pass made. Structurally an
|
|
163
|
-
* `EvidenceAttribution` (`@descryy/runtime-finding`)
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
* dependency, because this package must not depend on the governance layer
|
|
168
|
-
* it feeds (RT-027: resolution has no opinion on confidence).
|
|
94
|
+
* `EvidenceAttribution` (`@descryy/runtime-finding`) so `secondary` can go
|
|
95
|
+
* straight into `composeFinding`'s fourth argument. Assignability is
|
|
96
|
+
* asserted by a test rather than a dependency — this package must not
|
|
97
|
+
* depend on the governance layer it feeds (RT-027).
|
|
169
98
|
*/
|
|
170
99
|
export interface CorrelationAttribution {
|
|
171
100
|
readonly evidenceId: string;
|
|
172
101
|
readonly graphNodeId: string;
|
|
173
|
-
/**
|
|
102
|
+
/** `EvidenceAttribution.method` vocabulary: `"request-url"`, `"stack-frame"`, `"query-table"`, `"test-location"`, `"log-text-endpoint"`. */
|
|
174
103
|
readonly method: string;
|
|
175
104
|
readonly family: CorrelationFamily;
|
|
176
|
-
/** True
|
|
105
|
+
/** True if persisted onto `Evidence.graphNodeId`; false if it's a second naming the store's one column can't hold. */
|
|
177
106
|
readonly persisted: boolean;
|
|
178
107
|
}
|
|
179
108
|
/**
|
|
180
|
-
* A resolver looked and could not answer
|
|
181
|
-
*
|
|
182
|
-
* resolver's own sentence — this pass adds no interpretation of its own to
|
|
183
|
-
* either.
|
|
109
|
+
* A resolver looked and could not answer — never an error. `outcome` and
|
|
110
|
+
* `reason` are the resolver's own, unchanged.
|
|
184
111
|
*/
|
|
185
112
|
export interface CorrelationRefusal {
|
|
186
113
|
readonly evidenceId: string;
|
|
187
114
|
readonly family: CorrelationFamily;
|
|
188
|
-
/** A resolver's
|
|
115
|
+
/** A resolver's discriminant (`"not-found"`, `"ambiguous"`, `"line-mismatch"`, `"producer-emitted-none"`, `"no-table"`, `"no-location"`), or this pass's own `"no-method"`/`"no-path"` when the observation didn't name enough to look up. */
|
|
189
116
|
readonly outcome: string;
|
|
190
117
|
readonly reason: string;
|
|
191
118
|
}
|
|
192
119
|
/**
|
|
193
|
-
* A resolver or the store **threw** —
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
* this wrap because there was no production call site to put it at, and
|
|
198
|
-
* this is that call site.
|
|
120
|
+
* A resolver or the store **threw** — the correlation machinery itself
|
|
121
|
+
* breaking, not a lookup miss. Each distinct failure is written into the
|
|
122
|
+
* evidence stream as `COLLECTOR_ERROR` / `source: "harness"` — RT-229
|
|
123
|
+
* declined this wrap for lack of a call site; this is that call site.
|
|
199
124
|
*/
|
|
200
125
|
export interface CorrelationHarnessError {
|
|
201
126
|
/** The `evidenceId` of the `COLLECTOR_ERROR` row written for this failure. */
|
|
@@ -205,15 +130,13 @@ export interface CorrelationHarnessError {
|
|
|
205
130
|
readonly occurrences: number;
|
|
206
131
|
}
|
|
207
132
|
/**
|
|
208
|
-
* What `openapi-observation` concluded about one
|
|
209
|
-
*
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* `ExchangeComparison.declaredRoles`, not a judgement.
|
|
133
|
+
* What `openapi-observation` concluded about one HTTP item's **contract**,
|
|
134
|
+
* as opposed to its identity. Every field is carried verbatim from the
|
|
135
|
+
* comparison except `contractSchemasDeclared`, a read of
|
|
136
|
+
* `ExchangeComparison.declaredRoles`.
|
|
213
137
|
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
* the run, and the evidence stream holds observations.
|
|
138
|
+
* Never persisted or written to the evidence stream — a contract verdict
|
|
139
|
+
* isn't an observation about the run.
|
|
217
140
|
*/
|
|
218
141
|
export interface CorrelationConformance {
|
|
219
142
|
readonly evidenceId: string;
|
|
@@ -231,10 +154,9 @@ export interface CorrelationConformance {
|
|
|
231
154
|
readonly requestSchema: string | null;
|
|
232
155
|
readonly responseSchema: string | null;
|
|
233
156
|
/**
|
|
234
|
-
* Whether the resolved endpoint
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* exchange comparison ran.
|
|
157
|
+
* Whether the resolved endpoint declares **any** DTO, any role. `false`
|
|
158
|
+
* with `statusSurprising: true` means "no contract indexed", never "the
|
|
159
|
+
* contract was violated". `null` when no exchange comparison ran.
|
|
238
160
|
*/
|
|
239
161
|
readonly contractSchemasDeclared: boolean | null;
|
|
240
162
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlate-execution.d.ts","sourceRoot":"","sources":["../src/correlate-execution.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"correlate-execution.d.ts","sourceRoot":"","sources":["../src/correlate-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,121 +1,56 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The production correlation pass (RT-230): owns both an `EvidenceStore` and
|
|
3
|
+
* a graph `driver` and performs resolve-then-attribute. Before this, every
|
|
4
|
+
* real `attribute()` call site lived only in `test/` files — the per-package
|
|
5
|
+
* wrappers (`openapi-observation`, `database-observation`, `test-runner`)
|
|
6
|
+
* can't call it themselves since it needs an `evidenceId` that only exists
|
|
7
|
+
* after `store.write()` returns.
|
|
3
8
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* `database-observation/graph-mapping.ts`, `test-runner/graph-mapping.ts`)
|
|
11
|
-
* each say in their own doc comment that attribution needs an `evidenceId`
|
|
12
|
-
* that only exists after `store.write()` returns — "outside this
|
|
13
|
-
* collector's own reach. The caller that already holds both the store and
|
|
14
|
-
* the graph `driver` attributes; this only resolves."
|
|
9
|
+
* Kept separate from `runInstrumentedExecution` per that module's own
|
|
10
|
+
* boundary (does not correlate to graph nodes). This is a post-run pass,
|
|
11
|
+
* taking the graph as a parameter like every other production function here.
|
|
12
|
+
* Stage order (architecture §3): collectors → evidence store → graph
|
|
13
|
+
* correlator → runtime findings — this package depends on `graph-correlator`;
|
|
14
|
+
* `finding` depends on neither.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
* *correlated* and not merely *correlatable*.
|
|
16
|
+
* Does NOT: compose findings (RT-027, that's `finding`'s job), open or walk
|
|
17
|
+
* the graph itself (`traceApi` is the caller's call, RT-026), or decide
|
|
18
|
+
* confidence. Resolves and attributes, nothing else.
|
|
20
19
|
*
|
|
21
|
-
* ##
|
|
20
|
+
* ## OpenAPI family (RT-232)
|
|
22
21
|
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* the store, taking the graph as a parameter — the same way every other
|
|
30
|
-
* production function in this repo takes a `SqlDriver` it does not open.
|
|
31
|
-
* The stage order the architecture diagram (§3) already draws — collectors →
|
|
32
|
-
* evidence store → graph correlator → runtime findings — is the order these
|
|
33
|
-
* packages now depend in, with nothing inverted: this package depends on
|
|
34
|
-
* `graph-correlator`, and `finding` depends on neither.
|
|
22
|
+
* Routes through `openapi-observation`'s wrapper rather than calling
|
|
23
|
+
* `resolveEndpointNode` directly, so identity resolves once instead of two
|
|
24
|
+
* families racing for `Evidence.graphNodeId`. `conformance`
|
|
25
|
+
* (`CorrelationConformance`) is a separate field, never persisted and never
|
|
26
|
+
* written to the evidence stream — a contract verdict isn't an observation
|
|
27
|
+
* about the run.
|
|
35
28
|
*
|
|
36
|
-
*
|
|
29
|
+
* Exchange comparison needs an observed status plus bodies, all read off
|
|
30
|
+
* existing evidence. No OpenAPI document is read at runtime — the contract
|
|
31
|
+
* is whatever `adapter-openapi` already wrote into the graph. Two disclosed
|
|
32
|
+
* limits: (1) a framework-extractor `API_ENDPOINT` has no DTOs, so
|
|
33
|
+
* `statusSurprising: true` pairs with `contractSchemasDeclared: false` (no
|
|
34
|
+
* contract to violate, not a violation); (2) a request with `postData` but
|
|
35
|
+
* no status only runs the endpoint half — a status is never invented.
|
|
37
36
|
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* confidence. It resolves and it attributes; that is the whole job.
|
|
37
|
+
* Bodies are read after `EvidenceStore` redaction; field *presence*
|
|
38
|
+
* survives, so a `type-mismatch` on a credential/PII-named field may be
|
|
39
|
+
* redaction's artifact, not the app's bug.
|
|
42
40
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* verdict into an attribution pass would put two different claims in one
|
|
49
|
-
* output." That objection was right about the risk and wrong about the
|
|
50
|
-
* remedy: the two claims must not share **an output**, which is not the same
|
|
51
|
-
* as not sharing **a pass**. So the family is wired, and the separation is
|
|
52
|
-
* structural rather than by omission:
|
|
53
|
-
*
|
|
54
|
-
* - **One graph query, not two.** `compareObservedEndpoint` *calls*
|
|
55
|
-
* `resolveEndpointNode` and returns the very same node under
|
|
56
|
-
* `documented`. Running both would ask the graph the identical question
|
|
57
|
-
* twice and let two families race for `Evidence.graphNodeId`. The HTTP
|
|
58
|
-
* family therefore routes **through** the wrapper, which is strictly more
|
|
59
|
-
* informative and resolves exactly once.
|
|
60
|
-
* - **Identity keeps its own vocabulary.** `attributed` and `refusals` are
|
|
61
|
-
* unchanged: a resolved endpoint is `family: "endpoint"`,
|
|
62
|
-
* `method: "request-url"`; a miss is `not-found`, the same discriminant
|
|
63
|
-
* `resolveEndpointNode` itself returns, carrying the wrapper's reason
|
|
64
|
-
* verbatim. `undocumented` / `wrong-method` are contract words, and they
|
|
65
|
-
* stay out of the identity channel.
|
|
66
|
-
* - **Conformance is its own field** (`conformance`, `CorrelationConformance`),
|
|
67
|
-
* never persisted, never written to the evidence stream, never an
|
|
68
|
-
* `EvidenceAttribution`. A reader that only cares about identity can
|
|
69
|
-
* ignore it entirely, which is what "not one output" has to mean to be
|
|
70
|
-
* worth anything.
|
|
71
|
-
*
|
|
72
|
-
* **What the exchange half needs, and what supplies it.** `compareObservedExchange`
|
|
73
|
-
* additionally consumes an observed **status** and, optionally, the request /
|
|
74
|
-
* response **bodies** — all three come off evidence that already exists:
|
|
75
|
-
* `InboundProxy` emits `{method, path, status}` on `NETWORK_RESPONSE` and
|
|
76
|
-
* `HTTP_ERROR`, and `BrowserNetworkCollector`'s `HTTP_ERROR` adds the captured
|
|
77
|
-
* response `body`. No declared OpenAPI *document* is read here or anywhere at
|
|
78
|
-
* runtime: the contract is whatever `adapter-openapi` already wrote into the
|
|
79
|
-
* graph (`API_ROUTE --SERVES_API--> API_ENDPOINT --`, `--USES_TYPE(roles)--> DTO`),
|
|
80
|
-
* so nothing new has to be supplied by a run. Two honest limits follow, and are
|
|
81
|
-
* reported rather than papered over:
|
|
82
|
-
*
|
|
83
|
-
* 1. A graph whose `API_ENDPOINT` nodes came from a **framework extractor**
|
|
84
|
-
* rather than an OpenAPI document has no DTOs at all, and every declared
|
|
85
|
-
* role reads empty — which `compareObservedExchange` correctly reports as
|
|
86
|
-
* `statusSurprising: true`, meaning "this operation declares no shape for
|
|
87
|
-
* an outcome like this one." Read alone that is indistinguishable from a
|
|
88
|
-
* contract violation, so `contractSchemasDeclared` is reported beside it:
|
|
89
|
-
* `false` means there was no contract to violate.
|
|
90
|
-
* 2. A `NETWORK_REQUEST` carries a request body (`postData`) but no status, so
|
|
91
|
-
* only the endpoint half runs for it — request-body conformance needs the
|
|
92
|
-
* exchange, and a status is not invented to obtain one.
|
|
93
|
-
*
|
|
94
|
-
* Bodies are read **after** `EvidenceStore` redaction, which re-serializes a
|
|
95
|
-
* JSON body with sensitive values replaced by a marker string. Field
|
|
96
|
-
* *presence* survives that intact; a `type-mismatch` on a non-string-typed
|
|
97
|
-
* field whose name matches a credential/PII pattern would be redaction's
|
|
98
|
-
* artifact, not the app's bug.
|
|
99
|
-
*
|
|
100
|
-
* ## Families still not wired here, named rather than left implicit
|
|
101
|
-
*
|
|
102
|
-
* **`resolveObservedFrontendCaller`** is deliberately excluded, not
|
|
103
|
-
* pending. It answers "which frontend function calls this endpoint", which
|
|
104
|
-
* is a question about a *node*, not about an evidence item, and it falls
|
|
105
|
-
* back to a structural answer when the observed stack does not resolve.
|
|
106
|
-
* Attributing evidence to a structurally-derived caller would break the
|
|
107
|
-
* rule the whole confirmed/strongly-supported gate rests on: a named node
|
|
108
|
-
* must be named by the observation itself.
|
|
41
|
+
* `resolveObservedFrontendCaller` is deliberately excluded, not pending: it
|
|
42
|
+
* answers a question about a *node*, falling back to a structural guess when
|
|
43
|
+
* the stack doesn't resolve — attributing to that would break the rule the
|
|
44
|
+
* confirmed/strongly-supported gate rests on: a named node must be named by
|
|
45
|
+
* the observation itself.
|
|
109
46
|
*
|
|
110
47
|
* ## Refusals stay refusals (RT-229)
|
|
111
48
|
*
|
|
112
49
|
* `not-found` / `ambiguous` / `line-mismatch` / `producer-emitted-none` /
|
|
113
|
-
* `no-table` / `no-location` are
|
|
50
|
+
* `no-table` / `no-location` are honest refusals, carried through verbatim —
|
|
114
51
|
* RT-229 ruled that writing `COLLECTOR_ERROR` for one would be a false
|
|
115
|
-
* failure signal.
|
|
116
|
-
*
|
|
117
|
-
* The only thing that becomes `COLLECTOR_ERROR` is a resolver or the store
|
|
118
|
-
* genuinely **throwing** — see `harnessErrors` below.
|
|
52
|
+
* failure signal. Only a resolver or the store actually **throwing** becomes
|
|
53
|
+
* `COLLECTOR_ERROR` (see `harnessErrors` below).
|
|
119
54
|
*/
|
|
120
55
|
import { resolveEndpointFromLogText, resolveSymbolNode } from "@descryy/runtime-graph-correlator";
|
|
121
56
|
import { compareObservedEndpoint, compareObservedExchange, } from "@descryy/runtime-openapi-observation";
|
|
@@ -129,18 +64,16 @@ const TEST_EVENT_TYPES = new Set([
|
|
|
129
64
|
"TEST_SKIPPED",
|
|
130
65
|
]);
|
|
131
66
|
/**
|
|
132
|
-
* HTTP evidence
|
|
133
|
-
*
|
|
134
|
-
*
|
|
67
|
+
* HTTP evidence from any collector: browser network (`payload.url`,
|
|
68
|
+
* absolute), `InboundProxy` (`payload.path`), `ExternalRequestCollector`
|
|
69
|
+
* (`payload.url`).
|
|
135
70
|
*
|
|
136
|
-
* `NETWORK_RESPONSE`
|
|
137
|
-
* `
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* beside it, which does carry `method`, so the join would buy little and
|
|
143
|
-
* would make an otherwise strictly per-item pass depend on other items.
|
|
71
|
+
* `NETWORK_RESPONSE` usually refuses with `"no-method"` (the response
|
|
72
|
+
* payload carries `url` but not `method`) — left as a disclosed refusal
|
|
73
|
+
* rather than joined to the matching request by `requestId`: the failing
|
|
74
|
+
* exchange is already attributed via the `HTTP_ERROR` the collector emits
|
|
75
|
+
* beside it, so the join would buy little and make this pass depend on
|
|
76
|
+
* other items.
|
|
144
77
|
*/
|
|
145
78
|
const HTTP_EVENT_TYPES = new Set([
|
|
146
79
|
"NETWORK_REQUEST",
|
|
@@ -154,10 +87,8 @@ export function classifyEvidence(evidence) {
|
|
|
154
87
|
return "database-table";
|
|
155
88
|
if (TEST_EVENT_TYPES.has(evidence.eventType))
|
|
156
89
|
return "test-case";
|
|
157
|
-
// Checked before
|
|
158
|
-
//
|
|
159
|
-
// issued the call, and treating that as the item's identity would resolve
|
|
160
|
-
// a request to its caller instead of to the endpoint it named.
|
|
90
|
+
// Checked before source-location on purpose: NETWORK_REQUEST's
|
|
91
|
+
// sourceLocation is the *frontend caller*, not the endpoint's identity.
|
|
161
92
|
if (HTTP_EVENT_TYPES.has(evidence.eventType))
|
|
162
93
|
return "endpoint";
|
|
163
94
|
const location = evidence.sourceLocation;
|
|
@@ -172,20 +103,15 @@ function stringOrNull(value) {
|
|
|
172
103
|
return typeof value === "string" ? value : null;
|
|
173
104
|
}
|
|
174
105
|
/**
|
|
175
|
-
* `{method, path}` from an HTTP evidence payload, or the reason it
|
|
176
|
-
* there. Accepts `url` (absolute
|
|
177
|
-
*
|
|
178
|
-
* a query string is stripped from either, since `API_ENDPOINT` names carry
|
|
179
|
-
* a path and never a query.
|
|
106
|
+
* `{method, path}` from an HTTP evidence payload, or the reason it's not
|
|
107
|
+
* there. Accepts `url` (absolute) or `path` (`InboundProxy`'s `req.url`) —
|
|
108
|
+
* query string stripped either way, since `API_ENDPOINT` names never carry one.
|
|
180
109
|
*
|
|
181
|
-
* `status` and the two bodies are the
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
* `postData` is `BrowserNetworkCollector`'s request-body key and `body` is
|
|
187
|
-
* its response-body key; `requestBody`/`responseBody` are accepted as the
|
|
188
|
-
* names a future producer would most plausibly use.
|
|
110
|
+
* `status` and the two bodies are the exchange half's inputs, read here so
|
|
111
|
+
* one function owns "what did this payload observe". Each is `null` rather
|
|
112
|
+
* than defaulted — a guessed status would manufacture a verdict out of
|
|
113
|
+
* nothing. `postData`/`body` are `BrowserNetworkCollector`'s keys;
|
|
114
|
+
* `requestBody`/`responseBody` cover a future producer's likely names.
|
|
189
115
|
*/
|
|
190
116
|
function httpTarget(payload) {
|
|
191
117
|
const record = asRecord(payload);
|
|
@@ -236,12 +162,11 @@ function httpTarget(payload) {
|
|
|
236
162
|
/**
|
|
237
163
|
* `EndpointComparison`/`ExchangeComparison` → the two channels, kept apart.
|
|
238
164
|
*
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* than the resolver's, which is the point of routing through the wrapper.
|
|
165
|
+
* Identity collapses `undocumented` and `wrong-method` back to `not-found`:
|
|
166
|
+
* both mean "no `API_ENDPOINT` matched this method and path", the
|
|
167
|
+
* identity channel's usual discriminant. The reason string is still the
|
|
168
|
+
* comparison's own, richer than the resolver's alone — the point of routing
|
|
169
|
+
* through the wrapper.
|
|
245
170
|
*/
|
|
246
171
|
function splitComparison(evidenceId, comparison, exchange) {
|
|
247
172
|
const identity = comparison.outcome === "documented"
|
|
@@ -281,18 +206,14 @@ export function correlateExecution(input) {
|
|
|
281
206
|
let considered = 0;
|
|
282
207
|
let skipped = 0;
|
|
283
208
|
/**
|
|
284
|
-
* RT-229's declined wrap, now that a call site exists
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* whole pass with no evidence trail — the identical "harness machinery
|
|
289
|
-
* breaks, zero evidence trail" shape RT-219 fixed for `collector.start()`
|
|
290
|
-
* and RT-228 for `ExecutionController.run()`.
|
|
209
|
+
* RT-229's declined wrap, now that a call site exists. Resolvers read the
|
|
210
|
+
* graph through `@descryy/core`'s store reader, which has no try/catch —
|
|
211
|
+
* a `DriverError` would otherwise reject this whole pass with no evidence
|
|
212
|
+
* trail (same shape RT-219/RT-228 fixed elsewhere).
|
|
291
213
|
*
|
|
292
|
-
* A throw is NOT a refusal
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
-
* from "our own reader broke" without inspecting payload text.
|
|
214
|
+
* A throw is NOT a refusal: the item stays unattributed and the failure
|
|
215
|
+
* is reported as the harness's own, so "graph doesn't have it" stays
|
|
216
|
+
* distinguishable from "our reader broke".
|
|
296
217
|
*/
|
|
297
218
|
function attempt(fn, what) {
|
|
298
219
|
try {
|
|
@@ -307,10 +228,8 @@ export function correlateExecution(input) {
|
|
|
307
228
|
}
|
|
308
229
|
for (const evidence of store.getByExecution(executionId)) {
|
|
309
230
|
const family = classifyEvidence(evidence);
|
|
310
|
-
// A backend line
|
|
311
|
-
//
|
|
312
|
-
// frame classifies as nothing, and is still the only record that a
|
|
313
|
-
// particular route was exercised.
|
|
231
|
+
// A backend line may name an endpoint in its own text regardless of
|
|
232
|
+
// family: a `BACKEND_LOG` with no stack frame still records the route.
|
|
314
233
|
const backendSourced = evidence.source === "backend-log" || evidence.source === "backend-process";
|
|
315
234
|
if (family === null && !backendSourced) {
|
|
316
235
|
skipped += 1;
|
|
@@ -327,10 +246,8 @@ export function correlateExecution(input) {
|
|
|
327
246
|
}
|
|
328
247
|
else {
|
|
329
248
|
const observed = { method: target.method, path: target.path };
|
|
330
|
-
// One graph query, through
|
|
331
|
-
//
|
|
332
|
-
// depends on whether a status was observed, and nothing else: the
|
|
333
|
-
// exchange comparison needs one and it is never invented.
|
|
249
|
+
// One graph query, through the wrapper. Which one depends only on
|
|
250
|
+
// whether a status was observed — never invented to force exchange.
|
|
334
251
|
const status = target.status;
|
|
335
252
|
const exchange = status === null
|
|
336
253
|
? null
|
|
@@ -364,12 +281,10 @@ export function correlateExecution(input) {
|
|
|
364
281
|
const service = evidence.service;
|
|
365
282
|
const scope = service === null ? undefined : scopeByService[service];
|
|
366
283
|
if (scope === undefined) {
|
|
367
|
-
// Not a refusal
|
|
368
|
-
//
|
|
369
|
-
//
|
|
370
|
-
//
|
|
371
|
-
// runs for backend evidence — `API_ENDPOINT` is workspace-scoped
|
|
372
|
-
// (DEC-054) and needs no repository to resolve against.
|
|
284
|
+
// Not a refusal — nothing was attempted, so "didn't try" stays
|
|
285
|
+
// distinguishable from "tried, found nothing". Log-text pass below
|
|
286
|
+
// still runs for backend evidence: API_ENDPOINT is workspace-scoped
|
|
287
|
+
// (DEC-054), no repository needed.
|
|
373
288
|
unscopedServices.add(service ?? "(no service)");
|
|
374
289
|
skipped += 1;
|
|
375
290
|
}
|
|
@@ -398,22 +313,19 @@ export function correlateExecution(input) {
|
|
|
398
313
|
}
|
|
399
314
|
}
|
|
400
315
|
// The second naming a backend line can carry alongside its own frame
|
|
401
|
-
// (RT-052
|
|
402
|
-
//
|
|
403
|
-
//
|
|
404
|
-
// BACKEND_LOG with no stack at all, where it becomes the item's only
|
|
405
|
-
// naming and is therefore the one persisted.
|
|
316
|
+
// (RT-052). Attempted for all backend-sourced evidence regardless of
|
|
317
|
+
// family — for a BACKEND_LOG with no stack, it becomes the only naming
|
|
318
|
+
// and is persisted.
|
|
406
319
|
if (backendSourced) {
|
|
407
320
|
const text = typeof evidence.payload === "string" ? evidence.payload : JSON.stringify(evidence.payload);
|
|
408
321
|
const resolution = attempt(() => resolveEndpointFromLogText(driver, text), "resolveEndpointFromLogText");
|
|
409
322
|
if (resolution !== null && resolution.outcome === "resolved") {
|
|
410
323
|
outcomes.push({ family: "log-text-endpoint", method: "log-text-endpoint", nodeId: resolution.nodeId, refusal: null });
|
|
411
324
|
}
|
|
412
|
-
//
|
|
413
|
-
//
|
|
414
|
-
//
|
|
415
|
-
//
|
|
416
|
-
// place them -- and are reported.
|
|
325
|
+
// `no-mention` isn't reported — most log lines aren't about an
|
|
326
|
+
// endpoint, and recording one per line would bury refusals that
|
|
327
|
+
// matter. `not-found`/`ambiguous` mean the line named a route the
|
|
328
|
+
// graph couldn't place, and those are reported.
|
|
417
329
|
else if (resolution !== null && resolution.outcome !== "no-mention") {
|
|
418
330
|
refusals.push({ evidenceId: evidence.evidenceId, family: "log-text-endpoint", outcome: resolution.outcome, reason: resolution.reason });
|
|
419
331
|
}
|
|
@@ -427,10 +339,8 @@ export function correlateExecution(input) {
|
|
|
427
339
|
if (outcome.nodeId === null)
|
|
428
340
|
continue;
|
|
429
341
|
if (persistedNodeId === null) {
|
|
430
|
-
// `attribute()` throws
|
|
431
|
-
//
|
|
432
|
-
// wrapped rather than allowed to abort the pass — the store is the
|
|
433
|
-
// other half of the machinery this wrap exists to observe.
|
|
342
|
+
// `attribute()` throws on an unknown id or an overwrite attempt —
|
|
343
|
+
// both real caller bugs, wrapped rather than aborting the pass.
|
|
434
344
|
const written = attempt(() => {
|
|
435
345
|
store.attribute(evidence.evidenceId, outcome.nodeId);
|
|
436
346
|
return true;
|
|
@@ -442,9 +352,8 @@ export function correlateExecution(input) {
|
|
|
442
352
|
continue;
|
|
443
353
|
}
|
|
444
354
|
if (persistedNodeId === outcome.nodeId) {
|
|
445
|
-
// Already durable
|
|
446
|
-
//
|
|
447
|
-
// written and the association is still reported.
|
|
355
|
+
// Already durable (re-run, or same node named twice). `attribute()`
|
|
356
|
+
// is idempotent here, so nothing is written but it's still reported.
|
|
448
357
|
attributed.push({ evidenceId: evidence.evidenceId, graphNodeId: outcome.nodeId, method: outcome.method, family: outcome.family, persisted: true });
|
|
449
358
|
continue;
|
|
450
359
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"correlate-execution.js","sourceRoot":"","sources":["../src/correlate-execution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AAKH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAClG,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GAIxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAiJ5D,MAAM,gBAAgB,GAAkC,IAAI,GAAG,CAAC;IAC9D,cAAc;IACd,aAAa;IACb,aAAa;IACb,cAAc;CACf,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,gBAAgB,GAAkC,IAAI,GAAG,CAAC;IAC9D,iBAAiB;IACjB,kBAAkB;IAClB,YAAY;IACZ,kBAAkB;CACnB,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,QAAwD;IACvF,IAAI,QAAQ,CAAC,SAAS,KAAK,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IACrE,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,WAAW,CAAC;IACjE,sEAAsE;IACtE,2EAA2E;IAC3E,0EAA0E;IAC1E,+DAA+D;IAC/D,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,CAAC;IAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;IACzC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB;IAChC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAE,OAAmC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvG,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,UAAU,CACjB,OAAgB;IAWhB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,uEAAuE,EAAE,CAAC;IAC5H,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3E,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,8FAA8F;aAC5I,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,gFAAgF,EAAE,CAAC;IACrI,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,WAAW;YACpB,MAAM,EACJ,0GAA0G;gBAC1G,4GAA4G;gBAC5G,2DAA2D;SAC9D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM;QACN,IAAI;QACJ,MAAM,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;QACtE,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACpF,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KACnF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe,CACtB,UAAkB,EAClB,UAA8B,EAC9B,QAAmC;IAEnC,MAAM,QAAQ,GACZ,UAAU,CAAC,OAAO,KAAK,YAAY;QACjC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC9F,CAAC,CAAC;YACE,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;SAChH,CAAC;IAER,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC;IACtD,MAAM,WAAW,GAA2B;QAC1C,UAAU;QACV,eAAe,EAAE,UAAU,CAAC,OAAO;QACnC,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM;QACtE,oBAAoB,EAAE,UAAU,CAAC,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE;QAClG,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,IAAI;QAC5C,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,IAAI,IAAI;QACpD,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,IAAI,IAAI;QACvD,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,IAAI,IAAI;QACzD,uBAAuB,EACrB,aAAa,KAAK,IAAI;YACpB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;KAC5G,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAoBD,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC;IAElD,MAAM,UAAU,GAA6B,EAAE,CAAC;IAChD,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAyB,EAAE,CAAC;IAC1C,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,iJAAiJ;IACjJ,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB;;;;;;;;;;;;;OAaG;IACH,SAAS,OAAO,CAAI,EAAW,EAAE,IAAY;QAC3C,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,GAAG,IAAI,6CAA6C,KAAK,EAAE,CAAC;YAC3E,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC1C,oEAAoE;QACpE,sEAAsE;QACtE,mEAAmE;QACnE,kCAAkC;QAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,KAAK,aAAa,IAAI,QAAQ,CAAC,MAAM,KAAK,iBAAiB,CAAC;QAClG,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,MAAM,KAAK,IAAI;YAAE,UAAU,IAAI,CAAC,CAAC;QAErC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,UAAU,IAAI,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC9H,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9D,sEAAsE;gBACtE,gEAAgE;gBAChE,kEAAkE;gBAClE,0DAA0D;gBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,MAAM,QAAQ,GACZ,MAAM,KAAK,IAAI;oBACb,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,OAAO,CACL,GAAG,EAAE,CACH,uBAAuB,CAAC,MAAM,EAAE;wBAC9B,GAAG,QAAQ;wBACX,MAAM;wBACN,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;qBAClC,CAAC,EACJ,yBAAyB,CAC1B,CAAC;gBACR,MAAM,UAAU,GACd,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;gBAEvI,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;oBACzE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAC9B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YACvC,UAAU,IAAI,CAAC,CAAC;YAChB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,8BAA8B,CAAC,CAAC;YACjH,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM;oBACN,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;oBACrE,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;iBAC/G,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACrE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,kEAAkE;gBAClE,iEAAiE;gBACjE,gEAAgE;gBAChE,qEAAqE;gBACrE,iEAAiE;gBACjE,wDAAwD;gBACxD,gBAAgB,CAAC,GAAG,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,UAAU,IAAI,CAAC,CAAC;gBAChB,MAAM,OAAO,GAAG;oBACd,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;oBACrE,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;iBACvD,CAAC;gBACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;gBACzC,MAAM,UAAU,GACd,MAAM,KAAK,WAAW;oBACpB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,yBAAyB,CAAC;oBAC1G,CAAC,CAAC,OAAO,CACL,GAAG,EAAE,CACH,iBAAiB,CACf,MAAM,EACN;wBACE,IAAI,EAAE,QAAS,CAAC,IAAK;wBACrB,UAAU,EAAE,QAAS,CAAC,YAAa;wBACnC,GAAG,CAAC,QAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAS,CAAC,IAAI,EAAE,CAAC;qBAC7D,EACD,KAAK,CAAC,IAAI,EACV,OAAO,CACR,EACH,mBAAmB,CACpB,CAAC;gBACR,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxB,QAAQ,CAAC,IAAI,CAAC;wBACZ,MAAM;wBACN,MAAM,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa;wBAChE,MAAM,EAAE,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;wBACrE,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE;qBAC/G,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,qEAAqE;QACrE,uEAAuE;QACvE,kEAAkE;QAClE,qEAAqE;QACrE,qEAAqE;QACrE,6CAA6C;QAC7C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,4BAA4B,CAAC,CAAC;YACzG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACxH,CAAC;YACD,kEAAkE;YAClE,qEAAqE;YACrE,oEAAoE;YACpE,kEAAkE;YAClE,kCAAkC;iBAC7B,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1I,CAAC;QACH,CAAC;QAED,IAAI,eAAe,GAAkB,QAAQ,CAAC,WAAW,CAAC;QAC1D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7I,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;gBAAE,SAAS;YAEtC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,oEAAoE;gBACpE,+DAA+D;gBAC/D,mEAAmE;gBACnE,2DAA2D;gBAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;oBAC3B,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,MAAO,CAAC,CAAC;oBACtD,OAAO,IAAI,CAAC;gBACd,CAAC,EAAE,2BAA2B,CAAC,CAAC;gBAChC,IAAI,OAAO,KAAK,IAAI;oBAAE,SAAS;gBAC/B,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnJ,SAAS;YACX,CAAC;YAED,IAAI,eAAe,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACvC,iEAAiE;gBACjE,kEAAkE;gBAClE,iDAAiD;gBACjD,UAAU,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnJ,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAA2B;gBAC1C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,WAAW,EAAE,OAAO,CAAC,MAAM;gBAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAA8B,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,MAAM,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACtB,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,iBAAiB;YAC5B,OAAO,EAAE;gBACP,GAAG,EAAE,uBAAuB,MAAM,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1G,KAAK,EAAE,MAAM;gBACb,WAAW;aACZ;YACD,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,IAAI;YACjB,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,CAAC;YACb,gBAAgB,EAAE,kBAAkB;SACrC,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU;QACV,OAAO;QACP,UAAU;QACV,SAAS;QACT,QAAQ;QACR,WAAW;QACX,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,CAAC;QACvC,aAAa;KACd,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"correlate-execution.js","sourceRoot":"","sources":["../src/correlate-execution.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@descryy/runtime-evidence-correlation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The production correlation pass (RT-230): the one shipped component that owns an EvidenceStore and a descry-core graph driver together and performs resolve-then-attribute over a finished execution's stored evidence. graph-correlator's typed refusals are carried through as refusals, never converted into errors.",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/descryhq-wq/descry-runtime.git",
|
|
10
|
+
"directory": "packages/evidence-correlation"
|
|
11
|
+
},
|
|
7
12
|
"engines": {
|
|
8
13
|
"node": ">=22.5"
|
|
9
14
|
},
|
|
@@ -24,12 +29,12 @@
|
|
|
24
29
|
"build": "tsc -b"
|
|
25
30
|
},
|
|
26
31
|
"dependencies": {
|
|
27
|
-
"@descryy/runtime-contracts": "0.
|
|
28
|
-
"@descryy/runtime-evidence-store": "0.
|
|
29
|
-
"@descryy/runtime-graph-correlator": "0.
|
|
30
|
-
"@descryy/runtime-openapi-observation": "0.
|
|
31
|
-
"@descryy/runtime-database-observation": "0.
|
|
32
|
-
"@descryy/runtime-test-runner": "0.
|
|
33
|
-
"@descryy/core": "0.
|
|
32
|
+
"@descryy/runtime-contracts": "0.3.0",
|
|
33
|
+
"@descryy/runtime-evidence-store": "0.4.0",
|
|
34
|
+
"@descryy/runtime-graph-correlator": "0.4.0",
|
|
35
|
+
"@descryy/runtime-openapi-observation": "0.4.0",
|
|
36
|
+
"@descryy/runtime-database-observation": "0.4.0",
|
|
37
|
+
"@descryy/runtime-test-runner": "0.4.0",
|
|
38
|
+
"@descryy/core": "0.5.0"
|
|
34
39
|
}
|
|
35
40
|
}
|