codex-orchestrator 2.0.2 → 2.0.3
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 +17 -0
- package/README.md +12 -9
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/v2/acceptance-proof.d.ts +3 -0
- package/dist/src/v2/acceptance-proof.d.ts.map +1 -1
- package/dist/src/v2/acceptance-proof.js +2 -8
- package/dist/src/v2/acceptance-proof.js.map +1 -1
- package/dist/src/v2/adapters/gh-issue-adapter.d.ts +5 -3
- package/dist/src/v2/adapters/gh-issue-adapter.d.ts.map +1 -1
- package/dist/src/v2/adapters/gh-issue-adapter.js +63 -7
- package/dist/src/v2/adapters/gh-issue-adapter.js.map +1 -1
- package/dist/src/v2/adapters/issues.d.ts +16 -2
- package/dist/src/v2/adapters/issues.d.ts.map +1 -1
- package/dist/src/v2/adapters/issues.js +15 -5
- package/dist/src/v2/adapters/issues.js.map +1 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.d.ts +1 -0
- package/dist/src/v2/adapters/mission-coordinator-lock.d.ts.map +1 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.js +5 -1
- package/dist/src/v2/adapters/mission-coordinator-lock.js.map +1 -1
- package/dist/src/v2/candidate-cli.d.ts +4 -0
- package/dist/src/v2/candidate-cli.d.ts.map +1 -1
- package/dist/src/v2/candidate-cli.js +26 -11
- package/dist/src/v2/candidate-cli.js.map +1 -1
- package/dist/src/v2/cli-contract.d.ts +1 -1
- package/dist/src/v2/cli-contract.d.ts.map +1 -1
- package/dist/src/v2/cli-contract.js +10 -0
- package/dist/src/v2/cli-contract.js.map +1 -1
- package/dist/src/v2/code-review-report.d.ts +66 -0
- package/dist/src/v2/code-review-report.d.ts.map +1 -0
- package/dist/src/v2/code-review-report.js +259 -0
- package/dist/src/v2/code-review-report.js.map +1 -0
- package/dist/src/v2/codex-process.d.ts +8 -1
- package/dist/src/v2/codex-process.d.ts.map +1 -1
- package/dist/src/v2/codex-process.js +11 -0
- package/dist/src/v2/codex-process.js.map +1 -1
- package/dist/src/v2/config.d.ts +2 -1
- package/dist/src/v2/config.d.ts.map +1 -1
- package/dist/src/v2/config.js +8 -3
- package/dist/src/v2/config.js.map +1 -1
- package/dist/src/v2/contained-report-operation.d.ts +100 -0
- package/dist/src/v2/contained-report-operation.d.ts.map +1 -0
- package/dist/src/v2/contained-report-operation.js +200 -0
- package/dist/src/v2/contained-report-operation.js.map +1 -0
- package/dist/src/v2/containment.d.ts +6 -0
- package/dist/src/v2/containment.d.ts.map +1 -1
- package/dist/src/v2/containment.js +40 -1
- package/dist/src/v2/containment.js.map +1 -1
- package/dist/src/v2/direct-delivery.d.ts +101 -0
- package/dist/src/v2/direct-delivery.d.ts.map +1 -0
- package/dist/src/v2/direct-delivery.js +547 -0
- package/dist/src/v2/direct-delivery.js.map +1 -0
- package/dist/src/v2/immutable-workflow-publisher.d.ts +40 -0
- package/dist/src/v2/immutable-workflow-publisher.d.ts.map +1 -0
- package/dist/src/v2/immutable-workflow-publisher.js +218 -0
- package/dist/src/v2/immutable-workflow-publisher.js.map +1 -0
- package/dist/src/v2/implementation-reviewer.d.ts +81 -0
- package/dist/src/v2/implementation-reviewer.d.ts.map +1 -0
- package/dist/src/v2/implementation-reviewer.js +157 -0
- package/dist/src/v2/implementation-reviewer.js.map +1 -0
- package/dist/src/v2/owner-control-lock.d.ts +41 -0
- package/dist/src/v2/owner-control-lock.d.ts.map +1 -0
- package/dist/src/v2/owner-control-lock.js +174 -0
- package/dist/src/v2/owner-control-lock.js.map +1 -0
- package/dist/src/v2/route-continuations.d.ts +32 -0
- package/dist/src/v2/route-continuations.d.ts.map +1 -0
- package/dist/src/v2/route-continuations.js +2 -0
- package/dist/src/v2/route-continuations.js.map +1 -0
- package/dist/src/v2/route-coordinator.d.ts +77 -0
- package/dist/src/v2/route-coordinator.d.ts.map +1 -0
- package/dist/src/v2/route-coordinator.js +370 -0
- package/dist/src/v2/route-coordinator.js.map +1 -0
- package/dist/src/v2/route-decision.d.ts +129 -0
- package/dist/src/v2/route-decision.d.ts.map +1 -0
- package/dist/src/v2/route-decision.js +400 -0
- package/dist/src/v2/route-decision.js.map +1 -0
- package/dist/src/v2/run-issue.d.ts +63 -2
- package/dist/src/v2/run-issue.d.ts.map +1 -1
- package/dist/src/v2/run-issue.js +906 -91
- package/dist/src/v2/run-issue.js.map +1 -1
- package/dist/src/v2/run-store.d.ts +25 -1
- package/dist/src/v2/run-store.d.ts.map +1 -1
- package/dist/src/v2/run-store.js +143 -3
- package/dist/src/v2/run-store.js.map +1 -1
- package/dist/src/v2/runtime-assets.d.ts +15 -13
- package/dist/src/v2/runtime-assets.d.ts.map +1 -1
- package/dist/src/v2/runtime-assets.js +263 -416
- package/dist/src/v2/runtime-assets.js.map +1 -1
- package/dist/src/v2/runtime.d.ts +14 -6
- package/dist/src/v2/runtime.d.ts.map +1 -1
- package/dist/src/v2/runtime.js +478 -56
- package/dist/src/v2/runtime.js.map +1 -1
- package/dist/src/v2/setup-cli.d.ts.map +1 -1
- package/dist/src/v2/setup-cli.js +1 -0
- package/dist/src/v2/setup-cli.js.map +1 -1
- package/dist/src/v2/setup-runtime.d.ts.map +1 -1
- package/dist/src/v2/setup-runtime.js +20 -72
- package/dist/src/v2/setup-runtime.js.map +1 -1
- package/dist/src/v2/setup.d.ts +4 -1
- package/dist/src/v2/setup.d.ts.map +1 -1
- package/dist/src/v2/setup.js +104 -1
- package/dist/src/v2/setup.js.map +1 -1
- package/dist/src/v2/spec-coordinator.d.ts +85 -0
- package/dist/src/v2/spec-coordinator.d.ts.map +1 -0
- package/dist/src/v2/spec-coordinator.js +88 -0
- package/dist/src/v2/spec-coordinator.js.map +1 -0
- package/dist/src/v2/spec-delivery.d.ts +143 -0
- package/dist/src/v2/spec-delivery.d.ts.map +1 -0
- package/dist/src/v2/spec-delivery.js +401 -0
- package/dist/src/v2/spec-delivery.js.map +1 -0
- package/dist/src/v2/triage-route.d.ts +68 -0
- package/dist/src/v2/triage-route.d.ts.map +1 -0
- package/dist/src/v2/triage-route.js +223 -0
- package/dist/src/v2/triage-route.js.map +1 -0
- package/dist/src/v2/waiting-human-coordinator.d.ts +49 -0
- package/dist/src/v2/waiting-human-coordinator.d.ts.map +1 -0
- package/dist/src/v2/waiting-human-coordinator.js +509 -0
- package/dist/src/v2/waiting-human-coordinator.js.map +1 -0
- package/dist/src/v2/waiting-human.d.ts +143 -0
- package/dist/src/v2/waiting-human.d.ts.map +1 -0
- package/dist/src/v2/waiting-human.js +408 -0
- package/dist/src/v2/waiting-human.js.map +1 -0
- package/dist/src/v2/workflow-assets.d.ts +90 -0
- package/dist/src/v2/workflow-assets.d.ts.map +1 -0
- package/dist/src/v2/workflow-assets.js +554 -0
- package/dist/src/v2/workflow-assets.js.map +1 -0
- package/docs/deep-dive.md +15 -8
- package/internal-workflow/docs/agents/artifact-review-loop.md +267 -0
- package/internal-workflow/docs/agents/bug-workflow-routing.md +24 -0
- package/internal-workflow/docs/agents/coding-skill-routing.md +203 -0
- package/internal-workflow/docs/agents/confidence-rubric.md +65 -0
- package/internal-workflow/docs/agents/contract-test-ledger.md +60 -0
- package/internal-workflow/docs/agents/implementation-review-loop.md +302 -0
- package/internal-workflow/docs/agents/review-gates.md +49 -0
- package/internal-workflow/docs/agents/review-protocol.md +170 -0
- package/internal-workflow/docs/agents/tool-usage.md +88 -0
- package/internal-workflow/manifest.json +1 -0
- package/internal-workflow/operations/acceptance-proof/SKILL.md +3 -0
- package/internal-workflow/operations/ambiguity-review/SKILL.md +3 -0
- package/internal-workflow/operations/cleanup-review/SKILL.md +3 -0
- package/internal-workflow/operations/code-review/SKILL.md +3 -0
- package/internal-workflow/operations/implementation/SKILL.md +3 -0
- package/internal-workflow/operations/spec-author/SKILL.md +3 -0
- package/internal-workflow/operations/spec-implementation/SKILL.md +3 -0
- package/internal-workflow/operations/spec-review/SKILL.md +3 -0
- package/internal-workflow/operations/triage/SKILL.md +3 -0
- package/internal-workflow/profiles/analyst_deep.toml +9 -0
- package/internal-workflow/profiles/implementer_deep.toml +9 -0
- package/internal-workflow/profiles/implementer_standard.toml +9 -0
- package/internal-workflow/profiles/proof_agent.toml +8 -0
- package/internal-workflow/profiles/researcher_standard.toml +9 -0
- package/internal-workflow/profiles/reviewer_deep.toml +9 -0
- package/internal-workflow/profiles/reviewer_fast.toml +9 -0
- package/internal-workflow/profiles/reviewer_standard.toml +9 -0
- package/internal-workflow/schemas/ambiguity-review-v1.json +1 -0
- package/internal-workflow/schemas/code-review-v1.json +1 -0
- package/internal-workflow/schemas/implementation-report-v1.json +1 -0
- package/internal-workflow/schemas/proof-report-v1.json +1 -0
- package/internal-workflow/schemas/spec-author-v1.json +1 -0
- package/internal-workflow/schemas/spec-review-v1.json +30 -0
- package/internal-workflow/schemas/triage-route-v1.json +1 -0
- package/internal-workflow/skills/acceptance-proof/agents/openai.yaml +6 -0
- package/internal-workflow/skills/agent-auto/agents/openai.yaml +6 -0
- package/internal-workflow/skills/cleanup-review/SKILL.md +84 -0
- package/internal-workflow/skills/cleanup-review/agents/openai.yaml +6 -0
- package/internal-workflow/skills/code-review/SKILL.md +257 -0
- package/internal-workflow/skills/code-review/agents/openai.yaml +4 -0
- package/internal-workflow/skills/code-review/references/bug-classes.md +56 -0
- package/internal-workflow/skills/code-review/references/framework-lenses.md +34 -0
- package/internal-workflow/skills/code-review/references/targeted-recipes.md +49 -0
- package/internal-workflow/skills/codebase-design/DEEPENING.md +35 -0
- package/internal-workflow/skills/codebase-design/DESIGN-IT-TWICE.md +50 -0
- package/internal-workflow/skills/codebase-design/SKILL.md +82 -0
- package/internal-workflow/skills/codebase-design/agents/openai.yaml +6 -0
- package/internal-workflow/skills/diagnosing-bugs/SKILL.md +138 -0
- package/internal-workflow/skills/diagnosing-bugs/agents/openai.yaml +6 -0
- package/internal-workflow/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/internal-workflow/skills/implementation-spec-maker/SKILL.md +93 -0
- package/internal-workflow/skills/implementation-spec-maker/agents/openai.yaml +6 -0
- package/internal-workflow/skills/implementation-spec-maker/references/source-modes.md +31 -0
- package/internal-workflow/skills/implementation-spec-maker/references/spec-template.md +146 -0
- package/internal-workflow/skills/implementation-spec-review/SKILL.md +211 -0
- package/internal-workflow/skills/implementation-spec-review/agents/openai.yaml +6 -0
- package/internal-workflow/skills/research/SKILL.md +107 -0
- package/internal-workflow/skills/research/agents/openai.yaml +6 -0
- package/internal-workflow/skills/small-task-implementer/SKILL.md +97 -0
- package/internal-workflow/skills/small-task-implementer/agents/openai.yaml +6 -0
- package/internal-workflow/skills/spec-implementer/SKILL.md +197 -0
- package/internal-workflow/skills/spec-implementer/agents/openai.yaml +6 -0
- package/internal-workflow/skills/tdd/SKILL.md +59 -0
- package/internal-workflow/skills/tdd/agents/openai.yaml +6 -0
- package/internal-workflow/skills/tdd/interface-design.md +31 -0
- package/internal-workflow/skills/tdd/mocking.md +59 -0
- package/internal-workflow/skills/tdd/refactoring.md +10 -0
- package/internal-workflow/skills/tdd/tests.md +77 -0
- package/internal-workflow/skills/triage/AGENT-BRIEF.md +192 -0
- package/internal-workflow/skills/triage/OUT-OF-SCOPE.md +101 -0
- package/internal-workflow/skills/triage/SKILL.md +134 -0
- package/internal-workflow/skills/triage/agents/openai.yaml +6 -0
- package/internal-workflow/skills/ui-evidence-proof/SKILL.md +123 -0
- package/internal-workflow/skills/ui-evidence-proof/agents/openai.yaml +6 -0
- package/package.json +6 -3
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/SKILL.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/android.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/browser.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/references/ios.md +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/android-lease.mjs +0 -0
- /package/{internal-skills → internal-workflow/skills}/acceptance-proof/tools/ios-lease.mjs +0 -0
- /package/{internal-skills → internal-workflow/skills}/agent-auto/SKILL.md +0 -0
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import { canonicalJson, sha256 } from './containment.js';
|
|
2
|
+
import { validateTriageRoute } from './triage-route.js';
|
|
3
|
+
const SHA256_PATTERN = /^[0-9a-f]{64}$/;
|
|
4
|
+
const MAX_STRING_LENGTH = 16 * 1024;
|
|
5
|
+
const MAX_ARRAY_LENGTH = 256;
|
|
6
|
+
const TRIAGE_ARTIFACT_DOMAIN = 'codex-orchestrator-triage-artifact-v1';
|
|
7
|
+
const AMBIGUITY_REVIEW_DOMAIN = 'codex-orchestrator-ambiguity-review-v1';
|
|
8
|
+
const ROUTE_DECISION_DOMAIN = 'codex-orchestrator-route-decision-v1';
|
|
9
|
+
export function hashTriageArtifact(value) {
|
|
10
|
+
return hashDomain(TRIAGE_ARTIFACT_DOMAIN, validateTriageRoute(value));
|
|
11
|
+
}
|
|
12
|
+
export function hashAmbiguityReviewArtifact(value) {
|
|
13
|
+
return hashDomain(AMBIGUITY_REVIEW_DOMAIN, validateAmbiguityReviewArtifact(value));
|
|
14
|
+
}
|
|
15
|
+
export function hashRouteDecision(value) {
|
|
16
|
+
const receipt = validateRouteReceiptCore(value, undefined, false);
|
|
17
|
+
return hashDomain(ROUTE_DECISION_DOMAIN, { ...receipt, decisionSha256: '' });
|
|
18
|
+
}
|
|
19
|
+
export function validateAmbiguityReviewArtifact(value) {
|
|
20
|
+
assertExactObject(value, [
|
|
21
|
+
'version', 'candidateSha256', 'verdict', 'evidenceReviewed', 'findings', 'recommendation',
|
|
22
|
+
], 'ambiguity review artifact');
|
|
23
|
+
if (value.version !== 1)
|
|
24
|
+
throw new Error('ambiguity review artifact.version must be 1');
|
|
25
|
+
assertSha256(value.candidateSha256, 'ambiguity review artifact.candidateSha256');
|
|
26
|
+
if (!['approved', 'rejected', 'blocked'].includes(value.verdict)) {
|
|
27
|
+
throw new Error('ambiguity review artifact.verdict is invalid');
|
|
28
|
+
}
|
|
29
|
+
assertStringArray(value.evidenceReviewed, 'ambiguity review artifact.evidenceReviewed', 0);
|
|
30
|
+
assertUnique(value.evidenceReviewed, 'ambiguity review artifact.evidenceReviewed');
|
|
31
|
+
assertStringArray(value.findings, 'ambiguity review artifact.findings', 0);
|
|
32
|
+
assertUnique(value.findings, 'ambiguity review artifact.findings');
|
|
33
|
+
assertString(value.recommendation, 'ambiguity review artifact.recommendation');
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
export function validateRouteArtifactRef(value, expectedGenerationHash) {
|
|
37
|
+
assertExactObject(value, ['operation', 'attemptId', 'artifactSha256', 'generationHash'], 'route triage ref');
|
|
38
|
+
if (value.operation !== 'triage')
|
|
39
|
+
throw new Error('route triage ref.operation must be triage');
|
|
40
|
+
assertString(value.attemptId, 'route triage ref.attemptId');
|
|
41
|
+
assertSha256(value.artifactSha256, 'route triage ref.artifactSha256');
|
|
42
|
+
assertGeneration(value.generationHash, expectedGenerationHash, 'route triage ref.generationHash');
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
export function validateAmbiguityReviewRef(value, expectedGenerationHash) {
|
|
46
|
+
assertExactObject(value, [
|
|
47
|
+
'operation', 'attemptId', 'candidateSha256', 'artifactSha256', 'verdict', 'generationHash',
|
|
48
|
+
], 'ambiguity review ref');
|
|
49
|
+
if (value.operation !== 'ambiguity-review')
|
|
50
|
+
throw new Error('ambiguity review ref.operation must be ambiguity-review');
|
|
51
|
+
assertString(value.attemptId, 'ambiguity review ref.attemptId');
|
|
52
|
+
assertSha256(value.candidateSha256, 'ambiguity review ref.candidateSha256');
|
|
53
|
+
assertSha256(value.artifactSha256, 'ambiguity review ref.artifactSha256');
|
|
54
|
+
if (value.verdict !== 'approved' && value.verdict !== 'rejected')
|
|
55
|
+
throw new Error('ambiguity review ref.verdict is invalid');
|
|
56
|
+
assertGeneration(value.generationHash, expectedGenerationHash, 'ambiguity review ref.generationHash');
|
|
57
|
+
return value;
|
|
58
|
+
}
|
|
59
|
+
export function validateRouteReceipt(value, expectedGenerationHash) {
|
|
60
|
+
return validateRouteReceiptCore(value, expectedGenerationHash, true);
|
|
61
|
+
}
|
|
62
|
+
function validateRouteReceiptCore(value, expectedGenerationHash, verifyDecisionHash) {
|
|
63
|
+
assertExactObject(value, [
|
|
64
|
+
'version', 'route', 'triage', 'review', 'artifact', 'decisionSha256', 'decidedAt', 'assumptions',
|
|
65
|
+
], 'route receipt');
|
|
66
|
+
if (value.version !== 1)
|
|
67
|
+
throw new Error('route receipt.version must be 1');
|
|
68
|
+
if (!['direct', 'spec-required', 'awaiting-user'].includes(value.route)) {
|
|
69
|
+
throw new Error('route receipt.route is invalid');
|
|
70
|
+
}
|
|
71
|
+
const triage = validateRouteArtifactRef(value.triage, expectedGenerationHash);
|
|
72
|
+
const artifact = validateTriageRoute(value.artifact);
|
|
73
|
+
if (artifact.status === 'blocked' || artifact.status !== value.route) {
|
|
74
|
+
throw new Error('route receipt.route does not match artifact status');
|
|
75
|
+
}
|
|
76
|
+
const artifactSha256 = hashTriageArtifact(artifact);
|
|
77
|
+
if (triage.artifactSha256 !== artifactSha256)
|
|
78
|
+
throw new Error('route receipt artifact hash mismatch');
|
|
79
|
+
let review;
|
|
80
|
+
if (value.review === null) {
|
|
81
|
+
review = null;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
review = validateAmbiguityReviewRef(value.review, expectedGenerationHash ?? triage.generationHash);
|
|
85
|
+
if (review.generationHash !== triage.generationHash)
|
|
86
|
+
throw new Error('route receipt review generation mismatch');
|
|
87
|
+
}
|
|
88
|
+
if (value.route === 'awaiting-user') {
|
|
89
|
+
if (review === null || review.verdict !== 'approved')
|
|
90
|
+
throw new Error('awaiting-user route requires an approved review');
|
|
91
|
+
if (review.candidateSha256 !== triage.artifactSha256)
|
|
92
|
+
throw new Error('awaiting-user review candidate hash mismatch');
|
|
93
|
+
if (review.attemptId === triage.attemptId)
|
|
94
|
+
throw new Error('triage and ambiguity review attempt IDs must be distinct');
|
|
95
|
+
}
|
|
96
|
+
else if (review !== null) {
|
|
97
|
+
throw new Error(`${String(value.route)} route requires review null`);
|
|
98
|
+
}
|
|
99
|
+
if (verifyDecisionHash || value.decisionSha256 !== '') {
|
|
100
|
+
assertSha256(value.decisionSha256, 'route receipt.decisionSha256');
|
|
101
|
+
}
|
|
102
|
+
assertTimestamp(value.decidedAt, 'route receipt.decidedAt');
|
|
103
|
+
assertStringArray(value.assumptions, 'route receipt.assumptions', 0);
|
|
104
|
+
assertUnique(value.assumptions, 'route receipt.assumptions');
|
|
105
|
+
if (canonicalJson(value.assumptions) !== canonicalJson(artifact.assumptions)) {
|
|
106
|
+
throw new Error('route receipt assumptions must equal artifact assumptions');
|
|
107
|
+
}
|
|
108
|
+
const receipt = value;
|
|
109
|
+
const expectedDecisionSha256 = hashDomain(ROUTE_DECISION_DOMAIN, { ...receipt, decisionSha256: '' });
|
|
110
|
+
if (verifyDecisionHash && value.decisionSha256 !== expectedDecisionSha256) {
|
|
111
|
+
throw new Error('route receipt decision hash mismatch');
|
|
112
|
+
}
|
|
113
|
+
return receipt;
|
|
114
|
+
}
|
|
115
|
+
export function validateRouteExecution(value, expectedGenerationHash) {
|
|
116
|
+
assertRecord(value, 'route execution');
|
|
117
|
+
validateBudgets(value);
|
|
118
|
+
const budgetKeys = [
|
|
119
|
+
'version', 'triageRepairs', 'triageTransportRetries', 'ambiguityTransportRetries', 'candidateReviews',
|
|
120
|
+
];
|
|
121
|
+
if (value.phase === 'triage-ready') {
|
|
122
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'previousAttemptId'], 'route execution');
|
|
123
|
+
if (value.previousAttemptId !== null)
|
|
124
|
+
assertString(value.previousAttemptId, 'route execution.previousAttemptId');
|
|
125
|
+
}
|
|
126
|
+
else if (value.phase === 'triage-in-flight') {
|
|
127
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'attemptId', 'startedAt'], 'route execution');
|
|
128
|
+
assertAttemptAndTimestamp(value);
|
|
129
|
+
}
|
|
130
|
+
else if (value.phase === 'candidate-ready') {
|
|
131
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'candidate', 'triage'], 'route execution');
|
|
132
|
+
validateWaitingCandidate(value.candidate, value.triage, expectedGenerationHash);
|
|
133
|
+
if (value.candidateReviews !== 0)
|
|
134
|
+
throw new Error('candidate-ready candidateReviews must be 0');
|
|
135
|
+
}
|
|
136
|
+
else if (value.phase === 'review-in-flight') {
|
|
137
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'attemptId', 'startedAt', 'candidate', 'triage'], 'route execution');
|
|
138
|
+
assertAttemptAndTimestamp(value);
|
|
139
|
+
const triage = validateWaitingCandidate(value.candidate, value.triage, expectedGenerationHash);
|
|
140
|
+
if (value.attemptId === triage.attemptId)
|
|
141
|
+
throw new Error('review attempt ID must be distinct from triage attempt ID');
|
|
142
|
+
if (value.candidateReviews !== 0)
|
|
143
|
+
throw new Error('review-in-flight candidateReviews must be 0');
|
|
144
|
+
}
|
|
145
|
+
else if (value.phase === 'malformed-repair-ready') {
|
|
146
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'findings'], 'route execution');
|
|
147
|
+
validateFindings(value.findings, 'route execution.findings');
|
|
148
|
+
assertRepairConsumed(value);
|
|
149
|
+
}
|
|
150
|
+
else if (value.phase === 'candidate-repair-ready') {
|
|
151
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'candidate', 'triage', 'review', 'findings'], 'route execution');
|
|
152
|
+
validateRejectedCandidate(value.candidate, value.triage, value.review, value.findings, expectedGenerationHash);
|
|
153
|
+
assertRejectedRepairBudgets(value);
|
|
154
|
+
}
|
|
155
|
+
else if (value.phase === 'repair-in-flight') {
|
|
156
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'attemptId', 'startedAt', 'repairInput'], 'route execution');
|
|
157
|
+
assertAttemptAndTimestamp(value);
|
|
158
|
+
validateRepairInput(value.repairInput, expectedGenerationHash);
|
|
159
|
+
assertRepairConsumed(value);
|
|
160
|
+
if (value.repairInput.kind === 'rejected-candidate') {
|
|
161
|
+
if (value.candidateReviews !== 1)
|
|
162
|
+
throw new Error('rejected-candidate repair requires candidateReviews 1');
|
|
163
|
+
}
|
|
164
|
+
else if (value.candidateReviews !== 0) {
|
|
165
|
+
throw new Error('malformed repair requires candidateReviews 0');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else if (value.phase === 'route-complete') {
|
|
169
|
+
assertExactObject(value, [...budgetKeys, 'phase', 'triage', 'review'], 'route execution');
|
|
170
|
+
const triage = validateRouteArtifactRef(value.triage, expectedGenerationHash);
|
|
171
|
+
if (value.review !== null) {
|
|
172
|
+
const review = validateAmbiguityReviewRef(value.review, expectedGenerationHash ?? triage.generationHash);
|
|
173
|
+
validateReviewBinding(triage, review);
|
|
174
|
+
if (review.verdict !== 'approved')
|
|
175
|
+
throw new Error('route-complete review must be approved');
|
|
176
|
+
if (value.candidateReviews !== 1)
|
|
177
|
+
throw new Error('reviewed route-complete requires candidateReviews 1');
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
throw new Error('route execution.phase is invalid');
|
|
182
|
+
}
|
|
183
|
+
return value;
|
|
184
|
+
}
|
|
185
|
+
export function validateRouteStateInvariant(input) {
|
|
186
|
+
assertSha256(input.generationHash, 'route state.generationHash');
|
|
187
|
+
if (!ROUTE_LIFECYCLES.includes(input.lifecycle))
|
|
188
|
+
throw new Error('route state lifecycle is invalid');
|
|
189
|
+
const hasExecution = input.routeExecution !== undefined;
|
|
190
|
+
const hasReceipt = input.routeReceipt !== undefined;
|
|
191
|
+
if (input.lifecycle === 'claimed') {
|
|
192
|
+
if (hasExecution || hasReceipt)
|
|
193
|
+
throw new Error('claimed route state requires routeExecution and routeReceipt absent');
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (input.lifecycle === 'triaging') {
|
|
197
|
+
if (!hasExecution || hasReceipt)
|
|
198
|
+
throw new Error('triaging route state requires routeExecution and routeReceipt absent');
|
|
199
|
+
const execution = validateRouteExecution(input.routeExecution, input.generationHash);
|
|
200
|
+
if (execution.phase === 'route-complete')
|
|
201
|
+
throw new Error('triaging route execution cannot be route-complete');
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (input.lifecycle === 'safe-halt' && hasExecution && !hasReceipt) {
|
|
205
|
+
const execution = validateRouteExecution(input.routeExecution, input.generationHash);
|
|
206
|
+
if (!['triage-in-flight', 'repair-in-flight', 'review-in-flight'].includes(execution.phase)) {
|
|
207
|
+
throw new Error('pre-route safe-halt requires an in-flight route execution');
|
|
208
|
+
}
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (TERMINAL_LIFECYCLES.includes(input.lifecycle) && !hasExecution && !hasReceipt)
|
|
212
|
+
return;
|
|
213
|
+
if (!hasExecution || !hasReceipt)
|
|
214
|
+
throw new Error(`${input.lifecycle} route execution and receipt are required as an exact pair`);
|
|
215
|
+
const execution = validateRouteExecution(input.routeExecution, input.generationHash);
|
|
216
|
+
if (execution.phase !== 'route-complete')
|
|
217
|
+
throw new Error(`${input.lifecycle} route execution must be route-complete`);
|
|
218
|
+
const receipt = validateRouteReceipt(input.routeReceipt, input.generationHash);
|
|
219
|
+
if (canonicalJson(execution.triage) !== canonicalJson(receipt.triage)
|
|
220
|
+
|| canonicalJson(execution.review) !== canonicalJson(receipt.review)) {
|
|
221
|
+
throw new Error('route-complete refs must equal route receipt refs');
|
|
222
|
+
}
|
|
223
|
+
if (input.lifecycle === 'implementing' && receipt.route !== 'direct') {
|
|
224
|
+
throw new Error('implementing lifecycle requires direct route');
|
|
225
|
+
}
|
|
226
|
+
if (input.lifecycle === 'spec-authoring' && receipt.route !== 'spec-required') {
|
|
227
|
+
throw new Error('direct route dispatch requires implementing lifecycle');
|
|
228
|
+
}
|
|
229
|
+
if (input.lifecycle === 'waiting-human' && receipt.route !== 'awaiting-user') {
|
|
230
|
+
throw new Error('waiting-human lifecycle requires awaiting-user route');
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
export function downstreamLifecycleForRoute(receiptValue, expectedGenerationHash) {
|
|
234
|
+
const receipt = validateRouteReceipt(receiptValue, expectedGenerationHash);
|
|
235
|
+
if (receipt.route === 'direct')
|
|
236
|
+
return 'implementing';
|
|
237
|
+
if (receipt.route === 'spec-required')
|
|
238
|
+
return 'spec-authoring';
|
|
239
|
+
return 'waiting-human';
|
|
240
|
+
}
|
|
241
|
+
export function validateRouteTransition(previous, next) {
|
|
242
|
+
validateRouteStateInvariant(previous);
|
|
243
|
+
validateRouteStateInvariant(next);
|
|
244
|
+
if (previous.generationHash !== next.generationHash)
|
|
245
|
+
throw new Error('route transition generation is immutable');
|
|
246
|
+
if (previous.routeReceipt !== undefined) {
|
|
247
|
+
if (next.routeReceipt === undefined
|
|
248
|
+
|| canonicalJson(previous.routeReceipt) !== canonicalJson(next.routeReceipt)) {
|
|
249
|
+
throw new Error('route receipt is immutable after routing');
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (previous.lifecycle === 'routed' && next.lifecycle !== 'routed') {
|
|
253
|
+
const expected = downstreamLifecycleForRoute(previous.routeReceipt, previous.generationHash);
|
|
254
|
+
if (next.lifecycle !== expected)
|
|
255
|
+
throw new Error(`routed ${String(previous.routeReceipt.route)} must dispatch to ${expected}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
export function validateTrustedAnswerResumeTransition(previous, next, waitingHuman) {
|
|
259
|
+
validateRouteStateInvariant(previous);
|
|
260
|
+
validateRouteStateInvariant(next);
|
|
261
|
+
if (previous.lifecycle !== 'waiting-human' || previous.routeReceipt.route !== 'awaiting-user') {
|
|
262
|
+
throw new Error('trusted answer resume requires waiting-human awaiting-user authority');
|
|
263
|
+
}
|
|
264
|
+
if (waitingHuman.phase !== 'resume-ready')
|
|
265
|
+
throw new Error('trusted answer resume requires resume-ready evidence');
|
|
266
|
+
if (next.lifecycle !== 'triaging' || next.routeReceipt !== undefined)
|
|
267
|
+
throw new Error('trusted answer resume must restart triage without a receipt');
|
|
268
|
+
const execution = validateRouteExecution(next.routeExecution, next.generationHash);
|
|
269
|
+
if (execution.phase !== 'triage-ready' || execution.previousAttemptId !== null
|
|
270
|
+
|| execution.triageRepairs !== 0 || execution.triageTransportRetries !== 0
|
|
271
|
+
|| execution.ambiguityTransportRetries !== 0 || execution.candidateReviews !== 0) {
|
|
272
|
+
throw new Error('trusted answer resume requires initial route execution');
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const ROUTE_LIFECYCLES = [
|
|
276
|
+
'claimed', 'triaging', 'routed', 'implementing', 'waiting-human', 'spec-authoring', 'reworking', 'checking',
|
|
277
|
+
'proving', 'publishing', 'safe-halt', 'review-ready', 'blocked', 'transport-failed', 'cancelled', 'internal-error',
|
|
278
|
+
];
|
|
279
|
+
const TERMINAL_LIFECYCLES = [
|
|
280
|
+
'review-ready', 'blocked', 'transport-failed', 'cancelled', 'internal-error',
|
|
281
|
+
];
|
|
282
|
+
function validateBudgets(value) {
|
|
283
|
+
if (value.version !== 1)
|
|
284
|
+
throw new Error('route execution.version must be 1');
|
|
285
|
+
for (const key of [
|
|
286
|
+
'triageRepairs', 'triageTransportRetries', 'ambiguityTransportRetries', 'candidateReviews',
|
|
287
|
+
]) {
|
|
288
|
+
if (value[key] !== 0 && value[key] !== 1)
|
|
289
|
+
throw new Error(`route execution.${key} must be 0 or 1`);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
function validateWaitingCandidate(candidateValue, triageValue, expectedGenerationHash) {
|
|
293
|
+
const candidate = validateTriageRoute(candidateValue);
|
|
294
|
+
if (candidate.status !== 'awaiting-user')
|
|
295
|
+
throw new Error('route execution candidate must be awaiting-user');
|
|
296
|
+
const triage = validateRouteArtifactRef(triageValue, expectedGenerationHash);
|
|
297
|
+
if (triage.artifactSha256 !== hashTriageArtifact(candidate))
|
|
298
|
+
throw new Error('route execution candidate artifact hash mismatch');
|
|
299
|
+
return triage;
|
|
300
|
+
}
|
|
301
|
+
function validateRejectedCandidate(candidate, triageValue, reviewValue, findings, expectedGenerationHash) {
|
|
302
|
+
const triage = validateWaitingCandidate(candidate, triageValue, expectedGenerationHash);
|
|
303
|
+
const review = validateAmbiguityReviewRef(reviewValue, expectedGenerationHash ?? triage.generationHash);
|
|
304
|
+
validateReviewBinding(triage, review);
|
|
305
|
+
if (review.verdict !== 'rejected')
|
|
306
|
+
throw new Error('candidate repair review must be rejected');
|
|
307
|
+
validateFindings(findings, 'route execution findings');
|
|
308
|
+
}
|
|
309
|
+
function validateRepairInput(value, expectedGenerationHash) {
|
|
310
|
+
assertRecord(value, 'route execution.repairInput');
|
|
311
|
+
if (value.kind === 'malformed') {
|
|
312
|
+
assertExactObject(value, ['kind', 'findings'], 'route execution.repairInput');
|
|
313
|
+
validateFindings(value.findings, 'route execution.repairInput.findings');
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
if (value.kind === 'rejected-candidate') {
|
|
317
|
+
assertExactObject(value, ['kind', 'candidate', 'triage', 'review', 'findings'], 'route execution.repairInput');
|
|
318
|
+
validateRejectedCandidate(value.candidate, value.triage, value.review, value.findings, expectedGenerationHash);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
throw new Error('route execution.repairInput.kind is invalid');
|
|
322
|
+
}
|
|
323
|
+
function validateReviewBinding(triage, review) {
|
|
324
|
+
if (review.generationHash !== triage.generationHash)
|
|
325
|
+
throw new Error('ambiguity review generation mismatch');
|
|
326
|
+
if (review.candidateSha256 !== triage.artifactSha256)
|
|
327
|
+
throw new Error('ambiguity review candidate hash mismatch');
|
|
328
|
+
if (review.attemptId === triage.attemptId)
|
|
329
|
+
throw new Error('ambiguity review attempt must be distinct from triage attempt');
|
|
330
|
+
}
|
|
331
|
+
function assertRepairConsumed(value) {
|
|
332
|
+
if (value.triageRepairs !== 1)
|
|
333
|
+
throw new Error('repair phase requires triageRepairs 1');
|
|
334
|
+
}
|
|
335
|
+
function assertRejectedRepairBudgets(value) {
|
|
336
|
+
assertRepairConsumed(value);
|
|
337
|
+
if (value.candidateReviews !== 1)
|
|
338
|
+
throw new Error('rejected candidate requires candidateReviews 1');
|
|
339
|
+
}
|
|
340
|
+
function validateFindings(value, field) {
|
|
341
|
+
assertStringArray(value, field, 1);
|
|
342
|
+
assertUnique(value, field);
|
|
343
|
+
}
|
|
344
|
+
function assertAttemptAndTimestamp(value) {
|
|
345
|
+
assertString(value.attemptId, 'route execution.attemptId');
|
|
346
|
+
assertTimestamp(value.startedAt, 'route execution.startedAt');
|
|
347
|
+
}
|
|
348
|
+
function hashDomain(domain, value) {
|
|
349
|
+
return sha256(Buffer.concat([
|
|
350
|
+
Buffer.from(domain, 'ascii'),
|
|
351
|
+
Buffer.from([0]),
|
|
352
|
+
Buffer.from(canonicalJson(value), 'utf8'),
|
|
353
|
+
]));
|
|
354
|
+
}
|
|
355
|
+
function assertGeneration(value, expected, field) {
|
|
356
|
+
assertSha256(value, field);
|
|
357
|
+
if (expected !== undefined) {
|
|
358
|
+
assertSha256(expected, 'expected generation hash');
|
|
359
|
+
if (value !== expected)
|
|
360
|
+
throw new Error(`${field} generation mismatch`);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function assertTimestamp(value, field) {
|
|
364
|
+
if (typeof value !== 'string' || Number.isNaN(Date.parse(value)) || new Date(value).toISOString() !== value) {
|
|
365
|
+
throw new Error(`${field} must be an ISO timestamp`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
function assertSha256(value, field) {
|
|
369
|
+
if (typeof value !== 'string' || !SHA256_PATTERN.test(value))
|
|
370
|
+
throw new Error(`${field} must be lowercase SHA-256`);
|
|
371
|
+
}
|
|
372
|
+
function assertStringArray(value, field, minItems) {
|
|
373
|
+
if (!Array.isArray(value) || value.length < minItems || value.length > MAX_ARRAY_LENGTH) {
|
|
374
|
+
throw new Error(`${field} has invalid cardinality`);
|
|
375
|
+
}
|
|
376
|
+
for (const item of value)
|
|
377
|
+
assertString(item, `${field} entry`);
|
|
378
|
+
}
|
|
379
|
+
function assertUnique(values, field) {
|
|
380
|
+
if (new Set(values).size !== values.length)
|
|
381
|
+
throw new Error(`${field} must be unique`);
|
|
382
|
+
}
|
|
383
|
+
function assertString(value, field) {
|
|
384
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > MAX_STRING_LENGTH) {
|
|
385
|
+
throw new Error(`${field} must be a bounded non-empty string`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
function assertRecord(value, field) {
|
|
389
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
390
|
+
throw new Error(`${field} must be an object`);
|
|
391
|
+
}
|
|
392
|
+
function assertExactObject(value, keys, field) {
|
|
393
|
+
assertRecord(value, field);
|
|
394
|
+
const actual = Object.keys(value).sort();
|
|
395
|
+
const expected = [...keys].sort();
|
|
396
|
+
if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
|
|
397
|
+
throw new Error(`${field} has unknown or missing keys`);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
//# sourceMappingURL=route-decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-decision.js","sourceRoot":"","sources":["../../../src/v2/route-decision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,mBAAmB,CAAC;AAG5E,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AACpC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,sBAAsB,GAAG,uCAAuC,CAAC;AACvE,MAAM,uBAAuB,GAAG,wCAAwC,CAAC;AACzE,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AAyFrE,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,UAAU,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,OAAO,UAAU,CAAC,uBAAuB,EAAE,+BAA+B,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAc;IAC5D,iBAAiB,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB;KAC1F,EAAE,2BAA2B,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACxF,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;IACjF,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAiB,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,EAAE,4CAA4C,EAAE,CAAC,CAAC,CAAC;IAC3F,YAAY,CAAC,KAAK,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAC;IACnF,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,oCAAoC,EAAE,CAAC,CAAC,CAAC;IAC3E,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;IACnE,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,0CAA0C,CAAC,CAAC;IAC/E,OAAO,KAA6C,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc,EAAE,sBAA+B;IACtF,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC7G,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/F,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;IAC5D,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IACtE,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,EAAE,iCAAiC,CAAC,CAAC;IAClG,OAAO,KAAsC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc,EAAE,sBAA+B;IACxF,iBAAiB,CAAC,KAAK,EAAE;QACvB,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB;KAC3F,EAAE,sBAAsB,CAAC,CAAC;IAC3B,IAAI,KAAK,CAAC,SAAS,KAAK,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACvH,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC;IAChE,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,sCAAsC,CAAC,CAAC;IAC5E,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,qCAAqC,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7H,gBAAgB,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,EAAE,qCAAqC,CAAC,CAAC;IACtG,OAAO,KAAwC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc,EAAE,sBAA+B;IAClF,OAAO,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc,EACd,sBAA0C,EAC1C,kBAA2B;IAE3B,iBAAiB,CAAC,KAAK,EAAE;QACvB,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa;KACjG,EAAE,eAAe,CAAC,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC5E,IAAI,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAEtG,IAAI,MAAmC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;QACnG,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACnH,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;QACpC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACzH,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACtH,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACzH,CAAC;SAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,kBAAkB,IAAI,KAAK,CAAC,cAAc,KAAK,EAAE,EAAE,CAAC;QACtD,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IACrE,CAAC;IACD,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACrE,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,OAAO,GAAG,KAAkC,CAAC;IACnD,MAAM,sBAAsB,GAAG,UAAU,CAAC,qBAAqB,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;IACrG,IAAI,kBAAkB,IAAI,KAAK,CAAC,cAAc,KAAK,sBAAsB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,sBAA+B;IACpF,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACvC,eAAe,CAAC,KAAK,CAAC,CAAC;IACvB,MAAM,UAAU,GAAG;QACjB,SAAS,EAAE,eAAe,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,kBAAkB;KACtG,CAAC;IACF,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;QACnC,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC3F,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI;YAAE,YAAY,CAAC,KAAK,CAAC,iBAAiB,EAAE,mCAAmC,CAAC,CAAC;IACnH,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;QAC9C,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAChG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAC7C,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC7F,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAChF,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAClG,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;QAC9C,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACvH,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC/F,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACvH,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnG,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;QACpD,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAClF,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;QAC7D,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,wBAAwB,EAAE,CAAC;QACpD,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACnH,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC/G,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,kBAAkB,EAAE,CAAC;QAC9C,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC/G,yBAAyB,CAAC,KAAK,CAAC,CAAC;QACjC,mBAAmB,CAAC,KAAK,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAC/D,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAK,KAAK,CAAC,WAAuC,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACjF,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC7G,CAAC;aAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;QAC5C,iBAAiB,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC9E,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,EAAE,sBAAsB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;YACzG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC7F,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAoC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAK3C;IACC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;IACjE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrG,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC;IACxD,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC;IACpD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,YAAY,IAAI,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACvH,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,IAAI,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACzH,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,KAAK,KAAK,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC/G,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,WAAW,IAAI,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;QACnE,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QACrF,IAAI,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;QAAE,OAAO;IAC1F,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,4DAA4D,CAAC,CAAC;IAClI,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACrF,IAAI,SAAS,CAAC,KAAK,KAAK,gBAAgB;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,yCAAyC,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC/E,IAAI,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;WAChE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,cAAc,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,gBAAgB,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,YAAqB,EACrB,sBAA+B;IAE/B,MAAM,OAAO,GAAG,oBAAoB,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,cAAc,CAAC;IACtD,IAAI,OAAO,CAAC,KAAK,KAAK,eAAe;QAAE,OAAO,gBAAgB,CAAC;IAC/D,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,QAKC,EACD,IAKC;IAED,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtC,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,QAAQ,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACjH,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;eAC9B,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC7F,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAE,QAAQ,CAAC,YAA+B,CAAC,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IACrJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,QAA+G,EAC/G,IAA2G,EAC3G,YAAqC;IAErC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtC,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,QAAQ,CAAC,SAAS,KAAK,eAAe,IAAK,QAAQ,CAAC,YAA+B,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;QAClH,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,YAAY,CAAC,KAAK,KAAK,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACnH,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACrJ,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACnF,IAAI,SAAS,CAAC,KAAK,KAAK,cAAc,IAAI,SAAS,CAAC,iBAAiB,KAAK,IAAI;WACzE,SAAS,CAAC,aAAa,KAAK,CAAC,IAAI,SAAS,CAAC,sBAAsB,KAAK,CAAC;WACvE,SAAS,CAAC,yBAAyB,KAAK,CAAC,IAAI,SAAS,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAqB;IACzC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU;IAC3G,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB;CACnH,CAAC;AAEF,MAAM,mBAAmB,GAAqB;IAC5C,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB;CAC7E,CAAC;AAEF,SAAS,eAAe,CAAC,KAA8B;IACrD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI;QAChB,eAAe,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,kBAAkB;KAClF,EAAE,CAAC;QACX,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,cAAuB,EACvB,WAAoB,EACpB,sBAA+B;IAE/B,MAAM,SAAS,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,SAAS,CAAC,MAAM,KAAK,eAAe;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,cAAc,KAAK,kBAAkB,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACjI,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAChC,SAAkB,EAClB,WAAoB,EACpB,WAAoB,EACpB,QAAiB,EACjB,sBAA+B;IAE/B,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,0BAA0B,CAAC,WAAW,EAAE,sBAAsB,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC;IACxG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC/F,gBAAgB,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,sBAA+B;IAC1E,YAAY,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,iBAAiB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAC9E,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,sCAAsC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACxC,iBAAiB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAC/G,yBAAyB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC/G,OAAO;IACT,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,qBAAqB,CAAC,MAA0B,EAAE,MAA4B;IACrF,IAAI,MAAM,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC7G,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAClH,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC9H,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA8B;IAC1D,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA8B;IACjE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,gBAAgB,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAa;IACrD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,yBAAyB,CAAC,KAA8B;IAC/D,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAC3D,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,KAAc;IAChD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,QAA4B,EAAE,KAAa;IACnF,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,YAAY,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,KAAa;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QAC5G,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAC;AACtH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,KAAa,EAAE,QAAgB;IACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,YAAY,CAAC,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB,EAAE,KAAa;IACnD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iBAAiB,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAC;AACzH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,IAAc,EAAE,KAAa;IACtE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
import { type CheckedChange, type CheckedChangeFreshness, type CheckedChangeMintCapability } from './checked-change.js';
|
|
2
2
|
import { type AgentAutoConfigV1 } from './config.js';
|
|
3
|
+
import type { ImplementationReviewerInput, ImplementationReviewerResult } from './implementation-reviewer.js';
|
|
3
4
|
import { type FrozenCriterion, type IssueSnapshot, type ProveChangeResult } from './acceptance-proof.js';
|
|
4
|
-
import type {
|
|
5
|
+
import type { WorkflowGenerationReceipt } from './workflow-assets.js';
|
|
6
|
+
import { type RouteCoordinatorInput, type RouteCoordinatorResult, type RouteCoordinatorState } from './route-coordinator.js';
|
|
7
|
+
import type { RoutedContinuationRegistry } from './route-continuations.js';
|
|
8
|
+
import type { FrozenSpecReceiptV1 } from './spec-delivery.js';
|
|
9
|
+
import type { RunRecordV1, RunRecordWriter, RunStateFileV1 } from './run-store.js';
|
|
5
10
|
export type RunIssueResult = {
|
|
6
11
|
status: 'review-ready';
|
|
7
12
|
pullRequestUrl: string;
|
|
8
13
|
evidencePath: string;
|
|
14
|
+
} | {
|
|
15
|
+
status: 'route-ready';
|
|
16
|
+
route: 'spec-required' | 'awaiting-user';
|
|
17
|
+
evidencePath: string;
|
|
18
|
+
} | {
|
|
19
|
+
status: 'spec-frozen';
|
|
20
|
+
receipt: FrozenSpecReceiptV1;
|
|
21
|
+
evidencePath: string;
|
|
22
|
+
} | {
|
|
23
|
+
status: 'awaiting-user';
|
|
24
|
+
questionId: string;
|
|
25
|
+
answerPrefix: string;
|
|
26
|
+
evidencePath: string;
|
|
9
27
|
} | {
|
|
10
28
|
status: 'not-eligible';
|
|
11
29
|
reason: string;
|
|
@@ -25,6 +43,14 @@ export type RunIssueResult = {
|
|
|
25
43
|
} | {
|
|
26
44
|
status: 'internal-error';
|
|
27
45
|
evidencePath: string;
|
|
46
|
+
} | {
|
|
47
|
+
status: 'migration-required';
|
|
48
|
+
fromVersion: 1;
|
|
49
|
+
requiredAction: string;
|
|
50
|
+
} | {
|
|
51
|
+
status: 'requeued';
|
|
52
|
+
reason: 'owner-contention';
|
|
53
|
+
evidencePath: string;
|
|
28
54
|
};
|
|
29
55
|
export interface RunIssueSnapshot {
|
|
30
56
|
number: number;
|
|
@@ -58,6 +84,7 @@ export interface RunIssueGit {
|
|
|
58
84
|
snapshot(worktreePath: string): Promise<Omit<CheckedChangeFreshness, 'checkPolicySha256'>>;
|
|
59
85
|
fingerprintDeniedPaths(worktreePath: string, deniedPaths: string[]): Promise<string>;
|
|
60
86
|
listChangedFiles(worktreePath: string): Promise<string[]>;
|
|
87
|
+
fingerprintChangedFiles(worktreePath: string, changedFiles: string[]): Promise<string>;
|
|
61
88
|
stageAll(worktreePath: string): Promise<void>;
|
|
62
89
|
getTreeSha(worktreePath: string): Promise<string>;
|
|
63
90
|
getHead(worktreePath: string): Promise<string>;
|
|
@@ -80,6 +107,7 @@ export interface RunIssueGit {
|
|
|
80
107
|
export type ImplementationAgentResult = {
|
|
81
108
|
kind: 'completed';
|
|
82
109
|
report: unknown;
|
|
110
|
+
attemptId?: string;
|
|
83
111
|
} | {
|
|
84
112
|
kind: 'transport-failed';
|
|
85
113
|
resumable: boolean;
|
|
@@ -138,9 +166,20 @@ export interface RunIssueDependencies {
|
|
|
138
166
|
cycle: number;
|
|
139
167
|
reworkFindings: string[];
|
|
140
168
|
repairOnly: boolean;
|
|
169
|
+
workflowGeneration: WorkflowGenerationReceipt;
|
|
141
170
|
signal: AbortSignal;
|
|
142
171
|
}): Promise<ImplementationAgentResult>;
|
|
143
172
|
};
|
|
173
|
+
implementationReviewer: {
|
|
174
|
+
run(input: ImplementationReviewerInput): Promise<ImplementationReviewerResult>;
|
|
175
|
+
};
|
|
176
|
+
waitForReviewProcessAbsence(processGroupId: number): Promise<void>;
|
|
177
|
+
routeCoordinator: {
|
|
178
|
+
run(input: RouteCoordinatorInput & {
|
|
179
|
+
state: RouteCoordinatorState;
|
|
180
|
+
}): Promise<RouteCoordinatorResult>;
|
|
181
|
+
};
|
|
182
|
+
routeContinuations: RoutedContinuationRegistry;
|
|
144
183
|
checks: {
|
|
145
184
|
run(input: {
|
|
146
185
|
id: string;
|
|
@@ -158,6 +197,7 @@ export interface RunIssueDependencies {
|
|
|
158
197
|
issue: IssueSnapshot;
|
|
159
198
|
frozenCriteria: FrozenCriterion[];
|
|
160
199
|
checkedChange: CheckedChange;
|
|
200
|
+
workflowGeneration: WorkflowGenerationReceipt;
|
|
161
201
|
}): Promise<ProveChangeResult>;
|
|
162
202
|
};
|
|
163
203
|
checkedChangeMint: CheckedChangeMintCapability;
|
|
@@ -171,14 +211,25 @@ export interface RunIssueDependencies {
|
|
|
171
211
|
path: string;
|
|
172
212
|
}>;
|
|
173
213
|
packageVersion: string;
|
|
174
|
-
|
|
214
|
+
createWorkflowGeneration(): Promise<{
|
|
215
|
+
receipt: WorkflowGenerationReceipt;
|
|
216
|
+
skillHashes: Record<string, string>;
|
|
217
|
+
}>;
|
|
218
|
+
verifyWorkflowGeneration(receipt: WorkflowGenerationReceipt): Promise<void>;
|
|
175
219
|
createRunId(): string;
|
|
176
220
|
createProofId(): string;
|
|
221
|
+
createReviewSessionId(): string;
|
|
177
222
|
now(): string;
|
|
178
223
|
signal?: AbortSignal;
|
|
179
224
|
}
|
|
180
225
|
export declare class OwnerLockSafetyError extends Error {
|
|
181
226
|
}
|
|
227
|
+
export declare class OwnerLockContentionError extends Error {
|
|
228
|
+
}
|
|
229
|
+
interface ActiveRun {
|
|
230
|
+
state: RunStateFileV1;
|
|
231
|
+
record: RunRecordV1;
|
|
232
|
+
}
|
|
182
233
|
export declare class RunIssue {
|
|
183
234
|
private readonly dependencies;
|
|
184
235
|
private readonly signal;
|
|
@@ -190,6 +241,13 @@ export declare class RunIssue {
|
|
|
190
241
|
targetRoot: string;
|
|
191
242
|
issueNumber: number;
|
|
192
243
|
}): Promise<RunIssueResult>;
|
|
244
|
+
migratePreRouteRun(active: ActiveRun, issue?: RunIssueSnapshot): Promise<ActiveRun>;
|
|
245
|
+
private routeRun;
|
|
246
|
+
private waitingState;
|
|
247
|
+
private specState;
|
|
248
|
+
private continueSpecRequired;
|
|
249
|
+
private continueWaitingHuman;
|
|
250
|
+
private mapWaitingResult;
|
|
193
251
|
private readStrictConfig;
|
|
194
252
|
private ineligibilityReason;
|
|
195
253
|
private createRun;
|
|
@@ -199,6 +257,8 @@ export declare class RunIssue {
|
|
|
199
257
|
private authorized;
|
|
200
258
|
private readIssue;
|
|
201
259
|
private runImplementation;
|
|
260
|
+
private runDirectReviewFull;
|
|
261
|
+
private recoverDirectReviewInvocation;
|
|
202
262
|
private startNextCycle;
|
|
203
263
|
private mapImplementationFailure;
|
|
204
264
|
private mapProofFailure;
|
|
@@ -210,4 +270,5 @@ export declare class RunIssue {
|
|
|
210
270
|
private preClaimTransport;
|
|
211
271
|
private timestamp;
|
|
212
272
|
}
|
|
273
|
+
export {};
|
|
213
274
|
//# sourceMappingURL=run-issue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../../src/v2/run-issue.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"run-issue.d.ts","sourceRoot":"","sources":["../../../src/v2/run-issue.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAEjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgB3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC9G,OAAO,EAAwB,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/H,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAKtE,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAS9D,OAAO,KAAK,EAEV,WAAW,EACX,eAAe,EACf,cAAc,EAEf,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC3F;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC1G;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,WAAW,EAAE,CAAC,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,cAAc,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5I,eAAe,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;IACnI,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC3F,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACrF,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1D,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjH,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1F,MAAM,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1E;AAED,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAAC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEzG,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACtF,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,SAAS,EAAE;QACT,OAAO,CAAC,KAAK,EAAE;YAAE,mBAAmB,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;SAAE,CAAC,CAAC;KAC5G,CAAC;IACF,MAAM,EAAE;QACN,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;QACjE,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/D,CAAC;IACF,YAAY,EAAE;QACZ,QAAQ,CAAC,KAAK,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC,CAAC;QAChH,WAAW,CAAC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACvH,CAAC;IACF,GAAG,EAAE,WAAW,CAAC;IACjB,mBAAmB,EAAE;QACnB,GAAG,CAAC,KAAK,EAAE;YACT,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,CAAC;YACrB,KAAK,EAAE,aAAa,CAAC;YACrB,cAAc,EAAE,eAAe,EAAE,CAAC;YAClC,KAAK,EAAE,MAAM,CAAC;YACd,cAAc,EAAE,MAAM,EAAE,CAAC;YACzB,UAAU,EAAE,OAAO,CAAC;YACpB,kBAAkB,EAAE,yBAAyB,CAAC;YAC9C,MAAM,EAAE,WAAW,CAAC;SACrB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;KACxC,CAAC;IACF,sBAAsB,EAAE;QACtB,GAAG,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;KAChF,CAAC;IACF,2BAA2B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,gBAAgB,EAAE;QAChB,GAAG,CAAC,KAAK,EAAE,qBAAqB,GAAG;YAAE,KAAK,EAAE,qBAAqB,CAAA;SAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;KACvG,CAAC;IACF,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,MAAM,EAAE;QACN,GAAG,CAAC,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,WAAW,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzI,CAAC;IACF,KAAK,EAAE;QACL,WAAW,CAAC,KAAK,EAAE;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,aAAa,CAAC;YACrB,cAAc,EAAE,eAAe,EAAE,CAAC;YAClC,aAAa,EAAE,aAAa,CAAC;YAC7B,kBAAkB,EAAE,yBAAyB,CAAC;SAC/C,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;KAChC,CAAC;IACF,iBAAiB,EAAE,2BAA2B,CAAC;IAC/C,UAAU,EAAE,eAAe,CAAC;IAC5B,aAAa,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9G,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,yBAAyB,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IACjH,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,WAAW,IAAI,MAAM,CAAC;IACtB,aAAa,IAAI,MAAM,CAAC;IACxB,qBAAqB,IAAI,MAAM,CAAC;IAChC,GAAG,IAAI,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;CAAG;AAClD,qBAAa,wBAAyB,SAAQ,KAAK;CAAG;AAEtD,UAAU,SAAS;IACjB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AASD,qBAAa,QAAQ;IAGP,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAER,YAAY,EAAE,oBAAoB;YAIjD,cAAc;YA2Dd,OAAO;IAiJrB,OAAO,CAAC,mBAAmB;IAIrB,QAAQ,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IA2gBrF,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;YAwB3E,QAAQ;IAqKtB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,SAAS;YAgBH,oBAAoB;YAsBpB,oBAAoB;YAmBpB,gBAAgB;YAuChB,gBAAgB;YAKhB,mBAAmB;YAkBnB,SAAS;YA6BT,OAAO;IAcrB,OAAO,CAAC,WAAW;YAIL,aAAa;YAQb,UAAU;YAiBV,SAAS;YAKT,iBAAiB;YAqBjB,mBAAmB;YAuJnB,6BAA6B;YAwB7B,cAAc;YA4Cd,wBAAwB;YASxB,eAAe;YAQf,OAAO;YAIP,cAAc;YAKd,QAAQ;YAkDR,gBAAgB;YAKhB,iBAAiB;YAKjB,iBAAiB;IAK/B,OAAO,CAAC,SAAS;CAKlB"}
|