@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.
- package/CHANGELOG.md +45 -0
- package/README.md +20 -2
- package/dist/cli/doctor/format.js +24 -0
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.d.ts +7 -0
- package/dist/cli/doctor/index.js +10 -0
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/rogue-ledger.d.ts +25 -0
- package/dist/cli/doctor/rogue-ledger.js +106 -0
- package/dist/cli/doctor/rogue-ledger.js.map +1 -0
- package/dist/cli/doctor/types.d.ts +10 -1
- package/dist/cli/doctor/types.js.map +1 -1
- package/dist/cli/index.js +177 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/composer.d.ts +29 -0
- package/dist/cli/init/composer.js +377 -0
- package/dist/cli/init/composer.js.map +1 -0
- package/dist/cli/init/dependencies.d.ts +25 -0
- package/dist/cli/init/dependencies.js +100 -10
- package/dist/cli/init/dependencies.js.map +1 -1
- package/dist/cli/init/index.d.ts +18 -1
- package/dist/cli/init/index.js +17 -7
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/interactive.d.ts +31 -2
- package/dist/cli/init/interactive.js +321 -79
- package/dist/cli/init/interactive.js.map +1 -1
- package/dist/cli/init/templates.d.ts +1 -1
- package/dist/cli/init/templates.js +60 -9
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +30 -0
- package/dist/cli/pack/hook-branch-protection.js +279 -0
- package/dist/cli/pack/hook-branch-protection.js.map +1 -0
- package/dist/cli/pack/hook-codex-pre-tool-use.js +3 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +1 -1
- package/dist/cli/pack/hook-pre-tool-use.js +42 -3
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/understanding-report-schema-hint.d.ts +13 -0
- package/dist/cli/pack/understanding-report-schema-hint.js +54 -0
- package/dist/cli/pack/understanding-report-schema-hint.js.map +1 -0
- package/dist/cli/session-start/branch-check.d.ts +44 -0
- package/dist/cli/session-start/branch-check.js +165 -0
- package/dist/cli/session-start/branch-check.js.map +1 -0
- package/dist/cli/uninstall/index.d.ts +68 -0
- package/dist/cli/uninstall/index.js +586 -0
- package/dist/cli/uninstall/index.js.map +1 -0
- package/dist/cli/uninstall/snapshot.d.ts +40 -0
- package/dist/cli/uninstall/snapshot.js +34 -0
- package/dist/cli/uninstall/snapshot.js.map +1 -0
- package/dist/cli/validate/checks.d.ts +1 -1
- package/dist/cli/validate/checks.js +1 -7
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/io/harness-lock.js +1 -9
- package/dist/io/harness-lock.js.map +1 -1
- package/dist/policies/ledger-client.js +3 -9
- package/dist/policies/ledger-client.js.map +1 -1
- package/dist/policies/producers.d.ts +12 -0
- package/dist/policies/producers.js +61 -0
- package/dist/policies/producers.js.map +1 -0
- package/dist/policy-packs/builtin/branch-protection-runtime.d.ts +47 -0
- package/dist/policy-packs/builtin/branch-protection-runtime.js +92 -0
- package/dist/policy-packs/builtin/branch-protection-runtime.js.map +1 -0
- package/dist/policy-packs/builtin/branch-protection.d.ts +9 -0
- package/dist/policy-packs/builtin/branch-protection.js +146 -0
- package/dist/policy-packs/builtin/branch-protection.js.map +1 -0
- package/dist/policy-packs/registry.d.ts +1 -1
- package/dist/policy-packs/registry.js +10 -3
- package/dist/policy-packs/registry.js.map +1 -1
- package/dist/runtime/expand-home.d.ts +14 -0
- package/dist/runtime/expand-home.js +54 -0
- package/dist/runtime/expand-home.js.map +1 -0
- package/dist/runtime/intercept.js +13 -2
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/ledger-add.js +10 -3
- package/dist/runtime/ledger-add.js.map +1 -1
- package/dist/runtime/ledger-record.js +11 -10
- package/dist/runtime/ledger-record.js.map +1 -1
- package/dist/schema/index.d.ts +281 -101
- package/dist/schema/permission-profiles.d.ts +125 -125
- package/dist/schema/policies.d.ts +261 -0
- package/dist/schema/policies.js +50 -0
- package/dist/schema/policies.js.map +1 -1
- package/package.json +2 -1
package/dist/cli/init/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/dist/cli/init/index.js
CHANGED
|
@@ -19,13 +19,23 @@ function resolveTargetPath(opts) {
|
|
|
19
19
|
}
|
|
20
20
|
export async function init(opts = {}) {
|
|
21
21
|
const target = resolveTargetPath(opts);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//
|
|
25
|
-
|
|
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 "${
|
|
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: ${
|
|
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":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAqB,MAAM,gBAAgB,CAAC;
|
|
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
|
-
/**
|
|
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
|
-
// -
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
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
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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":"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"}
|