@kenkaiiii/gg-editor 0.4.0 → 0.5.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.
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
export interface DoctorRunOptions {
|
|
2
|
-
/**
|
|
2
|
+
/** Welcome banner instead of the plain doctor banner. */
|
|
3
3
|
onboarding?: boolean;
|
|
4
|
-
/** Show the full inventory and exit (no
|
|
4
|
+
/** Show the full inventory and exit (no interactive screen). */
|
|
5
5
|
all?: boolean;
|
|
6
|
-
/** Skip every prompt — print the report and exit.
|
|
6
|
+
/** Skip every prompt — print the report once and exit. CI-friendly. */
|
|
7
7
|
nonInteractive?: boolean;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Top-level entry
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
10
|
+
* Top-level entry called by cli.ts.
|
|
11
|
+
*
|
|
12
|
+
* - `--all` → prints the static inventory, no screen.
|
|
13
|
+
* - non-TTY / `nonInteractive` → same.
|
|
14
|
+
* - everything else → mounts the interactive screen.
|
|
13
15
|
*/
|
|
14
16
|
export declare function runDoctorInteractive(opts?: DoctorRunOptions): Promise<void>;
|
|
15
17
|
//# sourceMappingURL=doctor-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-runner.d.ts","sourceRoot":"","sources":["../../src/core/doctor-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor-runner.d.ts","sourceRoot":"","sources":["../../src/core/doctor-runner.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBrF"}
|
|
@@ -1,197 +1,302 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Interactive doctor
|
|
2
|
+
* Interactive doctor screen.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Modelled on the Task Pane and the login selector: full-screen clear on
|
|
5
|
+
* entry, redraw-in-place on every keypress, a single vertical list with
|
|
6
|
+
* status glyphs, footer keymap. No printing-down-the-page, no walls of
|
|
7
|
+
* text, no scrollback pollution.
|
|
6
8
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* -
|
|
11
|
-
*
|
|
9
|
+
* ↑↓ navigate
|
|
10
|
+
* Enter install / fix the selected item
|
|
11
|
+
* s skip (just dismiss the install prompt and refocus)
|
|
12
|
+
* r re-probe everything
|
|
13
|
+
* q/Esc quit
|
|
12
14
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
15
|
+
* When the user hits Enter and the item carries an InstallableHint we
|
|
16
|
+
* leave the screen, run the package manager with stdio inherited, then
|
|
17
|
+
* re-mount the screen with a refreshed report.
|
|
18
|
+
*
|
|
19
|
+
* Items without a structured installer (env vars, OAuth login, opening
|
|
20
|
+
* Resolve) just show the manual fix below the list — no wizard, no
|
|
21
|
+
* forced advance.
|
|
16
22
|
*/
|
|
17
23
|
import { spawn } from "node:child_process";
|
|
18
|
-
import { createInterface } from "node:readline/promises";
|
|
19
24
|
import chalk from "chalk";
|
|
20
25
|
import { renderCliBanner } from "./cli-banner.js";
|
|
21
26
|
import { runDoctor } from "./doctor.js";
|
|
22
27
|
import { renderDoctorReport } from "./doctor-render.js";
|
|
23
28
|
import { getPackageVersion } from "./version.js";
|
|
24
|
-
const EDITOR_ACCENT = "#ec4899";
|
|
25
|
-
const pink = chalk.hex(EDITOR_ACCENT);
|
|
26
29
|
/**
|
|
27
|
-
* Top-level entry
|
|
28
|
-
*
|
|
29
|
-
* -
|
|
30
|
+
* Top-level entry called by cli.ts.
|
|
31
|
+
*
|
|
32
|
+
* - `--all` → prints the static inventory, no screen.
|
|
33
|
+
* - non-TTY / `nonInteractive` → same.
|
|
34
|
+
* - everything else → mounts the interactive screen.
|
|
30
35
|
*/
|
|
31
36
|
export async function runDoctorInteractive(opts = {}) {
|
|
32
|
-
printBanner(opts.onboarding === true);
|
|
33
|
-
// Non-interactive paths: just print and exit.
|
|
34
37
|
if (opts.all || opts.nonInteractive || !process.stdin.isTTY) {
|
|
38
|
+
process.stdout.write(renderCliBanner({
|
|
39
|
+
version: getPackageVersion(),
|
|
40
|
+
screen: opts.onboarding ? "Welcome" : "Doctor",
|
|
41
|
+
subtitle: opts.onboarding
|
|
42
|
+
? "One-time environment check. Re-run any time."
|
|
43
|
+
: "Environment check. Re-run any time.",
|
|
44
|
+
}));
|
|
35
45
|
const report = runDoctor();
|
|
36
46
|
process.stdout.write(renderDoctorReport(report, { all: opts.all, onboarding: opts.onboarding }));
|
|
37
47
|
return;
|
|
38
48
|
}
|
|
39
|
-
await
|
|
49
|
+
await mountInteractiveScreen(opts.onboarding === true);
|
|
40
50
|
}
|
|
41
|
-
// ──
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
async function walkActionableItems(onboarding) {
|
|
57
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
58
|
-
// Track items the user has explicitly skipped this session so we
|
|
59
|
-
// don't re-ask about them after every successful install.
|
|
51
|
+
// ── ANSI screen primitives ─────────────────────────────────
|
|
52
|
+
const ENTER_ALT = "\x1b[?1049h"; // switch to alternate screen buffer
|
|
53
|
+
const EXIT_ALT = "\x1b[?1049l"; // back to main buffer
|
|
54
|
+
const HIDE_CURSOR = "\x1b[?25l";
|
|
55
|
+
const SHOW_CURSOR = "\x1b[?25h";
|
|
56
|
+
const HOME = "\x1b[H"; // cursor → top-left
|
|
57
|
+
const CLEAR_BELOW = "\x1b[J"; // clear from cursor to end of screen
|
|
58
|
+
// ── Interactive screen ─────────────────────────────────────
|
|
59
|
+
async function mountInteractiveScreen(onboarding) {
|
|
60
|
+
const stdout = process.stdout;
|
|
61
|
+
const stdin = process.stdin;
|
|
62
|
+
// Enter alternate buffer so we don't bury existing scrollback. On exit
|
|
63
|
+
// we restore it cleanly. `runLogin` does its own variant — we use
|
|
64
|
+
// alt-screen here because the doctor list can be tall.
|
|
65
|
+
stdout.write(ENTER_ALT + HIDE_CURSOR);
|
|
60
66
|
const skipped = new Set();
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
67
|
+
let report = runDoctor();
|
|
68
|
+
let actionable = report.checks.filter((c) => c.severity !== "info");
|
|
69
|
+
let selectedIdx = pickFirstActionableIdx(actionable, skipped);
|
|
70
|
+
let banner = renderBanner(report, onboarding);
|
|
71
|
+
let footerNote = null;
|
|
72
|
+
let footerNoteTimer = null;
|
|
73
|
+
const setFooterNote = (text, color) => {
|
|
74
|
+
if (footerNoteTimer)
|
|
75
|
+
clearTimeout(footerNoteTimer);
|
|
76
|
+
footerNote = { text, color };
|
|
77
|
+
draw();
|
|
78
|
+
footerNoteTimer = setTimeout(() => {
|
|
79
|
+
footerNote = null;
|
|
80
|
+
draw();
|
|
81
|
+
}, 2500);
|
|
82
|
+
};
|
|
83
|
+
const reload = () => {
|
|
84
|
+
report = runDoctor();
|
|
85
|
+
actionable = report.checks.filter((c) => c.severity !== "info");
|
|
86
|
+
banner = renderBanner(report, onboarding);
|
|
87
|
+
if (selectedIdx >= actionable.length)
|
|
88
|
+
selectedIdx = Math.max(0, actionable.length - 1);
|
|
89
|
+
};
|
|
90
|
+
const draw = () => {
|
|
91
|
+
stdout.write(HOME + CLEAR_BELOW);
|
|
92
|
+
stdout.write(banner);
|
|
93
|
+
stdout.write(renderItemList(actionable, selectedIdx, skipped));
|
|
94
|
+
stdout.write("\n");
|
|
95
|
+
stdout.write(renderDetail(actionable[selectedIdx]));
|
|
96
|
+
stdout.write("\n");
|
|
97
|
+
stdout.write(renderFooter(footerNote));
|
|
98
|
+
};
|
|
99
|
+
draw();
|
|
100
|
+
stdin.setRawMode(true);
|
|
101
|
+
stdin.resume();
|
|
102
|
+
stdin.setEncoding("utf8");
|
|
103
|
+
return new Promise((resolve) => {
|
|
104
|
+
const cleanup = () => {
|
|
105
|
+
if (footerNoteTimer)
|
|
106
|
+
clearTimeout(footerNoteTimer);
|
|
107
|
+
stdin.removeListener("data", onData);
|
|
108
|
+
stdin.setRawMode(false);
|
|
109
|
+
stdin.pause();
|
|
110
|
+
stdout.write(SHOW_CURSOR + EXIT_ALT);
|
|
111
|
+
// After leaving alt-screen, print a one-line summary in the main
|
|
112
|
+
// buffer so the user has something in scrollback.
|
|
113
|
+
const totalActionable = actionable.length;
|
|
114
|
+
const ok = actionable.filter((c) => c.status === "ok").length;
|
|
115
|
+
if (ok === totalActionable) {
|
|
116
|
+
process.stdout.write(chalk.green("✓ Nothing to fix. You're all good.") +
|
|
117
|
+
chalk.dim(" Run `ggeditor` to start.\n"));
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
process.stdout.write(chalk.dim(`Doctor closed. ${ok}/${totalActionable} ready. Re-run \`ggeditor doctor\` any time.\n`));
|
|
121
|
+
}
|
|
122
|
+
resolve();
|
|
123
|
+
};
|
|
124
|
+
const onData = (chunk) => {
|
|
125
|
+
// Quit
|
|
126
|
+
if (chunk === "\x03" /* Ctrl+C */ || chunk === "q" || chunk === "\x1b") {
|
|
127
|
+
cleanup();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// ↑
|
|
131
|
+
if (chunk === "\x1b[A" || chunk === "k") {
|
|
132
|
+
if (selectedIdx > 0) {
|
|
133
|
+
selectedIdx--;
|
|
134
|
+
draw();
|
|
74
135
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// ↓
|
|
139
|
+
if (chunk === "\x1b[B" || chunk === "j") {
|
|
140
|
+
if (selectedIdx < actionable.length - 1) {
|
|
141
|
+
selectedIdx++;
|
|
142
|
+
draw();
|
|
78
143
|
}
|
|
79
144
|
return;
|
|
80
145
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
146
|
+
// s — skip current item this session (does NOT advance — user can
|
|
147
|
+
// navigate with arrows. Skipped items stay in the list, just greyed).
|
|
148
|
+
if (chunk === "s") {
|
|
149
|
+
const cur = actionable[selectedIdx];
|
|
150
|
+
if (cur && cur.status !== "ok") {
|
|
151
|
+
skipped.add(cur.id);
|
|
152
|
+
setFooterNote(`Skipped ${cur.label}`, "info");
|
|
153
|
+
}
|
|
86
154
|
return;
|
|
87
155
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
156
|
+
// r — re-probe everything (e.g. after the user installed something
|
|
157
|
+
// outside the doctor)
|
|
158
|
+
if (chunk === "r") {
|
|
159
|
+
reload();
|
|
160
|
+
setFooterNote("Re-probed", "ok");
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
// Enter — install or show fix instructions
|
|
164
|
+
if (chunk === "\r" || chunk === "\n") {
|
|
165
|
+
const cur = actionable[selectedIdx];
|
|
166
|
+
if (!cur)
|
|
167
|
+
return;
|
|
168
|
+
if (cur.status === "ok") {
|
|
169
|
+
setFooterNote("Already done", "ok");
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (cur.installable) {
|
|
173
|
+
// Tear down the screen, run the manager with full stdio so the
|
|
174
|
+
// user sees + interacts with it directly, then re-mount.
|
|
175
|
+
stdout.write(SHOW_CURSOR + EXIT_ALT);
|
|
176
|
+
stdin.setRawMode(false);
|
|
177
|
+
stdin.pause();
|
|
178
|
+
stdin.removeListener("data", onData);
|
|
179
|
+
process.stdout.write(chalk.dim(`\n Running: `) +
|
|
180
|
+
chalk.cyan(`${cur.installable.command} ${cur.installable.args.join(" ")}`) +
|
|
181
|
+
"\n\n");
|
|
182
|
+
spawnInstall(cur.installable.command, cur.installable.args).then((code) => {
|
|
183
|
+
if (code === 0) {
|
|
184
|
+
process.stdout.write(chalk.green("\n ✓ Installed. Re-probing…\n"));
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
process.stdout.write(chalk.red(`\n ✗ Install failed (exit ${code}). You can fix it manually:\n`));
|
|
188
|
+
if (cur.fix) {
|
|
189
|
+
for (const line of cur.fix.split("\n")) {
|
|
190
|
+
process.stdout.write(" " + chalk.cyan(line) + "\n");
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
process.stdout.write("\n");
|
|
194
|
+
}
|
|
195
|
+
// Re-mount the screen.
|
|
196
|
+
stdout.write(ENTER_ALT + HIDE_CURSOR);
|
|
197
|
+
stdin.setRawMode(true);
|
|
198
|
+
stdin.resume();
|
|
199
|
+
stdin.on("data", onData);
|
|
200
|
+
reload();
|
|
201
|
+
// Reposition selection to the same id if it still exists.
|
|
202
|
+
const newIdx = actionable.findIndex((c) => c.id === cur.id);
|
|
203
|
+
if (newIdx >= 0)
|
|
204
|
+
selectedIdx = newIdx;
|
|
205
|
+
else
|
|
206
|
+
selectedIdx = pickFirstActionableIdx(actionable, skipped);
|
|
207
|
+
if (code === 0)
|
|
208
|
+
setFooterNote(`Installed ${cur.label}`, "ok");
|
|
209
|
+
draw();
|
|
210
|
+
});
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// No installer — flash a hint that the fix is shown below.
|
|
214
|
+
setFooterNote("See fix instructions below — run them in another terminal", "warn");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
stdin.on("data", onData);
|
|
219
|
+
});
|
|
95
220
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (item.installable) {
|
|
106
|
-
return await offerInstall(item, item.installable, rl);
|
|
107
|
-
}
|
|
108
|
-
// No structured installer — print the manual fix and move on.
|
|
109
|
-
if (item.fix) {
|
|
110
|
-
process.stdout.write(chalk.dim(" Fix:\n"));
|
|
111
|
-
for (const line of item.fix.split("\n")) {
|
|
112
|
-
process.stdout.write(" " + chalk.cyan(line) + "\n");
|
|
113
|
-
}
|
|
114
|
-
process.stdout.write("\n");
|
|
115
|
-
}
|
|
116
|
-
// For required items without a structured installer (e.g. auth →
|
|
117
|
-
// `ggeditor login`) we ask whether to keep going. For optional ones
|
|
118
|
-
// we just move on.
|
|
119
|
-
if (item.severity === "required" || item.severity === "block") {
|
|
120
|
-
const ans = await askYN(rl, " Continue to the next item?", "y");
|
|
121
|
-
return ans ? "next" : "quit";
|
|
122
|
-
}
|
|
123
|
-
// Onboarding mode: pause briefly so the user reads the fix.
|
|
124
|
-
if (onboarding) {
|
|
125
|
-
const ans = await askYN(rl, " Continue?", "y");
|
|
126
|
-
return ans ? "next" : "quit";
|
|
127
|
-
}
|
|
128
|
-
return "next";
|
|
221
|
+
// ── Render helpers ─────────────────────────────────────────
|
|
222
|
+
function renderBanner(report, onboarding) {
|
|
223
|
+
const total = report.checks.filter((c) => c.severity !== "info").length;
|
|
224
|
+
const done = report.checks.filter((c) => c.severity !== "info" && c.status === "ok").length;
|
|
225
|
+
return renderCliBanner({
|
|
226
|
+
version: getPackageVersion(),
|
|
227
|
+
screen: onboarding ? "Welcome" : "Doctor",
|
|
228
|
+
subtitle: `${done} of ${total} ready` + (onboarding ? " · first-run check" : ""),
|
|
229
|
+
});
|
|
129
230
|
}
|
|
130
|
-
|
|
131
|
-
const
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
process.stdout.write("\n");
|
|
231
|
+
function renderItemList(items, selectedIdx, skipped) {
|
|
232
|
+
const lines = [];
|
|
233
|
+
for (let i = 0; i < items.length; i++) {
|
|
234
|
+
const c = items[i];
|
|
235
|
+
const isSelected = i === selectedIdx;
|
|
236
|
+
const isSkipped = skipped.has(c.id);
|
|
237
|
+
const checkbox = renderCheckbox(c, isSkipped);
|
|
238
|
+
const label = c.label.padEnd(28);
|
|
239
|
+
const detail = chalk.dim(c.detail);
|
|
240
|
+
if (isSelected) {
|
|
241
|
+
lines.push(" " + chalk.hex("#f97316")("❯ ") + checkbox + " " + chalk.bold(label) + " " + detail);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
const baseColor = isSkipped ? chalk.hex("#475569") : chalk.reset;
|
|
245
|
+
lines.push(" " + checkbox + " " + baseColor(label) + " " + detail);
|
|
146
246
|
}
|
|
147
|
-
return "skip";
|
|
148
247
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
248
|
+
return lines.join("\n") + "\n";
|
|
249
|
+
}
|
|
250
|
+
function renderCheckbox(c, isSkipped) {
|
|
251
|
+
if (c.status === "ok")
|
|
252
|
+
return chalk.green("[✓]");
|
|
253
|
+
if (c.status === "warn")
|
|
254
|
+
return chalk.yellow("[!]");
|
|
255
|
+
if (isSkipped)
|
|
256
|
+
return chalk.dim("[—]");
|
|
257
|
+
if (c.severity === "required" || c.severity === "block")
|
|
258
|
+
return chalk.red("[✗]");
|
|
259
|
+
return chalk.yellow("[○]");
|
|
260
|
+
}
|
|
261
|
+
function renderDetail(c) {
|
|
262
|
+
if (!c)
|
|
263
|
+
return "";
|
|
264
|
+
const lines = [];
|
|
265
|
+
lines.push(" " + chalk.dim("Why: ") + c.unlocks);
|
|
266
|
+
if (c.status !== "ok" && c.installable) {
|
|
267
|
+
const cmdline = `${c.installable.command} ${c.installable.args.join(" ")}`;
|
|
268
|
+
lines.push(" " + chalk.dim("Fix: ") + chalk.cyan(cmdline) + chalk.dim(" (press Enter)"));
|
|
153
269
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
270
|
+
else if (c.status !== "ok" && c.fix) {
|
|
271
|
+
const firstLine = c.fix.split("\n")[0];
|
|
272
|
+
lines.push(" " + chalk.dim("Fix: ") + chalk.cyan(firstLine));
|
|
273
|
+
for (const line of c.fix.split("\n").slice(1)) {
|
|
274
|
+
lines.push(" " + chalk.cyan(line));
|
|
158
275
|
}
|
|
159
276
|
}
|
|
160
|
-
|
|
161
|
-
return "skip";
|
|
277
|
+
return lines.join("\n") + "\n";
|
|
162
278
|
}
|
|
163
|
-
function
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
if (
|
|
178
|
-
return
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
// Anything else: re-ask once, then fall through to default.
|
|
182
|
-
const retry = (await rl.question(chalk.dim(' Please answer "y" or "n": '))).trim().toLowerCase();
|
|
183
|
-
if (retry === "y" || retry === "yes")
|
|
184
|
-
return true;
|
|
185
|
-
if (retry === "n" || retry === "no")
|
|
186
|
-
return false;
|
|
187
|
-
return defaultAns === "y";
|
|
279
|
+
function renderFooter(note) {
|
|
280
|
+
const dim = chalk.dim;
|
|
281
|
+
const primary = chalk.hex("#f97316");
|
|
282
|
+
const keymap = " " +
|
|
283
|
+
primary("↑↓") +
|
|
284
|
+
dim(" navigate · ") +
|
|
285
|
+
primary("Enter") +
|
|
286
|
+
dim(" fix · ") +
|
|
287
|
+
primary("s") +
|
|
288
|
+
dim(" skip · ") +
|
|
289
|
+
primary("r") +
|
|
290
|
+
dim(" re-probe · ") +
|
|
291
|
+
primary("q") +
|
|
292
|
+
dim(" quit");
|
|
293
|
+
if (!note)
|
|
294
|
+
return keymap + "\n";
|
|
295
|
+
const noteColor = note.color === "ok" ? chalk.green : note.color === "warn" ? chalk.yellow : chalk.cyan;
|
|
296
|
+
return keymap + "\n " + noteColor(note.text) + "\n";
|
|
188
297
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
* optional-missing) that the user hasn't already skipped this session.
|
|
192
|
-
* Info-severity items are never returned.
|
|
193
|
-
*/
|
|
194
|
-
function pickNextActionable(report, skipped) {
|
|
298
|
+
function pickFirstActionableIdx(items, skipped) {
|
|
299
|
+
// Priority: required-missing/warn → optional-warn → optional-missing → 0.
|
|
195
300
|
const tiers = [
|
|
196
301
|
{ severity: "block", statuses: ["missing", "warn"] },
|
|
197
302
|
{ severity: "required", statuses: ["missing", "warn"] },
|
|
@@ -199,16 +304,17 @@ function pickNextActionable(report, skipped) {
|
|
|
199
304
|
{ severity: "optional", statuses: ["missing"] },
|
|
200
305
|
];
|
|
201
306
|
for (const tier of tiers) {
|
|
202
|
-
const
|
|
203
|
-
if (
|
|
204
|
-
return
|
|
307
|
+
const idx = items.findIndex((c) => c.severity === tier.severity && tier.statuses.includes(c.status) && !skipped.has(c.id));
|
|
308
|
+
if (idx >= 0)
|
|
309
|
+
return idx;
|
|
205
310
|
}
|
|
206
|
-
return
|
|
207
|
-
}
|
|
208
|
-
function countActionable(report) {
|
|
209
|
-
return report.checks.filter((c) => c.severity !== "info").length;
|
|
311
|
+
return 0;
|
|
210
312
|
}
|
|
211
|
-
function
|
|
212
|
-
return
|
|
313
|
+
function spawnInstall(command, args) {
|
|
314
|
+
return new Promise((resolve) => {
|
|
315
|
+
const child = spawn(command, args, { stdio: "inherit" });
|
|
316
|
+
child.on("close", (code) => resolve(code ?? 1));
|
|
317
|
+
child.on("error", () => resolve(1));
|
|
318
|
+
});
|
|
213
319
|
}
|
|
214
320
|
//# sourceMappingURL=doctor-runner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-runner.js","sourceRoot":"","sources":["../../src/core/doctor-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor-runner.js","sourceRoot":"","sources":["../../src/core/doctor-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import type { AgentTool } from "@kenkaiiii/gg-agent";
|
|
|
3
3
|
import type { VideoHost } from "../core/hosts/types.js";
|
|
4
4
|
declare const OpenPageParams: z.ZodObject<{
|
|
5
5
|
name: z.ZodEnum<{
|
|
6
|
+
color: "color";
|
|
6
7
|
media: "media";
|
|
7
8
|
cut: "cut";
|
|
8
9
|
edit: "edit";
|
|
9
10
|
fusion: "fusion";
|
|
10
|
-
color: "color";
|
|
11
11
|
fairlight: "fairlight";
|
|
12
12
|
deliver: "deliver";
|
|
13
13
|
}>;
|