@mycompbox/compbox-cli 1.18.0 → 1.20.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/.tsbuildinfo +1 -1
- package/commands/configure.d.ts.map +1 -1
- package/commands/configure.js +31 -11
- package/commands/configure.js.map +1 -1
- package/commands/doctor.d.ts.map +1 -1
- package/commands/doctor.js +1 -1
- package/commands/doctor.js.map +1 -1
- package/commands/login.d.ts +2 -0
- package/commands/login.d.ts.map +1 -1
- package/commands/login.js +28 -6
- package/commands/login.js.map +1 -1
- package/commands/run.d.ts +12 -1
- package/commands/run.d.ts.map +1 -1
- package/commands/run.js +110 -30
- package/commands/run.js.map +1 -1
- package/index.js +1264 -540
- package/package.json +1 -1
- package/utils/agent-invoker.d.ts +59 -101
- package/utils/agent-invoker.d.ts.map +1 -1
- package/utils/agent-invoker.js +183 -508
- package/utils/agent-invoker.js.map +1 -1
- package/utils/autostart.d.ts +41 -0
- package/utils/autostart.d.ts.map +1 -0
- package/utils/autostart.js +122 -0
- package/utils/autostart.js.map +1 -0
- package/utils/key-run.d.ts +32 -0
- package/utils/key-run.d.ts.map +1 -0
- package/utils/key-run.js +77 -0
- package/utils/key-run.js.map +1 -0
- package/utils/loopback.d.ts +3 -3
- package/utils/loopback.d.ts.map +1 -1
- package/utils/loopback.js +3 -3
- package/utils/loopback.js.map +1 -1
- package/utils/mailbox-client.d.ts +31 -1
- package/utils/mailbox-client.d.ts.map +1 -1
- package/utils/mailbox-client.js +60 -2
- package/utils/mailbox-client.js.map +1 -1
- package/utils/mcp-config-writer.d.ts +2 -0
- package/utils/mcp-config-writer.d.ts.map +1 -1
- package/utils/mcp-config-writer.js +9 -1
- package/utils/mcp-config-writer.js.map +1 -1
- package/utils/repo-setup.d.ts +44 -0
- package/utils/repo-setup.d.ts.map +1 -0
- package/utils/repo-setup.js +178 -0
- package/utils/repo-setup.js.map +1 -0
- package/utils/run-workspace.d.ts +120 -0
- package/utils/run-workspace.d.ts.map +1 -0
- package/utils/run-workspace.js +298 -0
- package/utils/run-workspace.js.map +1 -0
package/package.json
CHANGED
package/utils/agent-invoker.d.ts
CHANGED
|
@@ -2,37 +2,27 @@
|
|
|
2
2
|
* Agent invoker (ENG-E23 / ENG-122-2) — the daemon's "heart": actually runs a
|
|
3
3
|
* claimed job instead of immediately reporting it as unimplemented.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
5
|
+
* Request conversations (`epic_request` jobs) run one AI reply per claim
|
|
6
|
+
* (invokeEpicRequestStep, on the shared runConversationStep): the reply is
|
|
7
|
+
* posted, the job is left waiting on the person, and the server hands it back
|
|
8
|
+
* when they write again. Nothing waits in between, so a conversation never
|
|
9
|
+
* times out and stays open after the request is saved. Two ways to reply:
|
|
8
10
|
* - `api`: Anthropic Messages API, directly (Anthropic API key, billed
|
|
9
|
-
* per-token).
|
|
11
|
+
* per-token).
|
|
10
12
|
* - `claude-subscription`: shells out to the local `claude` CLI
|
|
11
13
|
* non-interactively, using whichever account is already logged in on
|
|
12
14
|
* this machine (personal Pro/Max or a company Team seat) — no API key
|
|
13
|
-
* ever touches CompBox.
|
|
15
|
+
* ever touches CompBox.
|
|
14
16
|
*
|
|
15
|
-
*
|
|
16
|
-
* - The interview is driven by the shared, declarative INTERVIEW_DEFINITION
|
|
17
|
-
* (@mycompbox/shared, ENG-143) so the machine/mailbox interview reaches the
|
|
18
|
-
* SAME depth as the CLI request-formulator: it covers all seven sections
|
|
19
|
-
* (problem, solution, impact, success metrics, target audience, technical
|
|
20
|
-
* context, alternatives) rather than only the 3 required fields. The system
|
|
21
|
-
* prompt is rendered from that definition (buildInterviewSystemPrompt), and
|
|
22
|
-
* the completion object carries the required fields plus any optional ones
|
|
23
|
-
* the employee provided; there is no shortened variant left in this path.
|
|
24
|
-
*
|
|
25
|
-
* Turn relay: the mailbox has no "wait for a new turn" primitive for a
|
|
26
|
-
* machine caller (next-job's "resume active job" path returns immediately
|
|
27
|
-
* with whatever the job's current state is — see jobService.ts tryClaimOnce).
|
|
28
|
-
* So after posting an agent question, this module polls next-job on a short
|
|
29
|
-
* client-side interval until it observes a new trailing user turn, with a
|
|
30
|
-
* bounded overall timeout so an abandoned interview eventually fails cleanly
|
|
31
|
-
* instead of polling forever.
|
|
17
|
+
* `start_execution` jobs run the planner/orchestrator headless (below).
|
|
32
18
|
*/
|
|
33
19
|
import Anthropic from '@anthropic-ai/sdk';
|
|
34
20
|
import { spawn } from 'node:child_process';
|
|
35
|
-
import { type PxpipeRouting, type InterviewSeedPayload } from '@mycompbox/shared';
|
|
21
|
+
import { type PxpipeRouting, type InterviewSeedPayload, extractCompletionJson, looksLikeCompletionAttempt, meetsComplianceTarget, buildAuditFeedback, COMPLETION_REPAIR_INSTRUCTION, type ComplianceSummary, type EpicRequestDraft } from '@mycompbox/shared';
|
|
22
|
+
export { extractCompletionJson, looksLikeCompletionAttempt, meetsComplianceTarget, buildAuditFeedback, COMPLETION_REPAIR_INSTRUCTION, };
|
|
23
|
+
export type { ComplianceSummary, EpicRequestDraft };
|
|
24
|
+
import { type KeyRun } from './key-run.js';
|
|
25
|
+
import type { FinishResult, RunWorkspaceManager } from './run-workspace.js';
|
|
36
26
|
import type { MailboxAttachment, MailboxClient, MailboxJob, MailboxJobTurn } from './mailbox-client.js';
|
|
37
27
|
/**
|
|
38
28
|
* pxpipe routing (ENG-136). Anthropic SDK options carrying the proxy `baseURL`
|
|
@@ -94,29 +84,12 @@ export interface InvokeResult {
|
|
|
94
84
|
status: 'done' | 'failed';
|
|
95
85
|
result: Record<string, unknown>;
|
|
96
86
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
* Plain-text markdown description synthesized by the model from the whole
|
|
104
|
-
* conversation — sent as the Epic Request's top-level `description` field
|
|
105
|
-
* (distinct from structuredDesc). REQUIRED: compliance-validation's
|
|
106
|
-
* ER_NO_DESCRIPTION rule (see .github/skills/internal/compliance-validation)
|
|
107
|
-
* fails critical if this is empty, regardless of how good structuredDesc
|
|
108
|
-
* is — verified live: an epic request created with only the 3 structured
|
|
109
|
-
* fields populated (no description) scored 12/100, critical-fail, on
|
|
110
|
-
* ER_NO_DESCRIPTION, ER_NO_PROBLEM_STATEMENT, and ER_NO_IMPACT_ASSESSMENT
|
|
111
|
-
* (the latter two because a single terse summary sentence fell just under
|
|
112
|
-
* the rubric's 50-word/30-word minimums — 47 and 25 words respectively).
|
|
113
|
-
*/
|
|
114
|
-
description: string;
|
|
115
|
-
successMetrics?: string;
|
|
116
|
-
targetAudience?: string;
|
|
117
|
-
alternatives?: string;
|
|
118
|
-
dependencies?: string;
|
|
119
|
-
estimatedEffort?: string;
|
|
87
|
+
/**
|
|
88
|
+
* A request conversation step that left the job open (waiting on the person):
|
|
89
|
+
* the job must NOT be completed.
|
|
90
|
+
*/
|
|
91
|
+
export interface YieldResult {
|
|
92
|
+
status: 'yield';
|
|
120
93
|
}
|
|
121
94
|
/**
|
|
122
95
|
* ENG-149 — parse a claimed job's `payload` as an interview-CONTINUATION seed
|
|
@@ -127,20 +100,6 @@ export interface EpicRequestDraft {
|
|
|
127
100
|
* jobB). Exported for unit testing.
|
|
128
101
|
*/
|
|
129
102
|
export declare function parseSeedPayload(payload: unknown): InterviewSeedPayload | null;
|
|
130
|
-
/**
|
|
131
|
-
* ENG-149 — the interview system prompt for a job: a seed-aware RESUME/ENRICH
|
|
132
|
-
* prompt for a continuation, otherwise the module-level fresh-start prompt.
|
|
133
|
-
*/
|
|
134
|
-
export declare function resolveSystemPrompt(seed: InterviewSeedPayload | null): string;
|
|
135
|
-
/** The server-computed compliance summary the daemon gates the interview on. */
|
|
136
|
-
export interface ComplianceSummary {
|
|
137
|
-
overall: number;
|
|
138
|
-
tier: 'pass' | 'advisory' | 'critical-fail';
|
|
139
|
-
issues: {
|
|
140
|
-
message: string;
|
|
141
|
-
tier: 'critical' | 'advisory';
|
|
142
|
-
}[];
|
|
143
|
-
}
|
|
144
103
|
/**
|
|
145
104
|
* Submit the current draft and read back the server-computed compliance score
|
|
146
105
|
* (bug #2 — audit-aware finishing). Fresh interview: the FIRST submit
|
|
@@ -157,54 +116,27 @@ export declare function submitAndScore(ctx: {
|
|
|
157
116
|
compliance: ComplianceSummary | null;
|
|
158
117
|
}>;
|
|
159
118
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* the gate can only act on a score the server actually returned.
|
|
119
|
+
* True when the person's Claude plan can't use the requested model (for
|
|
120
|
+
* example Fable needs usage credits on some plans): retry on their default.
|
|
163
121
|
*/
|
|
164
|
-
export declare function
|
|
122
|
+
export declare function needsDefaultModel(error: unknown): boolean;
|
|
165
123
|
/**
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* yields a VALID {@link isEpicRequestDraft} object.
|
|
175
|
-
*/
|
|
176
|
-
export declare function extractCompletionJson(text: string): EpicRequestDraft | null;
|
|
177
|
-
/**
|
|
178
|
-
* True when a reply is clearly an ATTEMPT to finish (a JSON completion) even if
|
|
179
|
-
* it failed to parse/validate — so the daemon can correct the model instead of
|
|
180
|
-
* relaying raw JSON to the employee as if it were a question (which loops).
|
|
181
|
-
*/
|
|
182
|
-
export declare function looksLikeCompletionAttempt(text: string): boolean;
|
|
183
|
-
/**
|
|
184
|
-
* Runs the epic_request interview end-to-end: converses with the user via
|
|
185
|
-
* post-turn/next-job until it has a title + the 3 required structured-desc
|
|
186
|
-
* fields, then creates a personal-scope epic request via the real API
|
|
187
|
-
* (POST /api/v1/me/epic-requests) using the user's own stored token.
|
|
188
|
-
*/
|
|
189
|
-
export declare function invokeEpicRequestViaApi(job: MailboxJob, ctx: {
|
|
190
|
-
mailboxClient: MailboxClient;
|
|
191
|
-
machineToken: string;
|
|
192
|
-
apiBaseUrl: string;
|
|
193
|
-
userApiToken: string;
|
|
194
|
-
anthropicApiKey: string;
|
|
195
|
-
}): Promise<InvokeResult>;
|
|
196
|
-
/**
|
|
197
|
-
* Runs the epic_request interview end-to-end using the local `claude` CLI
|
|
198
|
-
* (the employee's own Claude Code login) instead of the Anthropic API.
|
|
199
|
-
* Mirrors invokeEpicRequestViaApi's turn loop and completion handling
|
|
200
|
-
* exactly — only how a single assistant turn is produced differs.
|
|
124
|
+
* Takes one step of a request conversation on this computer: the AI's reply to
|
|
125
|
+
* the person's latest message, which may save or update their request. Then
|
|
126
|
+
* the job is left waiting on the person (never completed), so the chat stays
|
|
127
|
+
* open: there is no reply timeout, and the computer is free for other work in
|
|
128
|
+
* the meantime. The server hands the job back when they write again.
|
|
129
|
+
*
|
|
130
|
+
* `anthropicApiKey` set → the Anthropic API; otherwise the local `claude` CLI
|
|
131
|
+
* on the person's own Claude sign-in.
|
|
201
132
|
*/
|
|
202
|
-
export declare function
|
|
133
|
+
export declare function invokeEpicRequestStep(job: MailboxJob, ctx: {
|
|
203
134
|
mailboxClient: MailboxClient;
|
|
204
135
|
machineToken: string;
|
|
205
136
|
apiBaseUrl: string;
|
|
206
137
|
userApiToken: string;
|
|
207
|
-
|
|
138
|
+
anthropicApiKey?: string;
|
|
139
|
+
}): Promise<YieldResult>;
|
|
208
140
|
/**
|
|
209
141
|
* Per-run wall-clock budget for the headless planner child (H4). Deliberately
|
|
210
142
|
* FAR larger than the interview's {@link CLAUDE_CLI_TURN_TIMEOUT_MS} (~2 min):
|
|
@@ -226,6 +158,19 @@ export declare const PLANNER_RUN_TIMEOUT_MS: number;
|
|
|
226
158
|
* connected" exactly while an agent was running.
|
|
227
159
|
*/
|
|
228
160
|
export declare const PLANNER_HEARTBEAT_INTERVAL_MS: number;
|
|
161
|
+
/**
|
|
162
|
+
* Finishes a run made on the person's API key: reads Claude Code's JSON
|
|
163
|
+
* result, reports the run's usage to CompBox (best-effort), and returns the
|
|
164
|
+
* plain text the run would otherwise have printed.
|
|
165
|
+
*/
|
|
166
|
+
export declare function takeKeyRunResult(ctx: {
|
|
167
|
+
mailboxClient: MailboxClient;
|
|
168
|
+
machineToken: string;
|
|
169
|
+
jobId: string;
|
|
170
|
+
}, keyRun: KeyRun, stdout: string): {
|
|
171
|
+
text: string;
|
|
172
|
+
reported: Promise<void>;
|
|
173
|
+
};
|
|
229
174
|
/**
|
|
230
175
|
* Build the `claude` argv for a headless planner run (H1). Pure + exported so a
|
|
231
176
|
* unit test can assert the exact command shape: the `@planner` routing prompt,
|
|
@@ -280,6 +225,8 @@ export interface StartExecutionPlanCtx {
|
|
|
280
225
|
epicRequestId: string;
|
|
281
226
|
/** Resolved project repo dir (may be undefined/invalid — validated here). */
|
|
282
227
|
projectDir: string | undefined;
|
|
228
|
+
/** Run on the person's saved API key instead of this computer's Claude sign-in. */
|
|
229
|
+
keyRun?: KeyRun;
|
|
283
230
|
}
|
|
284
231
|
export interface StartExecutionPlanDeps {
|
|
285
232
|
/** Injectable child spawner (defaults to node's `spawn`) — tests never spawn a real `claude`. */
|
|
@@ -361,6 +308,8 @@ export interface StartExecutionOrchestrateCtx {
|
|
|
361
308
|
epicId: string;
|
|
362
309
|
/** Resolved project repo dir (may be undefined/invalid — validated here). */
|
|
363
310
|
projectDir: string | undefined;
|
|
311
|
+
/** Run on the person's saved API key instead of this computer's Claude sign-in. */
|
|
312
|
+
keyRun?: KeyRun;
|
|
364
313
|
}
|
|
365
314
|
export interface StartExecutionOrchestrateDeps {
|
|
366
315
|
/** Injectable child spawner (defaults to node's `spawn`) — tests never spawn a real `claude`. */
|
|
@@ -377,7 +326,16 @@ export interface StartExecutionOrchestrateDeps {
|
|
|
377
326
|
heartbeat?: () => void | Promise<void>;
|
|
378
327
|
heartbeatIntervalMs?: number;
|
|
379
328
|
timeoutMs?: number;
|
|
329
|
+
/**
|
|
330
|
+
* Runs the orchestrator on its own new branch in a separate git worktree and
|
|
331
|
+
* finishes with a pushed branch + pull request (see run-workspace.ts). The
|
|
332
|
+
* daemon always passes one; when omitted the run happens directly in the
|
|
333
|
+
* project folder, as before.
|
|
334
|
+
*/
|
|
335
|
+
workspace?: Pick<RunWorkspaceManager, 'prepare' | 'finish'>;
|
|
380
336
|
}
|
|
337
|
+
/** Plain-language summary of where a run's code ended up. */
|
|
338
|
+
export declare function describeRunBranch(finish: FinishResult): string;
|
|
381
339
|
/**
|
|
382
340
|
* Turn a detected needs-review marker into the job result the web renders
|
|
383
341
|
* (ENG-165-3). Names the halting gate (and its reason/phase/feature when the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-invoker.d.ts","sourceRoot":"","sources":["../../src/utils/agent-invoker.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent-invoker.d.ts","sourceRoot":"","sources":["../../src/utils/agent-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAa,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,EAI7B,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAEtB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,GAC9B,CAAC;AACF,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AAOpD,OAAO,EAAgD,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAgB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,cAAc,EACf,MAAM,qBAAqB,CAAC;AAU7B;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACrB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAItC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,UAAU,EACvB,OAAO,EAAE,aAAa,GACrB,MAAM,CAAC,UAAU,CAInB;AAyBD,4FAA4F;AAC5F,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAiB/C,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,iBAAiB,EAAE,GAAG,SAAS,GAC3C,iBAAiB,EAAE,CAarB;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,GAAG,SAAS,GAAG,MAAM,CAGzF;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,iBAAiB,EAAE,EAChC,IAAI,GAAE,MAAoB,EAC1B,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAgCtC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,SAAS,CAAC,eAAe,EAAE,GACvC,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAGxC;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,aAAa,CAAC,EACrD,IAAI,GAAE,MAAoB,EAC1B,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAKjD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAuB9E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EACjD,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,CAAC,CAYjE;AAuMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD;AAQD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,WAAW,CAAC,CActB;AA4DD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,6BAA6B,QAAa,CAAC;AAQxD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC1E,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAO3C;AAYD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAUhE;AAED,gGAAgG;AAChG,wBAAgB,8BAA8B,IAAI,MAAM,CASvD;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUhE;AAED,2EAA2E;AAC3E,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAwCD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAcxE;AAuBD,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,iGAAiG;IACjG,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,0GAA0G;IAC1G,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,qBAAqB,EAC1B,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,YAAY,CAAC,CA8KvB;AA+BD;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,QAAsB,CAAC;AAE/D,4FAA4F;AAC5F,eAAO,MAAM,kCAAkC,QAAgC,CAAC;AAKhF;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS9D;AAED,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM3D;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU3D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAa7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,iGAAiG;IACjG,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,6FAA6F;IAC7F,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,sFAAsF;IACtF,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,4EAA4E;IAC5E,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAClD,+GAA+G;IAC/G,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;CAC7D;AAED,6DAA6D;AAC7D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAM9D;AAQD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,4BAA4B,EACjC,IAAI,GAAE,6BAAkC,GACvC,OAAO,CAAC,YAAY,CAAC,CAiNvB"}
|