@orc-brain/core 1.0.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.
Files changed (126) hide show
  1. package/LICENSE +21 -0
  2. package/dist/autoLoop.d.ts +70 -0
  3. package/dist/autoLoop.d.ts.map +1 -0
  4. package/dist/autoLoop.js +178 -0
  5. package/dist/autoLoop.js.map +1 -0
  6. package/dist/backpressure.d.ts +38 -0
  7. package/dist/backpressure.d.ts.map +1 -0
  8. package/dist/backpressure.js +103 -0
  9. package/dist/backpressure.js.map +1 -0
  10. package/dist/budgetTracker.d.ts +53 -0
  11. package/dist/budgetTracker.d.ts.map +1 -0
  12. package/dist/budgetTracker.js +93 -0
  13. package/dist/budgetTracker.js.map +1 -0
  14. package/dist/config.d.ts +9 -0
  15. package/dist/config.d.ts.map +1 -0
  16. package/dist/config.js +107 -0
  17. package/dist/config.js.map +1 -0
  18. package/dist/escalation.d.ts +43 -0
  19. package/dist/escalation.d.ts.map +1 -0
  20. package/dist/escalation.js +81 -0
  21. package/dist/escalation.js.map +1 -0
  22. package/dist/eventBus.d.ts +30 -0
  23. package/dist/eventBus.d.ts.map +1 -0
  24. package/dist/eventBus.js +42 -0
  25. package/dist/eventBus.js.map +1 -0
  26. package/dist/goalJudge.d.ts +92 -0
  27. package/dist/goalJudge.d.ts.map +1 -0
  28. package/dist/goalJudge.js +254 -0
  29. package/dist/goalJudge.js.map +1 -0
  30. package/dist/index.d.ts +30 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +30 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/modelRouter.d.ts +40 -0
  35. package/dist/modelRouter.d.ts.map +1 -0
  36. package/dist/modelRouter.js +114 -0
  37. package/dist/modelRouter.js.map +1 -0
  38. package/dist/orchestrator.d.ts +242 -0
  39. package/dist/orchestrator.d.ts.map +1 -0
  40. package/dist/orchestrator.js +975 -0
  41. package/dist/orchestrator.js.map +1 -0
  42. package/dist/pacing.d.ts +34 -0
  43. package/dist/pacing.d.ts.map +1 -0
  44. package/dist/pacing.js +49 -0
  45. package/dist/pacing.js.map +1 -0
  46. package/dist/planValidation.d.ts +24 -0
  47. package/dist/planValidation.d.ts.map +1 -0
  48. package/dist/planValidation.js +134 -0
  49. package/dist/planValidation.js.map +1 -0
  50. package/dist/planner.d.ts +70 -0
  51. package/dist/planner.d.ts.map +1 -0
  52. package/dist/planner.js +210 -0
  53. package/dist/planner.js.map +1 -0
  54. package/dist/plugins/host.d.ts +39 -0
  55. package/dist/plugins/host.d.ts.map +1 -0
  56. package/dist/plugins/host.js +109 -0
  57. package/dist/plugins/host.js.map +1 -0
  58. package/dist/plugins/registry.d.ts +71 -0
  59. package/dist/plugins/registry.d.ts.map +1 -0
  60. package/dist/plugins/registry.js +269 -0
  61. package/dist/plugins/registry.js.map +1 -0
  62. package/dist/plugins/secrets.d.ts +30 -0
  63. package/dist/plugins/secrets.d.ts.map +1 -0
  64. package/dist/plugins/secrets.js +99 -0
  65. package/dist/plugins/secrets.js.map +1 -0
  66. package/dist/preflight.d.ts +38 -0
  67. package/dist/preflight.d.ts.map +1 -0
  68. package/dist/preflight.js +108 -0
  69. package/dist/preflight.js.map +1 -0
  70. package/dist/reporting.d.ts +41 -0
  71. package/dist/reporting.d.ts.map +1 -0
  72. package/dist/reporting.js +229 -0
  73. package/dist/reporting.js.map +1 -0
  74. package/dist/safety/denyRules.d.ts +57 -0
  75. package/dist/safety/denyRules.d.ts.map +1 -0
  76. package/dist/safety/denyRules.js +498 -0
  77. package/dist/safety/denyRules.js.map +1 -0
  78. package/dist/safety/envClassifier.d.ts +45 -0
  79. package/dist/safety/envClassifier.d.ts.map +1 -0
  80. package/dist/safety/envClassifier.js +99 -0
  81. package/dist/safety/envClassifier.js.map +1 -0
  82. package/dist/safety/index.d.ts +83 -0
  83. package/dist/safety/index.d.ts.map +1 -0
  84. package/dist/safety/index.js +184 -0
  85. package/dist/safety/index.js.map +1 -0
  86. package/dist/safety/limitSignals.d.ts +36 -0
  87. package/dist/safety/limitSignals.d.ts.map +1 -0
  88. package/dist/safety/limitSignals.js +79 -0
  89. package/dist/safety/limitSignals.js.map +1 -0
  90. package/dist/safety/paths.d.ts +32 -0
  91. package/dist/safety/paths.d.ts.map +1 -0
  92. package/dist/safety/paths.js +102 -0
  93. package/dist/safety/paths.js.map +1 -0
  94. package/dist/safety/redact.d.ts +17 -0
  95. package/dist/safety/redact.d.ts.map +1 -0
  96. package/dist/safety/redact.js +85 -0
  97. package/dist/safety/redact.js.map +1 -0
  98. package/dist/spawnEnv.d.ts +18 -0
  99. package/dist/spawnEnv.d.ts.map +1 -0
  100. package/dist/spawnEnv.js +43 -0
  101. package/dist/spawnEnv.js.map +1 -0
  102. package/dist/store/auditLog.d.ts +28 -0
  103. package/dist/store/auditLog.d.ts.map +1 -0
  104. package/dist/store/auditLog.js +48 -0
  105. package/dist/store/auditLog.js.map +1 -0
  106. package/dist/store/index.d.ts +140 -0
  107. package/dist/store/index.d.ts.map +1 -0
  108. package/dist/store/index.js +648 -0
  109. package/dist/store/index.js.map +1 -0
  110. package/dist/store/schema.d.ts +17 -0
  111. package/dist/store/schema.d.ts.map +1 -0
  112. package/dist/store/schema.js +197 -0
  113. package/dist/store/schema.js.map +1 -0
  114. package/dist/system.d.ts +69 -0
  115. package/dist/system.d.ts.map +1 -0
  116. package/dist/system.js +135 -0
  117. package/dist/system.js.map +1 -0
  118. package/dist/workerManager.d.ts +80 -0
  119. package/dist/workerManager.d.ts.map +1 -0
  120. package/dist/workerManager.js +280 -0
  121. package/dist/workerManager.js.map +1 -0
  122. package/dist/worktrees.d.ts +74 -0
  123. package/dist/worktrees.d.ts.map +1 -0
  124. package/dist/worktrees.js +210 -0
  125. package/dist/worktrees.js.map +1 -0
  126. package/package.json +48 -0
@@ -0,0 +1,242 @@
1
+ /**
2
+ * Orchestrator core (§3, §5). Owns the Goal, the Scope DAG, and the Run state
3
+ * machine. Runs the dispatch loop: on each tick, take ready tasks (dependencies
4
+ * met, scope approved, budget available, concurrency slot free), consult the
5
+ * Model Router, and hand a fully-specified WorkerSpec to the Worker Manager.
6
+ *
7
+ * Phase 2 (§15): Planner-driven DAG materialization + plan approval,
8
+ * pause/resume with session persistence, and bounded retries land here on top
9
+ * of the Phase 1 safety-wired dispatch loop.
10
+ */
11
+ import type { ExternalRef, Goal, OrchestratorConfig, Plan, Project, Run, Scope, Task } from "@orc-brain/shared";
12
+ import type { Store } from "./store/index.js";
13
+ import type { AuditSink, SafetyLayer } from "./safety/index.js";
14
+ import type { EventBus } from "./eventBus.js";
15
+ import type { BudgetTracker } from "./budgetTracker.js";
16
+ import type { WorkerManager } from "./workerManager.js";
17
+ import type { Planner } from "./planner.js";
18
+ import type { EscalationManager } from "./escalation.js";
19
+ import type { ReportingEngine } from "./reporting.js";
20
+ import type { Backpressure } from "./backpressure.js";
21
+ import type { WorktreeManager } from "./worktrees.js";
22
+ /**
23
+ * Hook the autonomous controller registers so the orchestrator can hand off a
24
+ * quiesced run (all tasks terminal) instead of finalizing it itself
25
+ * (autonomous-loop.md §3.1, G4). Fire-and-forget: the controller owns the
26
+ * done / re-plan / pause decision.
27
+ */
28
+ export interface AutoLoopHook {
29
+ onRunQuiesced(runId: string): void;
30
+ }
31
+ /** Wires the core collaborators together. */
32
+ export interface OrchestratorDeps {
33
+ store: Store;
34
+ bus: EventBus;
35
+ config: OrchestratorConfig;
36
+ safety: SafetyLayer;
37
+ workers: WorkerManager;
38
+ budget: BudgetTracker;
39
+ audit: AuditSink;
40
+ planner: Planner;
41
+ escalation: EscalationManager;
42
+ reporting: ReportingEngine;
43
+ backpressure: Backpressure;
44
+ worktrees: WorktreeManager;
45
+ }
46
+ /** The orchestration core. In-proc methods are invoked by the API layer. */
47
+ export declare class Orchestrator {
48
+ private readonly deps;
49
+ private readonly running;
50
+ /** Run each in-flight task belongs to: per-run counts + pause/panic scoping. */
51
+ private readonly runOfTask;
52
+ /** Tasks blocked by an escalation, so a settling worker isn't retried (§8.5). */
53
+ private readonly blocked;
54
+ /** Set on shutdown so late worker callbacks don't touch a closed store. */
55
+ private stopped;
56
+ /** Autonomous controller, registered when auto-loop is enabled (§3.1). */
57
+ private autoLoop?;
58
+ /** Tasks-per-hour throttle, shared across runs (spec 002 §R14). */
59
+ private readonly pacer;
60
+ /** Last engaged pacing gate, so `pacing.hold` is edge-triggered (§R16). */
61
+ private pacingHold;
62
+ constructor(deps: OrchestratorDeps);
63
+ /** Number of in-flight workers belonging to one run. */
64
+ private runningCountFor;
65
+ /** In-flight handles belonging to one run (pause/panic never cross runs). */
66
+ private handlesFor;
67
+ /** Publishes `pacing.hold` once per engagement (spec 002 §R16). */
68
+ private emitPacingHold;
69
+ /** Interrupts the worker of a task the escalation manager just blocked (§8.5). */
70
+ private blockTask;
71
+ /**
72
+ * Applies an operator resolution to a blocked escalation (§8.5): deny-&-instruct
73
+ * and approve-once re-queue the task (with guidance / a single-use exemption),
74
+ * skip marks it skipped. Then the dispatch loop is re-kicked.
75
+ */
76
+ resolveEscalation(escalationId: string, action: "deny_instruct" | "approve_once" | "skip_task", message?: string): void;
77
+ createGoal(input: Parameters<Store["createGoal"]>[0]): Goal;
78
+ /**
79
+ * Feature flow (spec 002 §R4, spec 003 §R4): creates a goal under a project
80
+ * and immediately kicks planning, fire-and-forget. The single entrypoint for
81
+ * `POST /api/projects/:id/goals` and plugin task imports, so the two paths
82
+ * cannot drift. A planner failure drops the goal back to draft.
83
+ */
84
+ createFeatureGoal(project: Project, input: {
85
+ objective: string;
86
+ title?: string;
87
+ external_ref?: ExternalRef | null;
88
+ }): Goal;
89
+ createScope(input: Parameters<Store["createScope"]>[0]): Scope;
90
+ createTask(input: Parameters<Store["createTask"]>[0]): Task;
91
+ /** Approves a scope so its tasks become dispatchable (§8, §10 plan review). */
92
+ approveScope(scopeId: string): void;
93
+ /** Approves every proposed scope of a goal (`orc approve <goal-id>`, §9). */
94
+ approveGoal(goalId: string): Scope[];
95
+ /**
96
+ * Runs the Planner for a goal and materializes its Plan into proposed scopes
97
+ * and pending tasks, ready for operator approval. The plan is inert until
98
+ * approved — nothing dispatches here (§3: the Planner never dispatches).
99
+ */
100
+ planGoal(goalId: string): Promise<{
101
+ scopes: Scope[];
102
+ tasks: Task[];
103
+ }>;
104
+ /**
105
+ * Replaces a goal's proposed plan with an edited one (`orc plan edit`, §9).
106
+ * Validates the candidate, drops the existing proposed scopes/tasks, and
107
+ * re-materializes. Throws if validation fails so a bad edit never lands.
108
+ */
109
+ replacePlan(goalId: string, candidate: unknown): {
110
+ scopes: Scope[];
111
+ tasks: Task[];
112
+ };
113
+ /**
114
+ * Cancels a goal's proposed plan (§10 plan review): drops the proposed
115
+ * scopes and their tasks and returns the goal to `draft` so it can be
116
+ * re-planned. Approved/running scopes are never touched
117
+ * ({@link Store.deleteProposedPlan} only deletes `proposed` ones).
118
+ */
119
+ cancelPlan(goalId: string): void;
120
+ /**
121
+ * Applies a re-plan cycle's {@link Plan} additively — grows the goal's DAG
122
+ * without deleting existing scopes/tasks (autonomous-loop.md §3.3, G2). Used
123
+ * by the autonomous controller; the plan is already validated by the Planner.
124
+ * New scopes land `proposed`; the controller approves them per its mode.
125
+ */
126
+ applyReplan(goalId: string, plan: Plan): {
127
+ scopes: Scope[];
128
+ tasks: Task[];
129
+ };
130
+ /**
131
+ * Materializes a validated {@link Plan} into Scope/Task rows, resolving the
132
+ * plan's name-based `depends_on` references to the newly-minted ULIDs. Scopes
133
+ * land `proposed`, tasks `pending`; approval (per scope or per goal) flips
134
+ * scopes to `approved` so the dispatch loop can pick their tasks up.
135
+ *
136
+ * Thin wrapper over {@link appendPlan}: on the first materialization there are
137
+ * no existing scopes, so the two are equivalent.
138
+ */
139
+ private materializePlan;
140
+ /**
141
+ * Appends a validated {@link Plan}'s scopes/tasks to a goal WITHOUT deleting
142
+ * anything (autonomous-loop.md §3.3, G2). This is what a re-plan cycle uses to
143
+ * grow the DAG. Scope-level `depends_on` may reference either newly-created or
144
+ * pre-existing scope names, so a re-planned scope can depend on an
145
+ * already-completed one; on a name collision the new scope wins (consistent
146
+ * with intra-plan resolution). New scopes land `proposed`, tasks `pending`.
147
+ */
148
+ private appendPlan;
149
+ /** Starts a run for a goal and kicks the dispatch loop (§5). */
150
+ startRun(goalId: string, opts: {
151
+ budget_usd: number;
152
+ concurrency_limit?: number;
153
+ /** Feature-flow run (spec 002 §R5): auto-loops even with global config off. */
154
+ auto_loop?: boolean;
155
+ }): Run;
156
+ /**
157
+ * Graceful pause (§5): halt dispatch and interrupt running workers, waiting up
158
+ * to `pause.grace_ms` for them to yield at a tool-call boundary. Workers that
159
+ * do not settle within the grace window are marked `dirty` — resume will
160
+ * re-verify their workspace before continuing (§13.6).
161
+ */
162
+ pause(runId: string, reason?: string): Promise<void>;
163
+ /** A promise that resolves after `ms`, with an unref'd timer. */
164
+ private delay;
165
+ /**
166
+ * Resume (§5): re-queue every `paused` task so the dispatch loop picks it up
167
+ * again. Tasks that captured a `session_id` continue that session (SDK
168
+ * `resume:`) with a continuation prompt; the scope config is re-applied fresh
169
+ * so resume never inherits stale permissions. Then the run re-enters Running.
170
+ */
171
+ resume(runId: string): void;
172
+ /**
173
+ * Hard abort / kill switch (§5, §8.6): interrupt everything immediately and
174
+ * flag every in-flight task dirty — a hard stop may leave half-applied edits.
175
+ */
176
+ panic(runId: string): Promise<void>;
177
+ /** Number of workers currently in flight. */
178
+ get inFlight(): number;
179
+ /**
180
+ * Halts the dispatch loop for shutdown. Late worker `done` callbacks that fire
181
+ * after the store closes become no-ops, so nothing touches a closed database.
182
+ */
183
+ stop(): void;
184
+ /**
185
+ * One dispatch tick (§5). Selects ready tasks and spawns workers up to the
186
+ * concurrency limit. The budget gate is a single choke-point (§13.10): if the
187
+ * run is stopped, nothing new is dispatched.
188
+ */
189
+ tick(runId: string): Promise<void>;
190
+ private dependenciesMet;
191
+ private dispatch;
192
+ /**
193
+ * Reacts to a settled worker (§5, §13). A failure while the run is
194
+ * pausing/paused is an interrupt, not a real failure — the task is marked
195
+ * `paused` for resume. A genuine failure retries up to `retry.max_attempts`,
196
+ * feeding router R5 escalation, before it is left `failed`.
197
+ */
198
+ private onWorkerSettled;
199
+ /**
200
+ * Detects scope completion (autonomous-loop.md §3.2, G1). For each active
201
+ * scope whose tasks are all terminal, transitions it to `done` (none failed)
202
+ * or `failed` (≥1 failed after retries) and emits `scope.done`/`scope.failed`.
203
+ * A scope with no tasks, or holding a non-terminal task (queued/paused/
204
+ * blocked), is left untouched. Idempotent: already-terminal scopes are
205
+ * skipped, so this is safe to call after every worker settles.
206
+ */
207
+ private settleScopesFor;
208
+ /**
209
+ * Opt-in auto-merge of a settled scope branch into the run's base branch
210
+ * (spec 002 v2). Conservative by design: any skip (dirty checkout, wrong
211
+ * branch, conflict) leaves the branch for manual merge — the default flow.
212
+ * Every outcome is audited.
213
+ */
214
+ private maybeAutoMerge;
215
+ /**
216
+ * Detects a rate-limit signal in a worker failure (§7.4). If found, engages
217
+ * backpressure and re-queues the task without consuming a retry attempt — the
218
+ * dispatch gate holds it until the limit clears. Returns true when handled.
219
+ */
220
+ private handleLimitSignal;
221
+ /** Bounded retry (§5 `failed → queued`, §13). Requeues or gives up. */
222
+ private handleFailure;
223
+ private emitTaskState;
224
+ /** Registers the autonomous controller (autonomous-loop.md §3.1, G4). */
225
+ setAutoLoop(hook: AutoLoopHook): void;
226
+ private maybeFinish;
227
+ /**
228
+ * Marks a run terminal (done/failed), emits the transition, stops the interval
229
+ * timer, and writes the final report (§11). Used by `maybeFinish` and, in auto
230
+ * mode, by the controller when success criteria are satisfied.
231
+ */
232
+ finalizeRun(runId: string, state: "done" | "failed", reason?: string): void;
233
+ /**
234
+ * Parks an auto-loop run as `paused` with a reason (autonomous-loop.md §3.1):
235
+ * the runaway guards (`cycle_cap`, `no_progress`) and the supervised approval
236
+ * gate (`awaiting_replan_approval`) all land here. Non-terminal — an operator
237
+ * (or a mode change) can resume. Halts the dispatch loop via the run state.
238
+ */
239
+ parkRun(runId: string, reason: string): void;
240
+ private emitRunState;
241
+ }
242
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EAEJ,kBAAkB,EAClB,IAAI,EACJ,OAAO,EACP,GAAG,EACH,KAAK,EACL,IAAI,EACL,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAEV,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA2BtD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,6CAA6C;AAC7C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,4EAA4E;AAC5E,qBAAa,YAAY;IAeX,OAAO,CAAC,QAAQ,CAAC,IAAI;IAdjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,2EAA2E;IAC3E,OAAO,CAAC,OAAO,CAAS;IACxB,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,2EAA2E;IAC3E,OAAO,CAAC,UAAU,CAAuB;gBAEZ,IAAI,EAAE,gBAAgB;IAQnD,wDAAwD;IACxD,OAAO,CAAC,eAAe;IAMvB,6EAA6E;IAC7E,OAAO,CAAC,UAAU;IAQlB,mEAAmE;IACnE,OAAO,CAAC,cAAc;IActB,kFAAkF;IAClF,OAAO,CAAC,SAAS;IAMjB;;;;OAIG;IACH,iBAAiB,CACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,GAAG,cAAc,GAAG,WAAW,EACtD,OAAO,CAAC,EAAE,MAAM,GACf,IAAI;IA4CP,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,iBAAiB,CACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;KACnC,GACA,IAAI;IAyCP,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;IAI9D,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAI3D,+EAA+E;IAC/E,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,6EAA6E;IAC7E,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE;IAUpC;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAW3E;;;;OAIG;IACH,WAAW,CACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,GACjB;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE;IAarC;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOhC;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE;IAM3E;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,OAAO,CAAC,UAAU;IAgFlB,gEAAgE;IAChE,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,+EAA+E;QAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,GACA,GAAG;IAkDN;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCpE,iEAAiE;IACjE,OAAO,CAAC,KAAK;IAOb;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoB3B;;;OAGG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI;IAMZ;;;;OAIG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DxC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,QAAQ;IAiJhB;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAuCvB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAoDvB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAiCtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA0CzB,uEAAuE;IACvE,OAAO,CAAC,aAAa;IAiCrB,OAAO,CAAC,aAAa;IAoBrB,yEAAyE;IACzE,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIrC,OAAO,CAAC,WAAW;IA0BnB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAU3E;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAU5C,OAAO,CAAC,YAAY;CAWrB"}