@cotal-ai/cli 0.35.0 → 0.37.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/dist/commands/agents.js +1 -1
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +4 -1
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/clean.d.ts +1 -1
- package/dist/commands/clean.d.ts.map +1 -1
- package/dist/commands/clean.js +48 -20
- package/dist/commands/clean.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +21 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/down-manifest.js +7 -7
- package/dist/commands/down-manifest.js.map +1 -1
- package/dist/commands/down.d.ts +10 -2
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +21 -10
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/endpoints.d.ts +1 -1
- package/dist/commands/endpoints.d.ts.map +1 -1
- package/dist/commands/endpoints.js +1 -0
- package/dist/commands/endpoints.js.map +1 -1
- package/dist/commands/ext.d.ts.map +1 -1
- package/dist/commands/ext.js +3 -1
- package/dist/commands/ext.js.map +1 -1
- package/dist/commands/join.d.ts.map +1 -1
- package/dist/commands/join.js +5 -1
- package/dist/commands/join.js.map +1 -1
- package/dist/commands/mint.d.ts.map +1 -1
- package/dist/commands/mint.js +4 -3
- package/dist/commands/mint.js.map +1 -1
- package/dist/commands/setup.d.ts +34 -8
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +130 -267
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spawn-manifest.js +5 -5
- package/dist/commands/spawn-manifest.js.map +1 -1
- package/dist/commands/spawn.d.ts.map +1 -1
- package/dist/commands/spawn.js +33 -24
- package/dist/commands/spawn.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +44 -18
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/up.d.ts +4 -2
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +204 -120
- package/dist/commands/up.js.map +1 -1
- package/dist/console/ui/Detail.js +1 -1
- package/dist/console/ui/Detail.js.map +1 -1
- package/dist/console/ui/Roster.d.ts.map +1 -1
- package/dist/console/ui/Roster.js +9 -2
- package/dist/console/ui/Roster.js.map +1 -1
- package/dist/console/ui/StatusBar.d.ts.map +1 -1
- package/dist/console/ui/StatusBar.js +1 -1
- package/dist/console/ui/StatusBar.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-skills.d.ts +4 -4
- package/dist/lib/agent-skills.js +4 -4
- package/dist/lib/control.d.ts.map +1 -1
- package/dist/lib/control.js +3 -2
- package/dist/lib/control.js.map +1 -1
- package/dist/lib/delivery-proc.d.ts +8 -7
- package/dist/lib/delivery-proc.d.ts.map +1 -1
- package/dist/lib/delivery-proc.js +69 -40
- package/dist/lib/delivery-proc.js.map +1 -1
- package/dist/lib/manager-proc.d.ts +16 -10
- package/dist/lib/manager-proc.d.ts.map +1 -1
- package/dist/lib/manager-proc.js +65 -36
- package/dist/lib/manager-proc.js.map +1 -1
- package/dist/lib/manifest/ledger.d.ts +7 -2
- package/dist/lib/manifest/ledger.d.ts.map +1 -1
- package/dist/lib/manifest/ledger.js +9 -4
- package/dist/lib/manifest/ledger.js.map +1 -1
- package/dist/lib/manifest/live.d.ts.map +1 -1
- package/dist/lib/manifest/live.js +3 -0
- package/dist/lib/manifest/live.js.map +1 -1
- package/dist/lib/restore.d.ts +6 -6
- package/dist/lib/restore.d.ts.map +1 -1
- package/dist/lib/restore.js +25 -15
- package/dist/lib/restore.js.map +1 -1
- package/dist/lib/status.d.ts +5 -2
- package/dist/lib/status.d.ts.map +1 -1
- package/dist/lib/status.js +8 -5
- package/dist/lib/status.js.map +1 -1
- package/dist/lib/transient.d.ts.map +1 -1
- package/dist/lib/transient.js +1 -0
- package/dist/lib/transient.js.map +1 -1
- package/dist/lib/version.d.ts +6 -0
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +14 -0
- package/dist/lib/version.js.map +1 -1
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +1 -0
- package/dist/render.js.map +1 -1
- package/dist/seed/authority.d.ts +5 -1
- package/dist/seed/authority.d.ts.map +1 -1
- package/dist/seed/authority.js +10 -3
- package/dist/seed/authority.js.map +1 -1
- package/dist/seed/paths.d.ts +6 -0
- package/dist/seed/paths.d.ts.map +1 -1
- package/dist/seed/paths.js +21 -15
- package/dist/seed/paths.js.map +1 -1
- package/dist/seed/reconcile.d.ts.map +1 -1
- package/dist/seed/reconcile.js +37 -5
- package/dist/seed/reconcile.js.map +1 -1
- package/dist/ui.js +1 -1
- package/dist/ui.js.map +1 -1
- package/dist/view/mesh-view.d.ts +4 -0
- package/dist/view/mesh-view.d.ts.map +1 -1
- package/dist/view/mesh-view.js +10 -0
- package/dist/view/mesh-view.js.map +1 -1
- package/package.json +6 -5
- package/cotal-skills/.claude-plugin/plugin.json +0 -6
package/dist/commands/setup.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { spawnSync } from "node:child_process";
|
|
2
|
-
import {
|
|
3
|
-
import { dirname, join
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
4
|
import * as p from "@clack/prompts";
|
|
5
|
-
import {} from "@cotal-ai/core";
|
|
5
|
+
import { registry } from "@cotal-ai/core";
|
|
6
6
|
import { homeCotalDir, installedExtensionVersion, loadExtensionsManifest, manifestExtensionNames, provenance } from "@cotal-ai/workspace";
|
|
7
7
|
import { materializeExtension } from "../ext-loader.js";
|
|
8
|
-
import { agentSkillsHome, canonicalSkillNames, installAgentSkills } from "../lib/agent-skills.js";
|
|
8
|
+
import { agentSkillsHome, canonicalSkillNames, canonicalSkillsDir, installAgentSkills } from "../lib/agent-skills.js";
|
|
9
9
|
import { cliVersion } from "../lib/version.js";
|
|
10
10
|
import { brand, brandBold, dim, ok, note, splash } from "../lib/theme.js";
|
|
11
11
|
import { runSteps } from "../lib/steps.js";
|
|
@@ -19,7 +19,6 @@ import { cotalOnPath, displayCmd, isNpx, selfArgv } from "../lib/self-exec.js";
|
|
|
19
19
|
import { cotalPath } from "../lib/paths.js";
|
|
20
20
|
const ONBOARD_VERSION = "2";
|
|
21
21
|
const README_URL = "https://github.com/Cotal-AI/Cotal/blob/main/README.md";
|
|
22
|
-
const CC_DOCS_URL = "https://github.com/Cotal-AI/Cotal/blob/main/docs/connect-claude.md";
|
|
23
22
|
const NATS_RELEASES_URL = "https://github.com/nats-io/nats-server/releases";
|
|
24
23
|
/** `cotal setup`'s grammar — configure-only knobs. The old `--auth`/`--open` flags configured the
|
|
25
24
|
* MESH MODE at setup-launch time; setup no longer launches anything, so both are gone here —
|
|
@@ -29,6 +28,7 @@ export const setupFlags = [
|
|
|
29
28
|
{ name: "full", type: "boolean", description: "redo the full guided flow (implies --demo)" },
|
|
30
29
|
{ name: "demo", type: "boolean", description: "also seed the guided expert team (david, sven, me)" },
|
|
31
30
|
{ name: "yes", type: "boolean", short: "y", description: "non-interactive accept-all (agents/CI)" },
|
|
31
|
+
{ name: "skills", type: "boolean", description: "reconcile Cotal skills through installed connector providers and ~/.agents/skills; no personas or onboard writes" },
|
|
32
32
|
];
|
|
33
33
|
/**
|
|
34
34
|
* `cotal setup`: guided setup — CONFIGURE-ONLY, state-independent. It checks prerequisites,
|
|
@@ -42,12 +42,25 @@ export const setupFlags = [
|
|
|
42
42
|
*/
|
|
43
43
|
export async function setup(args) {
|
|
44
44
|
const values = args.values;
|
|
45
|
+
if (values.skills) {
|
|
46
|
+
if (values.full || values.demo)
|
|
47
|
+
throw new Error("--skills cannot be combined with --full or --demo");
|
|
48
|
+
await runSkillsOnly();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
45
51
|
const demo = Boolean(values.demo) || Boolean(values.full); // --full is the whole guided flow ⇒ team
|
|
46
52
|
if (!isOnboarded() || values.full || values.yes)
|
|
47
53
|
await runFirstRun(Boolean(values.yes), demo);
|
|
48
54
|
else
|
|
49
55
|
await runEnsure(demo);
|
|
50
56
|
}
|
|
57
|
+
/** Skills-only write for the status card: let installed connectors reconcile their own harness,
|
|
58
|
+
* then reconcile `~/.agents/skills`. Does not seed personas, offer a global install, or write the
|
|
59
|
+
* onboarded stamp. */
|
|
60
|
+
async function runSkillsOnly() {
|
|
61
|
+
await reconcileConnectorSkills();
|
|
62
|
+
seedAgentSkills();
|
|
63
|
+
}
|
|
51
64
|
/** The full, narrated first-run experience. `yes` = non-interactive accept-all; `demo` also seeds
|
|
52
65
|
* the guided expert team. Configure-only: prerequisites are CHECKED (never started); the finale
|
|
53
66
|
* tells the user what to run. */
|
|
@@ -83,25 +96,39 @@ async function runFirstRun(yes, demo) {
|
|
|
83
96
|
];
|
|
84
97
|
if (!(await runSteps(core, log, { yes })))
|
|
85
98
|
return abort();
|
|
86
|
-
// Connectors: which agents should be able to join.
|
|
87
|
-
//
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
// Connectors: which agents should be able to join. MEMBERSHIP is the live registry plus the
|
|
100
|
+
// installed extension manifest — every connector that declares itself is a choice — and each
|
|
101
|
+
// candidate's hints come from that connector's own declarations (`requires`, `setup`,
|
|
102
|
+
// `pluginRoot`). No connector name is privileged here: the install itself is whatever the
|
|
103
|
+
// connector's own setup provider declares.
|
|
104
|
+
const candidates = setupConnectorCandidates(await setupConnectorSurface());
|
|
105
|
+
const selected = await pickConnectors(candidates, yes);
|
|
106
|
+
for (const candidate of candidates) {
|
|
107
|
+
if (!selected.has(candidate.value))
|
|
108
|
+
continue;
|
|
109
|
+
if (candidate.missing.length) {
|
|
110
|
+
p.log.warn(`${candidate.value} needs ${candidate.missing.join(", ")} on PATH. Install it, then re-run ${displayCmd()} setup.`);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const step = await connectorSetupStep(candidate.connector, "connector");
|
|
114
|
+
if (step) {
|
|
115
|
+
if (!(await runSteps([step], log, { yes })))
|
|
116
|
+
return abort();
|
|
104
117
|
}
|
|
118
|
+
else {
|
|
119
|
+
p.log.success(`${candidate.value} ready (auto-wired when you spawn it)`);
|
|
120
|
+
log.line(`connector ${candidate.value}: ready (no install)`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// A connector's skills action is independent of the mesh connector selection: it runs for every
|
|
124
|
+
// connector whose harness is present, so someone using that harness gets Cotal's authored skills
|
|
125
|
+
// even without joining the mesh through it (Claude Code, for one, does not read `.agents/skills`).
|
|
126
|
+
for (const candidate of candidates) {
|
|
127
|
+
if (candidate.missing.length)
|
|
128
|
+
continue;
|
|
129
|
+
const step = await connectorSetupStep(candidate.connector, "skills");
|
|
130
|
+
if (step && !(await runSteps([step], log, { yes })))
|
|
131
|
+
return abort();
|
|
105
132
|
}
|
|
106
133
|
// Your agent: the generic `default` persona a bare `cotal spawn` launches — one agent, yours to
|
|
107
134
|
// shape. This is the whole first-run default; the guided expert team is opt-in right below.
|
|
@@ -195,69 +222,57 @@ function runningVersion() {
|
|
|
195
222
|
return null;
|
|
196
223
|
}
|
|
197
224
|
}
|
|
198
|
-
/**
|
|
199
|
-
*
|
|
200
|
-
|
|
201
|
-
|
|
225
|
+
/** Every connector on the setup surface becomes a choice. Its OWN declarations drive the hints —
|
|
226
|
+
* `requires` for readiness, `setup` for whether it runs connector-owned setup at all, `pluginRoot`
|
|
227
|
+
* for how that reads — and connector names never gate membership. Exported for the genericity smoke. */
|
|
228
|
+
export function setupConnectorCandidates(connectors, pathProbe = onPath) {
|
|
229
|
+
return [...connectors]
|
|
230
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
231
|
+
.map((connector) => {
|
|
232
|
+
const missing = (connector.requires ?? []).filter((bin) => !pathProbe(bin));
|
|
233
|
+
return {
|
|
234
|
+
connector,
|
|
235
|
+
value: connector.name,
|
|
236
|
+
label: connector.name,
|
|
237
|
+
missing,
|
|
238
|
+
hint: missing.length
|
|
239
|
+
? `${missing.join(", ")} not on PATH`
|
|
240
|
+
: connector.setup
|
|
241
|
+
? connector.pluginRoot
|
|
242
|
+
? "installs a plugin"
|
|
243
|
+
: "runs its own setup"
|
|
244
|
+
: "ready at spawn",
|
|
245
|
+
};
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/** Materialize every connector advertised by the registry or installed manifest. Exported so the
|
|
249
|
+
* fail-loud smoke reaches the same discovery boundary as guided setup. */
|
|
250
|
+
export async function setupConnectorSurface() {
|
|
251
|
+
const names = new Set(registry.all("connector").map((connector) => connector.name));
|
|
252
|
+
for (const name of manifestExtensionNames("connector"))
|
|
253
|
+
names.add(name);
|
|
254
|
+
return Promise.all([...names].sort().map((name) => materializeExtension({ kind: "connector", name })));
|
|
255
|
+
}
|
|
256
|
+
async function pickConnectors(candidates, yes) {
|
|
257
|
+
const all = candidates.filter((candidate) => candidate.missing.length === 0).map((candidate) => candidate.value);
|
|
202
258
|
if (yes || !process.stdin.isTTY)
|
|
203
259
|
return new Set(all);
|
|
204
|
-
const labels = { claude: "Claude Code", opencode: "OpenCode" };
|
|
205
260
|
// Common case: show what was detected and offer a visible Continue button (clack's multiselect
|
|
206
261
|
// has no native one). Only "Customize" (or nothing detected) drops into the toggle list.
|
|
207
262
|
if (all.length) {
|
|
208
|
-
note(all.
|
|
263
|
+
note(all.join(", "), "Agents found");
|
|
209
264
|
const go = abortIfCancel(await p.confirm({ message: "Set these up?", active: "Continue", inactive: "Customize", initialValue: true }));
|
|
210
265
|
if (go)
|
|
211
266
|
return new Set(all);
|
|
212
267
|
}
|
|
213
268
|
const picked = abortIfCancel(await p.multiselect({
|
|
214
269
|
message: "Pick the agents to set up (space toggles, enter continues)",
|
|
215
|
-
options: [
|
|
216
|
-
value: n,
|
|
217
|
-
label: labels[n],
|
|
218
|
-
hint: !found[n] ? "not on PATH" : n === "claude" ? "installs a plugin" : "ready at spawn",
|
|
219
|
-
})),
|
|
270
|
+
options: [...candidates],
|
|
220
271
|
initialValues: all,
|
|
221
272
|
required: false,
|
|
222
273
|
}));
|
|
223
274
|
return new Set(picked);
|
|
224
275
|
}
|
|
225
|
-
/** The Claude Code plugin install, as a step (spinner + failure handling + handoff). Exported for the
|
|
226
|
-
* setup-failloud smoke (removed-connector skip vs broken-connector throw). */
|
|
227
|
-
export function claudePluginStep() {
|
|
228
|
-
return {
|
|
229
|
-
name: "claude-plugin",
|
|
230
|
-
title: "Install the Claude Code plugin",
|
|
231
|
-
explain: "Lets a Claude Code session join the web and wake on peer messages.",
|
|
232
|
-
context: [join(homeCotalDir(), "claude-plugin"), CC_DOCS_URL],
|
|
233
|
-
async run() {
|
|
234
|
-
// The claude connector is a seeded/`ext add`ed plugin now, not a static import. Only a GENUINE
|
|
235
|
-
// removal (absent from the manifest) skips the plugin; a present-but-broken connector (version
|
|
236
|
-
// skew, incompatible core, missing entry, import throw) must fail loud through runSteps with the
|
|
237
|
-
// real repair diagnostic, never be misreported as a deliberate removal.
|
|
238
|
-
if (!manifestExtensionNames("connector").includes("claude"))
|
|
239
|
-
return "claude connector not installed - skipping the plugin (re-add it: cotal ext add @cotal-ai/connector-claude-code)";
|
|
240
|
-
const claude = await materializeExtension({ kind: "connector", name: "claude" });
|
|
241
|
-
installConnectorPlugin(claude);
|
|
242
|
-
return "cotal@cotal-mesh (local scope)";
|
|
243
|
-
},
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/** The Claude Code skills-plugin install, as a step. Independent of the mesh connector: it runs whenever
|
|
247
|
-
* Claude is on PATH, so a Claude user gets Cotal's authored skills (team-topology today) even with no
|
|
248
|
-
* connector, and a repeat `cotal setup` updates them. Installed at user scope (machine-wide). */
|
|
249
|
-
export function skillsPluginStep() {
|
|
250
|
-
return {
|
|
251
|
-
name: "claude-skills-plugin",
|
|
252
|
-
title: "Add Cotal's skills to Claude Code",
|
|
253
|
-
explain: "Installs Cotal's authored skills (team-topology) as a Claude Code plugin, updatable and removable on their own.",
|
|
254
|
-
context: [join(homeCotalDir(), "claude-plugin"), CC_DOCS_URL],
|
|
255
|
-
async run() {
|
|
256
|
-
installSkillsPlugin();
|
|
257
|
-
return "cotal-skills@cotal-mesh (user scope)";
|
|
258
|
-
},
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
276
|
/** The compact repeat-run: a one-glance status card, plus re-seeding the default persona if it's
|
|
262
277
|
* missing (announced). Nothing is launched — the card tells you what's down and how to start it.
|
|
263
278
|
* `--demo` here adds the guided team to an already-configured machine (no need to re-narrate). */
|
|
@@ -265,7 +280,7 @@ async function runEnsure(demo) {
|
|
|
265
280
|
seedDefaultAgent(); // ensure `cotal spawn` (no name) always has a default to launch
|
|
266
281
|
if (demo)
|
|
267
282
|
seedDemoTeam(); // `cotal setup --demo` on a configured machine: add the team, then card
|
|
268
|
-
|
|
283
|
+
await reconcileConnectorSkills();
|
|
269
284
|
seedAgentSkills(); // reconcile the cross-vendor `.agents/skills` drop so an upgrade + re-run isn't stale
|
|
270
285
|
// A repeat `npx cotal-ai setup` on an onboarded machine that still lacks a durable `cotal` must
|
|
271
286
|
// ALSO get the global-install offer — the first-run stamp is written once, so without this any
|
|
@@ -276,16 +291,50 @@ async function runEnsure(demo) {
|
|
|
276
291
|
await offerGlobalInstall(false);
|
|
277
292
|
await readyCard(process.cwd());
|
|
278
293
|
}
|
|
279
|
-
/**
|
|
280
|
-
*
|
|
281
|
-
*
|
|
282
|
-
*
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
294
|
+
/** Resolve a connector's declared setup provider from the CONNECTOR the surface produced, never
|
|
295
|
+
* from a name this file knows. A connector that declares none simply owns no setup; a DECLARED
|
|
296
|
+
* provider that is missing or broken fails loud, because the base CLI never substitutes a built-in
|
|
297
|
+
* harness implementation. Exported for the fail-loud smoke. */
|
|
298
|
+
export async function connectorSetupProvider(connector) {
|
|
299
|
+
if (!connector.setup)
|
|
300
|
+
return null;
|
|
301
|
+
return materializeExtension(connector.setup);
|
|
302
|
+
}
|
|
303
|
+
/** One connector-owned setup action as a narrated step, or null when this connector declares no
|
|
304
|
+
* provider, no such action, or its provider's executables are absent — none of which is a failure
|
|
305
|
+
* of guided setup (the cross-vendor skills drop still reconciles). Exported for the fail-loud
|
|
306
|
+
* smoke, which drives this exact seam. */
|
|
307
|
+
export async function connectorSetupStep(connector, action) {
|
|
308
|
+
const provider = await connectorSetupProvider(connector);
|
|
309
|
+
const setup = provider?.[action];
|
|
310
|
+
if (!provider || !setup || !setupProviderAvailable(provider))
|
|
311
|
+
return null;
|
|
312
|
+
const input = action === "skills" ? connectorSkillsInput() : undefined;
|
|
313
|
+
return {
|
|
314
|
+
name: setup.name,
|
|
315
|
+
title: setup.title,
|
|
316
|
+
explain: setup.explain,
|
|
317
|
+
context: [...(setup.context ?? [])],
|
|
318
|
+
async run() { return setup.run(input); },
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
/** The generic Cotal inputs every connector-owned skills installer receives. Nothing in it names a
|
|
322
|
+
* harness: the provider decides how its own harness consumes the cross-vendor skills. */
|
|
323
|
+
function connectorSkillsInput() {
|
|
324
|
+
return { skillsDir: canonicalSkillsDir(), version: cliVersion(), stateDir: homeCotalDir() };
|
|
325
|
+
}
|
|
326
|
+
async function reconcileConnectorSkills() {
|
|
327
|
+
for (const connector of await setupConnectorSurface()) {
|
|
328
|
+
const provider = await connectorSetupProvider(connector);
|
|
329
|
+
if (!provider?.skills || !setupProviderAvailable(provider))
|
|
330
|
+
continue;
|
|
331
|
+
await provider.skills.run(connectorSkillsInput());
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/** Pure availability rule for connector-owned setup actions. No executable means no harness write;
|
|
335
|
+
* the caller still continues to the cross-vendor Agent Skills reconcile. */
|
|
336
|
+
export function setupProviderAvailable(provider) {
|
|
337
|
+
return !(provider.requires?.some((command) => !onPath(command)) ?? false);
|
|
289
338
|
}
|
|
290
339
|
/** True when an installed extension contributes the `web` command (the dashboard moved out to
|
|
291
340
|
* `@cotal-ai/web` in stage 4) — decides whether the ready-card says "start it" or "install it". */
|
|
@@ -327,192 +376,6 @@ async function readyCard(cwd) {
|
|
|
327
376
|
`more: ${dim(`${cmd} web · ${cmd} down · ${cmd} feedback "<msg>" · ${cmd} --help`)}`,
|
|
328
377
|
].join("\n"), brandBold("cotal · status"));
|
|
329
378
|
}
|
|
330
|
-
/** The shared marketplace dir for the Cotal Claude Code plugins (materialized under ~/.cotal so it
|
|
331
|
-
* survives npx cache eviction). The marketplace name must stay `cotal-mesh` (the connector's channel
|
|
332
|
-
* ref `plugin:cotal@cotal-mesh` depends on it). Two plugins live here, installed by independent steps:
|
|
333
|
-
* `cotal` (the mesh connector, shipped by @cotal-ai/connector-claude-code, `--scope local`) and
|
|
334
|
-
* `cotal-skills` (Cotal-authored skills shipped in THIS CLI package, `--scope user`). They install,
|
|
335
|
-
* update, and uninstall on their own. */
|
|
336
|
-
function claudeMarketDir() {
|
|
337
|
-
return join(homeCotalDir(), "claude-plugin");
|
|
338
|
-
}
|
|
339
|
-
/** The exact set of plugins Cotal materializes into the shared marketplace. The marketplace manifest is
|
|
340
|
-
* built from THIS list (not an arbitrary `readdir`), so a crash remnant like `cotal.old.<pid>` or a
|
|
341
|
-
* third-party dir can never be published as a bogus marketplace entry. */
|
|
342
|
-
const COTAL_PLUGINS = ["cotal", "cotal-skills"];
|
|
343
|
-
/** Materialize one plugin into the shared marketplace by REPLACING its dir, never merging into a stale
|
|
344
|
-
* one: a leftover `hooks/`, `.mcp.json`, or `agents/` in an old plugin dir would be auto-discovered by
|
|
345
|
-
* Claude and turn an otherwise data-only plugin into a code surface. Only the allowlisted assets are
|
|
346
|
-
* copied into a sibling staging dir; an optional release `version` is stamped into plugin.json (its
|
|
347
|
-
* manifest version is Claude's cache key, so a new release must present a new version to update a
|
|
348
|
-
* deployed install); then the live dir is moved aside and staging renamed in.
|
|
349
|
-
*
|
|
350
|
-
* The swap keeps a live source at all times: on a FAILED `staging -> dest` rename the moved-aside `old`
|
|
351
|
-
* is restored to `dest` before cleanup, and `old` is deleted only once the new dir is safely in place. A
|
|
352
|
-
* process crash mid-swap leaves `<name>.old.<pid>`/`<name>.staging.<pid>`; on the next run a leftover
|
|
353
|
-
* `old` is restored to `dest` if the live dir was lost, then remnants are swept, and none are ever
|
|
354
|
-
* published (the marketplace is built from an explicit plugin list, not a readdir). */
|
|
355
|
-
function materializePluginDir(name, root, assets, version) {
|
|
356
|
-
const marketDir = claudeMarketDir();
|
|
357
|
-
mkdirSync(marketDir, { recursive: true });
|
|
358
|
-
const dest = join(marketDir, name);
|
|
359
|
-
const staging = `${dest}.staging.${process.pid}`;
|
|
360
|
-
const old = `${dest}.old.${process.pid}`;
|
|
361
|
-
// Recover, THEN sweep, orphan swap dirs left by a crashed prior run. If `dest` is absent but a crash
|
|
362
|
-
// left a moved-aside `<name>.old.*` (a previously-live, complete copy), restore it first so we never
|
|
363
|
-
// delete the only recoverable source before the rebuild proves out. Staging dirs may be half-copied,
|
|
364
|
-
// so they are only swept, never promoted.
|
|
365
|
-
const orphans = readdirSync(marketDir, { withFileTypes: true })
|
|
366
|
-
.filter((e) => e.isDirectory() && (e.name.startsWith(`${name}.old.`) || e.name.startsWith(`${name}.staging.`)))
|
|
367
|
-
.map((e) => e.name);
|
|
368
|
-
if (!existsSync(dest)) {
|
|
369
|
-
const recoverable = orphans.find((n) => n.startsWith(`${name}.old.`));
|
|
370
|
-
if (recoverable)
|
|
371
|
-
renameSync(join(marketDir, recoverable), dest);
|
|
372
|
-
}
|
|
373
|
-
for (const n of orphans)
|
|
374
|
-
rmSync(join(marketDir, n), { recursive: true, force: true }); // the recovered one (if any) is already renamed away
|
|
375
|
-
let movedAside = false; // dest -> old happened
|
|
376
|
-
let swapped = false; // staging -> dest happened
|
|
377
|
-
try {
|
|
378
|
-
for (const f of assets)
|
|
379
|
-
cpSync(join(root, f), join(staging, f), { recursive: true, dereference: true });
|
|
380
|
-
if (version) {
|
|
381
|
-
const pj = join(staging, ".claude-plugin", "plugin.json");
|
|
382
|
-
const manifest = JSON.parse(readFileSync(pj, "utf8"));
|
|
383
|
-
manifest.version = version;
|
|
384
|
-
writeFileSync(pj, JSON.stringify(manifest, null, 2) + "\n");
|
|
385
|
-
}
|
|
386
|
-
if (existsSync(dest)) {
|
|
387
|
-
renameSync(dest, old); // move the live dir aside (recoverable) rather than delete-then-rebuild
|
|
388
|
-
movedAside = true;
|
|
389
|
-
}
|
|
390
|
-
renameSync(staging, dest);
|
|
391
|
-
swapped = true;
|
|
392
|
-
}
|
|
393
|
-
finally {
|
|
394
|
-
// If the swap failed after moving the live dir aside, put it back so the marketplace keeps a source.
|
|
395
|
-
if (movedAside && !swapped && !existsSync(dest)) {
|
|
396
|
-
try {
|
|
397
|
-
renameSync(old, dest);
|
|
398
|
-
}
|
|
399
|
-
catch {
|
|
400
|
-
/* best effort: `old` remains on disk for manual recovery */
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
rmSync(staging, { recursive: true, force: true });
|
|
404
|
-
if (swapped || !movedAside)
|
|
405
|
-
rmSync(old, { recursive: true, force: true }); // drop the saved copy only once the new dir is in place (or none was saved)
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
/** Rewrite marketplace.json to list EXACTLY the Cotal plugins currently materialized, so the connector
|
|
409
|
-
* and skills plugins (installed in either order, by independent steps) always coexist, and a removed one
|
|
410
|
-
* drops out. Built from the explicit `COTAL_PLUGINS` list (not a `readdir`), so a crash remnant or a
|
|
411
|
-
* foreign directory can never be published as a marketplace entry. */
|
|
412
|
-
function writeMarketplaceManifest() {
|
|
413
|
-
const marketDir = claudeMarketDir();
|
|
414
|
-
const plugins = COTAL_PLUGINS.filter((name) => existsSync(join(marketDir, name, ".claude-plugin", "plugin.json")))
|
|
415
|
-
.map((name) => ({ name, source: `./${name}` }))
|
|
416
|
-
.sort((a, b) => a.name.localeCompare(b.name));
|
|
417
|
-
mkdirSync(join(marketDir, ".claude-plugin"), { recursive: true });
|
|
418
|
-
writeFileSync(join(marketDir, ".claude-plugin", "marketplace.json"), JSON.stringify({ name: "cotal-mesh", description: "Cotal for Claude Code: the mesh connector plus Cotal-authored skills.", owner: { name: "Cotal" }, plugins }, null, 2));
|
|
419
|
-
provenance.wrote("plugin marketplace", marketDir);
|
|
420
|
-
}
|
|
421
|
-
/** Register (or refresh) the materialized marketplace with Claude. */
|
|
422
|
-
function registerMarketplace() {
|
|
423
|
-
const add = claude("plugin", "marketplace", "add", claudeMarketDir());
|
|
424
|
-
if (add.status !== 0) {
|
|
425
|
-
const update = claude("plugin", "marketplace", "update", "cotal-mesh");
|
|
426
|
-
if (update.status !== 0)
|
|
427
|
-
throw new Error(`couldn't register the plugin marketplace:\n${add.output}\n${update.output}`);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
/** Install a plugin at `scope`, or UPDATE it if already installed. A bare re-`install` is a no-op that
|
|
431
|
-
* keeps the cached (possibly older) version; pairing a release-stamped manifest version with an explicit
|
|
432
|
-
* `plugin update` is what actually refreshes a deployed install. Then verify it truly loaded, at
|
|
433
|
-
* `expectedVersion` when one is given (so a cache that didn't update is caught, not passed). */
|
|
434
|
-
function installOrUpdatePlugin(name, scope, expectedVersion) {
|
|
435
|
-
registerMarketplace();
|
|
436
|
-
const install = claude("plugin", "install", `${name}@cotal-mesh`, "--scope", scope);
|
|
437
|
-
// Trigger the update on what `plugin install` SAYS, not on its exit status: when the plugin is
|
|
438
|
-
// already installed it reports that and exits ZERO. Gating the update on a non-zero status meant
|
|
439
|
-
// it never ran on an upgrade, so the cache kept the old version and verifyPluginLoaded below
|
|
440
|
-
// threw "the update did not take" at every customer who upgraded.
|
|
441
|
-
const already = /already installed/i.test(install.output);
|
|
442
|
-
if (install.status !== 0 && !already)
|
|
443
|
-
throw new Error(`plugin install failed (${name}):\n${install.output}`);
|
|
444
|
-
if (already) {
|
|
445
|
-
const update = claude("plugin", "update", `${name}@cotal-mesh`, "--scope", scope);
|
|
446
|
-
if (update.status !== 0)
|
|
447
|
-
throw new Error(`plugin update failed (${name}):\n${update.output}`);
|
|
448
|
-
}
|
|
449
|
-
verifyPluginLoaded(name, scope, expectedVersion);
|
|
450
|
-
}
|
|
451
|
-
/** Verify a plugin actually loaded at the intended scope via `claude plugin list --json` (exact id,
|
|
452
|
-
* scope, enabled, load errors, and version when pinned). The human-output substring check this replaces
|
|
453
|
-
* accepted a failed-to-load entry (its name still prints) and let `cotal-skills` satisfy a check for
|
|
454
|
-
* `cotal`. For local scope the entry must be THIS project's (there is one `cotal@cotal-mesh` per
|
|
455
|
-
* project, some from other projects with load errors), matched by `projectPath`. */
|
|
456
|
-
function verifyPluginLoaded(name, scope, expectedVersion) {
|
|
457
|
-
const r = claude("plugin", "list", "--json");
|
|
458
|
-
if (r.status !== 0)
|
|
459
|
-
throw new Error(`\`claude plugin list --json\` failed:\n${r.output}`);
|
|
460
|
-
let entries;
|
|
461
|
-
try {
|
|
462
|
-
const parsed = JSON.parse(r.output);
|
|
463
|
-
entries = Array.isArray(parsed) ? parsed : [];
|
|
464
|
-
}
|
|
465
|
-
catch {
|
|
466
|
-
throw new Error(`could not parse \`claude plugin list --json\`:\n${r.output}`);
|
|
467
|
-
}
|
|
468
|
-
const id = `${name}@cotal-mesh`;
|
|
469
|
-
const here = resolve(process.cwd());
|
|
470
|
-
const match = entries.find((e) => e.id === id && e.scope === scope && (scope !== "local" || (typeof e.projectPath === "string" && resolve(e.projectPath) === here)));
|
|
471
|
-
const where = scope === "local" ? `${scope}, project ${here}` : scope;
|
|
472
|
-
if (!match)
|
|
473
|
-
throw new Error(`plugin ${id} (scope ${where}) is not present in \`claude plugin list --json\` after install`);
|
|
474
|
-
if (match.enabled === false)
|
|
475
|
-
throw new Error(`plugin ${id} installed but disabled`);
|
|
476
|
-
const errs = (match.errors ?? match.error);
|
|
477
|
-
if (Array.isArray(errs) ? errs.length > 0 : Boolean(errs))
|
|
478
|
-
throw new Error(`plugin ${id} loaded with errors: ${JSON.stringify(errs)}`);
|
|
479
|
-
if (expectedVersion && match.version !== expectedVersion)
|
|
480
|
-
throw new Error(`plugin ${id} is at version ${String(match.version)}, expected ${expectedVersion} (the update did not take)`);
|
|
481
|
-
}
|
|
482
|
-
/** Install the connector plugin (`cotal`, `--scope local`; its lifecycle hooks bind to a locally-installed
|
|
483
|
-
* plugin). Called from claudePluginStep when the claude connector is present in the manifest. */
|
|
484
|
-
function installConnectorPlugin(claudeConnector) {
|
|
485
|
-
const { pluginRoot } = claudeConnector;
|
|
486
|
-
if (!pluginRoot)
|
|
487
|
-
throw new Error('the "claude" connector ships no plugin assets');
|
|
488
|
-
for (const f of ["dist/mcp.cjs", "dist/hook.cjs", ".claude-plugin/plugin.json", ".mcp.json", "hooks/hooks.json"]) {
|
|
489
|
-
if (!existsSync(join(pluginRoot, f)))
|
|
490
|
-
throw new Error(`plugin asset missing: ${join(pluginRoot, f)} (in a dev clone, build it with: pnpm --filter @cotal-ai/connector-claude-code bundle)`);
|
|
491
|
-
}
|
|
492
|
-
materializePluginDir("cotal", pluginRoot, [".claude-plugin", ".mcp.json", "hooks", "dist/mcp.cjs", "dist/hook.cjs"]);
|
|
493
|
-
writeMarketplaceManifest();
|
|
494
|
-
installOrUpdatePlugin("cotal", "local");
|
|
495
|
-
}
|
|
496
|
-
/** Install/update the skills plugin (`cotal-skills`, `--scope user` so it is machine-wide, and independent
|
|
497
|
-
* of the mesh connector: it carries no code and no core dependency, so it can never be core-skewed). Its
|
|
498
|
-
* manifest version is stamped from the running CLI release, so an upgrade actually replaces the cached
|
|
499
|
-
* skill in Claude. The canonical `SKILL.md` files are shared with the `.agents/skills` drop and the
|
|
500
|
-
* website index (see lib/agent-skills.ts). Runs whenever Claude is on PATH, on first run AND on a repeat
|
|
501
|
-
* `cotal setup`. */
|
|
502
|
-
function installSkillsPlugin() {
|
|
503
|
-
const root = join(import.meta.dirname, "..", "..", "cotal-skills");
|
|
504
|
-
if (!existsSync(join(root, ".claude-plugin", "plugin.json")))
|
|
505
|
-
throw new Error(`cotal-skills plugin manifest missing at ${join(root, ".claude-plugin")}. Corrupt cotal-ai install.`);
|
|
506
|
-
canonicalSkillNames(); // fail loud on a missing/corrupt skills bundle before we touch Claude
|
|
507
|
-
const version = cliVersion();
|
|
508
|
-
materializePluginDir("cotal-skills", root, [".claude-plugin", "skills"], version);
|
|
509
|
-
writeMarketplaceManifest();
|
|
510
|
-
installOrUpdatePlugin("cotal-skills", "user", version);
|
|
511
|
-
}
|
|
512
|
-
function claude(...args) {
|
|
513
|
-
const r = spawnSync("claude", args, { encoding: "utf8" });
|
|
514
|
-
return { status: r.status, output: `${r.stdout ?? ""}${r.stderr ?? ""}`.trim() };
|
|
515
|
-
}
|
|
516
379
|
/** Reconcile Cotal's authored skills into the cross-vendor `~/.agents/skills` directory that Codex,
|
|
517
380
|
* Cursor, OpenCode, Gemini CLI, and Windsurf/Devin all read. Unlike the Claude Code plugin, these
|
|
518
381
|
* harnesses have no remote install/update path, so `cotal setup` reconciles the files (install/refresh,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAmE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAA0B,MAAM,wBAAwB,CAAC;AAC1H,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAa,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAC3E,MAAM,WAAW,GAAG,oEAAoE,CAAC;AACzF,MAAM,iBAAiB,GAAG,iDAAiD,CAAC;AAE5E;;;yFAGyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC5F,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACpG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wCAAwC,EAAE;CAC7D,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAgB;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAuC,CAAC;IAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;IACpG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG;QAAE,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;QACzF,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;kCAEkC;AAClC,KAAK,UAAU,WAAW,CAAC,GAAY,EAAE,IAAa;IACpD,MAAM,EAAE,CAAC;IACT,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACvC,IAAI,CACF,8NAA8N,EAC9N,2CAA2C,CAC5C,CAAC;IAEF,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAExC,4DAA4D;IAC5D,MAAM,IAAI,GAAW;QACnB;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,KAAK,CAAC,GAAG;gBACP,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,GAAG,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,qCAAqC,CAAC,CAAC;gBACpG,OAAO,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,CAAC;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,yGAAyG;YAClH,OAAO,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;YACxC,KAAK,CAAC,GAAG;gBACP,MAAM,CAAC,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACpC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC1E,CAAC;SACF;KACF,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,EAAE,CAAC;IAE1D,gFAAgF;IAChF,iFAAiF;IACjF,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAClD,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM;YACf,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,kFAAkF,UAAU,EAAE,SAAS,CAAC,CAAC;aACjH,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,EAAE,CAAC;IACjF,CAAC;IACD,oGAAoG;IACpG,sGAAsG;IACtG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,EAAE,CAAC;IAC1F,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAU,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,uCAAuC,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,sBAAsB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,gGAAgG;IAChG,4FAA4F;IAC5F,gBAAgB,EAAE,CAAC;IACnB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iGAAiG,CAAC,CAAC;IACjH,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,6FAA6F;IAC7F,IAAI,IAAI;QAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAE5B,sGAAsG;IACtG,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,GAAG,CAAC,OAAO,CACX,aAAa,MAAM,CAAC,SAAS,CAAC,MAAM,sBAAsB,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kFAAkF,CACrN,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;QACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAE7L,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9B,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/B,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,UAAU,GAAG,IAAI;QACrB,CAAC,CAAC;YACE,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;YAC7D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE;YAC1D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,kBAAkB,GAAG,aAAa,CAAC,EAAE;YACjF,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;YACzD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;SACvD;QACH,CAAC,CAAC;YACE,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;YAC7D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAE;YACvD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;YACzD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;SACvD,CAAC;IACN,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;YACE,GAAG,CAAC,4BAA4B,GAAG,MAAM,CAAC;YAC1C,GAAG,CAAC,4DAA4D,GAAG,eAAe,CAAC;SACpF,CAAC;IACN,IAAI,CACF;QACE,4FAA4F;QAC5F,EAAE;QACF,GAAG,UAAU;QACb,EAAE;QACF,GAAG,IAAI;QACP,GAAG,CAAC,yFAAyF,GAAG,oBAAoB,CAAC;KACtH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IACF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEhE,SAAS,KAAK;QACZ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;gGAGgG;AAChG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAY;IACnD,IAAI,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE;QAAE,OAAO,CAAC,0CAA0C;IAEjF,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,aAAa,CACtB,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,wDAAwD,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC3G,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,cAAc,CAAC,wBAAwB,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC9G,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,cAAc,EAAE,IAAI,QAAQ,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B,GAAG,CAAC,mBAAmB,CAAC,mBAAmB,GAAG,CAAC,cAAc,CAAC,GAAG,CAC1H,CAAC;IACJ,CAAC;AACH,CAAC;AAED;wFACwF;AACxF,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChG,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;gFACgF;AAChF,KAAK,UAAU,cAAc,CAC3B,KAA6C,EAC7C,GAAY;IAEZ,MAAM,GAAG,GAAI,CAAC,QAAQ,EAAE,UAAU,CAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,MAAM,GAA2B,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvF,+FAA+F;IAC/F,yFAAyF;IACzF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,EAAE,GAAG,aAAa,CACtB,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC7G,CAAC;QACF,IAAI,EAAE;YAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAC1B,MAAM,CAAC,CAAC,WAAW,CAAC;QAClB,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAG,CAAC,QAAQ,EAAE,UAAU,CAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB;SAC1F,CAAC,CAAC;QACH,aAAa,EAAE,GAAG;QAClB,QAAQ,EAAE,KAAK;KAChB,CAAC,CACH,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC;AACrC,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,gCAAgC;QACvC,OAAO,EAAE,oEAAoE;QAC7E,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC;QAC7D,KAAK,CAAC,GAAG;YACP,+FAA+F;YAC/F,+FAA+F;YAC/F,iGAAiG;YACjG,wEAAwE;YACxE,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzD,OAAO,iHAAiH,CAAC;YAC3H,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5F,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,gCAAgC,CAAC;QAC1C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;kGAEkG;AAClG,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,mCAAmC;QAC1C,OAAO,EAAE,iHAAiH;QAC1H,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC;QAC7D,KAAK,CAAC,GAAG;YACP,mBAAmB,EAAE,CAAC;YACtB,OAAO,sCAAsC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;mGAEmG;AACnG,KAAK,UAAU,SAAS,CAAC,IAAa;IACpC,gBAAgB,EAAE,CAAC,CAAC,gEAAgE;IACpF,IAAI,IAAI;QAAE,YAAY,EAAE,CAAC,CAAC,wEAAwE;IAClG,kBAAkB,EAAE,CAAC,CAAC,yIAAyI;IAC/J,eAAe,EAAE,CAAC,CAAC,sFAAsF;IACzG,gGAAgG;IAChG,+FAA+F;IAC/F,gGAAgG;IAChG,+FAA+F;IAC/F,kGAAkG;IAClG,+DAA+D;IAC/D,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;2DAI2D;AAC3D,SAAS,kBAAkB;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC9B,mBAAmB,EAAE,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC,sBAAsB,EAAE,eAAe,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED;oGACoG;AACpG,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,OAAO,sBAAsB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;IACvJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,+FAA+F;IAC/G,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,qGAAqG;AACrG,iGAAiG;AACjG,8CAA8C;AAE9C;gFACgF;AAChF,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,2CAA2C;IACxG,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACjF,IAAI,CACF;QACE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,cAAc,CAAC,EAAE,CAAC;QACrI,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,EAAE,CAAC;QACjI,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,GAAG,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC;QACtG,EAAE;QACF,oBAAoB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;QAC/C,qGAAqG;QACrG,OAAO;YACL,CAAC,CAAC,oBAAoB,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC5E,CAAC,CAAC,oBAAoB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,qCAAqC,GAAG,GAAG,GAAG,gBAAgB,CAAC,EAAE;QACtH,oBAAoB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,6BAA6B,CAAC,EAAE;QACnF,oBAAoB,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,WAAW,GAAG,uBAAuB,GAAG,SAAS,CAAC,EAAE;KAChG,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,CAAC,gBAAgB,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;0CAK0C;AAC1C,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;AAC/C,CAAC;AAED;;2EAE2E;AAC3E,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,CAAU,CAAC;AAEzD;;;;;;;;;;;wFAWwF;AACxF,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAY,EAAE,MAAgB,EAAE,OAAgB;IAC1F,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,IAAI,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC;IACjD,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,qGAAqG;IACrG,qGAAqG;IACrG,qGAAqG;IACrG,0CAA0C;IAC1C,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;SAC9G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC;QACtE,IAAI,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,qDAAqD;IAC5I,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,uBAAuB;IAC/C,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,2BAA2B;IAChD,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACxG,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAA4B,CAAC;YACjF,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;YAC3B,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,wEAAwE;YAC/F,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,qGAAqG;QACrG,IAAI,UAAU,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,OAAO,IAAI,CAAC,UAAU;YAAE,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,4EAA4E;IACzJ,CAAC;AACH,CAAC;AAED;;;uEAGuE;AACvE,SAAS,wBAAwB;IAC/B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC;SAC/G,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;SAC9C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,aAAa,CACX,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EACrD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,uEAAuE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACzK,CAAC;IACF,UAAU,CAAC,KAAK,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,sEAAsE;AACtE,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IACtE,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;AACH,CAAC;AAED;;;iGAGiG;AACjG,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa,EAAE,eAAwB;IAClF,mBAAmB,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACpF,+FAA+F;IAC/F,iGAAiG;IACjG,6FAA6F;IAC7F,kEAAkE;IAClE,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7G,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,aAAa,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAClF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AACnD,CAAC;AAED;;;;qFAIqF;AACrF,SAAS,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,eAAwB;IAC/E,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,IAAI,OAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAY,CAAC;QAC/C,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAyC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,EAAE,GAAG,GAAG,IAAI,aAAa,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CACzI,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,WAAW,KAAK,iEAAiE,CAAC,CAAC;IAC3H,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAY,CAAC;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvI,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe;QACtD,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,kBAAkB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,eAAe,4BAA4B,CAAC,CAAC;AAClI,CAAC;AAED;kGACkG;AAClG,SAAS,sBAAsB,CAAC,eAA0B;IACxD,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC;IACvC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,EAAE,4BAA4B,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACjH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,wFAAwF,CAAC,CAAC;IAC1J,CAAC;IACD,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;IACrH,wBAAwB,EAAE,CAAC;IAC3B,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;qBAKqB;AACrB,SAAS,mBAAmB;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;IACxH,mBAAmB,EAAE,CAAC,CAAC,sEAAsE;IAC7F,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,oBAAoB,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,wBAAwB,EAAE,CAAC;IAC3B,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,MAAM,CAAC,GAAG,IAAc;IAC/B,MAAM,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;AACnF,CAAC;AAED;;;;mEAImE;AACnE,SAAS,eAAe,CAAC,GAAqC;IAC5D,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;IAC/B,UAAU,CAAC,KAAK,CAAC,qBAAqB,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3D,GAAG,EAAE,IAAI,CACP,2BAA2B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjD,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAED;mFACmF;AACnF,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAElD;;;iBAGiB;AACjB,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,CAAC,kBAAkB;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,GAAG,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,kCAAkC;YACrE,UAAU,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;wCAQwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAc5B,CAAC;AAEF;uGACuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,qBAAqB;IACrB,eAAe;IACf,mCAAmC;IACnC,UAAU;IACV,eAAe;IACf,uBAAuB;IACvB,kBAAkB;IAClB,uBAAuB;IACvB,KAAK;IACL,EAAE;IACF,8FAA8F;IAC9F,gGAAgG;IAChG,2FAA2F;IAC3F,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;8FAE8F;AAC9F,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,OAAO,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,yBAAyB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAClD,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;mDAEmD;AACnD,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,UAAU,CAAC,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ;QAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;gGAIgG;AAChG,SAAS,YAAY,CAAC,GAAiC;IACrD,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wHAAwH,CAAC,CAAC;IACxI,GAAG,EAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,WAAW,GAA2B;IAC1C,KAAK,EAAE;EACP,cAAc;;;;;;;;;;;;;;;;;;;;CAoBf;IACC,IAAI,EAAE;EACN,cAAc;;;;;;;;;;;;;;;;;;CAkBf;IACC,EAAE,EAAE;EACJ,cAAc;;;;;;;;;;;;;;;CAef;CACA,CAAC"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,QAAQ,EAA2J,MAAM,gBAAgB,CAAC;AACnM,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAA0B,MAAM,wBAAwB,CAAC;AAC9I,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAa,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,eAAe,GAAG,GAAG,CAAC;AAC5B,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAC3E,MAAM,iBAAiB,GAAG,iDAAiD,CAAC;AAE5E;;;yFAGyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4CAA4C,EAAE;IAC5F,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oDAAoD,EAAE;IACpG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,wCAAwC,EAAE;IACnG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,kHAAkH,EAAE;CAC9H,CAAC;AAEzC;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAgB;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAuC,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACrG,MAAM,aAAa,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,yCAAyC;IACpG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG;QAAE,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;;QACzF,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;uBAEuB;AACvB,KAAK,UAAU,aAAa;IAC1B,MAAM,wBAAwB,EAAE,CAAC;IACjC,eAAe,EAAE,CAAC;AACpB,CAAC;AAED;;kCAEkC;AAClC,KAAK,UAAU,WAAW,CAAC,GAAY,EAAE,IAAa;IACpD,MAAM,EAAE,CAAC;IACT,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACvC,IAAI,CACF,8NAA8N,EAC9N,2CAA2C,CAC5C,CAAC;IAEF,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAExC,4DAA4D;IAC5D,MAAM,IAAI,GAAW;QACnB;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,KAAK,CAAC,GAAG;gBACP,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,IAAI,KAAK,GAAG,EAAE;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,qCAAqC,CAAC,CAAC;gBACpG,OAAO,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzC,CAAC;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,yGAAyG;YAClH,OAAO,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;YACxC,KAAK,CAAC,GAAG;gBACP,MAAM,CAAC,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBACpC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC1E,CAAC;SACF;KACF,CAAC;IACF,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,EAAE,CAAC;IAE1D,4FAA4F;IAC5F,6FAA6F;IAC7F,sFAAsF;IACtF,0FAA0F;IAC1F,2CAA2C;IAC3C,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7C,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC7B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,UAAU,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC/H,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACxE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBAAE,OAAO,KAAK,EAAE,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,KAAK,uCAAuC,CAAC,CAAC;YACzE,GAAG,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,KAAK,sBAAsB,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,gGAAgG;IAChG,iGAAiG;IACjG,mGAAmG;IACnG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,EAAE,CAAC;IACtE,CAAC;IAED,gGAAgG;IAChG,4FAA4F;IAC5F,gBAAgB,EAAE,CAAC;IACnB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iGAAiG,CAAC,CAAC;IACjH,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC5C,6FAA6F;IAC7F,6FAA6F;IAC7F,IAAI,IAAI;QAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAE5B,sGAAsG;IACtG,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,GAAG,CAAC,OAAO,CACX,aAAa,MAAM,CAAC,SAAS,CAAC,MAAM,sBAAsB,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kFAAkF,CACrN,CAAC;IACF,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;QACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAE7L,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAE9B,aAAa,CAAC,eAAe,CAAC,CAAC;IAC/B,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,kGAAkG;IAClG,4FAA4F;IAC5F,MAAM,UAAU,GAAG,IAAI;QACrB,CAAC,CAAC;YACE,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;YAC7D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE;YAC1D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,kBAAkB,GAAG,aAAa,CAAC,EAAE;YACjF,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;YACzD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;SACvD;QACH,CAAC,CAAC;YACE,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;YAC7D,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,EAAE;YACvD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;YACzD,GAAG,EAAE,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE;SACvD,CAAC;IACN,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC;YACE,GAAG,CAAC,4BAA4B,GAAG,MAAM,CAAC;YAC1C,GAAG,CAAC,4DAA4D,GAAG,eAAe,CAAC;SACpF,CAAC;IACN,IAAI,CACF;QACE,4FAA4F;QAC5F,EAAE;QACF,GAAG,UAAU;QACb,EAAE;QACF,GAAG,IAAI;QACP,GAAG,CAAC,yFAAyF,GAAG,oBAAoB,CAAC;KACtH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,YAAY,CACb,CAAC;IACF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEhE,SAAS,KAAK;QACZ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,8CAA8C,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC5F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;gGAGgG;AAChG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAY;IACnD,IAAI,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE;QAAE,OAAO,CAAC,0CAA0C;IAEjF,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,aAAa,CACtB,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,wDAAwD,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC3G,CAAC;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,cAAc,CAAC,wBAAwB,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC9G,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,cAAc,EAAE,IAAI,QAAQ,EAAE,CAAC;IACvD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,4BAA4B,GAAG,CAAC,mBAAmB,CAAC,mBAAmB,GAAG,CAAC,cAAc,CAAC,GAAG,CAC1H,CAAC;IACJ,CAAC;AACH,CAAC;AAED;wFACwF;AACxF,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChG,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD;;yGAEyG;AACzG,MAAM,UAAU,wBAAwB,CACtC,UAAgC,EAChC,YAAsC,MAAM;IAE5C,OAAO,CAAC,GAAG,UAAU,CAAC;SACnB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO;YACL,SAAS;YACT,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,KAAK,EAAE,SAAS,CAAC,IAAI;YACrB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,MAAM;gBAClB,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc;gBACrC,CAAC,CAAC,SAAS,CAAC,KAAK;oBACf,CAAC,CAAC,SAAS,CAAC,UAAU;wBACpB,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,oBAAoB;oBACxB,CAAC,CAAC,gBAAgB;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED;2EAC2E;AAC3E,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAY,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,sBAAsB,CAAC,WAAW,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,oBAAoB,CAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAC7D,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,UAA8C,EAAE,GAAY;IACxF,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjH,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAErD,+FAA+F;IAC/F,yFAAyF;IACzF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;QACrC,MAAM,EAAE,GAAG,aAAa,CACtB,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC7G,CAAC;QACF,IAAI,EAAE;YAAE,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAC1B,MAAM,CAAC,CAAC,WAAW,CAAC;QAClB,OAAO,EAAE,4DAA4D;QACrE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;QACxB,aAAa,EAAE,GAAG;QAClB,QAAQ,EAAE,KAAK;KAChB,CAAC,CACH,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC;AACrC,CAAC;AAED;;mGAEmG;AACnG,KAAK,UAAU,SAAS,CAAC,IAAa;IACpC,gBAAgB,EAAE,CAAC,CAAC,gEAAgE;IACpF,IAAI,IAAI;QAAE,YAAY,EAAE,CAAC,CAAC,wEAAwE;IAClG,MAAM,wBAAwB,EAAE,CAAC;IACjC,eAAe,EAAE,CAAC,CAAC,sFAAsF;IACzG,gGAAgG;IAChG,+FAA+F;IAC/F,gGAAgG;IAChG,+FAA+F;IAC/F,kGAAkG;IAClG,+DAA+D;IAC/D,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;+DAG+D;AAC/D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAoB;IAC/D,IAAI,CAAC,SAAS,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,oBAAoB,CAAyB,SAAS,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;;0CAG0C;AAC1C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAoB,EAAE,MAA8B;IAC3F,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAqC,CAAC;IACrE,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,KAAK,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,GAAG,CAAC,KAAc,CAAC,CAAC,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;yFACyF;AACzF,SAAS,oBAAoB;IAC3B,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,wBAAwB;IACrC,KAAK,MAAM,SAAS,IAAI,MAAM,qBAAqB,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,SAAS;QACrE,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED;4EAC4E;AAC5E,MAAM,UAAU,sBAAsB,CAAC,QAAkD;IACvF,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AAC5E,CAAC;AAED;oGACoG;AACpG,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,OAAO,sBAAsB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC;IACvJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,+FAA+F;IAC/G,CAAC;AACH,CAAC;AAED,qGAAqG;AACrG,qGAAqG;AACrG,iGAAiG;AACjG,8CAA8C;AAE9C;gFACgF;AAChF,KAAK,UAAU,SAAS,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,MAAM,aAAa,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,KAAK,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,2CAA2C;IACxG,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,IAAY,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACjF,IAAI,CACF;QACE,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,cAAc,CAAC,EAAE,CAAC;QACrI,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,0BAA0B,GAAG,QAAQ,CAAC,EAAE,CAAC;QACjI,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,GAAG,YAAY,GAAG,YAAY,CAAC,EAAE,CAAC;QACtG,EAAE;QACF,oBAAoB,GAAG,CAAC,GAAG,GAAG,cAAc,CAAC,EAAE;QAC/C,qGAAqG;QACrG,OAAO;YACL,CAAC,CAAC,oBAAoB,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,EAAE;YAC5E,CAAC,CAAC,oBAAoB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,qCAAqC,GAAG,GAAG,GAAG,gBAAgB,CAAC,EAAE;QACtH,oBAAoB,GAAG,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,6BAA6B,CAAC,EAAE;QACnF,oBAAoB,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,WAAW,GAAG,uBAAuB,GAAG,SAAS,CAAC,EAAE;KAChG,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,SAAS,CAAC,gBAAgB,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;;;mEAImE;AACnE,SAAS,eAAe,CAAC,GAAqC;IAC5D,MAAM,CAAC,GAAG,kBAAkB,EAAE,CAAC;IAC/B,UAAU,CAAC,KAAK,CAAC,qBAAqB,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3D,GAAG,EAAE,IAAI,CACP,2BAA2B,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjD,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChE,CAAC;IACF,OAAO,CAAC,CAAC;AACX,CAAC;AAED;mFACmF;AACnF,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAElD;;;iBAGiB;AACjB,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,CAAC,kBAAkB;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,GAAG,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,kCAAkC;YACrE,UAAU,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;wCAQwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAc5B,CAAC;AAEF;uGACuG;AACvG,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK;IACL,qBAAqB;IACrB,eAAe;IACf,mCAAmC;IACnC,UAAU;IACV,eAAe;IACf,uBAAuB;IACvB,kBAAkB;IAClB,uBAAuB;IACvB,KAAK;IACL,EAAE;IACF,8FAA8F;IAC9F,gGAAgG;IAChG,2FAA2F;IAC3F,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;8FAE8F;AAC9F,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,OAAO,OAAO,KAAK,oBAAoB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,yBAAyB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC;QAClD,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;mDAEmD;AACnD,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,UAAU,CAAC,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ;QAAE,UAAU,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;gGAIgG;AAChG,SAAS,YAAY,CAAC,GAAiC;IACrD,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACvD,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wHAAwH,CAAC,CAAC;IACxI,GAAG,EAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,WAAW,GAA2B;IAC1C,KAAK,EAAE;EACP,cAAc;;;;;;;;;;;;;;;;;;;;CAoBf;IACC,IAAI,EAAE;EACN,cAAc;;;;;;;;;;;;;;;;;;CAkBf;IACC,EAAE,EAAE;EACJ,cAAc;;;;;;;;;;;;;;;CAef;CACA,CAAC"}
|
|
@@ -21,7 +21,7 @@ import { findMesh } from "@cotal-ai/workspace";
|
|
|
21
21
|
import { c } from "../ui.js";
|
|
22
22
|
import { cotalRoot } from "../lib/paths.js";
|
|
23
23
|
import { connectOrExit, userViewAuthOrExit } from "../lib/connect.js";
|
|
24
|
-
import { assertManagerRecordReplaceable, startManagerDetached } from "../lib/manager-proc.js";
|
|
24
|
+
import { assertManagerRecordReplaceable, managerLogDisplayPath, startManagerDetached } from "../lib/manager-proc.js";
|
|
25
25
|
import { loadManifest } from "../lib/manifest/index.js";
|
|
26
26
|
import { buildLaunchSpec, channelsSeed, genRunId, preflightConnectors, writeLaunchSpec } from "../lib/manifest/apply.js";
|
|
27
27
|
import { buildLedger, buildLedgerAgentRow, hashManifestSource, listLedgers, writeLedger } from "../lib/manifest/ledger.js";
|
|
@@ -196,7 +196,7 @@ export async function spawnManifest(file, flags) {
|
|
|
196
196
|
// Nobody owns the space — stand up a manager (it acquires the lease on boot). The lease says
|
|
197
197
|
// nobody is ANSWERING; it does not say the recorded pid is dead, so the pidfile is checked
|
|
198
198
|
// before we overwrite it. This path used to skip that entirely.
|
|
199
|
-
assertManagerRecordReplaceable();
|
|
199
|
+
assertManagerRecordReplaceable(undefined, undefined, space);
|
|
200
200
|
startManagerDetached({ space, server: connection.server, runtime, attachHost });
|
|
201
201
|
}
|
|
202
202
|
else if (!launchReady) {
|
|
@@ -204,10 +204,10 @@ export async function spawnManifest(file, flags) {
|
|
|
204
204
|
// blocks a replacement's acquire until the bucket TTL expires; wait it out, then stand one up.
|
|
205
205
|
console.log(c.dim(` ~ a manager lease for "${space}" is present but unanswered (holder pid ${launchHeld.pid}); waiting up to ${Math.ceil(MANAGER_LEASE_TTL_MS / 1000)}s for it to expire…`));
|
|
206
206
|
if (!(await waitLeaseGone(ep, MANAGER_LEASE_TTL_MS + 5_000))) {
|
|
207
|
-
console.error(c.red(`✗ a manager lease for "${space}" is still held by an unresponsive holder (pid ${launchHeld.pid}) after its TTL - stop it or check
|
|
207
|
+
console.error(c.red(`✗ a manager lease for "${space}" is still held by an unresponsive holder (pid ${launchHeld.pid}) after its TTL - stop it or check ${managerLogDisplayPath(space)}`));
|
|
208
208
|
process.exit(1);
|
|
209
209
|
}
|
|
210
|
-
assertManagerRecordReplaceable(); // an expired lease still says nothing about the recorded pid
|
|
210
|
+
assertManagerRecordReplaceable(undefined, undefined, space); // an expired lease still says nothing about the recorded pid
|
|
211
211
|
startManagerDetached({ space, server: connection.server, runtime, attachHost });
|
|
212
212
|
}
|
|
213
213
|
// else: a live manager already answered — reuse it. All paths converge here: confirm a manager is
|
|
@@ -215,7 +215,7 @@ export async function spawnManifest(file, flags) {
|
|
|
215
215
|
// `held` snapshot, which can turn over during the probe / a concurrent start — TOCTOU). Fail LOUD if
|
|
216
216
|
// a foreign-checkout or wrong-runtime manager won the space before we launch into it.
|
|
217
217
|
if (!(await waitManagerReady(ep))) {
|
|
218
|
-
console.error(c.red(
|
|
218
|
+
console.error(c.red(`✗ manager did not become ready for control - see ${managerLogDisplayPath(space)}`));
|
|
219
219
|
process.exit(1);
|
|
220
220
|
}
|
|
221
221
|
const live = await ep.readManagerLease();
|