craftar 0.13.0 → 0.15.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.
@@ -0,0 +1,362 @@
1
+ import { promises as fs, constants as fsc } from "node:fs";
2
+ import path from "node:path";
3
+ import { execFile } from "node:child_process";
4
+ import { promisify } from "node:util";
5
+ import { written } from "./capabilities.js";
6
+ import { exists } from "./forge.js";
7
+ import { isMissing, isRegistered, namedCacheKeys, readRegistry, registryFile, rowStatus } from "./registry.js";
8
+ import { FULL_SHA, cacheKey, classifyForge, inspectCache } from "./remote.js";
9
+ import { paramsFor } from "./resolve.js";
10
+ import { LOCK_FILE, loadForgeFor, plan, readLock, readWorkspaceConfig, status } from "./sync.js";
11
+ import { outName } from "../emitters/shared.js";
12
+ const execFileP = promisify(execFile);
13
+ async function defaultGitVersion() {
14
+ try {
15
+ const { stdout } = await execFileP("git", ["--version"]);
16
+ return stdout.trim().replace(/^git version\s*/, "") || "unknown";
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ const MB = (bytes) => `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
23
+ const short = (sha) => (sha ? sha.slice(0, 8) : "no git");
24
+ const NAME_REF = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
25
+ const refLabel = (ref, defaultBranch) => ref ?? (defaultBranch ? `${defaultBranch} (default branch)` : "the default branch");
26
+ const CACHE_FIX = (dir) => `remove ${dir} by hand (craftar cache prune is planned)`;
27
+ export async function runDoctor(opts) {
28
+ const checks = [];
29
+ const m = (id, level, message, fix = null) => checks.push({ id, scope: "machine", level, message, fix });
30
+ const w = (id, level, message, fix = null) => checks.push({ id, scope: "workspace", level, message, fix });
31
+ const env = opts.env ?? process.env;
32
+ // Loaded as given, as every other command loads it (a relative `forge:` reads from the path the user named);
33
+ // the real path is what the report, `forge-inside` and `registered` compare (§4.5).
34
+ const given = opts.workspace === null ? null : path.resolve(opts.workspace);
35
+ const root = given === null ? null : await fs.realpath(given).catch(() => given);
36
+ // The cache snapshot first (§4.3: the cache as it was when doctor started), then the configuration,
37
+ // which `git` and `cache` need even when the Forge does not load (§5.1).
38
+ let snapshot = null;
39
+ let snapshotError = null;
40
+ try {
41
+ snapshot = await inspectCache(opts.home);
42
+ }
43
+ catch (e) {
44
+ snapshotError = oneLine(e);
45
+ }
46
+ let merged = null;
47
+ let configError = null;
48
+ if (given !== null) {
49
+ try {
50
+ merged = await readWorkspaceConfig(given);
51
+ }
52
+ catch (e) {
53
+ configError = oneLine(e);
54
+ }
55
+ }
56
+ const remote = merged !== null && classifyForge(merged.config.forge) === "url";
57
+ // ---- machine
58
+ const node = opts.nodeVersion ?? process.versions.node;
59
+ if (Number(node.split(".")[0]) >= 22)
60
+ m("node", "ok", node);
61
+ else
62
+ m("node", "error", `${node} — craftar needs Node 22 or later`, "install Node 22 or later");
63
+ const git = await (opts.gitVersion ?? defaultGitVersion)();
64
+ const gitMissingRemote = git === null && remote;
65
+ if (git !== null)
66
+ m("git", "ok", git);
67
+ else if (remote)
68
+ m("git", "error", "git not found — the workspace names a remote Forge", "install git");
69
+ else
70
+ m("git", "warn", "git not found", "install git");
71
+ const home = opts.home;
72
+ const homeStat = await fs.stat(home).catch(() => null);
73
+ if (homeStat === null)
74
+ m("home", "ok", `${home} (not created yet)`);
75
+ else if (!homeStat.isDirectory())
76
+ m("home", "error", `${home} is not a directory`, `fix or move $CRAFTAR_HOME (${home})`);
77
+ else if (!(await fs.access(home, fsc.W_OK).then(() => true, () => false)))
78
+ m("home", "error", `${home} is not writable`, `fix or move $CRAFTAR_HOME (${home})`);
79
+ else
80
+ m("home", "ok", home);
81
+ let reg = null;
82
+ let registryWhyNot = null;
83
+ if (opts.registryOff) {
84
+ registryWhyNot = "CRAFTAR_NO_REGISTRY is set";
85
+ m("registry", "ok", "off (CRAFTAR_NO_REGISTRY)");
86
+ }
87
+ else {
88
+ try {
89
+ reg = await readRegistry(home);
90
+ const there = await exists(registryFile(home));
91
+ const missing = [];
92
+ for (const e of reg.workspaces)
93
+ if (await isMissing(e))
94
+ missing.push(e.path);
95
+ if (!there)
96
+ m("registry", "ok", "none yet");
97
+ else if (missing.length === 0)
98
+ m("registry", "ok", `${reg.workspaces.length} registered`);
99
+ else
100
+ m("registry", "warn", `${missing.length} registered workspace${missing.length === 1 ? " is" : "s are"} gone: ${missing.join(", ")}`, "craftar workspaces prune");
101
+ }
102
+ catch (e) {
103
+ registryWhyNot = "the registry cannot be read";
104
+ const msg = e.message;
105
+ m("registry", "error", oneLine(e), /declares schema/.test(msg) ? "upgrade craftar" : `repair or remove ${registryFile(home)}`);
106
+ }
107
+ }
108
+ // ---- cache (§4.3)
109
+ if (homeStat !== null && !homeStat.isDirectory()) {
110
+ // One cause, one line (§13 item 12): a home that is not a directory is `home`'s error.
111
+ m("cache", "ok", "not checked ($CRAFTAR_HOME is not a directory)");
112
+ }
113
+ else if (snapshot === null) {
114
+ m("cache", "warn", `cannot read the Forge cache: ${snapshotError}`, `fix or move $CRAFTAR_HOME (${home})`);
115
+ }
116
+ else {
117
+ const summary = `${snapshot.entries.length} entr${snapshot.entries.length === 1 ? "y" : "ies"}, ${MB(snapshot.bytes)}`;
118
+ let skip = registryWhyNot;
119
+ if (skip === null && root !== null && merged === null)
120
+ skip = "the checked craftar.yaml does not read";
121
+ const findings = [];
122
+ for (const e of snapshot.entries) {
123
+ if (!e.fetched)
124
+ findings.push({ id: "cache", scope: "machine", level: "warn", message: `${e.key} — a fetch never completed`, fix: CACHE_FIX(e.dir) });
125
+ }
126
+ if (skip === null && reg !== null) {
127
+ const checked = remote && root !== null ? { key: cacheKey(merged.config.forge.trim()), path: root } : null;
128
+ const named = namedCacheKeys(reg, checked);
129
+ for (const e of snapshot.entries)
130
+ if (e.fetched && !named.has(e.key))
131
+ findings.push({ id: "cache", scope: "machine", level: "warn", message: `${e.key} — nothing names it`, fix: CACHE_FIX(e.dir) });
132
+ }
133
+ // A skipped orphan part is said on every cache line, findings included (§4.3, §13 item 6).
134
+ const why = skip === null ? "" : ` (orphans not checked: ${skip})`;
135
+ if (findings.length === 0)
136
+ m("cache", "ok", `${summary}${why}`);
137
+ else
138
+ checks.push(...findings.map((c) => ({ ...c, message: `${c.message}${why}` })));
139
+ }
140
+ // ---- workspace
141
+ if (root !== null && given !== null)
142
+ await workspaceChecks(given, root, merged, configError, gitMissingRemote, reg, registryWhyNot, opts, w, env);
143
+ const summary = { ok: 0, warn: 0, error: 0 };
144
+ for (const c of checks)
145
+ summary[c.level]++;
146
+ return { version: opts.version, workspace: root, fetch: opts.fetch, strict: opts.strict, checks, summary };
147
+ }
148
+ async function workspaceChecks(given, root, merged, configError, gitMissingRemote, reg, registryWhyNot, opts, w, env) {
149
+ // `git` missing with a remote Forge is git's error: the checks that need the load are not run (§4.2).
150
+ let ws = null;
151
+ if (!gitMissingRemote) {
152
+ if (merged === null) {
153
+ w("config", "error", configError ?? "craftar.yaml does not read", null);
154
+ }
155
+ else {
156
+ const remote = classifyForge(merged.config.forge) === "url";
157
+ try {
158
+ ws = await loadForgeFor(given, merged, { mode: opts.fetch ? "read" : "no-fetch", home: opts.home });
159
+ }
160
+ catch (e) {
161
+ // Decided by stage, not by message (§5.1): the Forge of a remote configuration read offline failed to load.
162
+ w("config", "error", oneLine(e), remote && !opts.fetch ? "craftar doctor --fetch" : null);
163
+ }
164
+ }
165
+ }
166
+ if (ws !== null) {
167
+ const o = ws.origin;
168
+ const fallback = o.kind === "remote" && opts.fetch && !o.fetched ? ws.warnings.find((x) => x.startsWith(`Forge ${o.source} not fetched (`)) ?? null : null;
169
+ const configWarnings = ws.warnings.filter((x) => x !== fallback);
170
+ // One `ok` line only when the check has nothing to report (§4.2, §4.5).
171
+ if (configWarnings.length === 0)
172
+ w("config", "ok", `craftar.yaml loads (forge ${ws.config.forge}, profile ${ws.config.profile})`);
173
+ for (const x of configWarnings)
174
+ w("config", "warn", x, null);
175
+ // forge
176
+ if (o.kind === "path")
177
+ w("forge", "ok", `${o.source} @ ${short(ws.forge.commit)}`);
178
+ else if (fallback !== null)
179
+ w("forge", "warn", fallback, `check the network or credentials for ${o.source}`);
180
+ else if (opts.fetch && o.fetched)
181
+ w("forge", "ok", `${o.source} @ ${refLabel(o.ref, o.defaultBranch)} ${short(ws.forge.commit)}, fetched now`);
182
+ // A full-SHA `ref` already cached is never fetched (spec 13), with or without --fetch.
183
+ else if (o.ref !== null && FULL_SHA.test(o.ref))
184
+ w("forge", "ok", `${o.source} @ pinned ${short(ws.forge.commit)}, cached`);
185
+ else
186
+ w("forge", "ok", `${o.source} @ ${refLabel(o.ref, o.defaultBranch)} ${short(ws.forge.commit)}, cached ${o.fetchedAt ?? "(time unknown)"}`);
187
+ // forge-inside
188
+ if (o.kind === "path") {
189
+ const forgeReal = await fs.realpath(ws.forge.root).catch(() => ws.forge.root);
190
+ const rel = path.relative(forgeReal, root);
191
+ const inside = rel === "" || (rel !== ".." && !rel.startsWith(`..${path.sep}`) && !path.isAbsolute(rel));
192
+ if (inside)
193
+ w("forge-inside", "warn", `the workspace lies inside its Forge (${forgeReal})`, "move the workspace out of the Forge");
194
+ else
195
+ w("forge-inside", "ok", "outside the Forge");
196
+ }
197
+ else
198
+ w("forge-inside", "ok", "outside the Forge (remote)");
199
+ // plan, params, mcp-env
200
+ let p = null;
201
+ try {
202
+ p = await plan(ws);
203
+ }
204
+ catch (e) {
205
+ w("plan", "error", oneLine(e), null);
206
+ }
207
+ if (p !== null) {
208
+ const declaredUnset = declaredWithoutValue(p);
209
+ const owned = new Set();
210
+ for (const mp of p.missingParams)
211
+ if (declaredUnset.has(mp.key))
212
+ owned.add(mp.warning);
213
+ const own = p.warnings.slice(ws.warnings.length).filter((x) => !owned.has(x));
214
+ if (own.length === 0)
215
+ w("plan", "ok", `${p.files.length} files`);
216
+ for (const x of own)
217
+ w("plan", "warn", x, null);
218
+ if (declaredUnset.size === 0)
219
+ w("params", "ok", "every declared parameter has a value");
220
+ for (const [key, declaredBy] of declaredUnset) {
221
+ const cited = p.missingParams.find((mp) => mp.key === key)?.refs ?? [];
222
+ w("params", "warn", `"${key}" declared by ${declaredBy.join(", ")} has no value${cited.length ? ` — cited by ${cited.join(", ")}` : ""}`, `set ${key} in the profile's params or overrides.params`);
223
+ }
224
+ const unset = mcpUnset(p, env);
225
+ if (unset.length === 0)
226
+ w("mcp-env", "ok", "every variable a written MCP server expects is set");
227
+ for (const { server, name } of unset)
228
+ w("mcp-env", "warn", `server "${server}" expects ${name}, not set`, `export ${name}`);
229
+ }
230
+ // lock, status
231
+ await lockAndStatus(root, ws, p, w);
232
+ // registered
233
+ if (opts.registryOff)
234
+ w("registered", "ok", "registry off");
235
+ else if (reg === null)
236
+ w("registered", "ok", "not checked (the registry cannot be read)");
237
+ else if (await isRegistered(reg, root))
238
+ w("registered", "ok", "in the registry");
239
+ else if (await exists(path.join(root, LOCK_FILE)))
240
+ w("registered", "warn", "synced but not registered", "craftar sync");
241
+ else
242
+ w("registered", "ok", "never synced, nothing to register yet");
243
+ }
244
+ else {
245
+ // The workspace did not load: only `lock` runs (it needs only the directory, §6 case 1).
246
+ await lockAndStatus(root, null, null, w);
247
+ }
248
+ }
249
+ async function lockAndStatus(root, ws, p, w) {
250
+ let lock;
251
+ try {
252
+ lock = await readLock(root);
253
+ }
254
+ catch (e) {
255
+ const msg = e.message;
256
+ w("lock", "error", lockMessage(e), /declares schema/.test(msg) ? "upgrade craftar" : `repair or remove ${LOCK_FILE}`);
257
+ return;
258
+ }
259
+ if (lock === null) {
260
+ w("lock", "warn", "absent — never synced", "craftar sync");
261
+ return;
262
+ }
263
+ w("lock", "ok", `schema ${lock.schema}, generated ${lock.generatedAt.slice(0, 16).replace("T", " ")} UTC`);
264
+ if (ws === null || p === null)
265
+ return;
266
+ const st = await status(ws, p, lock);
267
+ const row = rowStatus(st, lock);
268
+ if (row === "up-to-date") {
269
+ w("status", "ok", "up to date");
270
+ return;
271
+ }
272
+ const counts = {};
273
+ for (const s of st)
274
+ if (s.state !== "unchanged" && s.state !== "adopt")
275
+ counts[s.state] = (counts[s.state] ?? 0) + 1;
276
+ const detail = Object.entries(counts).map(([k, n]) => `${n} ${k}`).join(", ");
277
+ w("status", "warn", `${row} — ${detail}`, "craftar status, then craftar sync");
278
+ }
279
+ /** The first schema issue and how many follow, in one line. */
280
+ const issuesLine = (prefix, issues) => `${prefix} (${issues[0].path.join(".") || "top level"}: ${issues[0].message}${issues.length > 1 ? `, and ${issues.length - 1} more` : ""})`;
281
+ /**
282
+ * Any caught error as one line (§3: each check's message is one line). A schema refusal reaches doctor
283
+ * as `<what>: <zod's JSON list of issues>` (readYaml, the workspace and registry loads); its first issue is kept.
284
+ */
285
+ function oneLine(e) {
286
+ const msg = e.message;
287
+ if (!msg.includes("\n"))
288
+ return msg;
289
+ const at = msg.indexOf(": [");
290
+ if (at >= 0) {
291
+ try {
292
+ const issues = JSON.parse(msg.slice(at + 2));
293
+ if (Array.isArray(issues) && issues.length > 0)
294
+ return issuesLine(msg.slice(0, at), issues);
295
+ }
296
+ catch {
297
+ // Not a zod list: fall through to the first line.
298
+ }
299
+ }
300
+ return msg.split("\n")[0];
301
+ }
302
+ /** A lock that does not read, in one line (§3): the zod dump and a bare JSON.parse message name nothing. */
303
+ function lockMessage(e) {
304
+ const issues = e.issues;
305
+ if (Array.isArray(issues) && issues.length > 0)
306
+ return issuesLine(`${LOCK_FILE} is not a valid lock`, issues);
307
+ if (e instanceof SyntaxError)
308
+ return `${LOCK_FILE} is not valid JSON (${oneLine(e)})`;
309
+ return oneLine(e);
310
+ }
311
+ /** Declared keys with no default that no layer fills, with the ingredients declaring them (§4.2). */
312
+ function declaredWithoutValue(p) {
313
+ const out = new Map();
314
+ for (const ing of p.resolution.ingredients) {
315
+ const values = paramsFor(ing, p.resolution);
316
+ // `paramsFor` already holds the ingredient's own default, so a key it lacks has neither default nor value.
317
+ for (const key of Object.keys(ing.meta.params ?? {})) {
318
+ if (Object.hasOwn(values, key))
319
+ continue;
320
+ out.set(key, [...(out.get(key) ?? []), ing.ref]);
321
+ }
322
+ }
323
+ return out;
324
+ }
325
+ /**
326
+ * One finding per (server outName, NAME) across the targets that write MCP (§4.2). Each target's own
327
+ * surviving server is read (last-wins per target, as its emitter writes it), so two targets writing the
328
+ * same name from different ingredients are both checked.
329
+ */
330
+ function mcpUnset(p, env) {
331
+ const servers = [];
332
+ for (const target of p.resolution.targets) {
333
+ // `written()` yields only what the matrix says this target writes; the skip warnings were plan()'s.
334
+ const walk = written(p.resolution, target, () => { });
335
+ const perTarget = new Map();
336
+ for (const ing of walk)
337
+ if (ing.meta.type === "mcp")
338
+ perTarget.set(outName(ing.meta), ing.meta.server);
339
+ servers.push(...perTarget);
340
+ }
341
+ const out = [];
342
+ const seen = new Set();
343
+ for (const [server, def] of servers) {
344
+ const envBlock = def !== null && typeof def === "object" ? def.env : undefined;
345
+ if (envBlock === null || typeof envBlock !== "object")
346
+ continue;
347
+ for (const value of Object.values(envBlock)) {
348
+ if (typeof value !== "string")
349
+ continue;
350
+ for (const match of value.matchAll(NAME_REF)) {
351
+ const name = match[1];
352
+ const key = `${server}\u0000${name}`;
353
+ if (seen.has(key) || env[name] !== undefined)
354
+ continue;
355
+ seen.add(key);
356
+ out.push({ server, name });
357
+ }
358
+ }
359
+ }
360
+ return out;
361
+ }
362
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAsB,MAAM,aAAa,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAgD,MAAM,WAAW,CAAC;AAC/I,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA+ChD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEtC,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,EAAE,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,MAAM,KAAK,GAAG,CAAC,GAAkB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AACzE,MAAM,QAAQ,GAAG,iCAAiC,CAAC;AACnD,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAE,aAA4B,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC3J,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,GAAG,2CAA2C,CAAC;AAE5F,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAmB;IACjD,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,KAAiB,EAAE,OAAe,EAAE,MAAqB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACpJ,MAAM,CAAC,GAAG,CAAC,EAAU,EAAE,KAAiB,EAAE,OAAe,EAAE,MAAqB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACtJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,6GAA6G;IAC7G,oFAAoF;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAEjF,oGAAoG;IACpG,yEAAyE;IACzE,IAAI,QAAQ,GAAyB,IAAI,CAAC;IAC1C,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IAE/E,eAAe;IACf,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACvD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;QACvD,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,mCAAmC,EAAE,0BAA0B,CAAC,CAAC;IAEhG,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC;IAChD,IAAI,GAAG,KAAK,IAAI;QAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;SACjC,IAAI,MAAM;QAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,oDAAoD,EAAE,aAAa,CAAC,CAAC;;QACnG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,IAAI;QAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,oBAAoB,CAAC,CAAC;SAC/D,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,qBAAqB,EAAE,8BAA8B,IAAI,GAAG,CAAC,CAAC;SACrH,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,kBAAkB,EAAE,8BAA8B,IAAI,GAAG,CAAC,CAAC;;QAC3J,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAE3B,IAAI,GAAG,GAAoB,IAAI,CAAC;IAChC,IAAI,cAAc,GAAkB,IAAI,CAAC;IACzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,cAAc,GAAG,4BAA4B,CAAC;QAC9C,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,2BAA2B,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU;gBAAE,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,KAAK;gBAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;iBACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,aAAa,CAAC,CAAC;;gBAExF,CAAC,CACC,UAAU,EACV,MAAM,EACN,GAAG,OAAO,CAAC,MAAM,wBAAwB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC7G,0BAA0B,CAC3B,CAAC;QACN,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,cAAc,GAAG,6BAA6B,CAAC;YAC/C,MAAM,GAAG,GAAI,CAAW,CAAC,OAAO,CAAC;YACjC,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QACjD,uFAAuF;QACvF,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,gDAAgD,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,gCAAgC,aAAa,EAAE,EAAE,8BAA8B,IAAI,GAAG,CAAC,CAAC;IAC7G,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,QAAQ,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvH,IAAI,IAAI,GAAkB,cAAc,CAAC;QACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;YAAE,IAAI,GAAG,wCAAwC,CAAC;QACvG,MAAM,QAAQ,GAAY,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,4BAA4B,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxJ,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO;gBAC9B,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvK,CAAC;QACD,2FAA2F;QAC3F,MAAM,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,IAAI,GAAG,CAAC;QACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,iBAAiB;IACjB,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAElJ,MAAM,OAAO,GAA+B,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7G,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAa,EACb,IAAY,EACZ,MAA2B,EAC3B,WAA0B,EAC1B,gBAAyB,EACzB,GAAoB,EACpB,cAA6B,EAC7B,IAAmB,EACnB,CAAgF,EAChF,GAAsB;IAEtB,sGAAsG;IACtG,IAAI,EAAE,GAAqB,IAAI,CAAC;IAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,IAAI,4BAA4B,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;YAC5D,IAAI,CAAC;gBACH,EAAE,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACtG,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,4GAA4G;gBAC5G,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3J,MAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;QACjE,wEAAwE;QACxE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QAClI,KAAK,MAAM,CAAC,IAAI,cAAc;YAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE7D,QAAQ;QACR,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC9E,IAAI,QAAQ,KAAK,IAAI;YAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;aACxG,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO;YAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/I,uFAAuF;aAClF,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;YAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,aAAa,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;YACvH,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC,CAAC;QAEhJ,eAAe;QACf,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACzG,IAAI,MAAM;gBAAE,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,wCAAwC,SAAS,GAAG,EAAE,qCAAqC,CAAC,CAAC;;gBAC9H,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACpD,CAAC;;YAAM,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;QAE7D,wBAAwB;QACxB,IAAI,CAAC,GAAgB,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;YAChC,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,aAAa;gBAAE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;oBAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACvF,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YACjE,KAAK,MAAM,CAAC,IAAI,GAAG;gBAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAEhD,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC;gBAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,sCAAsC,CAAC,CAAC;YACxF,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;gBACvE,CAAC,CACC,QAAQ,EACR,MAAM,EACN,IAAI,GAAG,iBAAiB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACpH,OAAO,GAAG,8CAA8C,CACzD,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,oDAAoD,CAAC,CAAC;YACjG,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK;gBAAE,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,MAAM,aAAa,IAAI,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;QAC9H,CAAC;QAED,eAAe;QACf,MAAM,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpC,aAAa;QACb,IAAI,IAAI,CAAC,WAAW;YAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;aACvD,IAAI,GAAG,KAAK,IAAI;YAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,2CAA2C,CAAC,CAAC;aACrF,IAAI,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC;YAAE,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;aAC5E,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAAE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,2BAA2B,EAAE,cAAc,CAAC,CAAC;;YACnH,CAAC,CAAC,YAAY,EAAE,IAAI,EAAE,uCAAuC,CAAC,CAAC;IACtE,CAAC;SAAM,CAAC;QACN,yFAAyF;QACzF,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,EAAoB,EACpB,CAAc,EACd,CAAgF;IAEhF,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAI,CAAW,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QACtH,OAAO;IACT,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IACD,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,MAAM,eAAe,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3G,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO;IACtC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzB,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;YAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,MAAM,EAAE,EAAE,mCAAmC,CAAC,CAAC;AACjF,CAAC;AAID,+DAA+D;AAC/D,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,MAAe,EAAE,EAAE,CACrD,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAE9I;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAU;IACzB,MAAM,GAAG,GAAI,CAAW,CAAC,OAAO,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAiB,CAAC,CAAC;QACzG,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,4GAA4G;AAC5G,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,MAAM,GAAI,CAA0B,CAAC,MAAM,CAAC;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC,GAAG,SAAS,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC9G,IAAI,CAAC,YAAY,WAAW;QAAE,OAAO,GAAG,SAAS,uBAAuB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,qGAAqG;AACrG,SAAS,oBAAoB,CAAC,CAAO;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5C,2GAA2G;QAC3G,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACrD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAAE,SAAS;YACzC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,CAAO,EAAE,GAAsB;IAC/C,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,oGAAoG;QACpG,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,GAAG,GAA4C,EAAE,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAE,GAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACtG,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,SAAS;QAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAmC,CAAC,EAAE,CAAC;YACvE,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,SAAS;YACxC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,MAAM,SAAS,IAAI,EAAE,CAAC;gBACrC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;oBAAE,SAAS;gBACvD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,86 @@
1
+ import path from "node:path";
2
+ import YAML from "yaml";
3
+ import { TARGETS } from "../schema/index.js";
4
+ import { planRecipeEdit } from "./recipe-edit.js";
5
+ import { classifyForge, credentialFault } from "./remote.js";
6
+ import { LOCAL_FILE, loadWorkspaceConfig, plan, readLock, status } from "./sync.js";
7
+ import { readLocalFile } from "./workspace-yaml.js";
8
+ /** The flag each local key would replace (N10). */
9
+ const FLAG = {
10
+ forge: "--forge",
11
+ ref: "--ref",
12
+ profile: "--profile",
13
+ recipes: "--add-recipe / --remove-recipe",
14
+ targets: "--targets",
15
+ };
16
+ export async function planInit(root, input, opts = {}) {
17
+ root = path.resolve(root);
18
+ const adds = input.addRecipes ?? [];
19
+ const removes = input.removeRecipes ?? [];
20
+ const recipeFlags = adds.length > 0 || removes.length > 0;
21
+ // N3 first: nothing below may print the value.
22
+ if (credentialFault(input.forge))
23
+ throw new Error("--forge holds credentials in the URL — remove them and let git authenticate (credential helper, SSH agent; see README › Remote Forge)");
24
+ for (const t of input.targets ?? [])
25
+ if (!TARGETS.includes(t))
26
+ throw new Error(`unknown target "${t}" (${TARGETS.join(", ")})`);
27
+ const remote = classifyForge(input.forge) === "url";
28
+ if (input.ref !== undefined && !remote)
29
+ throw new Error("--ref goes with a remote Forge — a path Forge is read as its working tree");
30
+ const both = adds.find((n) => removes.includes(n));
31
+ if (both !== undefined)
32
+ throw new Error(`recipe "${both}" is both added and removed`);
33
+ // N10: a local key the merge would let win over a flag init writes.
34
+ const { doc: localDoc, keys: local } = await readLocalFile(root);
35
+ const given = {
36
+ forge: true,
37
+ ref: input.ref !== undefined,
38
+ profile: true,
39
+ recipes: recipeFlags,
40
+ targets: input.targets !== undefined,
41
+ };
42
+ const clash = local.find((k) => given[k]);
43
+ if (clash)
44
+ throw new Error(`${LOCAL_FILE} sets ${clash}, which would replace ${FLAG[clash]} — move it aside and re-run init`);
45
+ const forge = remote ? input.forge : path.relative(root, path.resolve(input.forge)).replace(/\\/g, "/") || ".";
46
+ const base = { forge };
47
+ if (input.ref !== undefined)
48
+ base.ref = input.ref;
49
+ base.profile = input.profile;
50
+ if (input.targets !== undefined)
51
+ base.targets = input.targets;
52
+ const loaded = await loadWorkspaceConfig(root, base, localDoc, { ...opts, mode: "sync" });
53
+ // Removes first, then adds, each one spec 22 call (§13 item 3).
54
+ let config = loaded.config;
55
+ const notes = [];
56
+ for (const [op, names] of [["remove", removes], ["add", adds]]) {
57
+ if (!names.length)
58
+ continue;
59
+ const edit = planRecipeEdit(loaded.forge, config, op, names, { replace: input.replace === true });
60
+ config = { ...config, recipes: edit.recipes };
61
+ if (edit.reasons.length)
62
+ notes.push(edit.reasons.join(", "));
63
+ }
64
+ const ws = { ...loaded, config };
65
+ const p = await plan(ws);
66
+ const lock = await readLock(root);
67
+ const statuses = await status(ws, p, lock);
68
+ const doc = { forge };
69
+ if (input.ref !== undefined)
70
+ doc.ref = input.ref;
71
+ doc.profile = input.profile;
72
+ if (recipeFlags) {
73
+ const recipes = {};
74
+ if (config.recipes.add.length)
75
+ recipes.add = config.recipes.add;
76
+ if (config.recipes.remove.length)
77
+ recipes.remove = config.recipes.remove;
78
+ if (Object.keys(recipes).length)
79
+ doc.recipes = recipes;
80
+ }
81
+ if (input.targets !== undefined)
82
+ doc.targets = input.targets;
83
+ const targetsFrom = input.targets !== undefined ? "flag" : local.includes("targets") ? "local" : "profile";
84
+ return { ws, plan: p, lock, statuses, text: YAML.stringify(doc), notes, targetsFrom };
85
+ }
86
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"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"}
@@ -137,7 +137,7 @@ export async function forget(home, dir) {
137
137
  * exists but cannot be inspected (EACCES…) is not gone — the load fails and the row reads `error`,
138
138
  * which `prune` never removes.
139
139
  */
140
- async function isMissing(entry) {
140
+ export async function isMissing(entry) {
141
141
  try {
142
142
  await fs.stat(path.join(entry.path, WORKSPACE_FILE));
143
143
  return false;
@@ -147,6 +147,32 @@ async function isMissing(entry) {
147
147
  return code === "ENOENT" || code === "ENOTDIR";
148
148
  }
149
149
  }
150
+ /** Whether `dir` has a registry entry — by real path, without case on Windows, as `register` keys it (spec 24 §5.1). */
151
+ export async function isRegistered(reg, dir) {
152
+ const target = await realOrResolved(dir);
153
+ return reg.workspaces.some((e) => samePath(e.path, target));
154
+ }
155
+ /**
156
+ * What names a cache entry (spec 24 §4.3): every registry entry's `forge.key` —
157
+ * `missing` ones included, until `workspaces prune` — and the checked workspace's own key. Returns
158
+ * each named key with the workspace paths that name it.
159
+ */
160
+ export function namedCacheKeys(reg, checked) {
161
+ const named = new Map();
162
+ const add = (key, by) => {
163
+ if (key === null)
164
+ return;
165
+ const list = named.get(key) ?? [];
166
+ if (!list.some((p) => samePath(p, by)))
167
+ list.push(by);
168
+ named.set(key, list);
169
+ };
170
+ for (const e of reg.workspaces)
171
+ add(e.forge.key, e.path);
172
+ if (checked)
173
+ add(checked.key, checked.path);
174
+ return named;
175
+ }
150
176
  /** `craftar workspaces prune` (§4.4): removes every `missing` entry; returns their paths. Loads nothing else. */
151
177
  export async function prune(home) {
152
178
  if (!(await exists(registryFile(home))))
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}