audit-tools 0.42.0 → 0.43.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/dispatch/merge-results.mjs +229 -140
- package/dispatch/validate-result.mjs +98 -40
- package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
- package/dist/audit/cli/conceptualDispatch.js +35 -3
- package/dist/audit/cli/conceptualDispatch.js.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts +9 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.js +94 -38
- package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +64 -0
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +877 -783
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +12 -0
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +34 -1
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +2 -2
- package/dist/audit/extractors/graph.d.ts +28 -2
- package/dist/audit/extractors/graph.d.ts.map +1 -1
- package/dist/audit/extractors/graph.js +122 -11
- package/dist/audit/extractors/graph.js.map +1 -1
- package/dist/audit/extractors/graphRoutes.d.ts +8 -0
- package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
- package/dist/audit/extractors/graphRoutes.js +71 -4
- package/dist/audit/extractors/graphRoutes.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +55 -0
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +189 -12
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/io/toolingManifest.d.ts +11 -0
- package/dist/audit/io/toolingManifest.d.ts.map +1 -1
- package/dist/audit/io/toolingManifest.js +13 -3
- package/dist/audit/io/toolingManifest.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts +64 -0
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +191 -57
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterClarificationExecutor.js +55 -21
- package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -1
- package/dist/audit/orchestrator/flowCoverage.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowCoverage.js +7 -10
- package/dist/audit/orchestrator/flowCoverage.js.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.d.ts +54 -1
- package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.js +77 -18
- package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
- package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowRequeue.js +6 -10
- package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
- package/dist/audit/orchestrator/partitionTaskGraph.d.ts.map +1 -1
- package/dist/audit/orchestrator/partitionTaskGraph.js +2 -2
- package/dist/audit/orchestrator/partitionTaskGraph.js.map +1 -1
- package/dist/audit/orchestrator/requeueFold.d.ts.map +1 -1
- package/dist/audit/orchestrator/requeueFold.js +18 -5
- package/dist/audit/orchestrator/requeueFold.js.map +1 -1
- package/dist/audit/orchestrator/staleness.d.ts +24 -1
- package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
- package/dist/audit/orchestrator/staleness.js +147 -16
- package/dist/audit/orchestrator/staleness.js.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +26 -0
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js +97 -12
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.js +111 -21
- package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
- package/dist/audit/orchestrator/trivialAudit.d.ts +17 -1
- package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
- package/dist/audit/orchestrator/trivialAudit.js +31 -4
- package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
- package/dist/audit/reporting/synthesis.d.ts.map +1 -1
- package/dist/audit/reporting/synthesis.js +2 -3
- package/dist/audit/reporting/synthesis.js.map +1 -1
- package/dist/audit/reporting/workBlocks.d.ts.map +1 -1
- package/dist/audit/reporting/workBlocks.js +4 -38
- package/dist/audit/reporting/workBlocks.js.map +1 -1
- package/dist/audit/types/analyzerCapability.d.ts +6 -6
- package/dist/audit/types/charterRegister.d.ts +30 -12
- package/dist/audit/types/charterRegister.d.ts.map +1 -1
- package/dist/audit/types/charterRegister.js +22 -9
- package/dist/audit/types/charterRegister.js.map +1 -1
- package/dist/audit/validation/anchorGrounding.d.ts.map +1 -1
- package/dist/audit/validation/anchorGrounding.js +17 -0
- package/dist/audit/validation/anchorGrounding.js.map +1 -1
- package/dist/audit/validation/auditResults.d.ts +17 -0
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +50 -17
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +48 -0
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js +128 -0
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
- package/dist/remediate/contractPipeline/derive.d.ts +8 -5
- package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/derive.js +8 -16
- package/dist/remediate/contractPipeline/derive.js.map +1 -1
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +43 -2
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/intent/intentOrdering.d.ts +13 -5
- package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
- package/dist/remediate/intent/intentOrdering.js +56 -25
- package/dist/remediate/intent/intentOrdering.js.map +1 -1
- package/dist/remediate/phases/close.d.ts +57 -2
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +260 -36
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/state/disposition.d.ts +26 -4
- package/dist/remediate/state/disposition.d.ts.map +1 -1
- package/dist/remediate/state/itemStatus.d.ts +33 -6
- package/dist/remediate/state/itemStatus.d.ts.map +1 -1
- package/dist/remediate/state/itemStatus.js +154 -39
- package/dist/remediate/state/itemStatus.js.map +1 -1
- package/dist/remediate/state/types.d.ts +41 -2
- package/dist/remediate/state/types.d.ts.map +1 -1
- package/dist/remediate/state/types.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +287 -15
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +1664 -987
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.js +1 -1
- package/dist/remediate/steps/contractPipelinePrompts.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts +137 -2
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js +713 -59
- package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
- package/dist/remediate/steps/finalGate.d.ts +136 -37
- package/dist/remediate/steps/finalGate.d.ts.map +1 -1
- package/dist/remediate/steps/finalGate.js +120 -86
- package/dist/remediate/steps/finalGate.js.map +1 -1
- package/dist/remediate/steps/gateCommands.d.ts +8 -0
- package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
- package/dist/remediate/steps/gateCommands.js +40 -11
- package/dist/remediate/steps/gateCommands.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +96 -5
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +668 -147
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/types.d.ts +4 -1
- package/dist/remediate/steps/types.d.ts.map +1 -1
- package/dist/remediate/steps/types.js +10 -0
- package/dist/remediate/steps/types.js.map +1 -1
- package/dist/remediate/validation/artifacts.d.ts +20 -0
- package/dist/remediate/validation/artifacts.d.ts.map +1 -1
- package/dist/remediate/validation/artifacts.js +239 -13
- package/dist/remediate/validation/artifacts.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +58 -0
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +167 -43
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.d.ts +72 -25
- package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.js +149 -15
- package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.d.ts +27 -2
- package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.js +149 -43
- package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/shared/analyzers/candidates.d.ts +9 -8
- package/dist/shared/analyzers/candidates.d.ts.map +1 -1
- package/dist/shared/analyzers/candidates.js +96 -64
- package/dist/shared/analyzers/candidates.js.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.d.ts +40 -12
- package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.js +74 -18
- package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
- package/dist/shared/analyzers/rubocop.d.ts +14 -13
- package/dist/shared/analyzers/rubocop.d.ts.map +1 -1
- package/dist/shared/analyzers/rubocop.js +29 -6
- package/dist/shared/analyzers/rubocop.js.map +1 -1
- package/dist/shared/analyzers/types.d.ts +196 -13
- package/dist/shared/analyzers/types.d.ts.map +1 -1
- package/dist/shared/analyzers/types.js +122 -9
- package/dist/shared/analyzers/types.js.map +1 -1
- package/dist/shared/decompose/charterClarification.d.ts +12 -1
- package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
- package/dist/shared/decompose/charterClarification.js +11 -4
- package/dist/shared/decompose/charterClarification.js.map +1 -1
- package/dist/shared/decompose/charterExtraction.d.ts +20 -10
- package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
- package/dist/shared/decompose/charterExtraction.js +52 -23
- package/dist/shared/decompose/charterExtraction.js.map +1 -1
- package/dist/shared/decompose/contentCoherence.d.ts +43 -2
- package/dist/shared/decompose/contentCoherence.d.ts.map +1 -1
- package/dist/shared/decompose/contentCoherence.js +109 -5
- package/dist/shared/decompose/contentCoherence.js.map +1 -1
- package/dist/shared/decompose/modularity.d.ts +17 -0
- package/dist/shared/decompose/modularity.d.ts.map +1 -1
- package/dist/shared/decompose/modularity.js +78 -3
- package/dist/shared/decompose/modularity.js.map +1 -1
- package/dist/shared/decompose/workBlockSeams.d.ts +45 -0
- package/dist/shared/decompose/workBlockSeams.d.ts.map +1 -0
- package/dist/shared/decompose/workBlockSeams.js +82 -0
- package/dist/shared/decompose/workBlockSeams.js.map +1 -0
- package/dist/shared/index.d.ts +4 -3
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +4 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/intent/freeFormIntentInterpreter.d.ts +12 -2
- package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
- package/dist/shared/intent/freeFormIntentInterpreter.js +27 -22
- package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
- package/dist/shared/intent/pathScope.d.ts +12 -1
- package/dist/shared/intent/pathScope.d.ts.map +1 -1
- package/dist/shared/intent/pathScope.js +56 -19
- package/dist/shared/intent/pathScope.js.map +1 -1
- package/dist/shared/intent/sharedIntentData.d.ts +19 -1
- package/dist/shared/intent/sharedIntentData.d.ts.map +1 -1
- package/dist/shared/intent/sharedIntentData.js +33 -8
- package/dist/shared/intent/sharedIntentData.js.map +1 -1
- package/dist/shared/io/fileLock.d.ts +12 -0
- package/dist/shared/io/fileLock.d.ts.map +1 -1
- package/dist/shared/io/fileLock.js +48 -5
- package/dist/shared/io/fileLock.js.map +1 -1
- package/dist/shared/io/json.d.ts +13 -0
- package/dist/shared/io/json.d.ts.map +1 -1
- package/dist/shared/io/json.js +19 -1
- package/dist/shared/io/json.js.map +1 -1
- package/dist/shared/reporting/auditDeliverable.d.ts.map +1 -1
- package/dist/shared/reporting/auditDeliverable.js +8 -3
- package/dist/shared/reporting/auditDeliverable.js.map +1 -1
- package/dist/shared/steps/stepEmissionScaffold.d.ts +69 -0
- package/dist/shared/steps/stepEmissionScaffold.d.ts.map +1 -0
- package/dist/shared/steps/stepEmissionScaffold.js +83 -0
- package/dist/shared/steps/stepEmissionScaffold.js.map +1 -0
- package/dist/shared/submission/handRecovery.d.ts.map +1 -1
- package/dist/shared/submission/handRecovery.js +69 -4
- package/dist/shared/submission/handRecovery.js.map +1 -1
- package/dist/shared/submission/submissionIdentity.d.ts +10 -1
- package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
- package/dist/shared/submission/submissionIdentity.js +12 -3
- package/dist/shared/submission/submissionIdentity.js.map +1 -1
- package/dist/shared/submission/submissionLedger.d.ts +43 -2
- package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
- package/dist/shared/submission/submissionLedger.js +50 -7
- package/dist/shared/submission/submissionLedger.js.map +1 -1
- package/dist/shared/tooling/allowlistedExec.d.ts +9 -0
- package/dist/shared/tooling/allowlistedExec.d.ts.map +1 -1
- package/dist/shared/tooling/allowlistedExec.js +19 -2
- package/dist/shared/tooling/allowlistedExec.js.map +1 -1
- package/dist/shared/types/charter.d.ts +24 -0
- package/dist/shared/types/charter.d.ts.map +1 -1
- package/dist/shared/types/charter.js +9 -0
- package/dist/shared/types/charter.js.map +1 -1
- package/dist/shared/types/finding.d.ts +105 -53
- package/dist/shared/types/finding.d.ts.map +1 -1
- package/dist/shared/types/finding.js +38 -11
- package/dist/shared/types/finding.js.map +1 -1
- package/dist/shared/types/remediationOutcome.d.ts +282 -9
- package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
- package/dist/shared/types/remediationOutcome.js +174 -1
- package/dist/shared/types/remediationOutcome.js.map +1 -1
- package/dist/shared/validation/findingsReport.d.ts.map +1 -1
- package/dist/shared/validation/findingsReport.js +19 -1
- package/dist/shared/validation/findingsReport.js.map +1 -1
- package/package.json +2 -1
- package/remediate-code.mjs +15 -0
- package/wrapper/remediate-code-wrapper-install-hosts.mjs +45 -4
- package/wrapper/remediate-code-wrapper-install-renderers.mjs +12 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type RunTrackedResult } from "../tooling/exec.js";
|
|
2
2
|
import type { AnalyzerSetting } from "../analyzerPolicy.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ExternalAnalyzerParseOutcome, type ExternalAnalyzerResults, type ExternalAnalyzerToolStatus } from "./types.js";
|
|
4
4
|
import { type BinarySpec, type BinaryResolveOptions } from "./binaryAcquisition.js";
|
|
5
5
|
/**
|
|
6
6
|
* F5 — external analyzer acquisition engine.
|
|
@@ -83,21 +83,12 @@ export interface ExternalAnalyzerCandidate {
|
|
|
83
83
|
buildArgv(runnerPrefix: string[], root: string): string[];
|
|
84
84
|
/**
|
|
85
85
|
* Parse the tool's stdout into the generic item shape consumed by
|
|
86
|
-
* `normalizeGenericExternalResults`.
|
|
86
|
+
* `normalizeGenericExternalResults`. NEVER throws — but a degradation must be
|
|
87
|
+
* REPORTED, not swallowed: return the {@link ExternalAnalyzerParseReport} form
|
|
88
|
+
* carrying `parse_failed` / `dropped_rows` so the engine can classify the run,
|
|
89
|
+
* because a bare `[]` is byte-identical to a genuinely clean scan.
|
|
87
90
|
*/
|
|
88
|
-
parse(stdout: string):
|
|
89
|
-
id?: string;
|
|
90
|
-
category?: string;
|
|
91
|
-
severity?: string;
|
|
92
|
-
path?: string;
|
|
93
|
-
line_start?: number;
|
|
94
|
-
line_end?: number;
|
|
95
|
-
summary?: string;
|
|
96
|
-
rule?: string;
|
|
97
|
-
raw?: unknown;
|
|
98
|
-
from?: unknown;
|
|
99
|
-
to?: unknown;
|
|
100
|
-
}>;
|
|
91
|
+
parse(stdout: string): ExternalAnalyzerParseOutcome;
|
|
101
92
|
/**
|
|
102
93
|
* For tools that ONLY report to a file (e.g. gitleaks) rather than stdout: the
|
|
103
94
|
* report path the tool was told to write (must match `buildArgv`). When set, the
|
|
@@ -130,17 +121,49 @@ export declare function detectGithubActionsEcosystem(root: string): boolean;
|
|
|
130
121
|
export interface AcquisitionRunner {
|
|
131
122
|
(argv: string[], cwd: string): RunTrackedResult;
|
|
132
123
|
}
|
|
124
|
+
/** A recorded, durable operator decision for one analyzer. */
|
|
125
|
+
export type AnalyzerConsentDecision = "granted" | "declined";
|
|
126
|
+
/** The recorded decisions, keyed by candidate id, as loaded from the durable policy. */
|
|
127
|
+
export type AnalyzerConsentDecisions = Record<string, AnalyzerConsentDecision>;
|
|
128
|
+
/**
|
|
129
|
+
* A consent token SCOPED to the analyzers the operator was actually offered. This is
|
|
130
|
+
* the form a caller should issue: the grant names its tools, so a grant obtained by
|
|
131
|
+
* offering one analyzer cannot silently admit an analyzer the operator never saw.
|
|
132
|
+
*/
|
|
133
|
+
export interface AnalyzerConsentTokenGrant {
|
|
134
|
+
/** Opaque per-run value; never persisted (pinned by the strict AnalyzerPolicy schema). */
|
|
135
|
+
readonly value: string;
|
|
136
|
+
/** The candidate ids this grant authorizes, and only those. */
|
|
137
|
+
readonly tools: readonly string[];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* What a caller may present as consent for this run.
|
|
141
|
+
*
|
|
142
|
+
* ⚠ The bare-string form is UNSCOPED — it authorizes every undecided candidate in the
|
|
143
|
+
* run. It remains accepted only because retiring it is a caller-side change owned by
|
|
144
|
+
* the acquisition entry point's own node; new callers should issue an
|
|
145
|
+
* {@link AnalyzerConsentTokenGrant}, which the chokepoint enforces per candidate.
|
|
146
|
+
*/
|
|
147
|
+
export type AnalyzerConsentTokenInput = string | AnalyzerConsentTokenGrant;
|
|
133
148
|
export interface AcquisitionEngineOptions {
|
|
134
149
|
/**
|
|
135
150
|
* Per-run consent token. REQUIRED to spawn any non-DEFAULT candidate (and any
|
|
136
|
-
* candidate whose setting is ephemeral/permanent)
|
|
137
|
-
* set runs; everything else is reported
|
|
151
|
+
* candidate whose setting is ephemeral/permanent) that has no recorded "granted"
|
|
152
|
+
* decision. Absent ⇒ only the DEFAULT set runs; everything else is reported
|
|
153
|
+
* `skipped` with a consent note. A token NEVER overrides a recorded "declined".
|
|
138
154
|
*/
|
|
139
|
-
consentToken?:
|
|
155
|
+
consentToken?: AnalyzerConsentTokenInput;
|
|
140
156
|
/** Per-analyzer settings (auto|ephemeral|permanent|skip|repo). */
|
|
141
157
|
analyzers?: Record<string, AnalyzerSetting>;
|
|
142
|
-
/**
|
|
143
|
-
|
|
158
|
+
/**
|
|
159
|
+
* CALLER OBLIGATION (declared here, not left to prose): the durable analyzer
|
|
160
|
+
* policy is loaded and BOTH `analyzers` and `analyzerConsent` are passed on EVERY
|
|
161
|
+
* acquisition call; an unreadable policy blocks the step rather than degrading to
|
|
162
|
+
* an empty one; and a consent token is never synthesized on the operator's behalf.
|
|
163
|
+
* Omitting this map leaves a recorded decline UNREPRESENTABLE at the chokepoint —
|
|
164
|
+
* the decision cannot be enforced because it never arrives.
|
|
165
|
+
*/
|
|
166
|
+
analyzerConsent?: AnalyzerConsentDecisions;
|
|
144
167
|
/** Injectable command runner; defaults to the shared runTracked. */
|
|
145
168
|
run?: AcquisitionRunner;
|
|
146
169
|
/** Injectable logger; defaults to a no-op (degrade quietly to status records). */
|
|
@@ -152,14 +175,38 @@ export interface AcquisitionEngineOptions {
|
|
|
152
175
|
*/
|
|
153
176
|
resolvedBinaries?: Record<string, string>;
|
|
154
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* The denial vocabulary. An operator refusal and a tool nobody has decided on are
|
|
180
|
+
* DIFFERENT causes and must be distinguishable in the persisted status record — a
|
|
181
|
+
* single conflated string cannot tell an operator that their own decline was the
|
|
182
|
+
* reason. Every CONSENT-channel reason names "consent"; `setting_skip` deliberately
|
|
183
|
+
* does not, because it comes from the settings channel (`analyzers.<id> = "skip"`)
|
|
184
|
+
* and is not a consent decision at all.
|
|
185
|
+
*/
|
|
186
|
+
export declare const ANALYZER_DENIAL_REASONS: {
|
|
187
|
+
/** `analyzers.<id> = "skip"` — the settings channel, not the consent record. */
|
|
188
|
+
readonly setting_skip: "setting=skip";
|
|
189
|
+
/** A recorded, durable operator refusal. Terminal: no token overrides it. */
|
|
190
|
+
readonly consent_declined: "consent declined by the operator for this analyzer (recorded decision)";
|
|
191
|
+
/** No decision recorded and no token presented — nobody has said yes OR no. */
|
|
192
|
+
readonly consent_not_decided: "consent not recorded for this analyzer (not yet decided; no consent token for this run)";
|
|
193
|
+
/** A token was presented, but it was issued for a different analyzer. */
|
|
194
|
+
readonly consent_token_scope: "consent token was not issued for this analyzer (scoped consent covers other tools only)";
|
|
195
|
+
};
|
|
155
196
|
/**
|
|
156
197
|
* Single subprocess-SPAWN admission chokepoint. Returns the reason a spawn is
|
|
157
|
-
* NOT admitted, or `undefined` when admitted.
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
198
|
+
* NOT admitted, or `undefined` when admitted.
|
|
199
|
+
*
|
|
200
|
+
* ORDER IS THE CONTRACT. A recorded `"declined"` is consulted FIRST — before the
|
|
201
|
+
* settings channel, before the DEFAULT-set short-circuit, and before any consent
|
|
202
|
+
* token — so an operator refusal is a veto for EVERY candidate, including a
|
|
203
|
+
* default-set member, and no token can override it. It also outranks
|
|
204
|
+
* `setting=skip`: both refuse, but only one of them is the operator's own decision,
|
|
205
|
+
* and the REASON is what tells them so. Only then: `skip`, then the DEFAULT set
|
|
206
|
+
* runs unprompted, a recorded `"granted"` admits, and finally a consent token
|
|
207
|
+
* admits the candidate it was issued for.
|
|
161
208
|
*/
|
|
162
|
-
export declare function admitSpawn(candidate: ExternalAnalyzerCandidate, setting: AnalyzerSetting, consentToken:
|
|
209
|
+
export declare function admitSpawn(candidate: ExternalAnalyzerCandidate, setting: AnalyzerSetting, consentToken: AnalyzerConsentTokenInput | undefined, recordedDecision?: AnalyzerConsentDecision): string | undefined;
|
|
163
210
|
/**
|
|
164
211
|
* The run-safety gate, written once: capability-probe the runner, then (if the
|
|
165
212
|
* probe passes) the caller may spawn the pinned, read-only argv. Returns the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquisitionEngine.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAK5D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"acquisitionEngine.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { existsSync, readFileSync, rmSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { runTracked } from "../tooling/exec.js";
|
|
4
4
|
import { normalizeGenericExternalResults, normalizeGenericExternalEdges, } from "./normalizeExternal.js";
|
|
5
|
+
import { readParseOutcome, } from "./types.js";
|
|
5
6
|
import { resolveBinary, } from "./binaryAcquisition.js";
|
|
6
7
|
/**
|
|
7
8
|
* F5 — external analyzer acquisition engine.
|
|
@@ -94,24 +95,77 @@ function runnerPrefix(runner, spec) {
|
|
|
94
95
|
case "binary": return [];
|
|
95
96
|
}
|
|
96
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* The denial vocabulary. An operator refusal and a tool nobody has decided on are
|
|
100
|
+
* DIFFERENT causes and must be distinguishable in the persisted status record — a
|
|
101
|
+
* single conflated string cannot tell an operator that their own decline was the
|
|
102
|
+
* reason. Every CONSENT-channel reason names "consent"; `setting_skip` deliberately
|
|
103
|
+
* does not, because it comes from the settings channel (`analyzers.<id> = "skip"`)
|
|
104
|
+
* and is not a consent decision at all.
|
|
105
|
+
*/
|
|
106
|
+
export const ANALYZER_DENIAL_REASONS = {
|
|
107
|
+
/** `analyzers.<id> = "skip"` — the settings channel, not the consent record. */
|
|
108
|
+
setting_skip: "setting=skip",
|
|
109
|
+
/** A recorded, durable operator refusal. Terminal: no token overrides it. */
|
|
110
|
+
consent_declined: "consent declined by the operator for this analyzer (recorded decision)",
|
|
111
|
+
/** No decision recorded and no token presented — nobody has said yes OR no. */
|
|
112
|
+
consent_not_decided: "consent not recorded for this analyzer (not yet decided; no consent token for this run)",
|
|
113
|
+
/** A token was presented, but it was issued for a different analyzer. */
|
|
114
|
+
consent_token_scope: "consent token was not issued for this analyzer (scoped consent covers other tools only)",
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Does this consent input authorize THIS candidate?
|
|
118
|
+
*
|
|
119
|
+
* A scoped grant authorizes exactly the tools it names — a grant obtained by offering
|
|
120
|
+
* tool A cannot admit tool B. The legacy bare string carries no scope, so it can only
|
|
121
|
+
* be read as run-wide; it is accepted for compatibility with the acquisition entry
|
|
122
|
+
* point that still issues one, and is deliberately reported distinctly here so the
|
|
123
|
+
* unscoped case is visible rather than indistinguishable from a scoped grant.
|
|
124
|
+
*/
|
|
125
|
+
function consentTokenAdmits(consentToken, candidateId) {
|
|
126
|
+
if (consentToken === undefined || consentToken === null)
|
|
127
|
+
return "absent";
|
|
128
|
+
if (typeof consentToken === "string") {
|
|
129
|
+
return consentToken.trim().length > 0 ? "admit" : "absent";
|
|
130
|
+
}
|
|
131
|
+
if (typeof consentToken.value !== "string" || consentToken.value.trim().length === 0) {
|
|
132
|
+
return "absent";
|
|
133
|
+
}
|
|
134
|
+
if (!Array.isArray(consentToken.tools))
|
|
135
|
+
return "out_of_scope";
|
|
136
|
+
return consentToken.tools.includes(candidateId) ? "admit" : "out_of_scope";
|
|
137
|
+
}
|
|
97
138
|
/**
|
|
98
139
|
* Single subprocess-SPAWN admission chokepoint. Returns the reason a spawn is
|
|
99
|
-
* NOT admitted, or `undefined` when admitted.
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
140
|
+
* NOT admitted, or `undefined` when admitted.
|
|
141
|
+
*
|
|
142
|
+
* ORDER IS THE CONTRACT. A recorded `"declined"` is consulted FIRST — before the
|
|
143
|
+
* settings channel, before the DEFAULT-set short-circuit, and before any consent
|
|
144
|
+
* token — so an operator refusal is a veto for EVERY candidate, including a
|
|
145
|
+
* default-set member, and no token can override it. It also outranks
|
|
146
|
+
* `setting=skip`: both refuse, but only one of them is the operator's own decision,
|
|
147
|
+
* and the REASON is what tells them so. Only then: `skip`, then the DEFAULT set
|
|
148
|
+
* runs unprompted, a recorded `"granted"` admits, and finally a consent token
|
|
149
|
+
* admits the candidate it was issued for.
|
|
103
150
|
*/
|
|
104
151
|
export function admitSpawn(candidate, setting, consentToken, recordedDecision) {
|
|
152
|
+
// A recorded refusal is terminal and is read BEFORE anything else — including the
|
|
153
|
+
// settings channel, which would otherwise mask the operator's own decision behind
|
|
154
|
+
// a reason that names a config value instead of their decline.
|
|
155
|
+
if (recordedDecision === "declined")
|
|
156
|
+
return ANALYZER_DENIAL_REASONS.consent_declined;
|
|
105
157
|
if (setting === "skip")
|
|
106
|
-
return
|
|
158
|
+
return ANALYZER_DENIAL_REASONS.setting_skip;
|
|
107
159
|
if (candidate.defaultRun)
|
|
108
160
|
return undefined;
|
|
109
|
-
// Admission: default set ∨ recorded "granted" ∨ per-run token
|
|
110
161
|
if (recordedDecision === "granted")
|
|
111
162
|
return undefined;
|
|
112
|
-
|
|
163
|
+
const tokenVerdict = consentTokenAdmits(consentToken, candidate.id);
|
|
164
|
+
if (tokenVerdict === "admit")
|
|
113
165
|
return undefined;
|
|
114
|
-
|
|
166
|
+
if (tokenVerdict === "out_of_scope")
|
|
167
|
+
return ANALYZER_DENIAL_REASONS.consent_token_scope;
|
|
168
|
+
return ANALYZER_DENIAL_REASONS.consent_not_decided;
|
|
115
169
|
}
|
|
116
170
|
/**
|
|
117
171
|
* The run-safety gate, written once: capability-probe the runner, then (if the
|
|
@@ -260,9 +314,11 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
|
|
|
260
314
|
/* best-effort */
|
|
261
315
|
}
|
|
262
316
|
}
|
|
263
|
-
|
|
317
|
+
const stderrText = typeof result.stderr === "string" ? result.stderr : "";
|
|
318
|
+
const stderrSnippet = stderrText.trim().length > 0 ? { stderr_snippet: stderrText.slice(0, 500) } : {};
|
|
319
|
+
let parsed;
|
|
264
320
|
try {
|
|
265
|
-
|
|
321
|
+
parsed = readParseOutcome(candidate.parse(parseInput));
|
|
266
322
|
}
|
|
267
323
|
catch (error) {
|
|
268
324
|
return {
|
|
@@ -275,13 +331,21 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
|
|
|
275
331
|
exit_code: result.status,
|
|
276
332
|
error: error instanceof Error ? error.message : String(error),
|
|
277
333
|
output_snippet: result.stdout.slice(0, 200),
|
|
334
|
+
...stderrSnippet,
|
|
278
335
|
duration_ms: result.duration_ms,
|
|
279
336
|
},
|
|
280
337
|
};
|
|
281
338
|
}
|
|
282
|
-
|
|
283
|
-
//
|
|
339
|
+
const items = parsed.items;
|
|
340
|
+
// readSource: content-anchored lead provenance (item C). Paths are normalized to
|
|
341
|
+
// repo-relative FIRST (an absolute-path emitter would otherwise make `join(root,
|
|
342
|
+
// path)` name nothing, silently dropping provenance); a read that still fails is
|
|
343
|
+
// COUNTED onto the status, so a broken read seam is distinguishable from an item
|
|
344
|
+
// that legitimately carries no anchor.
|
|
345
|
+
let sourceReadFailures = 0;
|
|
346
|
+
let normalizerDroppedItems = 0;
|
|
284
347
|
const normalized = normalizeGenericExternalResults(candidate.id, items, {
|
|
348
|
+
repoRoot: root,
|
|
285
349
|
readSource: (path) => {
|
|
286
350
|
try {
|
|
287
351
|
return readFileSync(join(root, path), "utf8");
|
|
@@ -290,10 +354,77 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
|
|
|
290
354
|
return undefined;
|
|
291
355
|
}
|
|
292
356
|
},
|
|
357
|
+
onDiagnostics: (diagnostics) => {
|
|
358
|
+
sourceReadFailures = diagnostics.source_read_failures;
|
|
359
|
+
normalizerDroppedItems = diagnostics.dropped_items;
|
|
360
|
+
},
|
|
293
361
|
});
|
|
294
362
|
const edges = normalizeGenericExternalEdges(items);
|
|
295
363
|
if (edges.length > 0)
|
|
296
364
|
normalized.graph_edges = edges;
|
|
365
|
+
// Rows the PARSER could not use plus items the NORMALIZER discarded (missing path
|
|
366
|
+
// or summary) are the same question to a consumer — "how much did this run fail to
|
|
367
|
+
// report?" — so they land on one field. Counting only the parser's half left a run
|
|
368
|
+
// whose every item was dropped at normalization reading as a clean scan.
|
|
369
|
+
const droppedRows = (parsed.dropped_rows ?? 0) + normalizerDroppedItems;
|
|
370
|
+
const degradationFields = {
|
|
371
|
+
exit_code: result.status,
|
|
372
|
+
...(droppedRows > 0 ? { dropped_rows: droppedRows } : {}),
|
|
373
|
+
...(sourceReadFailures > 0 ? { source_read_failures: sourceReadFailures } : {}),
|
|
374
|
+
...stderrSnippet,
|
|
375
|
+
duration_ms: result.duration_ms,
|
|
376
|
+
};
|
|
377
|
+
// AFFIRMATION, never a success-shaped empty. Zero items is only "success" when the
|
|
378
|
+
// run itself was clean: the tool exited 0, said nothing on stderr it did not also
|
|
379
|
+
// say on stdout, parsed, and dropped nothing. Every other zero-item outcome names
|
|
380
|
+
// its cause — the exit code and stderr are in hand right here, which is exactly
|
|
381
|
+
// why leaving them unconsulted made a broken analyzer read as a clean repo.
|
|
382
|
+
if (normalized.results.length === 0) {
|
|
383
|
+
// A NULL exit status means the child never exited on its own — it was killed by a
|
|
384
|
+
// signal (SIGKILL/OOM). `RunTrackedResult` carries no signal field, so null is the
|
|
385
|
+
// only trace of it, and it is emphatically not "exited cleanly". Treating it as
|
|
386
|
+
// clean also made the classification OS-divergent: win32 surfaces the same kill as
|
|
387
|
+
// a non-zero status, so the identical event would have been failed there and
|
|
388
|
+
// success on POSIX.
|
|
389
|
+
const exitMissing = result.status === null || result.status === undefined;
|
|
390
|
+
const exitedNonZero = exitMissing || result.status !== 0;
|
|
391
|
+
const stderrOnly = !exitedNonZero && stderrText.trim().length > 0 && parseInput.trim().length === 0;
|
|
392
|
+
if (exitedNonZero || stderrOnly) {
|
|
393
|
+
return {
|
|
394
|
+
results: emptyResults(candidate.id),
|
|
395
|
+
status: {
|
|
396
|
+
tool: candidate.id,
|
|
397
|
+
command,
|
|
398
|
+
resolved: true,
|
|
399
|
+
status: "failed",
|
|
400
|
+
error: exitMissing
|
|
401
|
+
? "analyzer terminated without an exit status (killed by a signal) and produced no parsable findings"
|
|
402
|
+
: exitedNonZero
|
|
403
|
+
? `analyzer exited ${result.status} with no parsable findings`
|
|
404
|
+
: "analyzer produced no output other than stderr",
|
|
405
|
+
output_snippet: result.stdout.slice(0, 200),
|
|
406
|
+
...degradationFields,
|
|
407
|
+
},
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
if (parsed.parse_failed || droppedRows > 0) {
|
|
411
|
+
return {
|
|
412
|
+
results: emptyResults(candidate.id),
|
|
413
|
+
status: {
|
|
414
|
+
tool: candidate.id,
|
|
415
|
+
command,
|
|
416
|
+
resolved: true,
|
|
417
|
+
status: "parse_error",
|
|
418
|
+
error: parsed.note ??
|
|
419
|
+
(parsed.parse_failed
|
|
420
|
+
? "analyzer output could not be parsed"
|
|
421
|
+
: `analyzer output parsed with ${droppedRows} unusable row(s)`),
|
|
422
|
+
output_snippet: parseInput.slice(0, 200),
|
|
423
|
+
...degradationFields,
|
|
424
|
+
},
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
}
|
|
297
428
|
return {
|
|
298
429
|
results: normalized,
|
|
299
430
|
status: {
|
|
@@ -301,8 +432,8 @@ export function runExternalAnalyzer(candidate, root, options = {}) {
|
|
|
301
432
|
command,
|
|
302
433
|
resolved: true,
|
|
303
434
|
status: normalized.results.length > 0 ? "findings" : "success",
|
|
304
|
-
|
|
305
|
-
|
|
435
|
+
...(parsed.note !== undefined ? { error: parsed.note } : {}),
|
|
436
|
+
...degradationFields,
|
|
306
437
|
},
|
|
307
438
|
};
|
|
308
439
|
}
|
|
@@ -361,10 +492,13 @@ export async function resolveBinaryCandidates(candidates, root, options = {}) {
|
|
|
361
492
|
resolvedBinaries[candidate.id] = resolution.command;
|
|
362
493
|
}
|
|
363
494
|
else {
|
|
495
|
+
// A supply-chain event gets its OWN status member: "the release asset did not
|
|
496
|
+
// match the pinned checksums" must never be flattened into the same record as
|
|
497
|
+
// "this machine is offline", which is all a shared `not_resolved` could say.
|
|
364
498
|
unresolvedStatuses.push({
|
|
365
499
|
tool: candidate.id,
|
|
366
500
|
resolved: false,
|
|
367
|
-
status: "not_resolved",
|
|
501
|
+
status: resolution.reason === "checksum_mismatch" ? "checksum_mismatch" : "not_resolved",
|
|
368
502
|
error: resolution.note ?? "binary unavailable",
|
|
369
503
|
});
|
|
370
504
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acquisitionEngine.js","sourceRoot":"","sources":["../../../src/shared/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acquisitionEngine.js","sourceRoot":"","sources":["../../../src/shared/analyzers/acquisitionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAyB,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,GAKjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,GAGd,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS;IAC5C,aAAa;IACb,oBAAoB;CACrB,CAAC,CAAC;AA4EH,+EAA+E;AAC/E,SAAS,YAAY,CAAC,IAAY,EAAE,OAAiB;IACnD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAY;IACvD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,MAAuB;IAC9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC1C,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5C,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9C,iFAAiF;QACjF,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAuB,EAAE,IAAY;IACzD,QAAQ,MAAM,EAAE,CAAC;QACf,qEAAqE;QACrE,KAAK,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvC,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpD,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/C,4DAA4D;QAC5D,qEAAqE;QACrE,KAAK,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAiED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,gFAAgF;IAChF,YAAY,EAAE,cAAc;IAC5B,6EAA6E;IAC7E,gBAAgB,EACd,wEAAwE;IAC1E,+EAA+E;IAC/E,mBAAmB,EACjB,yFAAyF;IAC3F,yEAAyE;IACzE,mBAAmB,EACjB,yFAAyF;CACnF,CAAC;AAEX;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,YAAmD,EACnD,WAAmB;IAEnB,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACzE,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAC9D,OAAO,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,SAAoC,EACpC,OAAwB,EACxB,YAAmD,EACnD,gBAA0C;IAE1C,kFAAkF;IAClF,kFAAkF;IAClF,+DAA+D;IAC/D,IAAI,gBAAgB,KAAK,UAAU;QAAE,OAAO,uBAAuB,CAAC,gBAAgB,CAAC;IACrF,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,uBAAuB,CAAC,YAAY,CAAC;IACpE,IAAI,SAAS,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,YAAY,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/C,IAAI,YAAY,KAAK,cAAc;QAAE,OAAO,uBAAuB,CAAC,mBAAmB,CAAC;IACxF,OAAO,uBAAuB,CAAC,mBAAmB,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAoC,EACpC,GAAsB,EACtB,IAAY;IAEZ,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,SAAS,CAAC,EAAE,8BAA8B,EAAE,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,WAAW,SAAS,CAAC,MAAM,oBACjC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,KAAK,CAAC,MAAM,EAC9C,EAAE;SACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CACjB,SAAsD,EACtD,EAAU;IAEV,OAAO,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC;AACnC,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAoC,EACpC,IAAY,EACZ,UAAoC,EAAE;IAEtC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,yDAAyD;QACzD,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,uDAAuD;aAC/D;SACF,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAE5D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE;SACpG,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACtF,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,gCAAgC,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;SAClF,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,iFAAiF;IACjF,iFAAiF;IACjF,gEAAgE;IAChE,IAAI,MAAgB,CAAC;IACrB,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACjD,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE,cAAc;oBACtB,KAAK,EAAE,kEAAkE;iBAC1E;aACF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,GAAG,CAAC,gCAAgC,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;aAC5F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,aAAa;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,WAAW,EAAE,CAAC;aACf;SACF,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;gBAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,gEAAgE;IAChE,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,UAAU,CAAC;gBAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,aAAa,GACjB,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnF,IAAI,MAA2C,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,EAAE;gBACN,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,OAAO;gBACP,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,aAAa;gBACrB,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC3C,GAAG,aAAa;gBAChB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC;SACF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAiC,MAAM,CAAC,KAAK,CAAC;IAEzD,iFAAiF;IACjF,iFAAiF;IACjF,iFAAiF;IACjF,iFAAiF;IACjF,uCAAuC;IACvC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,+BAA+B,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE;QACtE,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,aAAa,EAAE,CAAC,WAAW,EAAE,EAAE;YAC7B,kBAAkB,GAAG,WAAW,CAAC,oBAAoB,CAAC;YACtD,sBAAsB,GAAG,WAAW,CAAC,aAAa,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;IAErD,kFAAkF;IAClF,mFAAmF;IACnF,mFAAmF;IACnF,yEAAyE;IACzE,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,sBAAsB,CAAC;IACxE,MAAM,iBAAiB,GAAG;QACxB,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,aAAa;QAChB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;IAEF,mFAAmF;IACnF,kFAAkF;IAClF,kFAAkF;IAClF,gFAAgF;IAChF,4EAA4E;IAC5E,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,kFAAkF;QAClF,mFAAmF;QACnF,gFAAgF;QAChF,mFAAmF;QACnF,6EAA6E;QAC7E,oBAAoB;QACpB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QAC1E,MAAM,aAAa,GAAG,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACzD,MAAM,UAAU,GACd,CAAC,aAAa,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QACnF,IAAI,aAAa,IAAI,UAAU,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,OAAO;oBACP,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,QAAQ;oBAChB,KAAK,EAAE,WAAW;wBAChB,CAAC,CAAC,mGAAmG;wBACrG,CAAC,CAAC,aAAa;4BACb,CAAC,CAAC,mBAAmB,MAAM,CAAC,MAAM,4BAA4B;4BAC9D,CAAC,CAAC,+CAA+C;oBACrD,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC3C,GAAG,iBAAiB;iBACrB;aACF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,MAAM,EAAE;oBACN,IAAI,EAAE,SAAS,CAAC,EAAE;oBAClB,OAAO;oBACP,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,aAAa;oBACrB,KAAK,EACH,MAAM,CAAC,IAAI;wBACX,CAAC,MAAM,CAAC,YAAY;4BAClB,CAAC,CAAC,qCAAqC;4BACvC,CAAC,CAAC,+BAA+B,WAAW,kBAAkB,CAAC;oBACnE,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACxC,GAAG,iBAAiB;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE;YACN,IAAI,EAAE,SAAS,CAAC,EAAE;YAClB,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC9D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,iBAAiB;SACrB;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAuC;IAEvC,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QAC/C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AASD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAuC,EACvC,IAAY,EACZ,UAA2D,EAAE;IAE7D,MAAM,gBAAgB,GAA2B,EAAE,CAAC;IACpD,MAAM,kBAAkB,GAAiC,EAAE,CAAC;IAC5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,SAAS;QACjE,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAAE,SAAS;QAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,kBAAkB,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,wBAAwB;aAChC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACtF,IAAI,MAAM,EAAE,CAAC;YACX,kBAAkB,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,8EAA8E;YAC9E,8EAA8E;YAC9E,6EAA6E;YAC7E,kBAAkB,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC,EAAE;gBAClB,QAAQ,EAAE,KAAK;gBACf,MAAM,EACJ,UAAU,CAAC,MAAM,KAAK,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,cAAc;gBAClF,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,oBAAoB;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;AAClD,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAuC,EACvC,IAAY,EACZ,UAAoC,EAAE;IAEtC,MAAM,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC9E,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -15,7 +15,24 @@ import { type RunTrackedResult } from "../tooling/exec.js";
|
|
|
15
15
|
* is SHA256-verified against the official release checksums BEFORE it is extracted
|
|
16
16
|
* or executed; the fetcher is injected so the engine is testable without network
|
|
17
17
|
* and an absent network degrades cleanly. A checksum mismatch is fatal-to-this-tool
|
|
18
|
-
* (returns `unavailable`), never executed.
|
|
18
|
+
* (returns `unavailable` with reason `checksum_mismatch`), never executed.
|
|
19
|
+
*
|
|
20
|
+
* The cache branch is held to the SAME bar as the download branch, on EVERY
|
|
21
|
+
* resolution, in two layers that only work together:
|
|
22
|
+
* - LOCATION. The default cache root is per-user (`<homedir>/.audit-tools/bincache`,
|
|
23
|
+
* created 0o700 where modes are honoured), never the shared temp dir. The path is
|
|
24
|
+
* fully derivable from public pinned constants, so "a file exists there" is only
|
|
25
|
+
* meaningful when the directory is not writable by other local processes.
|
|
26
|
+
* - INTEGRITY. Each successful download records the executable's digest in a cache
|
|
27
|
+
* manifest beside it, and a cache hit is only a hit when the bytes still hash to
|
|
28
|
+
* that recorded digest. Anything else — no manifest, an unreadable manifest, a
|
|
29
|
+
* digest mismatch, or a version dir left behind by a failed extraction — is PURGED
|
|
30
|
+
* and re-acquired rather than executed.
|
|
31
|
+
*
|
|
32
|
+
* The manifest alone is NOT provenance: anyone who can write the cache dir can write a
|
|
33
|
+
* self-consistent binary+manifest pair. It detects drift and partial writes; the
|
|
34
|
+
* location layer is what makes writing the pair privileged in the first place. A
|
|
35
|
+
* caller passing its own `cacheDir` owns that directory's permissions.
|
|
19
36
|
*/
|
|
20
37
|
/** Injected network fetch: returns the URL's bytes, or `null` when unavailable. */
|
|
21
38
|
export interface BinaryFetcher {
|
|
@@ -57,15 +74,23 @@ export interface BinarySpec {
|
|
|
57
74
|
export interface BinaryResolveOptions {
|
|
58
75
|
fetch?: BinaryFetcher;
|
|
59
76
|
run?: BinaryCommandRunner;
|
|
60
|
-
/** Root cache dir for downloaded binaries; default `<
|
|
77
|
+
/** Root cache dir for downloaded binaries; default `<homedir>/.audit-tools/bincache`. */
|
|
61
78
|
cacheDir?: string;
|
|
62
79
|
platform?: NodeJS.Platform;
|
|
63
80
|
arch?: string;
|
|
64
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* WHY a binary could not be resolved, as a machine-readable member rather than a
|
|
84
|
+
* free-text note. `checksum_mismatch` is a supply-chain event and must never be
|
|
85
|
+
* indistinguishable from `offline` in the persisted record.
|
|
86
|
+
*/
|
|
87
|
+
export type BinaryUnavailableReason = "offline" | "no_asset_for_platform" | "download_failed" | "download_empty" | "no_checksum_for_asset" | "checksum_mismatch" | "extract_failed" | "not_found_in_archive" | "write_failed";
|
|
65
88
|
export interface BinaryResolution {
|
|
66
89
|
status: "path" | "cached" | "downloaded" | "unavailable";
|
|
67
90
|
/** Resolved executable (PATH name or absolute cached path); null when unavailable. */
|
|
68
91
|
command: string | null;
|
|
92
|
+
/** Discriminated cause when `status === "unavailable"`. */
|
|
93
|
+
reason?: BinaryUnavailableReason;
|
|
69
94
|
note?: string;
|
|
70
95
|
}
|
|
71
96
|
/** Parse a `<sha256>␠␠<asset>` checksums file for one asset's expected digest. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binaryAcquisition.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binaryAcquisition.d.ts","sourceRoot":"","sources":["../../../src/shared/analyzers/binaryAcquisition.ts"],"names":[],"mappings":"AAcA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC3C;AAED,0FAA0F;AAC1F,MAAM,WAAW,mBAAmB;IAClC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACjD;AAED,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IACzD,gFAAgF;IAChF,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9C;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,yFAAyF;IACzF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B,SAAS,GACT,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,uBAAuB,GACvB,mBAAmB,GACnB,gBAAgB,GAChB,sBAAsB,GACtB,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,CAAC;IACzD,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA+ID,kFAAkF;AAClF,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAMf;AAMD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAiJ3B"}
|