@lannguyensi/harness 0.44.0 → 0.46.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/CHANGELOG.md +1245 -0
- package/dist/cli/adopt/derive.d.ts +16 -7
- package/dist/cli/adopt/derive.js +19 -2
- package/dist/cli/adopt/derive.js.map +1 -1
- package/dist/cli/adopt/index.js +18 -3
- package/dist/cli/adopt/index.js.map +1 -1
- package/dist/cli/apply/apply.d.ts +1 -0
- package/dist/cli/apply/apply.js +62 -6
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/generate-codex-config.js +5 -6
- package/dist/cli/apply/generate-codex-config.js.map +1 -1
- package/dist/cli/apply/generate-opencode-config.d.ts +58 -0
- package/dist/cli/apply/generate-opencode-config.js +210 -0
- package/dist/cli/apply/generate-opencode-config.js.map +1 -0
- package/dist/cli/apply/generate-settings.d.ts +90 -32
- package/dist/cli/apply/generate-settings.js +133 -10
- package/dist/cli/apply/generate-settings.js.map +1 -1
- package/dist/cli/apply/index.d.ts +2 -1
- package/dist/cli/apply/index.js +2 -1
- package/dist/cli/apply/index.js.map +1 -1
- package/dist/cli/apply/next-steps.d.ts +20 -0
- package/dist/cli/apply/next-steps.js +60 -0
- package/dist/cli/apply/next-steps.js.map +1 -1
- package/dist/cli/approve/stdin-report.d.ts +15 -0
- package/dist/cli/approve/stdin-report.js +1 -1
- package/dist/cli/approve/stdin-report.js.map +1 -1
- package/dist/cli/approve/understanding.d.ts +75 -0
- package/dist/cli/approve/understanding.js +150 -2
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/audit.d.ts +1 -1
- package/dist/cli/audit.js +3 -2
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/doctor/claude-mcp.d.ts +19 -1
- package/dist/cli/doctor/claude-mcp.js +36 -10
- package/dist/cli/doctor/claude-mcp.js.map +1 -1
- package/dist/cli/doctor/codex.d.ts +3 -1
- package/dist/cli/doctor/codex.js +6 -9
- package/dist/cli/doctor/codex.js.map +1 -1
- package/dist/cli/doctor/format.js +94 -8
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.d.ts +23 -0
- package/dist/cli/doctor/index.js +106 -2
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/opencode.d.ts +24 -0
- package/dist/cli/doctor/opencode.js +107 -0
- package/dist/cli/doctor/opencode.js.map +1 -0
- package/dist/cli/doctor/target-checks.d.ts +11 -0
- package/dist/cli/doctor/target-checks.js +25 -0
- package/dist/cli/doctor/target-checks.js.map +1 -0
- package/dist/cli/doctor/toolchain-parity.d.ts +63 -0
- package/dist/cli/doctor/toolchain-parity.js +154 -0
- package/dist/cli/doctor/toolchain-parity.js.map +1 -0
- package/dist/cli/doctor/types.d.ts +85 -1
- package/dist/cli/doctor/types.js +1 -1
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/doctor/understanding-mode-env.d.ts +39 -0
- package/dist/cli/doctor/understanding-mode-env.js +83 -0
- package/dist/cli/doctor/understanding-mode-env.js.map +1 -0
- package/dist/cli/dry-run.js +32 -17
- package/dist/cli/dry-run.js.map +1 -1
- package/dist/cli/explain.d.ts +1 -1
- package/dist/cli/explain.js +1 -1
- package/dist/cli/explain.js.map +1 -1
- package/dist/cli/index.js +64 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.js +36 -13
- package/dist/cli/init/composer.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +7 -4
- package/dist/cli/init/interactive.js +79 -27
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/profiles.d.ts +2 -2
- package/dist/cli/init/profiles.js +32 -1
- package/dist/cli/init/profiles.js.map +1 -1
- package/dist/cli/init/templates.d.ts +2 -1
- package/dist/cli/init/templates.js +130 -20
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/pack/approve-escape.js +69 -8
- package/dist/cli/pack/approve-escape.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.js +1 -1
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.js +27 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-post-merge-gate.js +1 -1
- package/dist/cli/pack/hook-post-merge-gate.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.js +91 -4
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance.js +19 -2
- package/dist/cli/pack/hook-solution-acceptance.js.map +1 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +13 -0
- package/dist/cli/pack/understanding-report-schema-hint.js +52 -3
- package/dist/cli/pack/understanding-report-schema-hint.js.map +1 -1
- package/dist/cli/pause/index.js +1 -1
- package/dist/cli/pause/index.js.map +1 -1
- package/dist/cli/policy/intercept.d.ts +148 -0
- package/dist/cli/policy/intercept.js +379 -48
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/cli/session-start/index.d.ts +12 -3
- package/dist/cli/session-start/index.js +67 -11
- package/dist/cli/session-start/index.js.map +1 -1
- package/dist/cli/session-start/stale-base-check.d.ts +71 -0
- package/dist/cli/session-start/stale-base-check.js +379 -0
- package/dist/cli/session-start/stale-base-check.js.map +1 -0
- package/dist/cli/session-start/toolchain-parity.d.ts +142 -8
- package/dist/cli/session-start/toolchain-parity.js +244 -36
- package/dist/cli/session-start/toolchain-parity.js.map +1 -1
- package/dist/cli/smoke/assertions.d.ts +9 -2
- package/dist/cli/smoke/assertions.js +9 -2
- package/dist/cli/smoke/assertions.js.map +1 -1
- package/dist/cli/uninstall/index.js +18 -2
- package/dist/cli/uninstall/index.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +3 -1
- package/dist/cli/validate/checks.js +298 -3
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/io/claude-mcp.d.ts +122 -1
- package/dist/io/claude-mcp.js +214 -12
- package/dist/io/claude-mcp.js.map +1 -1
- package/dist/io/duration.js.map +1 -0
- package/dist/io/expand-home.js.map +1 -0
- package/dist/io/extract.js.map +1 -0
- package/dist/io/harness-lock.js +1 -1
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/{runtime → io}/ledger-record.d.ts +1 -1
- package/dist/io/ledger-record.js.map +1 -0
- package/dist/policies/index.d.ts +2 -2
- package/dist/policies/index.js +2 -2
- package/dist/policies/index.js.map +1 -1
- package/dist/policies/ledger-client.js +10 -6
- package/dist/policies/ledger-client.js.map +1 -1
- package/dist/policies/producers.js +1 -1
- package/dist/policies/producers.js.map +1 -1
- package/dist/policies/requires.js +2 -2
- package/dist/policies/requires.js.map +1 -1
- package/dist/policy-packs/builtin/branch-protection.js +28 -3
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -1
- package/dist/policy-packs/builtin/post-merge-gate.js +45 -9
- package/dist/policy-packs/builtin/post-merge-gate.js.map +1 -1
- package/dist/policy-packs/builtin/solution-acceptance-runtime.d.ts +139 -8
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js +246 -12
- package/dist/policy-packs/builtin/solution-acceptance-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/solution-acceptance.js +17 -3
- package/dist/policy-packs/builtin/solution-acceptance.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.d.ts +25 -0
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js +89 -0
- package/dist/policy-packs/builtin/understanding-before-execution/active-claim.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +13 -0
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +39 -0
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.d.ts +25 -0
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js +56 -0
- package/dist/policy-packs/builtin/understanding-before-execution/ledger.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.d.ts +20 -0
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js +79 -0
- package/dist/policy-packs/builtin/understanding-before-execution/lifecycle.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/markers.d.ts +103 -0
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +203 -0
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +177 -0
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +309 -0
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +106 -0
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +209 -0
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +78 -0
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +185 -0
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.d.ts +1 -536
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js +9 -1095
- package/dist/policy-packs/builtin/understanding-before-execution-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +109 -1
- package/dist/policy-packs/builtin/understanding-before-execution.js +183 -15
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
- package/dist/policy-packs/registry.d.ts +11 -0
- package/dist/policy-packs/registry.js +1 -1
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/policy-packs/runtime.d.ts +1 -1
- package/dist/policy-packs/runtime.js +10 -1
- package/dist/policy-packs/runtime.js.map +1 -1
- package/dist/runtime/agent-facing.js +1 -1
- package/dist/runtime/agent-facing.js.map +1 -1
- package/dist/runtime/bash-match-facts.d.ts +9 -7
- package/dist/runtime/bash-match-facts.js +9 -7
- package/dist/runtime/bash-match-facts.js.map +1 -1
- package/dist/runtime/bash-match-registry.d.ts +75 -38
- package/dist/runtime/bash-match-registry.js +279 -232
- package/dist/runtime/bash-match-registry.js.map +1 -1
- package/dist/runtime/bash-prefix-parse.d.ts +7 -0
- package/dist/runtime/bash-prefix-parse.js +205 -17
- package/dist/runtime/bash-prefix-parse.js.map +1 -1
- package/dist/runtime/command-normalize.d.ts +112 -0
- package/dist/runtime/command-normalize.js +411 -38
- package/dist/runtime/command-normalize.js.map +1 -1
- package/dist/runtime/hermetic-spawn-guard.js +6 -0
- package/dist/runtime/hermetic-spawn-guard.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -2
- package/dist/runtime/index.js +2 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/intercept.d.ts +78 -3
- package/dist/runtime/intercept.js +151 -39
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/ledger-add.js +1 -1
- package/dist/runtime/ledger-add.js.map +1 -1
- package/dist/runtime/read-only-bash.js +303 -24
- package/dist/runtime/read-only-bash.js.map +1 -1
- package/dist/schema/doctor.d.ts +25 -0
- package/dist/schema/doctor.js +23 -0
- package/dist/schema/doctor.js.map +1 -0
- package/dist/schema/extract.js +1 -1
- package/dist/schema/extract.js.map +1 -1
- package/dist/schema/index.d.ts +76 -0
- package/dist/schema/index.js +9 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/requires.js +2 -2
- package/dist/schema/requires.js.map +1 -1
- package/dist/schema/risk.d.ts +7 -0
- package/dist/schema/risk.js +23 -0
- package/dist/schema/risk.js.map +1 -1
- package/dist/schema/stale-base-check.d.ts +18 -0
- package/dist/schema/stale-base-check.js +37 -0
- package/dist/schema/stale-base-check.js.map +1 -0
- package/dist/schema/toolchain-parity.d.ts +3 -0
- package/dist/schema/toolchain-parity.js +13 -0
- package/dist/schema/toolchain-parity.js.map +1 -1
- package/package.json +3 -2
- package/dist/policies/duration.js.map +0 -1
- package/dist/policies/extract.js.map +0 -1
- package/dist/runtime/expand-home.js.map +0 -1
- package/dist/runtime/ledger-record.js.map +0 -1
- /package/dist/{policies → io}/duration.d.ts +0 -0
- /package/dist/{policies → io}/duration.js +0 -0
- /package/dist/{runtime → io}/expand-home.d.ts +0 -0
- /package/dist/{runtime → io}/expand-home.js +0 -0
- /package/dist/{policies → io}/extract.d.ts +0 -0
- /package/dist/{policies → io}/extract.js +0 -0
- /package/dist/{runtime → io}/ledger-record.js +0 -0
|
@@ -14,7 +14,12 @@
|
|
|
14
14
|
// (b) compares the local LIVE toolchain state against every peer
|
|
15
15
|
// snapshot file already in that directory;
|
|
16
16
|
// (c) reports drift as stderr warning lines plus a single
|
|
17
|
-
// `toolchain-parity:ok` / `toolchain-parity:drift:<n>` ledger fact
|
|
17
|
+
// `toolchain-parity:ok` / `toolchain-parity:drift:<n>` ledger fact,
|
|
18
|
+
// with a `:unparseable-peer:<n>` suffix appended whenever one or more
|
|
19
|
+
// peer files failed to parse as JSON (task 690fba7c, follow-up from
|
|
20
|
+
// the agent-memory 06d09cde incident: an unparseable peer snapshot is
|
|
21
|
+
// a real corruption/drift signal and must not vanish from `drift:N`
|
|
22
|
+
// as if it had been a complete comparison).
|
|
18
23
|
//
|
|
19
24
|
// Transport of the snapshot files BETWEEN machines is entirely
|
|
20
25
|
// agent-memory-sync's job (agent-memory PR #64, already shipped) — this
|
|
@@ -43,10 +48,13 @@ const SNAPSHOT_SCHEMA_VERSION = 1;
|
|
|
43
48
|
// collectLocalSnapshot below), so the wall-time contribution of the two
|
|
44
49
|
// spawns together is max(nodeTimeoutMs, npmTimeoutMs), not their sum.
|
|
45
50
|
// Combined with two near-instant fs reads (OW-Kit version, MCP registry)
|
|
46
|
-
// and a ledger write,
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
51
|
+
// and a SEQUENTIAL ledger write afterwards, the worst-case wall-time this
|
|
52
|
+
// hook needs against its configured `budget_ms` (and how much headroom
|
|
53
|
+
// that leaves) is analyzed once, at the hook's own `budget_ms`
|
|
54
|
+
// declaration in src/cli/init/templates.ts — search "toolchain-parity"
|
|
55
|
+
// there. That comment is the single place the number lives; this one
|
|
56
|
+
// deliberately does not restate it (task c1b5ade5 R2, closing a drift
|
|
57
|
+
// between the two comments a prior round introduced).
|
|
50
58
|
const DEFAULT_NODE_TIMEOUT_MS = 2_000;
|
|
51
59
|
const DEFAULT_NPM_GLOBALS_TIMEOUT_MS = 4_000;
|
|
52
60
|
async function readStdin(stream) {
|
|
@@ -60,8 +68,14 @@ async function readStdin(stream) {
|
|
|
60
68
|
stream.on("error", reject);
|
|
61
69
|
});
|
|
62
70
|
}
|
|
63
|
-
/**
|
|
64
|
-
|
|
71
|
+
/**
|
|
72
|
+
* Profile names land in a filename; strip anything not filename-safe.
|
|
73
|
+
* Exported (task 13919613) so `harness doctor`'s toolchain-parity section
|
|
74
|
+
* can resolve the SAME own-profile filename this producer would, without
|
|
75
|
+
* re-implementing the sanitization rule. Pure export, no behaviour change
|
|
76
|
+
* to any call site in this module.
|
|
77
|
+
*/
|
|
78
|
+
export function sanitizeProfileName(value) {
|
|
65
79
|
const cleaned = value.replace(/[^a-zA-Z0-9._-]/g, "-");
|
|
66
80
|
return cleaned.length > 0 ? cleaned : "profile";
|
|
67
81
|
}
|
|
@@ -137,8 +151,14 @@ export function parseSnapshotJson(raw) {
|
|
|
137
151
|
* runs in (the PATH-shim incident this task follows up on was exactly a
|
|
138
152
|
* PATH pointing at the wrong node), which `process.version` (the node
|
|
139
153
|
* running THIS harness process) would silently paper over.
|
|
154
|
+
*
|
|
155
|
+
* Exported (task 13919613) so `harness doctor`'s toolchain-parity section
|
|
156
|
+
* can default its own `runNodeVersion` injection knob to the SAME real
|
|
157
|
+
* collector this producer uses — the whole point of the reuse is that
|
|
158
|
+
* doctor never re-implements this spawn/parse logic. No behaviour change:
|
|
159
|
+
* this is the exact function every existing call site already used.
|
|
140
160
|
*/
|
|
141
|
-
function realNodeVersionSpawn(timeoutMs) {
|
|
161
|
+
export function realNodeVersionSpawn(timeoutMs) {
|
|
142
162
|
assertNoRealSpawnInTests("node --version", "Inject a fake `runNodeVersion` (SessionStartToolchainParityOptions.runNodeVersion) instead of exercising the real spawn path.");
|
|
143
163
|
return new Promise((resolve) => {
|
|
144
164
|
execFile("node", ["--version"], { timeout: timeoutMs, encoding: "utf8" }, (err, stdout) => {
|
|
@@ -171,8 +191,12 @@ function realNodeVersionSpawn(timeoutMs) {
|
|
|
171
191
|
* exit code: `npm ls -g` can exit non-zero on an unrelated extraneous/
|
|
172
192
|
* invalid global entry while still emitting a perfectly parseable
|
|
173
193
|
* `dependencies` JSON block, so a parseable stdout wins over the exit code.
|
|
194
|
+
*
|
|
195
|
+
* Exported (task 13919613) for the same reuse reason as
|
|
196
|
+
* {@link realNodeVersionSpawn} — `harness doctor`'s toolchain-parity
|
|
197
|
+
* section defaults to this real collector rather than duplicating it.
|
|
174
198
|
*/
|
|
175
|
-
function realNpmGlobalsSpawn(timeoutMs) {
|
|
199
|
+
export function realNpmGlobalsSpawn(timeoutMs) {
|
|
176
200
|
assertNoRealSpawnInTests("npm ls -g --depth=0 --json", "Inject a fake `runNpmGlobals` (SessionStartToolchainParityOptions.runNpmGlobals) instead of exercising the real spawn path.");
|
|
177
201
|
return new Promise((resolve) => {
|
|
178
202
|
execFile("npm", ["ls", "-g", "--depth=0", "--json"], { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024, encoding: "utf8" }, (err, stdout) => {
|
|
@@ -219,8 +243,11 @@ function realNpmGlobalsSpawn(timeoutMs) {
|
|
|
219
243
|
* NOT an error — it degrades silently to `{}`. Malformed JSON or a
|
|
220
244
|
* non-string `version` field on a manifest that DOES exist is noteworthy
|
|
221
245
|
* (something is there but broken), so that degrades to `{ error }`.
|
|
246
|
+
*
|
|
247
|
+
* Exported (task 13919613) for the same reuse reason as
|
|
248
|
+
* {@link realNodeVersionSpawn}.
|
|
222
249
|
*/
|
|
223
|
-
function realReadOwKitVersion(workspaceRoot) {
|
|
250
|
+
export function realReadOwKitVersion(workspaceRoot) {
|
|
224
251
|
const manifestPath = path.join(workspaceRoot, ".ai", "workflow", "manifest.json");
|
|
225
252
|
let raw;
|
|
226
253
|
try {
|
|
@@ -257,8 +284,11 @@ function realReadOwKitVersion(workspaceRoot) {
|
|
|
257
284
|
* same "read the effective registration from outside io/claude-mcp.ts"
|
|
258
285
|
* purpose). Deliberately NOT `claude mcp list` (a spawn): the brief calls
|
|
259
286
|
* for a file-read source for the NAMES here, and this is it.
|
|
287
|
+
*
|
|
288
|
+
* Exported (task 13919613) for the same reuse reason as
|
|
289
|
+
* {@link realNodeVersionSpawn}.
|
|
260
290
|
*/
|
|
261
|
-
function realReadMcpServerNames() {
|
|
291
|
+
export function realReadMcpServerNames() {
|
|
262
292
|
const registryPath = resolveClaudeUserRegistryPath();
|
|
263
293
|
const { servers, error } = readTopLevelMcpServers(registryPath);
|
|
264
294
|
if (error !== null)
|
|
@@ -273,8 +303,13 @@ function realReadMcpServerNames() {
|
|
|
273
303
|
* line for the caller to log, but never stops the other collectors from
|
|
274
304
|
* running. node/npm run in PARALLEL (see the timeout constants' comment
|
|
275
305
|
* above for why).
|
|
306
|
+
*
|
|
307
|
+
* Exported (task 13919613): `harness doctor`'s toolchain-parity section
|
|
308
|
+
* imports this directly as its Collector core — see that module's header
|
|
309
|
+
* for the reuse rationale. No behaviour change to this function or any
|
|
310
|
+
* existing call site.
|
|
276
311
|
*/
|
|
277
|
-
async function collectLocalSnapshot(opts) {
|
|
312
|
+
export async function collectLocalSnapshot(opts) {
|
|
278
313
|
const notes = [];
|
|
279
314
|
const [nodeResult, npmResult] = await Promise.all([
|
|
280
315
|
opts.runNodeVersion(opts.nodeTimeoutMs),
|
|
@@ -428,7 +463,13 @@ export function compareToPeer(local, peer, now) {
|
|
|
428
463
|
const ageMs = Number.isFinite(peerTimeMs) ? Math.max(0, now.getTime() - peerTimeMs) : 0;
|
|
429
464
|
return { peerProfile, ageMs, drift };
|
|
430
465
|
}
|
|
431
|
-
|
|
466
|
+
/**
|
|
467
|
+
* Exported (task 13919613) so `harness doctor`'s toolchain-parity section
|
|
468
|
+
* resolves the SAME default machine-state directory this producer writes
|
|
469
|
+
* to when `toolchain_parity.machine_state_dir` is omitted from the
|
|
470
|
+
* manifest — reusing the constant instead of re-deriving it.
|
|
471
|
+
*/
|
|
472
|
+
export function defaultMachineStateDir() {
|
|
432
473
|
return path.join(os.homedir(), ".harness", "machine-state");
|
|
433
474
|
}
|
|
434
475
|
export async function runSessionStartToolchainParity(opts = {}) {
|
|
@@ -438,14 +479,29 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
438
479
|
const nodeTimeoutMs = opts.nodeTimeoutMs ?? DEFAULT_NODE_TIMEOUT_MS;
|
|
439
480
|
const npmTimeoutMs = opts.npmTimeoutMs ?? DEFAULT_NPM_GLOBALS_TIMEOUT_MS;
|
|
440
481
|
const note = (msg) => {
|
|
441
|
-
|
|
482
|
+
// CR/LF strip, ONCE, at this choke point (task c1b5ade5 R2b, closing
|
|
483
|
+
// what R2's per-site sanitizeProfileName wraps left open): every
|
|
484
|
+
// note() call writes exactly one stderr line prefixed with
|
|
485
|
+
// "harness session-start toolchain-parity: ". Untrusted, cross-machine-
|
|
486
|
+
// synced content reaches a note() argument through roughly ten call
|
|
487
|
+
// sites below — a peer's `profile` field, a peer filename, and an
|
|
488
|
+
// npm/mcp/node/owKitVersion value embedded in a compareToPeer drift
|
|
489
|
+
// message — and R2 sanitized only 2 of them (the collision and stale
|
|
490
|
+
// notes), leaving the rest (the "ok against"/"drift:N against" lines,
|
|
491
|
+
// every individual drift message, and two of the three peer-file-read
|
|
492
|
+
// notes) able to have a crafted `\n` forge a standalone fake parity
|
|
493
|
+
// line. Stripping CR/LF here closes the whole class by construction,
|
|
494
|
+
// regardless of which site the untrusted string flows through or
|
|
495
|
+
// whether a future site remembers to sanitize its own argument.
|
|
496
|
+
stderr.write(`harness session-start toolchain-parity: ${msg.replace(/[\r\n]/g, " ")}\n`);
|
|
442
497
|
};
|
|
443
|
-
const done = (wrote, profile, peersCompared, driftCount, sessionId, sessionSource, reason) => ({
|
|
498
|
+
const done = (wrote, profile, peersCompared, driftCount, sessionId, sessionSource, reason, unparseablePeerCount = 0) => ({
|
|
444
499
|
exitCode: 0,
|
|
445
500
|
wrote,
|
|
446
501
|
profile,
|
|
447
502
|
peersCompared,
|
|
448
503
|
driftCount,
|
|
504
|
+
unparseablePeerCount,
|
|
449
505
|
sessionId,
|
|
450
506
|
sessionSource,
|
|
451
507
|
...(reason !== undefined && { reason }),
|
|
@@ -472,19 +528,46 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
472
528
|
? event.session_id
|
|
473
529
|
: undefined;
|
|
474
530
|
const resolveSession = opts.resolveSession ?? resolveReadSessionId;
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
531
|
+
// Defensive (task c1b5ade5): a session resolver that throws (real or
|
|
532
|
+
// injected) must degrade to the same FALLBACK_SESSION every OTHER "no
|
|
533
|
+
// session known" path already uses, not crash a producer whose whole
|
|
534
|
+
// contract is "never break the session loop". Unlike collectLocalSnapshot
|
|
535
|
+
// below, this call is NOT part of the hermetic-spawn-guard contract, so
|
|
536
|
+
// wrapping it here does not swallow a HermeticSpawnViolationError.
|
|
537
|
+
let sessionId;
|
|
538
|
+
// Task c1b5ade5 R2 (finding 3): a throw here always degrades sessionId to
|
|
539
|
+
// FALLBACK_SESSION below, but sessionSource's ternary was computed purely
|
|
540
|
+
// from `opts.session`/`event.session_id`/`sessionId` — so a stdin event
|
|
541
|
+
// that DID carry a `session_id` still reported sessionSource "stdin" even
|
|
542
|
+
// though the id actually recorded was "default" (the resolver never ran
|
|
543
|
+
// to completion). That both misrepresents the ledger fact's provenance
|
|
544
|
+
// and suppresses the AC5 "resolved to default" warning below, which only
|
|
545
|
+
// fires when sessionSource === "default". `resolverThrew` short-circuits
|
|
546
|
+
// sessionSource to "default" whenever the catch below fired, regardless
|
|
547
|
+
// of what `explicit`/`event.session_id` looked like.
|
|
548
|
+
let resolverThrew = false;
|
|
549
|
+
try {
|
|
550
|
+
sessionId = resolveSession(explicit, {});
|
|
551
|
+
}
|
|
552
|
+
catch (err) {
|
|
553
|
+
note(`session id resolution failed: ${err.message}; falling back to session "${FALLBACK_SESSION}"`);
|
|
554
|
+
sessionId = FALLBACK_SESSION;
|
|
555
|
+
resolverThrew = true;
|
|
556
|
+
}
|
|
557
|
+
const sessionSource = resolverThrew
|
|
558
|
+
? "default"
|
|
559
|
+
: typeof opts.session === "string" && opts.session.length > 0
|
|
560
|
+
? "flag"
|
|
561
|
+
: typeof event.session_id === "string" && event.session_id.length > 0
|
|
562
|
+
? "stdin"
|
|
563
|
+
: sessionId === FALLBACK_SESSION
|
|
564
|
+
? "default"
|
|
565
|
+
: (typeof process.env.CLAUDE_CODE_SESSION_ID === "string" &&
|
|
566
|
+
process.env.CLAUDE_CODE_SESSION_ID === sessionId) ||
|
|
567
|
+
(typeof process.env.CLAUDE_SESSION_ID === "string" &&
|
|
568
|
+
process.env.CLAUDE_SESSION_ID === sessionId)
|
|
569
|
+
? "env"
|
|
570
|
+
: "transcript";
|
|
488
571
|
let manifest;
|
|
489
572
|
if (opts.manifest) {
|
|
490
573
|
manifest = opts.manifest;
|
|
@@ -508,7 +591,11 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
508
591
|
const machineStateDir = config.machine_state_dir ?? defaultMachineStateDir();
|
|
509
592
|
const profile = config.profile ?? sanitizeProfileName(os.hostname());
|
|
510
593
|
const workspaceRoot = config.workspace_root ?? cwd;
|
|
511
|
-
const
|
|
594
|
+
const sanitizedProfile = sanitizeProfileName(profile);
|
|
595
|
+
const ownFileName = `${sanitizedProfile}.json`;
|
|
596
|
+
// Advisory staleness threshold (AC3, task c1b5ade5): undefined disables
|
|
597
|
+
// the check entirely, matching the schema's default-off comment.
|
|
598
|
+
const staleAfterMs = config.stale_after_days !== undefined ? config.stale_after_days * 24 * 60 * 60 * 1000 : undefined;
|
|
512
599
|
try {
|
|
513
600
|
fs.mkdirSync(machineStateDir, { recursive: true });
|
|
514
601
|
}
|
|
@@ -517,6 +604,57 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
517
604
|
note(reason);
|
|
518
605
|
return done(false, profile, 0, 0, sessionId, sessionSource, reason);
|
|
519
606
|
}
|
|
607
|
+
// Lossy-sanitization advisory (task c1b5ade5): a `profile` configured
|
|
608
|
+
// with characters that are not filename-safe silently loses information
|
|
609
|
+
// when sanitizeProfileName strips/replaces them. That is invisible to an
|
|
610
|
+
// operator unless flagged — worse, two DIFFERENT configured profiles can
|
|
611
|
+
// sanitize to the SAME filename (e.g. "mac/mini" and "mac-mini" both land
|
|
612
|
+
// on "mac-mini.json"), in which case this run's write is about to
|
|
613
|
+
// silently overwrite what looked like a peer's snapshot. Both cases are
|
|
614
|
+
// advisory-only: this producer still writes its own snapshot and
|
|
615
|
+
// continues normally either way.
|
|
616
|
+
if (sanitizedProfile !== profile) {
|
|
617
|
+
note(`configured profile "${profile}" is not filename-safe; using sanitized "${sanitizedProfile}" for the snapshot file (${ownFileName})`);
|
|
618
|
+
}
|
|
619
|
+
// Collision check (task c1b5ade5 R2, finding 2): this must run on EVERY
|
|
620
|
+
// invocation, not only when THIS machine's own profile happens to be
|
|
621
|
+
// lossy — the collision is equally caused by a DIFFERENT (peer)
|
|
622
|
+
// machine's lossy profile landing on the SAME sanitized filename as
|
|
623
|
+
// this machine's own, already filename-safe, profile. Gating this read
|
|
624
|
+
// on `sanitizedProfile !== profile` meant only the lossy side of such a
|
|
625
|
+
// pair ever warned; the filename-safe side silently overwrote the lossy
|
|
626
|
+
// peer's snapshot with no signal at all (and that peer would then never
|
|
627
|
+
// show up in `peersCompared`). Only the "not filename-safe" note above
|
|
628
|
+
// stays scoped to the lossy case — it is about THIS profile, not about
|
|
629
|
+
// a collision.
|
|
630
|
+
try {
|
|
631
|
+
const existingRaw = fs.readFileSync(path.join(machineStateDir, ownFileName), "utf8");
|
|
632
|
+
const existingParsed = parseSnapshotJson(existingRaw);
|
|
633
|
+
if (existingParsed.ok && existingParsed.snapshot.profile !== profile) {
|
|
634
|
+
// The existing snapshot's `profile` field is untrusted, cross-machine
|
|
635
|
+
// synced content, shown RAW here (task c1b5ade5 R2b, reverting R2's
|
|
636
|
+
// sanitizeProfileName wrap at this site): note() now strips CR/LF at
|
|
637
|
+
// the choke point above, so a per-site sanitize is redundant AND
|
|
638
|
+
// would mangle a legitimate non-ASCII profile name into a label that
|
|
639
|
+
// no longer matches what actually collided. sanitizeProfileName
|
|
640
|
+
// stays reserved for the FILENAME path (ownFileName, writeOwnSnapshot
|
|
641
|
+
// below) — never for this stderr-display path.
|
|
642
|
+
note(`WARNING: sanitized filename "${ownFileName}" collides with an existing snapshot for a DIFFERENT profile ("${existingParsed.snapshot.profile}"); this run's write is about to overwrite it — set a distinct \`toolchain_parity.profile\` on one of the machines`);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
catch (err) {
|
|
646
|
+
// No existing file for this sanitized name yet (first run for this
|
|
647
|
+
// profile/filename) is the expected common case — ENOENT stays a
|
|
648
|
+
// silent skip; writeOwnSnapshot below reports its own write failures
|
|
649
|
+
// separately. Anything else (EACCES, EISDIR, ...) means the collision
|
|
650
|
+
// check silently did NOT run, which is a different, noteworthy outcome
|
|
651
|
+
// from "no collision found" (task c1b5ade5 R2b, narrowing the
|
|
652
|
+
// previously-bare catch): re-noted as one line rather than swallowed.
|
|
653
|
+
const e = err;
|
|
654
|
+
if (e.code !== "ENOENT") {
|
|
655
|
+
note(`could not check for a profile-name collision on ${ownFileName}: ${e.message}`);
|
|
656
|
+
}
|
|
657
|
+
}
|
|
520
658
|
const runNodeVersion = opts.runNodeVersion ?? realNodeVersionSpawn;
|
|
521
659
|
const runNpmGlobals = opts.runNpmGlobals ?? realNpmGlobalsSpawn;
|
|
522
660
|
const readOwKitVersion = opts.readOwKitVersion ?? realReadOwKitVersion;
|
|
@@ -555,6 +693,11 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
555
693
|
}
|
|
556
694
|
let peersCompared = 0;
|
|
557
695
|
let driftTotal = 0;
|
|
696
|
+
// Peer files that were present but failed to parse as valid JSON —
|
|
697
|
+
// AC2 (task 690fba7c): these must not vanish silently from `drift:N`, so
|
|
698
|
+
// their (file-derived) labels are surfaced both as a distinct stderr tag
|
|
699
|
+
// and as a `:unparseable-peer:<n>` suffix on the ledger fact below.
|
|
700
|
+
const unparseablePeers = [];
|
|
558
701
|
for (const fileName of peerFiles) {
|
|
559
702
|
const filePath = path.join(machineStateDir, fileName);
|
|
560
703
|
let raw;
|
|
@@ -567,7 +710,21 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
567
710
|
}
|
|
568
711
|
const parsed = parseSnapshotJson(raw);
|
|
569
712
|
if (!parsed.ok) {
|
|
713
|
+
// The profile field itself failed to parse, so the filename (minus
|
|
714
|
+
// its `.json` suffix) is the best available peer identifier. Files
|
|
715
|
+
// this producer did NOT write are untrusted input (the machine-state
|
|
716
|
+
// dir is populated cross-machine by sync), but note() strips CR/LF
|
|
717
|
+
// at the choke point above (task c1b5ade5 R2b, reverting R2's
|
|
718
|
+
// sanitizeProfileName wrap at this site), so the label is shown RAW
|
|
719
|
+
// here — a crafted filename still cannot forge a standalone parity
|
|
720
|
+
// line, and sanitizeProfileName stays reserved for the FILENAME
|
|
721
|
+
// path, not this stderr-display one. The `|| fileName` keeps a
|
|
722
|
+
// degenerate name like a literal `.json` from producing an empty
|
|
723
|
+
// label.
|
|
724
|
+
const peerLabel = fileName.replace(/\.json$/, "") || fileName;
|
|
570
725
|
note(`peer snapshot ${fileName} is corrupt: ${parsed.reason}`);
|
|
726
|
+
note(`parity:unparseable-peer:${peerLabel}`);
|
|
727
|
+
unparseablePeers.push(peerLabel);
|
|
571
728
|
continue;
|
|
572
729
|
}
|
|
573
730
|
const comparison = compareToPeer(localSnapshot, parsed.snapshot, now);
|
|
@@ -582,30 +739,81 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
582
739
|
for (const item of comparison.drift)
|
|
583
740
|
note(`drift — ${item.message}`);
|
|
584
741
|
}
|
|
742
|
+
// AC3 (task c1b5ade5): a stale peer is a trustworthiness CAVEAT on the
|
|
743
|
+
// comparison above, not a drift finding — it never touches driftTotal.
|
|
744
|
+
// Only fires when `stale_after_days` is explicitly configured.
|
|
745
|
+
if (staleAfterMs !== undefined && comparison.ageMs > staleAfterMs) {
|
|
746
|
+
// comparison.peerProfile is untrusted, cross-machine synced content,
|
|
747
|
+
// shown RAW here for the same reason as the collision-warning note
|
|
748
|
+
// above (task c1b5ade5 R2b, reverting R2's sanitizeProfileName wrap
|
|
749
|
+
// at this site): note() strips CR/LF at the choke point, and this
|
|
750
|
+
// also keeps the label identical to the "ok against"/"drift:N
|
|
751
|
+
// against" line for the SAME peer just above, instead of showing two
|
|
752
|
+
// different sanitized-vs-raw spellings of one peer's name in the
|
|
753
|
+
// same run.
|
|
754
|
+
note(`peer ${comparison.peerProfile} snapshot is stale (age ${age}, exceeds the configured ${config.stale_after_days}d threshold); its comparison may not reflect that machine's CURRENT toolchain`);
|
|
755
|
+
}
|
|
585
756
|
}
|
|
586
757
|
if (peersCompared === 0) {
|
|
587
758
|
const reason = `no comparable peer snapshots (all ${peerFiles.length} peer file(s) in ${machineStateDir} were unreadable/corrupt)`;
|
|
588
759
|
note(reason);
|
|
589
|
-
return done(false, profile, 0, 0, sessionId, sessionSource, reason);
|
|
590
|
-
}
|
|
591
|
-
|
|
760
|
+
return done(false, profile, 0, 0, sessionId, sessionSource, reason, unparseablePeers.length);
|
|
761
|
+
}
|
|
762
|
+
// AC2 (task 690fba7c): a non-zero `unparseablePeers` count means the
|
|
763
|
+
// comparison below is PARTIAL, so it is appended to the ledger fact
|
|
764
|
+
// itself — the artifact an operator is most likely to read after the
|
|
765
|
+
// fact via `harness audit` — not just to the stderr notes above. Absent
|
|
766
|
+
// any unparseable peer, `content` is byte-identical to the pre-existing
|
|
767
|
+
// format (AC3: no behaviour change for the all-valid-peers case).
|
|
768
|
+
const unparseableSuffix = unparseablePeers.length > 0 ? `:unparseable-peer:${unparseablePeers.length}` : "";
|
|
769
|
+
const content = (driftTotal === 0 ? "toolchain-parity:ok" : `toolchain-parity:drift:${driftTotal}`) + unparseableSuffix;
|
|
592
770
|
let writeLedger = opts.writeLedger;
|
|
593
771
|
if (!writeLedger) {
|
|
772
|
+
// No try/catch here (task c1b5ade5 R2, finding 4 — orchestrator
|
|
773
|
+
// decision): resolveManifestLedgerWriter is a pure function over an
|
|
774
|
+
// already-validated `manifest` with no throw path (findGroundingMcp is
|
|
775
|
+
// a plain array `.find`, mcpCommandList a plain string split) and no
|
|
776
|
+
// I/O seam to fail — unlike `resolveSession` above and `writeLedger`
|
|
777
|
+
// below, which DO wrap real I/O/spawn boundaries and stay caught. A
|
|
778
|
+
// try/catch here had no exercisable throw path and was dead,
|
|
779
|
+
// untested code (round-1 review finding); removed rather than built
|
|
780
|
+
// out into a fake seam.
|
|
594
781
|
const resolved = resolveManifestLedgerWriter(manifest, {
|
|
595
782
|
...(opts.ledgerTimeoutMs !== undefined ? { ledgerTimeoutMs: opts.ledgerTimeoutMs } : {}),
|
|
596
783
|
});
|
|
597
784
|
if (!resolved.ok) {
|
|
598
785
|
const reason = `${resolved.reason}; cannot record ${content}`;
|
|
599
786
|
note(reason);
|
|
600
|
-
return done(false, profile, peersCompared, driftTotal, sessionId, sessionSource, reason);
|
|
787
|
+
return done(false, profile, peersCompared, driftTotal, sessionId, sessionSource, reason, unparseablePeers.length);
|
|
601
788
|
}
|
|
602
789
|
writeLedger = resolved.write;
|
|
603
790
|
}
|
|
604
|
-
|
|
791
|
+
// Defensive (task c1b5ade5): an injected or real writeLedger that REJECTS
|
|
792
|
+
// instead of resolving to `{ ok: false, reason }` must degrade the same
|
|
793
|
+
// way the `!result.ok` branch below already does, not propagate as an
|
|
794
|
+
// unhandled rejection out of a SessionStart hook.
|
|
795
|
+
let result;
|
|
796
|
+
try {
|
|
797
|
+
result = await writeLedger({ sessionId, content, source: LEDGER_SOURCE });
|
|
798
|
+
}
|
|
799
|
+
catch (err) {
|
|
800
|
+
const reason = `ledger write threw: ${err.message}`;
|
|
801
|
+
note(reason);
|
|
802
|
+
return done(false, profile, peersCompared, driftTotal, sessionId, sessionSource, reason, unparseablePeers.length);
|
|
803
|
+
}
|
|
605
804
|
if (!result.ok) {
|
|
805
|
+
// `?? "unknown error"` is unreachable through any type-checked caller
|
|
806
|
+
// (`AddLedgerFactResult`'s `!ok` arm types `reason` as a non-optional
|
|
807
|
+
// string) — but unlike the try/catch removed around
|
|
808
|
+
// resolveManifestLedgerWriter above (a private, non-injectable pure
|
|
809
|
+
// function only ever called from this same typed module, so genuinely
|
|
810
|
+
// dead), `writeLedger` IS an injectable public seam
|
|
811
|
+
// (SessionStartToolchainParityOptions.writeLedger): a JS-level or
|
|
812
|
+
// otherwise untyped caller can hand back `{ ok: false }` with no
|
|
813
|
+
// `reason` at runtime, so this fallback stays (task c1b5ade5 R2b).
|
|
606
814
|
const reason = `ledger write failed: ${result.reason ?? "unknown error"}`;
|
|
607
815
|
note(reason);
|
|
608
|
-
return done(false, profile, peersCompared, driftTotal, sessionId, sessionSource, reason);
|
|
816
|
+
return done(false, profile, peersCompared, driftTotal, sessionId, sessionSource, reason, unparseablePeers.length);
|
|
609
817
|
}
|
|
610
818
|
note(`recorded ${content} for session ${sessionId}`);
|
|
611
819
|
if (sessionSource === "default") {
|
|
@@ -613,6 +821,6 @@ export async function runSessionStartToolchainParity(opts = {}) {
|
|
|
613
821
|
"consumes toolchain-parity: yet), but pipe SessionStart event JSON on stdin, export " +
|
|
614
822
|
"$CLAUDE_SESSION_ID, or pass --session <id> for manual / scripted use to keep the audit trail useful.");
|
|
615
823
|
}
|
|
616
|
-
return done(true, profile, peersCompared, driftTotal, sessionId, sessionSource);
|
|
824
|
+
return done(true, profile, peersCompared, driftTotal, sessionId, sessionSource, undefined, unparseablePeers.length);
|
|
617
825
|
}
|
|
618
826
|
//# sourceMappingURL=toolchain-parity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolchain-parity.js","sourceRoot":"","sources":["../../../src/cli/session-start/toolchain-parity.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolchain-parity.js","sourceRoot":"","sources":["../../../src/cli/session-start/toolchain-parity.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,uEAAuE;AACvE,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,wEAAwE;AACxE,qBAAqB;AACrB,EAAE;AACF,uDAAuD;AACvD,yEAAyE;AACzE,mEAAmE;AACnE,kBAAkB;AAClB,mEAAmE;AACnE,iDAAiD;AACjD,4DAA4D;AAC5D,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,kDAAkD;AAClD,EAAE;AACF,+DAA+D;AAC/D,wEAAwE;AACxE,qDAAqD;AACrD,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,yEAAyE;AACzE,yEAAyE;AACzE,uEAAuE;AACvE,4CAA4C;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,2BAA2B,EAAsB,MAAM,gCAAgC,CAAC;AACjG,OAAO,EACL,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAEhE,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAC/D,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,yEAAyE;AACzE,mEAAmE;AACnE,wEAAwE;AACxE,sEAAsE;AACtE,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,+DAA+D;AAC/D,uEAAuE;AACvE,qEAAqE;AACrE,sEAAsE;AACtE,sDAAsD;AACtD,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAQ7C,KAAK,UAAU,SAAS,CAAC,MAA6B;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAClC,IAAI,IAAI,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAmCD,SAAS,iBAAiB,CAAC,CAAU;IACnC,OAAO,CACL,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,KAAK,IAAI;QACV,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CACrD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAW;IAEX,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAoB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IACvE,CAAC;IACD,MAAM,QAAQ,GAAsB;QAClC,aAAa,EAAE,uBAAuB;QACtC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC;QACrB,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC;QACzB,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;QACrE,UAAU,EACR,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACnF,CAAC,CAAE,CAAC,CAAC,YAAY,CAAc;YAC/B,CAAC,CAAC,EAAE;KACT,CAAC;IACF,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC9F,IAAI,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IACrF,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,QAAQ;QAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC9F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AAeD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,wBAAwB,CACtB,gBAAgB,EAChB,+HAA+H,CAChI,CAAC;IACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,MAAM,EACN,CAAC,WAAW,CAAC,EACb,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EACxC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,GAAmD,CAAC;gBAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;oBACrD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,SAAS,IAAI,EAAE,CAAC,CAAC;oBACpF,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC,CAAC;QACxE,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,wBAAwB,CACtB,4BAA4B,EAC5B,6HAA6H,CAC9H,CAAC;IACF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CACN,KAAK,EACL,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EACnC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EACpE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6D,CAAC;oBAC5F,MAAM,QAAQ,GAA2B,EAAE,CAAC;oBAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC;wBACtE,IAAI,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ;4BAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;oBACzE,CAAC;oBACD,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;gBACtC,CAAC;YACH,CAAC;YACD,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,GAAmD,CAAC;gBAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACxB,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;oBACpD,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO,CAAC;wBACN,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,kDAAkD,SAAS,IAAI;qBACxE,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yDAAyD,EAAE,CAAC,CAAC;QAC5F,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAClF,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,EAAE,KAAK,EAAE,eAAe,YAAY,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,uBAAwB,GAAa,CAAC,OAAO,EAAE,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,uBAAuB,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,OAAO,GAAI,MAAkC,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,kCAAkC,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,YAAY,GAAG,6BAA6B,EAAE,CAAC;IACrD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAChE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAChD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAChD,CAAC;AAmBD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAiC;IAEjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;KACtC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAEtC,MAAM,QAAQ,GAAsB;QAClC,aAAa,EAAE,uBAAuB;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;QACjC,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;QACjB,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;IACvE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,CAAC,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,wEAAwE;AACxE,sDAAsD;AACtD,wEAAwE;AAExE;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,eAAuB,EACvB,WAAmB,EACnB,QAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAuBD,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,GAAG,MAAM;QAAE,OAAO,UAAU,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAC3C,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAwB,EACxB,IAAuB,EACvB,GAAS;IAET,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IAEjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpF,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,uBAAuB,KAAK,CAAC,IAAI,YAAY,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;IAED,IACE,KAAK,CAAC,YAAY,KAAK,SAAS;QAChC,IAAI,CAAC,YAAY,KAAK,SAAS;QAC/B,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,EACxC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,4CAA4C,KAAK,CAAC,YAAY,YAAY,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;SACtH,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvG,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACzC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,qBAAqB;wBAC3B,OAAO,EAAE,gBAAgB,IAAI,aAAa,EAAE,YAAY,WAAW,IAAI,EAAE,EAAE;qBAC5E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,0BAA0B;oBAChC,OAAO,EAAE,gBAAgB,IAAI,aAAa,EAAE,qBAAqB,WAAW,EAAE;iBAC/E,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,gBAAgB,IAAI,6BAA6B,WAAW,QAAQ,EAAE,EAAE;iBAClF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,gBAAgB,IAAI,2CAA2C,WAAW,EAAE;iBACtF,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,gBAAgB,IAAI,2CAA2C,WAAW,EAAE;iBACtF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AAwED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAA2C,EAAE;IAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,8BAA8B,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAQ,EAAE;QACjC,qEAAqE;QACrE,iEAAiE;QACjE,2DAA2D;QAC3D,wEAAwE;QACxE,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,qEAAqE;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,oEAAoE;QACpE,qEAAqE;QACrE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CACX,KAAc,EACd,OAAe,EACf,aAAqB,EACrB,UAAkB,EAClB,SAAiB,EACjB,aAAiE,EACjE,MAAe,EACf,oBAAoB,GAAG,CAAC,EACW,EAAE,CAAC,CAAC;QACvC,QAAQ,EAAE,CAAC;QACX,KAAK;QACL,OAAO;QACP,aAAa;QACb,UAAU;QACV,oBAAoB;QACpB,SAAS;QACT,aAAa;QACb,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;KACxC,CAAC,CAAC;IAEH,IAAI,KAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAsB,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,GAAG;QACV,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YACrD,CAAC,CAAC,KAAK,CAAC,GAAG;YACX,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEtB,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC,OAAO;QACd,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,oBAAoB,CAAC;IACnE,qEAAqE;IACrE,sEAAsE;IACtE,qEAAqE;IACrE,0EAA0E;IAC1E,wEAAwE;IACxE,mEAAmE;IACnE,IAAI,SAAiB,CAAC;IACtB,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,qDAAqD;IACrD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC;QACH,SAAS,GAAG,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CACF,iCAAkC,GAAa,CAAC,OAAO,8BAA8B,gBAAgB,GAAG,CACzG,CAAC;QACF,SAAS,GAAG,gBAAgB,CAAC;QAC7B,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,aAAa,GAAuD,aAAa;QACrF,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3D,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBACnE,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS,KAAK,gBAAgB;oBAC9B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,QAAQ;wBACrD,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,SAAS,CAAC;wBACjD,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,QAAQ;4BAChD,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC;wBAChD,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,YAAY,CAAC;IAEzB,IAAI,QAAkB,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,yBAA0B,GAAa,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GACV,sFAAsF,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,IAAI,sBAAsB,EAAE,CAAC;IAC7E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC;IACnD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,GAAG,gBAAgB,OAAO,CAAC;IAC/C,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,YAAY,GAChB,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpG,IAAI,CAAC;QACH,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,0CAA0C,eAAe,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC;QACtG,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,kEAAkE;IAClE,wEAAwE;IACxE,iEAAiE;IACjE,iCAAiC;IACjC,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CACF,uBAAuB,OAAO,4CAA4C,gBAAgB,4BAA4B,WAAW,GAAG,CACrI,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,qEAAqE;IACrE,gEAAgE;IAChE,oEAAoE;IACpE,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,eAAe;IACf,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QACrF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,cAAc,CAAC,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACrE,sEAAsE;YACtE,oEAAoE;YACpE,qEAAqE;YACrE,iEAAiE;YACjE,qEAAqE;YACrE,gEAAgE;YAChE,sEAAsE;YACtE,+CAA+C;YAC/C,IAAI,CACF,gCAAgC,WAAW,kEAAkE,cAAc,CAAC,QAAQ,CAAC,OAAO,oHAAoH,CACjQ,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mEAAmE;QACnE,iEAAiE;QACjE,qEAAqE;QACrE,sEAAsE;QACtE,uEAAuE;QACvE,8DAA8D;QAC9D,sEAAsE;QACtE,MAAM,CAAC,GAAG,GAA4B,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,mDAAmD,WAAW,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,oBAAoB,CAAC;IACnE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,CAAC;IAChE,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;IACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,IAAI,sBAAsB,CAAC;IAE7E,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,MAAM,oBAAoB,CAAC;QACpE,OAAO;QACP,GAAG;QACH,aAAa;QACb,aAAa;QACb,YAAY;QACZ,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,kBAAkB;KACnB,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAE/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IAC9E,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,iCAAiC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,iCAAiC,eAAe,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC;QAC7F,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,8BAA8B,eAAe,gGAAgG,CAAC;QAC7J,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,mEAAmE;IACnE,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,QAAQ,gBAAiB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,mEAAmE;YACnE,mEAAmE;YACnE,qEAAqE;YACrE,mEAAmE;YACnE,8DAA8D;YAC9D,oEAAoE;YACpE,mEAAmE;YACnE,gEAAgE;YAChE,+DAA+D;YAC/D,iEAAiE;YACjE,SAAS;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC;YAC9D,IAAI,CAAC,iBAAiB,QAAQ,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;YAC7C,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACtE,aAAa,IAAI,CAAC,CAAC;QACnB,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,cAAc,UAAU,CAAC,WAAW,kBAAkB,GAAG,GAAG,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,MAAM,YAAY,UAAU,CAAC,WAAW,kBAAkB,GAAG,GAAG,CAAC,CAAC;YACjG,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK;gBAAE,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,uEAAuE;QACvE,uEAAuE;QACvE,+DAA+D;QAC/D,IAAI,YAAY,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,GAAG,YAAY,EAAE,CAAC;YAClE,qEAAqE;YACrE,mEAAmE;YACnE,oEAAoE;YACpE,kEAAkE;YAClE,8DAA8D;YAC9D,qEAAqE;YACrE,iEAAiE;YACjE,YAAY;YACZ,IAAI,CACF,QAAQ,UAAU,CAAC,WAAW,2BAA2B,GAAG,4BAA4B,MAAM,CAAC,gBAAgB,+EAA+E,CAC/L,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,qCAAqC,SAAS,CAAC,MAAM,oBAAoB,eAAe,2BAA2B,CAAC;QACnI,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,qEAAqE;IACrE,wEAAwE;IACxE,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,iBAAiB,GACrB,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,MAAM,OAAO,GACX,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,0BAA0B,UAAU,EAAE,CAAC,GAAG,iBAAiB,CAAC;IAE1G,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,gEAAgE;QAChE,oEAAoE;QACpE,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,oEAAoE;QACpE,6DAA6D;QAC7D,oEAAoE;QACpE,wBAAwB;QACxB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,EAAE;YACrD,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzF,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,mBAAmB,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACpH,CAAC;QACD,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,sEAAsE;IACtE,kDAAkD;IAClD,IAAI,MAA0C,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,sEAAsE;QACtE,sEAAsE;QACtE,oDAAoD;QACpD,oEAAoE;QACpE,sEAAsE;QACtE,oDAAoD;QACpD,kEAAkE;QAClE,iEAAiE;QACjE,mEAAmE;QACnE,MAAM,MAAM,GAAG,wBAAwB,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpH,CAAC;IACD,IAAI,CAAC,YAAY,OAAO,gBAAgB,SAAS,EAAE,CAAC,CAAC;IACrD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,CACF,wFAAwF;YACtF,qFAAqF;YACrF,sGAAsG,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACtH,CAAC"}
|
|
@@ -23,8 +23,9 @@ export interface AssertionFailure {
|
|
|
23
23
|
* Claude Code 2.1+ envelope (`decision:"block"` AND
|
|
24
24
|
* `hookSpecificOutput.permissionDecision:"deny"`). On `allow`, stdout
|
|
25
25
|
* is empty. On `warn-degraded`, stdout is empty AND stderr carries the
|
|
26
|
-
* Phase 5 #3 diagnostic line (`warn-degraded (
|
|
27
|
-
*
|
|
26
|
+
* Phase 5 #3 diagnostic line (headed `warn-degraded (evidence could not
|
|
27
|
+
* be evaluated; ...)`, the literal outcome name being what the check
|
|
28
|
+
* below matches) when HARNESS_POLICY_VERBOSE is on. `harness smoke` sets that env var
|
|
28
29
|
* unconditionally when spawning claude, so the warn branch is
|
|
29
30
|
* observable.
|
|
30
31
|
*
|
|
@@ -33,6 +34,12 @@ export interface AssertionFailure {
|
|
|
33
34
|
* then allow if at least one policy-shaped hook fired without a deny
|
|
34
35
|
* stdout, else `null` (no policy hook in the stream, so the assertion
|
|
35
36
|
* is N/A and must be reported as a miss).
|
|
37
|
+
*
|
|
38
|
+
* `deny-degraded` (task f1aea826) is classified as deny by this same
|
|
39
|
+
* ordering: it emits the stdout block envelope, and the deny check runs
|
|
40
|
+
* BEFORE the stderr `warn-degraded` substring check — that ordering is
|
|
41
|
+
* load-bearing, since a deny-degraded event's stderr diagnostic line
|
|
42
|
+
* does not contain the string "warn-degraded" anyway.
|
|
36
43
|
*/
|
|
37
44
|
export declare function classifyDecision(hooks: HookPair[]): ExpectDecision | null;
|
|
38
45
|
export declare function evaluateExpectations(summary: StreamSummary, expectations: SmokeExpectations): AssertionFailure[];
|
|
@@ -35,8 +35,9 @@ function summariseHooks(hooks) {
|
|
|
35
35
|
* Claude Code 2.1+ envelope (`decision:"block"` AND
|
|
36
36
|
* `hookSpecificOutput.permissionDecision:"deny"`). On `allow`, stdout
|
|
37
37
|
* is empty. On `warn-degraded`, stdout is empty AND stderr carries the
|
|
38
|
-
* Phase 5 #3 diagnostic line (`warn-degraded (
|
|
39
|
-
*
|
|
38
|
+
* Phase 5 #3 diagnostic line (headed `warn-degraded (evidence could not
|
|
39
|
+
* be evaluated; ...)`, the literal outcome name being what the check
|
|
40
|
+
* below matches) when HARNESS_POLICY_VERBOSE is on. `harness smoke` sets that env var
|
|
40
41
|
* unconditionally when spawning claude, so the warn branch is
|
|
41
42
|
* observable.
|
|
42
43
|
*
|
|
@@ -45,6 +46,12 @@ function summariseHooks(hooks) {
|
|
|
45
46
|
* then allow if at least one policy-shaped hook fired without a deny
|
|
46
47
|
* stdout, else `null` (no policy hook in the stream, so the assertion
|
|
47
48
|
* is N/A and must be reported as a miss).
|
|
49
|
+
*
|
|
50
|
+
* `deny-degraded` (task f1aea826) is classified as deny by this same
|
|
51
|
+
* ordering: it emits the stdout block envelope, and the deny check runs
|
|
52
|
+
* BEFORE the stderr `warn-degraded` substring check — that ordering is
|
|
53
|
+
* load-bearing, since a deny-degraded event's stderr diagnostic line
|
|
54
|
+
* does not contain the string "warn-degraded" anyway.
|
|
48
55
|
*/
|
|
49
56
|
export function classifyDecision(hooks) {
|
|
50
57
|
for (const h of hooks) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/cli/smoke/assertions.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,iEAAiE;AACjE,uEAAuE;AACvE,uEAAuE;AACvE,wDAAwD;AAwBxD;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,IAAc,EAAE,MAAc;IACjD,OAAO,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,WAAW,CAAC;QACpD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC;QACrE,OAAO,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../../src/cli/smoke/assertions.ts"],"names":[],"mappings":"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"}
|