@descryy/runtime-controller 0.2.1 → 0.3.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/capability-registry.d.ts +0 -15
- package/dist/capability-registry.d.ts.map +1 -1
- package/dist/capability-registry.js +9 -19
- package/dist/capability-registry.js.map +1 -1
- 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/container-sandbox.d.ts +66 -150
- package/dist/container-sandbox.d.ts.map +1 -1
- package/dist/container-sandbox.js +62 -143
- package/dist/container-sandbox.js.map +1 -1
- package/dist/controller.d.ts +49 -106
- package/dist/controller.d.ts.map +1 -1
- package/dist/controller.js +65 -123
- package/dist/controller.js.map +1 -1
- package/dist/dependency-version-check.d.ts +19 -73
- package/dist/dependency-version-check.d.ts.map +1 -1
- package/dist/dependency-version-check.js +18 -67
- package/dist/dependency-version-check.js.map +1 -1
- package/dist/env.d.ts +4 -10
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +4 -10
- package/dist/env.js.map +1 -1
- package/dist/environment-metadata.d.ts +9 -17
- package/dist/environment-metadata.d.ts.map +1 -1
- package/dist/environment-metadata.js +12 -29
- package/dist/environment-metadata.js.map +1 -1
- package/dist/environment-version-check.d.ts +22 -65
- package/dist/environment-version-check.d.ts.map +1 -1
- package/dist/environment-version-check.js +24 -66
- package/dist/environment-version-check.js.map +1 -1
- package/dist/execution-safety.d.ts +54 -112
- package/dist/execution-safety.d.ts.map +1 -1
- package/dist/execution-safety.js +48 -102
- package/dist/execution-safety.js.map +1 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestration.d.ts +24 -39
- package/dist/orchestration.d.ts.map +1 -1
- package/dist/orchestration.js +39 -75
- package/dist/orchestration.js.map +1 -1
- package/dist/process-collector.d.ts +8 -22
- package/dist/process-collector.d.ts.map +1 -1
- package/dist/process-collector.js +23 -55
- package/dist/process-collector.js.map +1 -1
- package/dist/process-manager.d.ts +45 -80
- package/dist/process-manager.d.ts.map +1 -1
- package/dist/process-manager.js +51 -101
- package/dist/process-manager.js.map +1 -1
- package/dist/readiness.d.ts +28 -70
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +73 -95
- package/dist/readiness.js.map +1 -1
- package/dist/sandbox.d.ts +60 -105
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +78 -121
- package/dist/sandbox.js.map +1 -1
- package/package.json +7 -2
package/dist/controller.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Runtime controller (
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* (never "process exists"), and guarantees cleanup — including on partial
|
|
7
|
-
* or total failure and on timeout. Builds no collectors and knows nothing
|
|
8
|
-
* about any specific language or framework (plan principle 8).
|
|
2
|
+
* Runtime controller (§4/§5/§6/§45 "Core"). Owns Execution lifecycle, spawns every
|
|
3
|
+
* configured service, waits for each one's real readiness (never "process exists"),
|
|
4
|
+
* guarantees cleanup on partial/total failure and timeout. Knows nothing about any
|
|
5
|
+
* specific language or framework (principle 8).
|
|
9
6
|
*/
|
|
10
7
|
import { randomUUID } from "node:crypto";
|
|
11
8
|
import { isTerminalExecutionState, isValidExecutionTransition, } from "@descryy/runtime-contracts";
|
|
@@ -17,15 +14,10 @@ import { resourceLimitCapability, networkPolicyCapability } from "./execution-sa
|
|
|
17
14
|
import { filesystemIsolationCapability, unsupportedNetworkPolicyReason } from "./sandbox.js";
|
|
18
15
|
import { containerFilesystemIsolationCapability, containerNetworkIsolationCapability, unsupportedContainerNetworkPolicyReason, } from "./container-sandbox.js";
|
|
19
16
|
import { captureEnvironmentMetadata } from "./environment-metadata.js";
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* `#tryTransition` (returns false instead of throwing) rather than the
|
|
25
|
-
* throwing `#transition`, so whichever path loses the race degrades to a
|
|
26
|
-
* no-op instead of an unhandled rejection from a fire-and-forget timer
|
|
27
|
-
* callback.
|
|
28
|
-
*/
|
|
17
|
+
// `run()`'s timeout timer and a caller's stop()/cancel() can race to move a
|
|
18
|
+
// finishing execution to a terminal state. Every transition after an `await` uses
|
|
19
|
+
// `#tryTransition` (returns false) rather than the throwing `#transition`, so the
|
|
20
|
+
// losing path degrades to a no-op instead of an unhandled rejection.
|
|
29
21
|
export class ExecutionController {
|
|
30
22
|
#execution;
|
|
31
23
|
#processes = new Map();
|
|
@@ -59,11 +51,11 @@ export class ExecutionController {
|
|
|
59
51
|
get execution() {
|
|
60
52
|
return this.#execution;
|
|
61
53
|
}
|
|
62
|
-
/** One entry per service
|
|
54
|
+
/** One entry per configured service, in spawn order, including never-attempted ones (`stage: "not-attempted"`). Empty until `run()` returns its first result. */
|
|
63
55
|
get serviceStartResults() {
|
|
64
56
|
return this.#serviceStartResults;
|
|
65
57
|
}
|
|
66
|
-
/** Non-null only when `run()` refused before spawning anything
|
|
58
|
+
/** Non-null only when `run()` refused before spawning anything. */
|
|
67
59
|
get validationError() {
|
|
68
60
|
return this.#validationError;
|
|
69
61
|
}
|
|
@@ -92,36 +84,22 @@ export class ExecutionController {
|
|
|
92
84
|
this.#execution = { ...this.#execution, processes: handles };
|
|
93
85
|
}
|
|
94
86
|
/**
|
|
95
|
-
* Starts every service in
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* failure (spawn/attach throw, or readiness never succeeding), every
|
|
102
|
-
* already-started service is killed in reverse order (a no-op for an
|
|
103
|
-
* attached one — see `attachManagedProcess`'s own doc) and every
|
|
104
|
-
* not-yet-attempted service is recorded as such — a caller can always
|
|
105
|
-
* tell "never tried" from "tried and failed" via `serviceStartResults`.
|
|
87
|
+
* Starts every service in dependency order, spawned (each on its own ephemeral
|
|
88
|
+
* port unless fixed) or attached (`service.attach`, for an already-running
|
|
89
|
+
* pid/log file). Reaches RUNNING only if every service starts and reaches
|
|
90
|
+
* readiness. On first failure, every started service is killed in reverse order
|
|
91
|
+
* (no-op for attached ones) and remaining services are recorded "not-attempted" --
|
|
92
|
+
* `serviceStartResults` always distinguishes "never tried" from "tried and failed".
|
|
106
93
|
*
|
|
107
|
-
* Configuration
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* `RunOptions.readiness` entry refuses before anything is spawned, never
|
|
111
|
-
* discovered mid-sequence with other services already running.
|
|
94
|
+
* Configuration is validated atomically first -- a bad `dependsOn`, a cycle, an
|
|
95
|
+
* undeclared placeholder, ambiguous `command`/`attach`, or a missing readiness
|
|
96
|
+
* entry refuses before anything spawns.
|
|
112
97
|
*
|
|
113
|
-
* Every **spawned** service
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* `ServiceConfiguration` whose command reads its listen port from
|
|
119
|
-
* anywhere other than `PORT` will not be reachable through readiness
|
|
120
|
-
* checks built from the same `port` this function resolves. An
|
|
121
|
-
* **attached** service receives no env and no port allocation — it is
|
|
122
|
-
* already running on whatever port it bound at its own launch, and
|
|
123
|
-
* `service.port` (when the caller supplies it) is a declaration of that
|
|
124
|
-
* fact, not a request this function can act on.
|
|
98
|
+
* Every **spawned** service gets `PORT` (its resolved port) unconditionally --
|
|
99
|
+
* load-bearing (matches the fixture apps), not incidental: a command reading its
|
|
100
|
+
* port from anywhere else won't be reachable via readiness checks built from the
|
|
101
|
+
* same `port`. An **attached** service gets no env/port allocation -- it's already
|
|
102
|
+
* running on whatever it bound at launch.
|
|
125
103
|
*/
|
|
126
104
|
async run(options) {
|
|
127
105
|
this.#transition("STARTING");
|
|
@@ -131,13 +109,9 @@ export class ExecutionController {
|
|
|
131
109
|
if (!validation.valid) {
|
|
132
110
|
return this.#refuseToStart(validation.reason, Object.keys(services));
|
|
133
111
|
}
|
|
134
|
-
// §21
|
|
135
|
-
//
|
|
136
|
-
//
|
|
137
|
-
// out only when the first `spawnProcess()` throws would mean earlier
|
|
138
|
-
// services in `validation.order` are already running by the time the
|
|
139
|
-
// refusal happens -- recoverable via the existing cleanup path, but
|
|
140
|
-
// needlessly, since nothing about this check needs a process to exist.
|
|
112
|
+
// §21/RT-070: refuse atomically before spawning, same discipline as
|
|
113
|
+
// tokenizeCommand -- finding out only when spawnProcess() throws would mean
|
|
114
|
+
// earlier services are already running by the time of refusal.
|
|
141
115
|
const resourceLimits = this.#execution.configuration.resourceLimits;
|
|
142
116
|
if (resourceLimits !== undefined) {
|
|
143
117
|
const capability = resourceLimitCapability();
|
|
@@ -145,19 +119,12 @@ export class ExecutionController {
|
|
|
145
119
|
return this.#refuseToStart(`resourceLimits was configured but cannot be enforced on this platform: ${capability.reason}`, Object.keys(services));
|
|
146
120
|
}
|
|
147
121
|
}
|
|
148
|
-
// Which real mechanism backs filesystemPolicy/networkPolicy
|
|
149
|
-
// execution -- absent means "bwrap", exactly today's behavior. See
|
|
150
|
-
// ExecutionConfiguration.sandboxBackend's own comment.
|
|
122
|
+
// Which real mechanism backs filesystemPolicy/networkPolicy -- absent means "bwrap".
|
|
151
123
|
const sandboxBackend = this.#execution.configuration.sandboxBackend ?? "bwrap";
|
|
152
|
-
// RT-193, same atomic-refusal placement
|
|
153
|
-
//
|
|
154
|
-
//
|
|
155
|
-
//
|
|
156
|
-
// implements one shape (full denial) -- both refusals happen here,
|
|
157
|
-
// atomically, before anything is spawned, never silently accepted and
|
|
158
|
-
// left unenforced. `sandboxBackend: "container"` checks the container
|
|
159
|
-
// mechanism's own capability/shape functions instead -- same refusal
|
|
160
|
-
// discipline, different real mechanism underneath.
|
|
124
|
+
// RT-193, same atomic-refusal placement. networkPolicyCapability() is real on
|
|
125
|
+
// Linux (bwrap network namespace), unavailable on macOS/Windows, and only
|
|
126
|
+
// implements full denial even where it exists -- both refused here before
|
|
127
|
+
// spawning. "container" checks the container mechanism's own functions instead.
|
|
161
128
|
const networkPolicy = this.#execution.configuration.networkPolicy;
|
|
162
129
|
if (networkPolicy !== undefined) {
|
|
163
130
|
const shapeReason = sandboxBackend === "container" ? unsupportedContainerNetworkPolicyReason(networkPolicy) : unsupportedNetworkPolicyReason(networkPolicy);
|
|
@@ -169,11 +136,9 @@ export class ExecutionController {
|
|
|
169
136
|
return this.#refuseToStart(`networkPolicy was configured but cannot be enforced on this platform: ${capability.reason}`, Object.keys(services));
|
|
170
137
|
}
|
|
171
138
|
}
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
// that mechanism doesn't exist. `sandboxBackend: "container"` checks
|
|
176
|
-
// Docker's own capability instead.
|
|
139
|
+
// Filesystem half, same atomic-refusal placement -- real on Linux via bwrap's
|
|
140
|
+
// mount namespace, refused where it doesn't exist. "container" checks Docker's
|
|
141
|
+
// own capability instead.
|
|
177
142
|
const filesystemPolicy = this.#execution.configuration.filesystemPolicy;
|
|
178
143
|
if (filesystemPolicy !== undefined) {
|
|
179
144
|
const capability = sandboxBackend === "container" ? containerFilesystemIsolationCapability() : filesystemIsolationCapability();
|
|
@@ -186,9 +151,7 @@ export class ExecutionController {
|
|
|
186
151
|
return this.#refuseToStart(`service "${name}" has no matching RunOptions.readiness entry`, validation.order);
|
|
187
152
|
}
|
|
188
153
|
}
|
|
189
|
-
// RT-193: captured once
|
|
190
|
-
// real host -- see `EnvironmentMetadata`'s own comment for why `commit`
|
|
191
|
-
// alone does not make a run reproducible.
|
|
154
|
+
// RT-193: captured once spawning is committed, from the real host.
|
|
192
155
|
const environmentMetadata = await captureEnvironmentMetadata(services);
|
|
193
156
|
this.#execution = { ...this.#execution, startedAt: new Date().toISOString(), environmentMetadata };
|
|
194
157
|
const resolvedPorts = new Map();
|
|
@@ -197,8 +160,7 @@ export class ExecutionController {
|
|
|
197
160
|
if (name === undefined)
|
|
198
161
|
continue;
|
|
199
162
|
if (isTerminalExecutionState(this.#execution.state)) {
|
|
200
|
-
// A concurrent timeout/stop/cancel already finished this execution
|
|
201
|
-
// while we were mid-sequence.
|
|
163
|
+
// A concurrent timeout/stop/cancel already finished this execution.
|
|
202
164
|
return this.#execution;
|
|
203
165
|
}
|
|
204
166
|
const service = services[name];
|
|
@@ -210,18 +172,13 @@ export class ExecutionController {
|
|
|
210
172
|
let managed;
|
|
211
173
|
let port;
|
|
212
174
|
if (service.attach !== undefined) {
|
|
213
|
-
// Attach mode
|
|
214
|
-
//
|
|
215
|
-
//
|
|
216
|
-
//
|
|
217
|
-
//
|
|
218
|
-
//
|
|
219
|
-
//
|
|
220
|
-
// ephemeral port that has nothing to do with the real target.
|
|
221
|
-
// `resourceLimits`/`filesystemPolicy`/`networkPolicy`/`sandboxBackend`
|
|
222
|
-
// are deliberately never passed through — see `ServiceConfiguration.attach`'s
|
|
223
|
-
// own comment on why they cannot apply to a process this runtime
|
|
224
|
-
// did not spawn.
|
|
175
|
+
// Attach mode: the target is already running and bound to whatever it
|
|
176
|
+
// bound at launch -- nothing here can allocate a port for it, only record
|
|
177
|
+
// the one the caller already knows. `0` when unsupplied, so a readiness
|
|
178
|
+
// check needing a port fails legibly ("nothing answered") rather than
|
|
179
|
+
// this function inventing an ephemeral port unrelated to the real target.
|
|
180
|
+
// resourceLimits/filesystemPolicy/networkPolicy/sandboxBackend never pass
|
|
181
|
+
// through -- they can't apply to a process this runtime didn't spawn.
|
|
225
182
|
port = service.port ?? 0;
|
|
226
183
|
try {
|
|
227
184
|
managed = attachManagedProcess({
|
|
@@ -252,12 +209,9 @@ export class ExecutionController {
|
|
|
252
209
|
PORT: String(port),
|
|
253
210
|
...substitutePortPlaceholders(service.env, resolvedPorts),
|
|
254
211
|
});
|
|
255
|
-
//
|
|
256
|
-
//
|
|
257
|
-
//
|
|
258
|
-
// unreachable in practice, kept because the alternative is a
|
|
259
|
-
// non-null assertion that would become a real crash if the two
|
|
260
|
-
// ever drift apart.
|
|
212
|
+
// validateServicesConfiguration already proved this, so both branches
|
|
213
|
+
// below are unreachable in practice -- kept over a non-null assertion
|
|
214
|
+
// that would crash for real if the two ever drift apart.
|
|
261
215
|
if (service.command === undefined) {
|
|
262
216
|
return this.#refuseToStart(`service "${name}": neither "command" nor "attach" is set`, validation.order);
|
|
263
217
|
}
|
|
@@ -266,8 +220,8 @@ export class ExecutionController {
|
|
|
266
220
|
return this.#refuseToStart(`service "${name}": ${tokenized.reason}`, validation.order);
|
|
267
221
|
}
|
|
268
222
|
const { command, args } = tokenized;
|
|
269
|
-
// Instrumentation that must
|
|
270
|
-
//
|
|
223
|
+
// Instrumentation that must run before application code goes between the
|
|
224
|
+
// interpreter and the script, never after it.
|
|
271
225
|
const spawnArgs = service.interpreterArgs === undefined ? args : [...service.interpreterArgs, ...args];
|
|
272
226
|
try {
|
|
273
227
|
managed = spawnProcess({
|
|
@@ -303,16 +257,12 @@ export class ExecutionController {
|
|
|
303
257
|
resolvedPorts.set(name, port);
|
|
304
258
|
this.#recordProcesses();
|
|
305
259
|
options.onProcessLifecycleEvent?.({ kind: "process-started", serviceName: name, handle: managed.handle() });
|
|
306
|
-
// Read by the exit watcher below
|
|
307
|
-
//
|
|
308
|
-
// what lets `phase` distinguish "died before ever confirmed up" from
|
|
309
|
-
// "died after running" regardless of how much later exit occurs.
|
|
260
|
+
// Read by the exit watcher below -- true only once readiness succeeded, which
|
|
261
|
+
// lets `phase` distinguish "died before confirmed up" from "died after running".
|
|
310
262
|
let reachedReady = false;
|
|
311
|
-
// Fire-and-forget: exit can happen
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
// it must not be awaited inline here, which would block every
|
|
315
|
-
// service after it in `validation.order` on this one's exit.
|
|
263
|
+
// Fire-and-forget: exit can happen long after run() returns (a later crash, or
|
|
264
|
+
// #cleanup()'s reap) -- must not be awaited inline, which would block every
|
|
265
|
+
// later service in validation.order on this one's exit.
|
|
316
266
|
void managed.waitForExit().then(() => {
|
|
317
267
|
options.onProcessLifecycleEvent?.({
|
|
318
268
|
kind: "process-exited",
|
|
@@ -392,27 +342,19 @@ export class ExecutionController {
|
|
|
392
342
|
return this.#finish();
|
|
393
343
|
}
|
|
394
344
|
/**
|
|
395
|
-
* Stop everything and record
|
|
396
|
-
*
|
|
397
|
-
* before this controller's own timer got round to saying so.
|
|
398
|
-
*
|
|
399
|
-
* **Why a caller needs this, and why `stop()` is wrong for the case.**
|
|
400
|
-
* `ExecutionConfiguration.timeoutMs` is a whole-execution budget, and the
|
|
401
|
-
* orchestrator clamps its observation window to whatever the budget has left.
|
|
402
|
-
* That clamp made `TIMED_OUT` a race: the window ends at the deadline, the
|
|
403
|
-
* timer fires a hair later, and whichever of `#onTimeout` and `stop()` gets
|
|
404
|
-
* there first decides what the run *says* happened. Measured: the same case
|
|
405
|
-
* reported `TIMED_OUT` at 1534ms and `COMPLETED` at 1515ms.
|
|
345
|
+
* Stop everything and record `TIMED_OUT` -- same transition `#onTimeout` makes,
|
|
346
|
+
* for a caller that knows the budget expired before the internal timer noticed.
|
|
406
347
|
*
|
|
407
|
-
* `
|
|
408
|
-
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
411
|
-
*
|
|
412
|
-
*
|
|
348
|
+
* **Why not `stop()`:** the orchestrator clamps its observation window to
|
|
349
|
+
* whatever's left of `timeoutMs`, making `TIMED_OUT` a race between `#onTimeout`
|
|
350
|
+
* and `stop()` at the deadline -- measured: the same case reported `TIMED_OUT` at
|
|
351
|
+
* 1534ms and `COMPLETED` at 1515ms. `execution.state` is what `observe_runtime`
|
|
352
|
+
* reads to choose `ok` vs `timed_out`, so losing that race silently hides a real
|
|
353
|
+
* cutoff. A caller that already decided it truncated the run shouldn't have to
|
|
354
|
+
* win a race to report it.
|
|
413
355
|
*
|
|
414
|
-
* Idempotent and terminal-safe
|
|
415
|
-
*
|
|
356
|
+
* Idempotent and terminal-safe like `cancel()`: if the timer fired first, returns
|
|
357
|
+
* the execution it already finished.
|
|
416
358
|
*/
|
|
417
359
|
async timeout() {
|
|
418
360
|
if (isTerminalExecutionState(this.#execution.state) || this.#execution.state === "STOPPING") {
|
package/dist/controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAI3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAuB,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,cAAc,EAA6C,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,uCAAuC,GACxC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAmFvE;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IAC9B,UAAU,CAAY;IACtB,UAAU,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC/C,cAAc,GAA0B,IAAI,CAAC;IAC7C,oBAAoB,GAAyB,EAAE,CAAC;IAChD,gBAAgB,GAAkB,IAAI,CAAC;IAEvC,YAAoB,SAAoB;QACtC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAA2B;QACvC,MAAM,SAAS,GAAc;YAC3B,WAAW,EAAE,UAAU,EAAE;YACzB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE;YACb,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;SACf,CAAC;QACF,OAAO,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,qMAAqM;IACrM,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED,4MAA4M;IAC5M,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,mGAAmG;IACnG,iBAAiB,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,WAAW,CAAC,EAAkB;QAC5B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,EAAkB;QAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;QACd,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,KAAK,CAAC,GAAG,CAAC,OAAmB;QAC3B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC;QACxD,MAAM,UAAU,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,oEAAoE;QACpE,uEAAuE;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC;QACpE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;YAC7C,IAAI,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,0EAA0E,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnJ,CAAC;QACH,CAAC;QACD,qEAAqE;QACrE,mEAAmE;QACnE,uDAAuD;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,IAAI,OAAO,CAAC;QAE/E,iEAAiE;QACjE,sEAAsE;QACtE,8DAA8D;QAC9D,6DAA6D;QAC7D,mEAAmE;QACnE,sEAAsE;QACtE,sEAAsE;QACtE,qEAAqE;QACrE,mDAAmD;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC;QAClE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,uCAAuC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,aAAa,CAAC,CAAC;YAC5J,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,cAAc,CAAC,wDAAwD,WAAW,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3H,CAAC;YACD,MAAM,UAAU,GAAG,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,mCAAmC,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;YACtH,IAAI,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,yEAAyE,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClJ,CAAC;QACH,CAAC;QACD,+DAA+D;QAC/D,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,mCAAmC;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC;QACxE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,sCAAsC,EAAE,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC;YAC/H,IAAI,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,4EAA4E,UAAU,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,8CAA8C,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/G,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,0CAA0C;QAC1C,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QACvE,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,mBAAmB,EAAE,CAAC;QACnG,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEhD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,mEAAmE;gBACnE,8BAA8B;gBAC9B,OAAO,IAAI,CAAC,UAAU,CAAC;YACzB,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,OAAO,KAAK,SAAS;gBAAE,SAAS;YACpC,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,aAAa,KAAK,SAAS;gBAAE,SAAS;YAE1C,IAAI,OAAuB,CAAC;YAC5B,IAAI,IAAY,CAAC;YAEjB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjC,oEAAoE;gBACpE,oEAAoE;gBACpE,iEAAiE;gBACjE,mEAAmE;gBACnE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,6DAA6D;gBAC7D,8DAA8D;gBAC9D,uEAAuE;gBACvE,8EAA8E;gBAC9E,iEAAiE;gBACjE,iBAAiB;gBACjB,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;gBACzB,IAAI,CAAC;oBACH,OAAO,GAAG,oBAAoB,CAAC;wBAC7B,SAAS,EAAE,UAAU,EAAE;wBACvB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,WAAW,EAAE,IAAI;wBACjB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,WAAW,EAAE,IAAI;wBACjB,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD,CAAC,CAAC;oBACH,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,qBAAqB,CAAC;oBAChC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;oBAClB,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;iBAC1D,CAAC,CAAC;gBACH,+DAA+D;gBAC/D,4DAA4D;gBAC5D,0DAA0D;gBAC1D,6DAA6D;gBAC7D,+DAA+D;gBAC/D,oBAAoB;gBACpB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAClC,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,0CAA0C,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC3G,CAAC;gBACD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;oBAClB,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,IAAI,MAAM,SAAS,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzF,CAAC;gBACD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;gBACpC,qEAAqE;gBACrE,oEAAoE;gBACpE,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC;gBAEvG,IAAI,CAAC;oBACH,OAAO,GAAG,YAAY,CAAC;wBACrB,SAAS,EAAE,UAAU,EAAE;wBACvB,OAAO;wBACP,IAAI,EAAE,SAAS;wBACf,GAAG,EAAE,OAAO,CAAC,GAAG;wBAChB,GAAG;wBACH,WAAW,EAAE,IAAI;wBACjB,IAAI;wBACJ,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;wBAC3D,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;wBAC/D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;wBACzD,GAAG,CAAC,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;qBAC1D,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,WAAW,EAAE,IAAI;wBACjB,KAAK,EAAE,OAAO;wBACd,SAAS,EAAE,KAAK;wBAChB,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD,CAAC,CAAC;oBACH,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACzD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACf,MAAM,GAAG,CAAC;gBACZ,CAAC;YACH,CAAC;YAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,OAAO,CAAC,uBAAuB,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5G,oEAAoE;YACpE,iEAAiE;YACjE,qEAAqE;YACrE,iEAAiE;YACjE,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,kEAAkE;YAClE,oEAAoE;YACpE,mEAAmE;YACnE,8DAA8D;YAC9D,6DAA6D;YAC7D,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC;oBAChC,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,IAAI;oBACjB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;oBACxB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;iBAC7C,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;gBAC3E,SAAS,EAAE,aAAa,CAAC,SAAS;aACnC,CAAC,CAAC;YACH,IAAI,eAAe,CAAC,KAAK;gBAAE,YAAY,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,WAAW,EAAE,IAAI;gBACjB,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,eAAe,CAAC,KAAK;gBAChC,SAAS,EAAE,eAAe;gBAC1B,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,OAAO,CAAC,uBAAuB,EAAE,CAAC;gBAChC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAsB;gBACtE,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBACxB,SAAS,EAAE,eAAe;aAC3B,CAAC,CAAC;YAEH,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC,UAAU,CAAC;YACzB,CAAC;YAED,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzD,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;oBACxC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,CAAC;gBACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,eAAkC;QAC/D,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAChE,WAAW;YACX,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,0BAA0B,CAAC,KAAwB,EAAE,SAAiB;QACpE,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,WAAW,KAAK,SAAS;gBAAE,SAAS;YACxC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,WAAW;gBACX,KAAK,EAAE,eAAe;gBACtB,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,gFAAgF;IAChF,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `DEC-NEXT-fault-layer-empirical-confirmation.md`'s `dependency` mechanism:
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* (`
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* there was no existing dependency-inspection assumption to match, Node or
|
|
17
|
-
* otherwise. Node is the one target built here because it is the one the
|
|
18
|
-
* ruling's own example names (`"lockfile pins left-pad@1.3.0, resolved
|
|
19
|
-
* 1.2.0"`) and the one every fixture in this repo (`fixture-apps/
|
|
20
|
-
* broken-invoices-backend`) actually is. A future target (a Python
|
|
21
|
-
* `requirements.txt`/`pip freeze` pair, a Ruby `Gemfile.lock`) is a real,
|
|
22
|
-
* disclosed gap -- a second reader function beside this one, not a rewrite
|
|
23
|
-
* of it, the same "framework extractors are additive" shape
|
|
24
|
-
* `descry-core`'s own CLAUDE.md describes for its adapters.
|
|
25
|
-
*
|
|
26
|
-
* ## Only `lockfileVersion` 2/3's `packages` shape
|
|
27
|
-
*
|
|
28
|
-
* Confirmed against this repo's own `fixture-apps/broken-invoices-backend/
|
|
29
|
-
* package-lock.json` (`lockfileVersion: 3`) rather than assumed: modern npm
|
|
30
|
-
* writes a flat `packages` map keyed by the `node_modules/<name>` path the
|
|
31
|
-
* package would be installed at, each entry carrying the resolved
|
|
32
|
-
* `version` it was locked to -- exactly the "declared" half this function
|
|
33
|
-
* needs, with no separate resolution algorithm required, because the key
|
|
34
|
-
* itself already *is* the install path. `lockfileVersion` 1's older
|
|
35
|
-
* `dependencies` shape is not read here -- `applicable: false`, a
|
|
36
|
-
* disclosed gap, not a guess dressed up as a second code path.
|
|
37
|
-
*
|
|
38
|
-
* ## "Resolved" is a direct read, not `require.resolve`
|
|
39
|
-
*
|
|
40
|
-
* The lockfile key (`node_modules/<name>`) is already the exact path this
|
|
41
|
-
* function reads `package.json` from under the project root. This is
|
|
42
|
-
* deliberately not Node's own module-resolution algorithm (walking up
|
|
43
|
-
* successive `node_modules` directories) -- the lockfile key already
|
|
44
|
-
* encodes exactly where npm decided to place that install, including for a
|
|
45
|
-
* nested transitive dependency (`node_modules/a/node_modules/b`), and
|
|
46
|
-
* re-deriving that placement with a resolver would be solving a problem the
|
|
47
|
-
* lockfile already solved.
|
|
48
|
-
*
|
|
49
|
-
* ## Direct dependencies only
|
|
50
|
-
*
|
|
51
|
-
* Every name in `package.json`'s `dependencies`/`devDependencies` --not
|
|
52
|
-
* every transitive entry the lockfile carries. "Cheap, always available, no
|
|
53
|
-
* rerun needed" is the ruling's own bar; checking every transitive package
|
|
54
|
-
* on every execution is neither cheap nor targeted at what a developer
|
|
55
|
-
* actually declared, and the ruling's own example (`left-pad`) is a single
|
|
56
|
-
* named top-level package.
|
|
2
|
+
* `DEC-NEXT-fault-layer-empirical-confirmation.md`'s `dependency` mechanism: declared
|
|
3
|
+
* (lockfile) vs resolved (installed) version — a structural fact, recorded not inferred.
|
|
4
|
+
*
|
|
5
|
+
* - Node-only, checked not assumed: no existing lockfile reader for any language to
|
|
6
|
+
* match. A Python/Ruby target is a real, disclosed gap — an additive second reader,
|
|
7
|
+
* not a rewrite.
|
|
8
|
+
* - Only `lockfileVersion` 2/3's flat `packages` map (keyed by `node_modules/<name>`,
|
|
9
|
+
* confirmed against `fixture-apps/broken-invoices-backend`). v1's `dependencies`
|
|
10
|
+
* shape is not read — `applicable: false`, disclosed gap.
|
|
11
|
+
* - "Resolved" is a direct read from the lockfile key's path, not Node module
|
|
12
|
+
* resolution — the key already encodes install location, including nested
|
|
13
|
+
* transitives (`node_modules/a/node_modules/b`).
|
|
14
|
+
* - Direct dependencies only (`dependencies`/`devDependencies`), not every transitive
|
|
15
|
+
* lockfile entry — matches the ruling's "cheap, always available" bar.
|
|
57
16
|
*/
|
|
58
17
|
export interface DependencyVersionMismatch {
|
|
59
18
|
readonly name: string;
|
|
@@ -63,28 +22,15 @@ export interface DependencyVersionMismatch {
|
|
|
63
22
|
readonly resolvedVersion: string;
|
|
64
23
|
}
|
|
65
24
|
export interface DependencyVersionCheckResult {
|
|
66
|
-
/**
|
|
67
|
-
* `false` when this project could not be positively identified as a
|
|
68
|
-
* checkable Node target (no `package.json`, no lockfile, an unsupported
|
|
69
|
-
* lockfile shape, or malformed JSON in either file) -- "not applicable"
|
|
70
|
-
* rather than a guessed clean result. `mismatches` is always `[]` when
|
|
71
|
-
* `false`.
|
|
72
|
-
*/
|
|
25
|
+
/** `false` when not identifiable as a checkable Node target (no package.json/lockfile, unsupported shape, malformed JSON) — "not applicable", not a guessed clean result. `mismatches` is `[]` when `false`. */
|
|
73
26
|
readonly applicable: boolean;
|
|
74
27
|
readonly mismatches: readonly DependencyVersionMismatch[];
|
|
75
28
|
}
|
|
76
29
|
/**
|
|
77
|
-
* Compares
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* this repo already reads a spawned service's project root from.
|
|
82
|
-
*
|
|
83
|
-
* A dependency absent from the lockfile (a workspace/local-link
|
|
84
|
-
* dependency) or absent from `node_modules` entirely (never installed) is
|
|
85
|
-
* skipped, not reported -- both are real, different facts from a version
|
|
86
|
-
* mismatch, and reporting either as one would be a guess this function does
|
|
87
|
-
* not make.
|
|
30
|
+
* Compares lockfile-declared vs installed version for every direct dependency of the
|
|
31
|
+
* Node project rooted at `cwd`. A dependency missing from the lockfile (workspace/
|
|
32
|
+
* local-link) or from `node_modules` (never installed) is skipped, not reported —
|
|
33
|
+
* different facts from a mismatch, not guessed as one.
|
|
88
34
|
*/
|
|
89
35
|
export declare function checkDependencyVersions(cwd: string): DependencyVersionCheckResult;
|
|
90
36
|
//# sourceMappingURL=dependency-version-check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-version-check.d.ts","sourceRoot":"","sources":["../src/dependency-version-check.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dependency-version-check.d.ts","sourceRoot":"","sources":["../src/dependency-version-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,4BAA4B;IAC3C,gNAAgN;IAChN,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAC;CAC3D;AAuBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,4BAA4B,CA4CjF"}
|
|
@@ -1,59 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `DEC-NEXT-fault-layer-empirical-confirmation.md`'s `dependency` mechanism:
|
|
3
|
-
*
|
|
4
|
-
* runtime. A mismatch is a structural fact, the same shape as
|
|
5
|
-
* `automation`'s `harnessFailure` flag — not inferred, recorded."
|
|
2
|
+
* `DEC-NEXT-fault-layer-empirical-confirmation.md`'s `dependency` mechanism: declared
|
|
3
|
+
* (lockfile) vs resolved (installed) version — a structural fact, recorded not inferred.
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* ruling's own example names (`"lockfile pins left-pad@1.3.0, resolved
|
|
19
|
-
* 1.2.0"`) and the one every fixture in this repo (`fixture-apps/
|
|
20
|
-
* broken-invoices-backend`) actually is. A future target (a Python
|
|
21
|
-
* `requirements.txt`/`pip freeze` pair, a Ruby `Gemfile.lock`) is a real,
|
|
22
|
-
* disclosed gap -- a second reader function beside this one, not a rewrite
|
|
23
|
-
* of it, the same "framework extractors are additive" shape
|
|
24
|
-
* `descry-core`'s own CLAUDE.md describes for its adapters.
|
|
25
|
-
*
|
|
26
|
-
* ## Only `lockfileVersion` 2/3's `packages` shape
|
|
27
|
-
*
|
|
28
|
-
* Confirmed against this repo's own `fixture-apps/broken-invoices-backend/
|
|
29
|
-
* package-lock.json` (`lockfileVersion: 3`) rather than assumed: modern npm
|
|
30
|
-
* writes a flat `packages` map keyed by the `node_modules/<name>` path the
|
|
31
|
-
* package would be installed at, each entry carrying the resolved
|
|
32
|
-
* `version` it was locked to -- exactly the "declared" half this function
|
|
33
|
-
* needs, with no separate resolution algorithm required, because the key
|
|
34
|
-
* itself already *is* the install path. `lockfileVersion` 1's older
|
|
35
|
-
* `dependencies` shape is not read here -- `applicable: false`, a
|
|
36
|
-
* disclosed gap, not a guess dressed up as a second code path.
|
|
37
|
-
*
|
|
38
|
-
* ## "Resolved" is a direct read, not `require.resolve`
|
|
39
|
-
*
|
|
40
|
-
* The lockfile key (`node_modules/<name>`) is already the exact path this
|
|
41
|
-
* function reads `package.json` from under the project root. This is
|
|
42
|
-
* deliberately not Node's own module-resolution algorithm (walking up
|
|
43
|
-
* successive `node_modules` directories) -- the lockfile key already
|
|
44
|
-
* encodes exactly where npm decided to place that install, including for a
|
|
45
|
-
* nested transitive dependency (`node_modules/a/node_modules/b`), and
|
|
46
|
-
* re-deriving that placement with a resolver would be solving a problem the
|
|
47
|
-
* lockfile already solved.
|
|
48
|
-
*
|
|
49
|
-
* ## Direct dependencies only
|
|
50
|
-
*
|
|
51
|
-
* Every name in `package.json`'s `dependencies`/`devDependencies` --not
|
|
52
|
-
* every transitive entry the lockfile carries. "Cheap, always available, no
|
|
53
|
-
* rerun needed" is the ruling's own bar; checking every transitive package
|
|
54
|
-
* on every execution is neither cheap nor targeted at what a developer
|
|
55
|
-
* actually declared, and the ruling's own example (`left-pad`) is a single
|
|
56
|
-
* named top-level package.
|
|
5
|
+
* - Node-only, checked not assumed: no existing lockfile reader for any language to
|
|
6
|
+
* match. A Python/Ruby target is a real, disclosed gap — an additive second reader,
|
|
7
|
+
* not a rewrite.
|
|
8
|
+
* - Only `lockfileVersion` 2/3's flat `packages` map (keyed by `node_modules/<name>`,
|
|
9
|
+
* confirmed against `fixture-apps/broken-invoices-backend`). v1's `dependencies`
|
|
10
|
+
* shape is not read — `applicable: false`, disclosed gap.
|
|
11
|
+
* - "Resolved" is a direct read from the lockfile key's path, not Node module
|
|
12
|
+
* resolution — the key already encodes install location, including nested
|
|
13
|
+
* transitives (`node_modules/a/node_modules/b`).
|
|
14
|
+
* - Direct dependencies only (`dependencies`/`devDependencies`), not every transitive
|
|
15
|
+
* lockfile entry — matches the ruling's "cheap, always available" bar.
|
|
57
16
|
*/
|
|
58
17
|
import { existsSync, readFileSync } from "node:fs";
|
|
59
18
|
import { join } from "node:path";
|
|
@@ -66,17 +25,10 @@ function readJsonFile(path) {
|
|
|
66
25
|
}
|
|
67
26
|
}
|
|
68
27
|
/**
|
|
69
|
-
* Compares
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* this repo already reads a spawned service's project root from.
|
|
74
|
-
*
|
|
75
|
-
* A dependency absent from the lockfile (a workspace/local-link
|
|
76
|
-
* dependency) or absent from `node_modules` entirely (never installed) is
|
|
77
|
-
* skipped, not reported -- both are real, different facts from a version
|
|
78
|
-
* mismatch, and reporting either as one would be a guess this function does
|
|
79
|
-
* not make.
|
|
28
|
+
* Compares lockfile-declared vs installed version for every direct dependency of the
|
|
29
|
+
* Node project rooted at `cwd`. A dependency missing from the lockfile (workspace/
|
|
30
|
+
* local-link) or from `node_modules` (never installed) is skipped, not reported —
|
|
31
|
+
* different facts from a mismatch, not guessed as one.
|
|
80
32
|
*/
|
|
81
33
|
export function checkDependencyVersions(cwd) {
|
|
82
34
|
const packageJsonPath = join(cwd, "package.json");
|
|
@@ -91,8 +43,7 @@ export function checkDependencyVersions(cwd) {
|
|
|
91
43
|
}
|
|
92
44
|
const packages = lockfile.packages;
|
|
93
45
|
if (packages === undefined || typeof packages !== "object") {
|
|
94
|
-
// lockfileVersion 1
|
|
95
|
-
// not recognise -- see this module's own header.
|
|
46
|
+
// lockfileVersion 1, or an unrecognized shape -- see header.
|
|
96
47
|
return { applicable: false, mismatches: [] };
|
|
97
48
|
}
|
|
98
49
|
const declaredNames = new Set([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-version-check.js","sourceRoot":"","sources":["../src/dependency-version-check.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dependency-version-check.js","sourceRoot":"","sources":["../src/dependency-version-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA6BjC,SAAS,YAAY,CAAI,IAAY;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAM,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAmB,eAAe,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,YAAY,CAAmB,YAAY,CAAC,CAAC;IAC9D,IAAI,WAAW,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC3D,6DAA6D;QAC7D,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS;QACpC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QAC9C,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;KAClD,CAAC,CAAC;IAEH,MAAM,UAAU,GAAgC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,SAAS,EAAE,OAAO,CAAC;QAC3C,IAAI,OAAO,eAAe,KAAK,QAAQ;YAAE,SAAS;QAElD,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAAE,SAAS;QAEpD,MAAM,oBAAoB,GAAG,YAAY,CAAgC,wBAAwB,CAAC,CAAC;QACnG,MAAM,eAAe,GAAG,oBAAoB,EAAE,OAAO,CAAC;QACtD,IAAI,OAAO,eAAe,KAAK,QAAQ;YAAE,SAAS;QAElD,IAAI,eAAe,KAAK,eAAe,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC"}
|