@lannguyensi/harness 0.14.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +20 -2
  3. package/dist/cli/doctor/format.js +24 -0
  4. package/dist/cli/doctor/format.js.map +1 -1
  5. package/dist/cli/doctor/index.d.ts +7 -0
  6. package/dist/cli/doctor/index.js +10 -0
  7. package/dist/cli/doctor/index.js.map +1 -1
  8. package/dist/cli/doctor/rogue-ledger.d.ts +25 -0
  9. package/dist/cli/doctor/rogue-ledger.js +106 -0
  10. package/dist/cli/doctor/rogue-ledger.js.map +1 -0
  11. package/dist/cli/doctor/types.d.ts +10 -1
  12. package/dist/cli/doctor/types.js.map +1 -1
  13. package/dist/cli/index.js +177 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/init/composer.d.ts +29 -0
  16. package/dist/cli/init/composer.js +377 -0
  17. package/dist/cli/init/composer.js.map +1 -0
  18. package/dist/cli/init/dependencies.d.ts +25 -0
  19. package/dist/cli/init/dependencies.js +100 -10
  20. package/dist/cli/init/dependencies.js.map +1 -1
  21. package/dist/cli/init/index.d.ts +18 -1
  22. package/dist/cli/init/index.js +17 -7
  23. package/dist/cli/init/index.js.map +1 -1
  24. package/dist/cli/init/interactive.d.ts +31 -2
  25. package/dist/cli/init/interactive.js +321 -79
  26. package/dist/cli/init/interactive.js.map +1 -1
  27. package/dist/cli/init/templates.d.ts +1 -1
  28. package/dist/cli/init/templates.js +60 -9
  29. package/dist/cli/init/templates.js.map +1 -1
  30. package/dist/cli/pack/hook-branch-protection.d.ts +30 -0
  31. package/dist/cli/pack/hook-branch-protection.js +279 -0
  32. package/dist/cli/pack/hook-branch-protection.js.map +1 -0
  33. package/dist/cli/pack/hook-codex-pre-tool-use.js +3 -1
  34. package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
  35. package/dist/cli/pack/hook-pre-tool-use.d.ts +1 -1
  36. package/dist/cli/pack/hook-pre-tool-use.js +42 -3
  37. package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
  38. package/dist/cli/pack/understanding-report-schema-hint.d.ts +13 -0
  39. package/dist/cli/pack/understanding-report-schema-hint.js +54 -0
  40. package/dist/cli/pack/understanding-report-schema-hint.js.map +1 -0
  41. package/dist/cli/session-start/branch-check.d.ts +44 -0
  42. package/dist/cli/session-start/branch-check.js +165 -0
  43. package/dist/cli/session-start/branch-check.js.map +1 -0
  44. package/dist/cli/uninstall/index.d.ts +68 -0
  45. package/dist/cli/uninstall/index.js +586 -0
  46. package/dist/cli/uninstall/index.js.map +1 -0
  47. package/dist/cli/uninstall/snapshot.d.ts +40 -0
  48. package/dist/cli/uninstall/snapshot.js +34 -0
  49. package/dist/cli/uninstall/snapshot.js.map +1 -0
  50. package/dist/cli/validate/checks.d.ts +1 -1
  51. package/dist/cli/validate/checks.js +1 -7
  52. package/dist/cli/validate/checks.js.map +1 -1
  53. package/dist/io/harness-lock.js +1 -9
  54. package/dist/io/harness-lock.js.map +1 -1
  55. package/dist/policies/ledger-client.js +3 -9
  56. package/dist/policies/ledger-client.js.map +1 -1
  57. package/dist/policies/producers.d.ts +12 -0
  58. package/dist/policies/producers.js +61 -0
  59. package/dist/policies/producers.js.map +1 -0
  60. package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +47 -0
  61. package/dist/policy-packs/builtin/branch-protection-runtime.js +92 -0
  62. package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -0
  63. package/dist/policy-packs/builtin/branch-protection.d.ts +9 -0
  64. package/dist/policy-packs/builtin/branch-protection.js +146 -0
  65. package/dist/policy-packs/builtin/branch-protection.js.map +1 -0
  66. package/dist/policy-packs/registry.d.ts +1 -1
  67. package/dist/policy-packs/registry.js +10 -3
  68. package/dist/policy-packs/registry.js.map +1 -1
  69. package/dist/runtime/expand-home.d.ts +14 -0
  70. package/dist/runtime/expand-home.js +54 -0
  71. package/dist/runtime/expand-home.js.map +1 -0
  72. package/dist/runtime/intercept.js +13 -2
  73. package/dist/runtime/intercept.js.map +1 -1
  74. package/dist/runtime/ledger-add.js +10 -3
  75. package/dist/runtime/ledger-add.js.map +1 -1
  76. package/dist/runtime/ledger-record.js +11 -10
  77. package/dist/runtime/ledger-record.js.map +1 -1
  78. package/dist/schema/index.d.ts +281 -101
  79. package/dist/schema/permission-profiles.d.ts +125 -125
  80. package/dist/schema/policies.d.ts +261 -0
  81. package/dist/schema/policies.js +50 -0
  82. package/dist/schema/policies.js.map +1 -1
  83. package/package.json +2 -1
@@ -1,13 +1,30 @@
1
1
  import { type TemplateName } from "./templates.js";
2
2
  export interface InitOptions {
3
3
  template?: TemplateName;
4
+ /**
5
+ * Pre-composed manifest YAML; bypasses the template lookup. Used by
6
+ * the interactive Custom-profile composer (task 31d2fbb5) so the same
7
+ * lock + validateBeforeWrite + overwrite-guard path is reused without
8
+ * needing a second write surface.
9
+ */
10
+ content?: string;
11
+ /**
12
+ * Label surfaced to the operator and recorded on `InitResult.template`
13
+ * when `content` is provided (the YAML carries no template name of its
14
+ * own). Defaults to `"custom"`.
15
+ */
16
+ contentLabel?: string;
4
17
  force?: boolean;
5
18
  configPath?: string;
6
19
  homeDir?: string;
7
20
  }
8
21
  export interface InitResult {
9
22
  path: string;
10
- template: TemplateName;
23
+ /**
24
+ * The template name written, or `contentLabel` (default "custom")
25
+ * when the caller passed `content` instead of selecting a preset.
26
+ */
27
+ template: TemplateName | string;
11
28
  overwrote: boolean;
12
29
  stdout: string;
13
30
  stderr: string;
@@ -19,13 +19,23 @@ function resolveTargetPath(opts) {
19
19
  }
20
20
  export async function init(opts = {}) {
21
21
  const target = resolveTargetPath(opts);
22
- const template = opts.template ?? "minimal";
23
- const content = getTemplate(template);
24
- // Validate the template before any disk work — a broken template is a code
25
- // bug, not a user error, but failing loud here makes that bug obvious.
22
+ // When the caller supplied pre-composed YAML, use it verbatim and
23
+ // record the contentLabel (default "custom") in the result. Otherwise
24
+ // fall back to the named-template path.
25
+ const usingContent = opts.content !== undefined;
26
+ const templateLabel = usingContent
27
+ ? opts.contentLabel ?? "custom"
28
+ : opts.template ?? "minimal";
29
+ const content = usingContent
30
+ ? opts.content
31
+ : getTemplate(opts.template ?? "minimal");
32
+ // Validate before any disk work. For named templates a failure is a
33
+ // code bug; for composer output it's also a code bug (the composer is
34
+ // expected to emit validate-clean YAML). Either way we want to fail
35
+ // loud BEFORE clobbering the on-disk manifest.
26
36
  const validation = validateBeforeWrite(parseYaml(content));
27
37
  if (!validation.ok) {
28
- throw new HarnessExitError(`template "${template}" failed validation:\n${formatValidationErrors(validation.errors)}`, EX_SOFTWARE);
38
+ throw new HarnessExitError(`${usingContent ? "composed manifest" : `template "${templateLabel}"`} failed validation:\n${formatValidationErrors(validation.errors)}`, EX_SOFTWARE);
29
39
  }
30
40
  const lockPath = path.join(path.dirname(target), LOCK_BASENAME);
31
41
  // Existence check + write inside the lock so two concurrent `init` calls
@@ -40,7 +50,7 @@ export async function init(opts = {}) {
40
50
  });
41
51
  const stderr = exists ? `(overwriting existing manifest at ${target})\n` : "";
42
52
  const stdout = [
43
- `harness manifest written to ${target} (template: ${template})`,
53
+ `harness manifest written to ${target} (template: ${templateLabel})`,
44
54
  "",
45
55
  "Next steps:",
46
56
  ` harness validate --config ${target}`,
@@ -48,7 +58,7 @@ export async function init(opts = {}) {
48
58
  ` harness doctor --config ${target}`,
49
59
  "",
50
60
  ].join("\n");
51
- return { path: target, template, overwrote: exists, stdout, stderr };
61
+ return { path: target, template: templateLabel, overwrote: exists, stdout, stderr };
52
62
  }
53
63
  export const KNOWN_TEMPLATES = ["minimal", "solo", "team", "full"];
54
64
  export function isTemplate(s) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/init/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/init/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { select, confirm, input } from "@inquirer/prompts";
1
+ import { select, confirm, input, checkbox } from "@inquirer/prompts";
2
+ import { type RuntimeName } from "./detect.js";
2
3
  import { type InitResult } from "./index.js";
3
4
  import { type ApplyResult } from "../apply/index.js";
4
5
  import { type InstallOptions } from "./dependencies.js";
@@ -7,6 +8,22 @@ export interface InteractivePrompts {
7
8
  select: typeof select;
8
9
  confirm: typeof confirm;
9
10
  input: typeof input;
11
+ checkbox: typeof checkbox;
12
+ }
13
+ /**
14
+ * Wire targets the wizard knows about. `claude-code` and `codex` map to
15
+ * the runtimes that `harness apply` already supports. `opencode` is
16
+ * surfaced as disabled until the runtime adapter (agent-tasks/f34eb233)
17
+ * lands; including it here keeps the checkbox slot stable so docs and
18
+ * screenshots do not churn when the adapter ships.
19
+ */
20
+ export type WireableRuntime = RuntimeName;
21
+ export interface RuntimeApplyOutcome {
22
+ runtime: WireableRuntime;
23
+ /** undefined if `apply()` threw — recoveryHint carries the user-facing message. */
24
+ apply?: ApplyResult;
25
+ /** Operator-facing recovery message when apply threw, or the manual merge command for codex. */
26
+ recoveryHint?: string;
10
27
  }
11
28
  export interface RunInteractiveOptions {
12
29
  /** Override homedir for detection + write target. */
@@ -37,7 +54,19 @@ export interface InteractiveResult {
37
54
  profile?: ProfileChoice;
38
55
  /** Whether `harness validate` reported zero errors after the write. */
39
56
  validateClean?: boolean;
40
- /** Present when the wizard ran the post-write merge-apply step. */
57
+ /**
58
+ * Per-runtime apply outcome from the wire-now step. Present when the
59
+ * operator selected at least one runtime in the multiselect (default:
60
+ * every detected runtime is pre-checked). Empty array means the
61
+ * operator unchecked all runtimes — manifest stays on disk, no wiring.
62
+ */
63
+ applies?: RuntimeApplyOutcome[];
64
+ /**
65
+ * Legacy single-runtime shorthand: the claude-code apply outcome, if
66
+ * the wizard wired claude-code this run. Preserved so callers that
67
+ * predate task 696f7560 keep working. New code should read `applies[]`
68
+ * instead.
69
+ */
41
70
  apply?: ApplyResult;
42
71
  }
43
72
  export declare function runInteractive(opts?: RunInteractiveOptions): Promise<InteractiveResult>;
@@ -11,23 +11,25 @@
11
11
  // matching `/ExitPrompt|aborted/i`. The wizard catches it, prints an
12
12
  // abort line to stderr, and returns `aborted:true` WITHOUT calling
13
13
  // `init()`. No partial manifest is ever written.
14
- // - The wizard never invokes `harness apply` itself. It prints the
15
- // suggested command and lets the operator decide. This is a
16
- // deliberate scope-cut for v1 (per the task description's
17
- // out-of-scope list).
14
+ // - After validate-clean the wizard offers a runtime multiselect and
15
+ // runs `harness apply` once per selected runtime (task 696f7560).
16
+ // The set defaults to whichever runtimes detect() found configured,
17
+ // so a fresh CC-only machine sees the historical single-runtime flow.
18
+ // Unchecking everything skips wiring and prints the manual fallback.
18
19
  // - Acceptance criterion "fresh ~/.claude/ produces a valid harness.yaml":
19
20
  // we delegate writing to the existing `init()` so the same atomic
20
21
  // write + file-lock + post-write validate path is reused. The wizard
21
22
  // is essentially a UI for picking the `--template` value.
22
- import { select, confirm, input } from "@inquirer/prompts";
23
+ import { select, confirm, input, checkbox } from "@inquirer/prompts";
23
24
  import * as path from "node:path";
24
25
  import { EX_FAIL, HarnessExitError } from "../exit-codes.js";
25
- import { detect } from "./detect.js";
26
+ import { detect, } from "./detect.js";
26
27
  import { init } from "./index.js";
27
28
  import { validate } from "../validate/index.js";
28
- import { apply } from "../apply/index.js";
29
- import { checkDependencies, formatDependencyTable, installPackagesGlobally, } from "./dependencies.js";
30
- const DEFAULT_PROMPTS = { select, confirm, input };
29
+ import { apply, CODEX_CONFIG_BASENAME } from "../apply/index.js";
30
+ import { checkDependencies, checkDependencyList, dependenciesForCustom, formatDependencyTable, installPackagesGlobally, } from "./dependencies.js";
31
+ import { COMPOSABLE_MCPS, COMPOSABLE_PACKS, COMPOSABLE_POLICIES, composeCustom, } from "./composer.js";
32
+ const DEFAULT_PROMPTS = { select, confirm, input, checkbox };
31
33
  function isAbortError(err) {
32
34
  if (!(err instanceof Error))
33
35
  return false;
@@ -58,6 +60,77 @@ function profileNeedsAgentTasks(profile) {
58
60
  function detectionHasAgentTasks(d) {
59
61
  return d.mcpServers.some((s) => s.name === "agent-tasks");
60
62
  }
63
+ function runtimeIsConfigured(r) {
64
+ if (!r)
65
+ return false;
66
+ return r.homeExists || r.settingsExists;
67
+ }
68
+ async function wireRuntime(o) {
69
+ // Defensive: only claude-code and codex have apply paths in v1. The
70
+ // checkbox UI disables "opencode" until task f34eb233 lands, so this
71
+ // branch is unreachable through normal use; the guard fires if the
72
+ // disabled flag is ever removed without wiring an adapter, instead of
73
+ // silently returning a half-built RuntimeApplyOutcome.
74
+ if (o.runtime !== "claude-code" && o.runtime !== "codex") {
75
+ throw new HarnessExitError(`wireRuntime: ${o.runtime} is not a wirable runtime in this harness build`, EX_FAIL);
76
+ }
77
+ if (o.runtime === "claude-code") {
78
+ const applyOpts = {
79
+ configPath: o.configPath,
80
+ target: o.claudeSettingsPath,
81
+ merge: true,
82
+ };
83
+ if (o.homeDir !== undefined)
84
+ applyOpts.homeDir = path.join(o.homeDir, ".claude");
85
+ try {
86
+ const r = await apply(applyOpts);
87
+ if (r.targetMergeSummary)
88
+ o.stderr(`\n${r.targetMergeSummary}\n`);
89
+ if (r.targetWritten) {
90
+ o.stderr(`wired into ${r.targetPath}\n`);
91
+ o.stderr(`verify: claude -p "say hi" --settings ${r.targetPath} --output-format stream-json --include-hook-events\n`);
92
+ }
93
+ for (const hint of r.restartHints)
94
+ o.stderr(`restart hint: ${hint}\n`);
95
+ return { runtime: "claude-code", apply: r };
96
+ }
97
+ catch (err) {
98
+ const message = err instanceof Error ? err.message : String(err);
99
+ const recoveryHint = `harness apply --target ${o.claudeSettingsPath} --merge`;
100
+ o.stderr(`\nFailed to wire ${o.claudeSettingsPath}: ${message}\n`);
101
+ o.stderr(`Manifest is on disk. To retry the merge manually:\n ${recoveryHint}\n`);
102
+ return { runtime: "claude-code", recoveryHint };
103
+ }
104
+ }
105
+ // Codex path: apply --runtime codex emits harness.generated/codex/config.toml.
106
+ // We deliberately do NOT pass --target: apply rejects --target+codex (see
107
+ // apply.ts) because harness owns harness.generated/, the operator owns
108
+ // ~/.codex/config.toml, and there is no in-place TOML merge yet. We print
109
+ // the exact merge command the operator needs instead.
110
+ const applyOpts = {
111
+ configPath: o.configPath,
112
+ runtime: "codex",
113
+ };
114
+ if (o.homeDir !== undefined)
115
+ applyOpts.homeDir = path.join(o.homeDir, ".claude");
116
+ try {
117
+ const r = await apply(applyOpts);
118
+ const generatedCodexPath = path.join(r.generatedDir, CODEX_CONFIG_BASENAME);
119
+ o.stderr(`\ncodex config generated at ${generatedCodexPath}\n`);
120
+ o.stderr(`To activate: copy or include those [[hooks.*]] entries into ${o.codexConfigPath}\n`);
121
+ for (const hint of r.restartHints)
122
+ o.stderr(`restart hint: ${hint}\n`);
123
+ const recoveryHint = `merge ${generatedCodexPath} into ${o.codexConfigPath}`;
124
+ return { runtime: "codex", apply: r, recoveryHint };
125
+ }
126
+ catch (err) {
127
+ const message = err instanceof Error ? err.message : String(err);
128
+ const recoveryHint = `harness apply --runtime codex # then merge harness.generated/codex/config.toml into ${o.codexConfigPath}`;
129
+ o.stderr(`\nFailed to generate codex config: ${message}\n`);
130
+ o.stderr(`To retry manually:\n ${recoveryHint}\n`);
131
+ return { runtime: "codex", recoveryHint };
132
+ }
133
+ }
61
134
  export async function runInteractive(opts = {}) {
62
135
  const prompts = opts.prompts ?? DEFAULT_PROMPTS;
63
136
  const stderr = opts.stderr ?? ((s) => process.stderr.write(s));
@@ -107,15 +180,13 @@ export async function runInteractive(opts = {}) {
107
180
  ],
108
181
  }));
109
182
  if (profile === "custom") {
110
- stderr([
111
- "Custom profile selected. The interactive wizard does not build",
112
- "manifests à la carte. Start from `harness init --template minimal`",
113
- "or `harness init --template full` for the reference manifest, then",
114
- "edit it directly. Detection results above tell you what the",
115
- "harness already sees in your environment.",
116
- "",
117
- ].join("\n"));
118
- return { aborted: true, profile };
183
+ return await runCustomProfile({
184
+ detection,
185
+ prompts,
186
+ stderr,
187
+ stdout,
188
+ opts,
189
+ });
119
190
  }
120
191
  if (profileNeedsAgentTasks(profile) && !detectionHasAgentTasks(detection)) {
121
192
  const proceed = await prompts.confirm({
@@ -198,69 +269,15 @@ export async function runInteractive(opts = {}) {
198
269
  initOpts.homeDir = path.join(opts.homeDir, ".claude");
199
270
  }
200
271
  const initResult = await init(initOpts);
201
- if (initResult.stderr)
202
- stderr(initResult.stderr);
203
272
  stdout(initResult.stdout);
204
- const v = validate({ configPath: initResult.path });
205
- const validateClean = v.errorCount === 0;
206
- stderr(`\nharness validate: ${v.errorCount} error(s), ${v.warningCount} warning(s)\n`);
207
- for (const d of v.diagnostics) {
208
- stderr(` [${d.severity}] ${d.path}: ${d.message}\n`);
209
- }
210
- if (!validateClean) {
211
- stderr(`\nValidate reported errors. Fix the manifest before running \`harness apply\`.\n`);
212
- return { aborted: false, profile, init: initResult, validateClean };
213
- }
214
- // Validate-clean: offer to wire into Claude Code right now. A bare
215
- // `harness init` leaves the manifest on disk but Claude Code does
216
- // not see it until `apply --target ... --merge` runs. Without this
217
- // prompt the operator gets a clean manifest, runs `harness apply`,
218
- // sees `harness.generated/` files appear, and is stuck wondering
219
- // why Claude still does not honour any hooks. Auto-offering the
220
- // merge here collapses that two-step trap into one.
221
- const claudeSettingsPath = path.join(detection.runtimes.find((r) => r.name === "claude-code")?.home ?? path.join(opts.homeDir ?? process.env.HOME ?? "", ".claude"), "settings.json");
222
- const wireNow = await prompts.confirm({
223
- message: `Wire into Claude Code now? (merges hooks + mcpServers into ${claudeSettingsPath})`,
224
- default: true,
273
+ return await runPostInitTail({
274
+ initResult,
275
+ profile,
276
+ detection,
277
+ prompts,
278
+ stderr,
279
+ opts,
225
280
  });
226
- if (!wireNow) {
227
- stderr(`\nManifest written. To wire it into Claude Code later:\n harness apply --target ${claudeSettingsPath} --merge\n`);
228
- return { aborted: false, profile, init: initResult, validateClean };
229
- }
230
- const applyOpts = {
231
- configPath: initResult.path,
232
- target: claudeSettingsPath,
233
- merge: true,
234
- };
235
- if (opts.homeDir !== undefined) {
236
- applyOpts.homeDir = path.join(opts.homeDir, ".claude");
237
- }
238
- // The merge-apply touches a real file under ~/.claude; permission
239
- // errors and pre-existing malformed JSON both throw from apply().
240
- // Catch here so a clean manifest write is not undone by a stack
241
- // trace, and the operator still sees the manual fallback command
242
- // they need to recover.
243
- let applyResult;
244
- try {
245
- applyResult = await apply(applyOpts);
246
- }
247
- catch (err) {
248
- const message = err instanceof Error ? err.message : String(err);
249
- stderr(`\nFailed to wire ${claudeSettingsPath}: ${message}\n`);
250
- stderr(`Manifest is on disk. To retry the merge manually:\n harness apply --target ${claudeSettingsPath} --merge\n`);
251
- return { aborted: false, profile, init: initResult, validateClean };
252
- }
253
- if (applyResult.targetMergeSummary) {
254
- stderr(`\n${applyResult.targetMergeSummary}\n`);
255
- }
256
- if (applyResult.targetWritten) {
257
- stderr(`wired into ${applyResult.targetPath}\n`);
258
- stderr(`verify: claude -p "say hi" --settings ${applyResult.targetPath} --output-format stream-json --include-hook-events\n`);
259
- }
260
- for (const hint of applyResult.restartHints) {
261
- stderr(`restart hint: ${hint}\n`);
262
- }
263
- return { aborted: false, profile, init: initResult, validateClean, apply: applyResult };
264
281
  }
265
282
  catch (err) {
266
283
  if (isAbortError(err)) {
@@ -270,4 +287,229 @@ export async function runInteractive(opts = {}) {
270
287
  throw err;
271
288
  }
272
289
  }
290
+ /**
291
+ * Run the shared tail after the manifest has been written: validate the
292
+ * on-disk file, surface diagnostics, then offer the runtime-multiselect
293
+ * wire-now step. Used by both the named-profile path (Solo / Team /
294
+ * Full) and the Custom-profile composer path (task 31d2fbb5) so they
295
+ * share identical post-init UX.
296
+ */
297
+ async function runPostInitTail(t) {
298
+ const { initResult, profile, detection, prompts, stderr, opts } = t;
299
+ if (initResult.stderr)
300
+ stderr(initResult.stderr);
301
+ const v = validate({ configPath: initResult.path });
302
+ const validateClean = v.errorCount === 0;
303
+ stderr(`\nharness validate: ${v.errorCount} error(s), ${v.warningCount} warning(s)\n`);
304
+ for (const d of v.diagnostics) {
305
+ stderr(` [${d.severity}] ${d.path}: ${d.message}\n`);
306
+ }
307
+ if (!validateClean) {
308
+ stderr(`\nValidate reported errors. Fix the manifest before running \`harness apply\`.\n`);
309
+ return { aborted: false, profile, init: initResult, validateClean };
310
+ }
311
+ // Validate-clean: offer to wire each runtime right now. A bare
312
+ // `harness init` leaves the manifest on disk but Claude Code / Codex
313
+ // do not see it until `harness apply` runs. The multiselect collapses
314
+ // that trap into one and pre-checks whichever runtimes detect() found
315
+ // configured so the common single-runtime case stays a single Enter
316
+ // press.
317
+ const claudeRuntime = detection.runtimes.find((r) => r.name === "claude-code");
318
+ const codexRuntime = detection.runtimes.find((r) => r.name === "codex");
319
+ const claudeSettingsPath = path.join(claudeRuntime?.home ?? path.join(opts.homeDir ?? process.env.HOME ?? "", ".claude"), "settings.json");
320
+ const codexConfigPath = path.join(codexRuntime?.home ?? path.join(opts.homeDir ?? process.env.HOME ?? "", ".codex"), "config.toml");
321
+ const wireChoices = [
322
+ {
323
+ name: `claude-code → merges into ${claudeSettingsPath}`,
324
+ value: "claude-code",
325
+ checked: runtimeIsConfigured(claudeRuntime) || claudeRuntime === undefined,
326
+ },
327
+ {
328
+ name: `codex → writes harness.generated/codex/config.toml, you merge into ${codexConfigPath}`,
329
+ value: "codex",
330
+ checked: runtimeIsConfigured(codexRuntime),
331
+ },
332
+ ];
333
+ const selectedRuntimes = (await prompts.checkbox({
334
+ message: "Wire harness into which runtimes now? (space to toggle, return to confirm; uncheck all to skip)",
335
+ choices: [
336
+ ...wireChoices,
337
+ // opencode is parked until the runtime adapter (task f34eb233)
338
+ // lands. Listing it disabled keeps the slot stable so the wizard
339
+ // copy and screenshots do not churn when v1.1 enables it.
340
+ {
341
+ name: "opencode (shipping in harness v1.1 — adapter task f34eb233)",
342
+ value: "opencode",
343
+ checked: false,
344
+ disabled: "(disabled until f34eb233 lands)",
345
+ },
346
+ ],
347
+ }));
348
+ if (selectedRuntimes.length === 0) {
349
+ stderr([
350
+ "",
351
+ "Manifest written; no runtimes selected for wiring. To wire later:",
352
+ ` claude-code: harness apply --target ${claudeSettingsPath} --merge`,
353
+ ` codex: harness apply --runtime codex # then merge harness.generated/codex/config.toml into ${codexConfigPath}`,
354
+ "",
355
+ ].join("\n"));
356
+ return { aborted: false, profile, init: initResult, validateClean, applies: [] };
357
+ }
358
+ if (selectedRuntimes.length > 1) {
359
+ stderr("\nMulti-runtime wiring: harness.lock will reflect the last-applied runtime; re-run `harness apply --runtime <name>` to refresh drift baselines.\n");
360
+ }
361
+ const applies = [];
362
+ for (const runtime of selectedRuntimes) {
363
+ const outcome = await wireRuntime({
364
+ runtime,
365
+ configPath: initResult.path,
366
+ homeDir: opts.homeDir,
367
+ claudeSettingsPath,
368
+ codexConfigPath,
369
+ stderr,
370
+ });
371
+ applies.push(outcome);
372
+ }
373
+ const legacyApply = applies.find((a) => a.runtime === "claude-code")?.apply;
374
+ const result = {
375
+ aborted: false,
376
+ profile,
377
+ init: initResult,
378
+ validateClean,
379
+ applies,
380
+ };
381
+ if (legacyApply !== undefined)
382
+ result.apply = legacyApply;
383
+ return result;
384
+ }
385
+ /**
386
+ * Custom-profile à-la-carte builder (task 31d2fbb5). Drives three
387
+ * checkbox prompts (packs / MCPs / policies), feeds them into the
388
+ * composer, then rejoins the shared write + wire-now tail. v1 surface
389
+ * is intentionally a subset of the FULL template; remaining packs,
390
+ * MCPs, and policies are tracked as follow-up.
391
+ */
392
+ async function runCustomProfile(rc) {
393
+ const { detection, prompts, stderr, stdout, opts } = rc;
394
+ const profile = "custom";
395
+ // Pre-check MCPs whose names appear in detected settings.json
396
+ // mcpServers. Packs and policies have no detection signal today
397
+ // (settings.json doesn't carry them), so they start unchecked and
398
+ // the operator opts in.
399
+ const detectedMcpNames = new Set(detection.mcpServers.map((s) => s.name));
400
+ const detectedHasMemoryRouterDir = (() => {
401
+ // memory.router is structurally not in settings.json mcpServers,
402
+ // so this stays unchecked by default; operators who already have a
403
+ // memory.router config can re-check it in the prompt.
404
+ return false;
405
+ })();
406
+ const packs = (await prompts.checkbox({
407
+ message: "Custom: pick policy packs",
408
+ choices: COMPOSABLE_PACKS.map((p) => ({
409
+ name: `${p.label} ${p.description}`,
410
+ value: p.key,
411
+ checked: false,
412
+ })),
413
+ }));
414
+ const mcps = (await prompts.checkbox({
415
+ message: "Custom: pick MCP servers / routers",
416
+ choices: COMPOSABLE_MCPS.map((m) => ({
417
+ name: `${m.label} ${m.description}`,
418
+ value: m.key,
419
+ checked: m.key === "memory-router" ? detectedHasMemoryRouterDir : detectedMcpNames.has(m.key),
420
+ })),
421
+ }));
422
+ const policies = (await prompts.checkbox({
423
+ message: "Custom: pick reference policies",
424
+ choices: COMPOSABLE_POLICIES.map((p) => ({
425
+ name: `${p.label} ${p.description}`,
426
+ value: p.key,
427
+ checked: false,
428
+ })),
429
+ }));
430
+ if (packs.length === 0 && mcps.length === 0 && policies.length === 0) {
431
+ stderr([
432
+ "",
433
+ "Custom: no components selected — nothing to compose. Aborted; no manifest written.",
434
+ "Re-run `harness init --interactive` and pick at least one pack, MCP, or policy.",
435
+ "",
436
+ ].join("\n"));
437
+ return { aborted: true, profile };
438
+ }
439
+ // Dependency check uses the Custom-specific dep resolver. Same install
440
+ // UX as the named-profile path.
441
+ const customDeps = dependenciesForCustom({ packs, mcps, policies });
442
+ const depResult = checkDependencyList(customDeps, opts.dependencyPathEnv !== undefined ? { pathEnv: opts.dependencyPathEnv } : {});
443
+ if (depResult.statuses.length > 0) {
444
+ stderr(`\n${formatDependencyTable(profile, depResult)}\n`);
445
+ }
446
+ if (depResult.missingPackages.length > 0) {
447
+ const installNow = await prompts.confirm({
448
+ message: `Install ${depResult.missingPackages.length} missing package(s) with \`npm i -g ${depResult.missingPackages.join(" ")}\`?`,
449
+ default: true,
450
+ });
451
+ if (!installNow) {
452
+ stderr([
453
+ "",
454
+ "Aborted: dependencies missing and install declined.",
455
+ `To install manually: npm i -g ${depResult.missingPackages.join(" ")}`,
456
+ "Then re-run `harness init --interactive`.",
457
+ "",
458
+ ].join("\n"));
459
+ return { aborted: true, profile };
460
+ }
461
+ stderr(`\nRunning npm i -g ${depResult.missingPackages.join(" ")}\n`);
462
+ const installResult = await installPackagesGlobally(depResult.missingPackages, opts.installSpawn ? { spawn: opts.installSpawn } : {});
463
+ if (!installResult.ok) {
464
+ stderr([
465
+ "",
466
+ `Aborted: npm install exited ${installResult.exitCode}. Manifest NOT written.`,
467
+ "Common fixes: re-run with sudo, switch nvm to a writable node, or check network proxy.",
468
+ `Then re-run: harness init --interactive`,
469
+ "",
470
+ ].join("\n"));
471
+ return { aborted: true, profile };
472
+ }
473
+ stderr(`Installed ${installResult.attempted.length} package(s) successfully.\n`);
474
+ }
475
+ const defaultMemoryDir = path.join(detection.runtimes[0]?.home ?? "~/.claude", "projects", "{project}", "memory");
476
+ const memoryDir = await prompts.input({
477
+ message: "Memory directory pattern (use {project} for the per-project slug)",
478
+ default: defaultMemoryDir,
479
+ });
480
+ if (memoryDir.trim() === "") {
481
+ stderr("Aborted: memory directory left empty.\n");
482
+ return { aborted: true, profile };
483
+ }
484
+ const selection = { packs, mcps, policies, memoryDir: memoryDir.trim() };
485
+ const composed = composeCustom(selection);
486
+ for (const w of composed.warnings) {
487
+ stderr(`composer warning: ${w}\n`);
488
+ }
489
+ const confirmWrite = await prompts.confirm({
490
+ message: `Write composed harness.yaml to ${detection.manifest.path}?`,
491
+ default: true,
492
+ });
493
+ if (!confirmWrite) {
494
+ stderr("Aborted: declined to write manifest.\n");
495
+ return { aborted: true, profile };
496
+ }
497
+ const initOpts = {
498
+ content: composed.yaml,
499
+ contentLabel: "custom",
500
+ force: detection.manifest.exists,
501
+ };
502
+ if (opts.homeDir !== undefined)
503
+ initOpts.homeDir = path.join(opts.homeDir, ".claude");
504
+ const initResult = await init(initOpts);
505
+ stdout(initResult.stdout);
506
+ return await runPostInitTail({
507
+ initResult,
508
+ profile,
509
+ detection,
510
+ prompts,
511
+ stderr,
512
+ opts,
513
+ });
514
+ }
273
515
  //# sourceMappingURL=interactive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/cli/init/interactive.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAC5D,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,wEAAwE;AACxE,kEAAkE;AAClE,4DAA4D;AAC5D,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,mDAAmD;AACnD,mEAAmE;AACnE,8DAA8D;AAC9D,4DAA4D;AAC5D,wBAAwB;AACxB,2EAA2E;AAC3E,oEAAoE;AACpE,uEAAuE;AACvE,4DAA4D;AAE5D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAwB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAmB,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAoB,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AA4C3B,MAAM,eAAe,GAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAEvE,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkB;IAC5C,MAAM,KAAK,GAAa,CAAC,oBAAoB,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB;IACpD,kEAAkE;IAClE,iEAAiE;IACjE,8BAA8B;IAC9B,OAAO,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;AAClD,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAkB;IAChD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,SAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CACxB,+CAAgD,GAAa,CAAC,OAAO,EAAE,EACvE,OAAO,CACR,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACtC,OAAO,EAAE,gCAAgC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB;gBACjF,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,8CAA8C,CAAC,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,wDAAwD;oBAC9D,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,+DAA+D;iBAC7E;gBACD;oBACE,IAAI,EAAE,6DAA6D;oBACnE,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,0EAA0E;iBACxF;gBACD;oBACE,IAAI,EAAE,2EAA2E;oBACjF,KAAK,EAAE,MAAM;oBACb,WAAW,EACT,+NAA+N;iBAClO;gBACD;oBACE,IAAI,EAAE,2CAA2C;oBACjD,KAAK,EAAE,QAAQ;oBACf,WAAW,EACT,6HAA6H;iBAChI;aACF;SACF,CAAC,CAAkB,CAAC;QAErB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,CACJ;gBACE,gEAAgE;gBAChE,oEAAoE;gBACpE,oEAAoE;gBACpE,6DAA6D;gBAC7D,2CAA2C;gBAC3C,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,OAAO,EACL,sRAAsR;gBACxR,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,wEAAwE,CAAC,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,kEAAkE;QAClE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,SAAS,GAAG,iBAAiB,CACjC,OAAO,EACP,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACvC,OAAO,EAAE,WAAW,SAAS,CAAC,eAAe,CAAC,MAAM,uCAAuC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;gBACnI,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,CACJ;oBACE,EAAE;oBACF,qDAAqD;oBACrD,iCAAiC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACtE,2CAA2C;oBAC3C,EAAE;iBACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,sBAAsB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,aAAa,GAAG,MAAM,uBAAuB,CACjD,SAAS,CAAC,eAAe,EACzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CACtD,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,CACJ;oBACE,EAAE;oBACF,+BAA+B,aAAa,CAAC,QAAQ,yBAAyB;oBAC9E,wFAAwF;oBACxF,yCAAyC;oBACzC,EAAE;iBACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,aAAa,aAAa,CAAC,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACpC,OAAO,EAAE,mEAAmE;YAC5E,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,yCAAyC,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACzC,OAAO,EAAE,yBAAyB,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG;YAC5D,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,wCAAwC,CAAC,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,iEAAiE;QACjE,kDAAkD;QAClD,EAAE;QACF,mEAAmE;QACnE,+DAA+D;QAC/D,kEAAkE;QAClE,mEAAmE;QACnE,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,QAAQ,GAA6E;YACzF,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;SACjC,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,UAAU,CAAC,MAAM;YAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1B,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;QACzC,MAAM,CACJ,uBAAuB,CAAC,CAAC,UAAU,cAAc,CAAC,CAAC,YAAY,eAAe,CAC/E,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CACJ,kFAAkF,CACnF,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,iEAAiE;QACjE,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,EAC9H,eAAe,CAChB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACpC,OAAO,EAAE,8DAA8D,kBAAkB,GAAG;YAC5F,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CACJ,oFAAoF,kBAAkB,YAAY,CACnH,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,SAAS,GAAgC;YAC7C,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,MAAM,EAAE,kBAAkB;YAC1B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC;QACD,kEAAkE;QAClE,kEAAkE;QAClE,gEAAgE;QAChE,iEAAiE;QACjE,wBAAwB;QACxB,IAAI,WAAoC,CAAC;QACzC,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,oBAAoB,kBAAkB,KAAK,OAAO,IAAI,CAAC,CAAC;YAC/D,MAAM,CACJ,+EAA+E,kBAAkB,YAAY,CAC9G,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,WAAW,CAAC,kBAAkB,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,CAAC,cAAc,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC;YACjD,MAAM,CACJ,yCAAyC,WAAW,CAAC,UAAU,sDAAsD,CACtH,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IAC1F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,gEAAgE,CAAC,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/cli/init/interactive.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAC5D,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,wEAAwE;AACxE,kEAAkE;AAClE,4DAA4D;AAC5D,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,mDAAmD;AACnD,qEAAqE;AACrE,oEAAoE;AACpE,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,2EAA2E;AAC3E,oEAAoE;AACpE,uEAAuE;AACvE,4DAA4D;AAE5D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,MAAM,GAIP,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAmB,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAoB,MAAM,mBAAmB,CAAC;AACnF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GAKd,MAAM,eAAe,CAAC;AAyEvB,MAAM,eAAe,GAAuB,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAEjF,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkB;IAC5C,MAAM,KAAK,GAAa,CAAC,oBAAoB,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC5F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7F,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAsB;IACpD,kEAAkE;IAClE,iEAAiE;IACjE,8BAA8B;IAC9B,OAAO,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC;AAClD,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAkB;IAChD,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,mBAAmB,CAAC,CAA8B;IACzD,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,cAAc,CAAC;AAC1C,CAAC;AAWD,KAAK,UAAU,WAAW,CAAC,CAAkB;IAC3C,oEAAoE;IACpE,qEAAqE;IACrE,mEAAmE;IACnE,sEAAsE;IACtE,uDAAuD;IACvD,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACzD,MAAM,IAAI,gBAAgB,CACxB,gBAAgB,CAAC,CAAC,OAAO,iDAAiD,EAC1E,OAAO,CACR,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,SAAS,GAAgC;YAC7C,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,kBAAkB;YAC5B,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,kBAAkB;gBAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC;YAClE,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;gBACpB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;gBACzC,CAAC,CAAC,MAAM,CACN,yCAAyC,CAAC,CAAC,UAAU,sDAAsD,CAC5G,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,YAAY;gBAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,YAAY,GAAG,0BAA0B,CAAC,CAAC,kBAAkB,UAAU,CAAC;YAC9E,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,kBAAkB,KAAK,OAAO,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,MAAM,CAAC,wDAAwD,YAAY,IAAI,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IACD,+EAA+E;IAC/E,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,SAAS,GAAgC;QAC7C,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,OAAO,EAAE,OAAO;KACjB,CAAC;IACF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAC5E,CAAC,CAAC,MAAM,CAAC,+BAA+B,kBAAkB,IAAI,CAAC,CAAC;QAChE,CAAC,CAAC,MAAM,CACN,+DAA+D,CAAC,CAAC,eAAe,IAAI,CACrF,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,YAAY;YAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,SAAS,kBAAkB,SAAS,CAAC,CAAC,eAAe,EAAE,CAAC;QAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,yFAAyF,CAAC,CAAC,eAAe,EAAE,CAAC;QAClI,CAAC,CAAC,MAAM,CAAC,sCAAsC,OAAO,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC,MAAM,CAAC,yBAAyB,YAAY,IAAI,CAAC,CAAC;QACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B,EAAE;IAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,eAAe,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,IAAI,SAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CACxB,+CAAgD,GAAa,CAAC,OAAO,EAAE,EACvE,OAAO,CACR,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACtC,OAAO,EAAE,gCAAgC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB;gBACjF,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,8CAA8C,CAAC,CAAC;gBACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC;YACpC,OAAO,EAAE,sBAAsB;YAC/B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,wDAAwD;oBAC9D,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,+DAA+D;iBAC7E;gBACD;oBACE,IAAI,EAAE,6DAA6D;oBACnE,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,0EAA0E;iBACxF;gBACD;oBACE,IAAI,EAAE,2EAA2E;oBACjF,KAAK,EAAE,MAAM;oBACb,WAAW,EACT,+NAA+N;iBAClO;gBACD;oBACE,IAAI,EAAE,2CAA2C;oBACjD,KAAK,EAAE,QAAQ;oBACf,WAAW,EACT,6HAA6H;iBAChI;aACF;SACF,CAAC,CAAkB,CAAC;QAErB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,MAAM,gBAAgB,CAAC;gBAC5B,SAAS;gBACT,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,OAAO,EACL,sRAAsR;gBACxR,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,wEAAwE,CAAC,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,kEAAkE;QAClE,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,SAAS,GAAG,iBAAiB,CACjC,OAAO,EACP,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF,CAAC;QACF,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACvC,OAAO,EAAE,WAAW,SAAS,CAAC,eAAe,CAAC,MAAM,uCAAuC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;gBACnI,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,CACJ;oBACE,EAAE;oBACF,qDAAqD;oBACrD,iCAAiC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACtE,2CAA2C;oBAC3C,EAAE;iBACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,sBAAsB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,aAAa,GAAG,MAAM,uBAAuB,CACjD,SAAS,CAAC,eAAe,EACzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CACtD,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;gBACtB,MAAM,CACJ;oBACE,EAAE;oBACF,+BAA+B,aAAa,CAAC,QAAQ,yBAAyB;oBAC9E,wFAAwF;oBACxF,yCAAyC;oBACzC,EAAE;iBACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,aAAa,aAAa,CAAC,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAClH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;YACpC,OAAO,EAAE,mEAAmE;YAC5E,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC5B,MAAM,CAAC,yCAAyC,CAAC,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACzC,OAAO,EAAE,yBAAyB,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG;YAC5D,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,CAAC,wCAAwC,CAAC,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QAED,iEAAiE;QACjE,kDAAkD;QAClD,EAAE;QACF,mEAAmE;QACnE,+DAA+D;QAC/D,kEAAkE;QAClE,mEAAmE;QACnE,oEAAoE;QACpE,8BAA8B;QAC9B,MAAM,QAAQ,GAA6E;YACzF,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;SACjC,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE1B,OAAO,MAAM,eAAe,CAAC;YAC3B,UAAU;YACV,OAAO;YACP,SAAS;YACT,OAAO;YACP,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,gEAAgE,CAAC,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAWD;;;;;;GAMG;AACH,KAAK,UAAU,eAAe,CAAC,CAAmB;IAChD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,MAAM;QAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEjD,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC;IACzC,MAAM,CAAC,uBAAuB,CAAC,CAAC,UAAU,cAAc,CAAC,CAAC,YAAY,eAAe,CAAC,CAAC;IACvF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,kFAAkF,CAAC,CAAC;QAC3F,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,+DAA+D;IAC/D,qEAAqE;IACrE,sEAAsE;IACtE,sEAAsE;IACtE,oEAAoE;IACpE,SAAS;IACT,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACxE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,EACnF,eAAe,CAChB,CAAC;IACF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,YAAY,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,CAAC,EACjF,aAAa,CACd,CAAC;IAEF,MAAM,WAAW,GAAoF;QACnG;YACE,IAAI,EAAE,8BAA8B,kBAAkB,EAAE;YACxD,KAAK,EAAE,aAAa;YACpB,OAAO,EAAE,mBAAmB,CAAC,aAAa,CAAC,IAAI,aAAa,KAAK,SAAS;SAC3E;QACD;YACE,IAAI,EAAE,6EAA6E,eAAe,EAAE;YACpG,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,mBAAmB,CAAC,YAAY,CAAC;SAC3C;KACF,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC;QAC/C,OAAO,EAAE,iGAAiG;QAC1G,OAAO,EAAE;YACP,GAAG,WAAW;YACd,+DAA+D;YAC/D,iEAAiE;YACjE,0DAA0D;YAC1D;gBACE,IAAI,EAAE,iEAAiE;gBACvE,KAAK,EAAE,UAA6B;gBACpC,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,iCAAiC;aAC5C;SACF;KACF,CAAC,CAAsB,CAAC;IAEzB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,CACJ;YACE,EAAE;YACF,mEAAmE;YACnE,yCAAyC,kBAAkB,UAAU;YACrE,wGAAwG,eAAe,EAAE;YACzH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACnF,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,CACJ,mJAAmJ,CACpJ,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC;YAChC,OAAO;YACP,UAAU,EAAE,UAAU,CAAC,IAAI;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,kBAAkB;YAClB,eAAe;YACf,MAAM;SACP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,EAAE,KAAK,CAAC;IAC5E,MAAM,MAAM,GAAsB;QAChC,OAAO,EAAE,KAAK;QACd,OAAO;QACP,IAAI,EAAE,UAAU;QAChB,aAAa;QACb,OAAO;KACR,CAAC;IACF,IAAI,WAAW,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAUD;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,EAAiB;IAC/C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACxD,MAAM,OAAO,GAAkB,QAAQ,CAAC;IAExC,8DAA8D;IAC9D,gEAAgE;IAChE,kEAAkE;IAClE,wBAAwB;IACxB,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE;QACvC,iEAAiE;QACjE,mEAAmE;QACnE,sDAAsD;QACtD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,KAAK,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC;QACpC,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,CAAC,CAAC,GAAG;YACZ,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;KACJ,CAAC,CAAoB,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC;QACnC,OAAO,EAAE,oCAAoC;QAC7C,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,CAAC,CAAC,GAAG;YACZ,OAAO,EACL,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;SACvF,CAAC,CAAC;KACJ,CAAC,CAAmB,CAAC;IAEtB,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC;QACvC,OAAO,EAAE,iCAAiC;QAC1C,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW,EAAE;YACpC,KAAK,EAAE,CAAC,CAAC,GAAG;YACZ,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;KACJ,CAAC,CAAsB,CAAC;IAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,CACJ;YACE,EAAE;YACF,oFAAoF;YACpF,iFAAiF;YACjF,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,uEAAuE;IACvE,gCAAgC;IAChC,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,mBAAmB,CACnC,UAAU,EACV,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF,CAAC;IACF,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,WAAW,SAAS,CAAC,eAAe,CAAC,MAAM,uCAAuC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;YACnI,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CACJ;gBACE,EAAE;gBACF,qDAAqD;gBACrD,iCAAiC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACtE,2CAA2C;gBAC3C,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,sBAAsB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,aAAa,GAAG,MAAM,uBAAuB,CACjD,SAAS,CAAC,eAAe,EACzB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CACtD,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;YACtB,MAAM,CACJ;gBACE,EAAE;gBACF,+BAA+B,aAAa,CAAC,QAAQ,yBAAyB;gBAC9E,wFAAwF;gBACxF,yCAAyC;gBACzC,EAAE;aACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,aAAa,aAAa,CAAC,SAAS,CAAC,MAAM,6BAA6B,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAChC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,WAAW,EAC1C,UAAU,EACV,WAAW,EACX,QAAQ,CACT,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC;QACpC,OAAO,EAAE,mEAAmE;QAC5E,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5B,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,SAAS,GAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1F,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;QACzC,OAAO,EAAE,kCAAkC,SAAS,CAAC,QAAQ,CAAC,IAAI,GAAG;QACrE,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,QAAQ,GAAgF;QAC5F,OAAO,EAAE,QAAQ,CAAC,IAAI;QACtB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;KACjC,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,MAAM,eAAe,CAAC;QAC3B,UAAU;QACV,OAAO;QACP,SAAS;QACT,OAAO;QACP,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}