@kenkaiiii/gg-editor 0.6.0 → 0.6.2
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 +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":"AA6DA,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,CAWrF"}
|
|
@@ -1,33 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interactive doctor screen.
|
|
3
3
|
*
|
|
4
|
-
* Modelled on
|
|
5
|
-
*
|
|
6
|
-
* status glyphs, footer keymap. No printing-down-the-page, no walls of
|
|
7
|
-
* text, no scrollback pollution.
|
|
4
|
+
* Modelled directly on `@kenkaiiii/ggcoder/ui/login.tsx`'s
|
|
5
|
+
* `renderLoginSelector` so the look matches:
|
|
8
6
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* r re-probe everything
|
|
13
|
-
* q/Esc quit
|
|
7
|
+
* ▄▀▀▀ ▄▀▀▀ GG Editor v0.6.0 · By Ken Kai
|
|
8
|
+
* █ ▀█ █ ▀█ Doctor
|
|
9
|
+
* ▀▄▄▀ ▀▄▄▀ Environment check
|
|
14
10
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
11
|
+
* ❯ ✓ ffmpeg — v8.0.1
|
|
12
|
+
* ✓ ffprobe — v8.0.1
|
|
13
|
+
* ○ OpenAI API key — not set
|
|
14
|
+
* ✓ Python 3 — v3.14.3
|
|
15
|
+
* …
|
|
18
16
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* ↑↓ navigate · Enter fix · r refresh · Esc quit
|
|
18
|
+
*
|
|
19
|
+
* Mechanics:
|
|
20
|
+
* - `\x1b[s` saves the cursor on entry; `\x1b[u\x1b[J` restores +
|
|
21
|
+
* clears below for each redraw. No alt-screen buffer (we don't need
|
|
22
|
+
* it; the doctor is short and re-runnable).
|
|
23
|
+
* - On exit we restore + clear so terminal scrollback is preserved.
|
|
24
|
+
* - Enter on an installable runs the package manager directly via
|
|
25
|
+
* `spawn` (stdio inherited so the user sees output / answers
|
|
26
|
+
* prompts). Enter on a `prompt` opens an inline secret capture.
|
|
27
|
+
* - q / Esc / Ctrl+C → quit cleanly.
|
|
22
28
|
*/
|
|
23
29
|
import { spawn } from "node:child_process";
|
|
24
30
|
import { createInterface } from "node:readline/promises";
|
|
25
31
|
import chalk from "chalk";
|
|
26
32
|
import { setStoredApiKey } from "./auth/api-keys.js";
|
|
27
|
-
import { renderCliBanner } from "./cli-banner.js";
|
|
28
33
|
import { runDoctor } from "./doctor.js";
|
|
29
34
|
import { renderDoctorReport } from "./doctor-render.js";
|
|
30
35
|
import { getPackageVersion } from "./version.js";
|
|
36
|
+
const LOGO_LINES = [
|
|
37
|
+
" \u2584\u2580\u2580\u2580 \u2584\u2580\u2580\u2580",
|
|
38
|
+
" \u2588 \u2580\u2588 \u2588 \u2580\u2588",
|
|
39
|
+
" \u2580\u2584\u2584\u2580 \u2580\u2584\u2584\u2580",
|
|
40
|
+
];
|
|
41
|
+
const GRADIENT = [
|
|
42
|
+
"#fbbf24",
|
|
43
|
+
"#f59e0b",
|
|
44
|
+
"#f97316",
|
|
45
|
+
"#ea580c",
|
|
46
|
+
"#dc2626",
|
|
47
|
+
"#e11d48",
|
|
48
|
+
"#db2777",
|
|
49
|
+
"#e11d48",
|
|
50
|
+
"#dc2626",
|
|
51
|
+
"#ea580c",
|
|
52
|
+
"#f97316",
|
|
53
|
+
"#f59e0b",
|
|
54
|
+
];
|
|
55
|
+
const PRIMARY = "#f97316";
|
|
56
|
+
const ACCENT = "#ec4899";
|
|
57
|
+
const TEXT = "#e2e8f0";
|
|
58
|
+
const TEXT_DIM = "#64748b";
|
|
59
|
+
const GAP = " ";
|
|
31
60
|
/**
|
|
32
61
|
* Top-level entry called by cli.ts.
|
|
33
62
|
*
|
|
@@ -37,330 +66,254 @@ import { getPackageVersion } from "./version.js";
|
|
|
37
66
|
*/
|
|
38
67
|
export async function runDoctorInteractive(opts = {}) {
|
|
39
68
|
if (opts.all || opts.nonInteractive || !process.stdin.isTTY) {
|
|
40
|
-
process.stdout.write(renderCliBanner({
|
|
41
|
-
version: getPackageVersion(),
|
|
42
|
-
screen: opts.onboarding ? "Welcome" : "Doctor",
|
|
43
|
-
subtitle: opts.onboarding
|
|
44
|
-
? "One-time environment check. Re-run any time."
|
|
45
|
-
: "Environment check. Re-run any time.",
|
|
46
|
-
}));
|
|
47
69
|
const report = runDoctor();
|
|
70
|
+
process.stdout.write(staticBanner(opts.onboarding === true));
|
|
48
71
|
process.stdout.write(renderDoctorReport(report, { all: opts.all, onboarding: opts.onboarding }));
|
|
49
72
|
return;
|
|
50
73
|
}
|
|
51
|
-
await
|
|
74
|
+
await mountSelector(opts.onboarding === true);
|
|
75
|
+
}
|
|
76
|
+
// ── Renderers ─────────────────────────────────────────────
|
|
77
|
+
function gradientLine(text) {
|
|
78
|
+
let result = "";
|
|
79
|
+
let colorIdx = 0;
|
|
80
|
+
for (const ch of text) {
|
|
81
|
+
if (ch === " ") {
|
|
82
|
+
result += ch;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
const color = GRADIENT[Math.min(colorIdx, GRADIENT.length - 1)];
|
|
86
|
+
result += chalk.hex(color)(ch);
|
|
87
|
+
colorIdx++;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
function bannerLines(onboarding) {
|
|
93
|
+
const screen = onboarding ? "Welcome" : "Doctor";
|
|
94
|
+
const subtitle = onboarding ? "First-run environment check" : "Environment check — Enter to fix";
|
|
95
|
+
return [
|
|
96
|
+
gradientLine(LOGO_LINES[0]) +
|
|
97
|
+
GAP +
|
|
98
|
+
chalk.hex(PRIMARY).bold("GG Editor") +
|
|
99
|
+
chalk.hex(TEXT_DIM)(` v${getPackageVersion()}`) +
|
|
100
|
+
chalk.hex(TEXT_DIM)(" \u00b7 By ") +
|
|
101
|
+
chalk.hex(TEXT).bold("Ken Kai"),
|
|
102
|
+
gradientLine(LOGO_LINES[1]) + GAP + chalk.hex(ACCENT)(screen),
|
|
103
|
+
gradientLine(LOGO_LINES[2]) + GAP + chalk.hex(TEXT_DIM)(subtitle),
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
function staticBanner(onboarding) {
|
|
107
|
+
return bannerLines(onboarding).join("\n") + "\n\n";
|
|
52
108
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
109
|
+
function statusGlyph(c) {
|
|
110
|
+
if (c.status === "ok")
|
|
111
|
+
return chalk.green("\u2713");
|
|
112
|
+
if (c.status === "warn")
|
|
113
|
+
return chalk.yellow("!");
|
|
114
|
+
if (c.severity === "required" || c.severity === "block")
|
|
115
|
+
return chalk.red("\u2717");
|
|
116
|
+
return chalk.yellow("\u25cb");
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* One line per item, modelled on login.tsx's provider rows.
|
|
120
|
+
*
|
|
121
|
+
* ❯ ✓ ffmpeg — v8.0.1
|
|
122
|
+
* ○ OpenAI API key — not set
|
|
123
|
+
*
|
|
124
|
+
* The `detail` is the right-side em-dash text (terse — see doctor.ts
|
|
125
|
+
* for the trimmed strings: "v8.0.1", "set", "not set", etc).
|
|
126
|
+
*/
|
|
127
|
+
function renderItemLine(c, selected, status) {
|
|
128
|
+
const marker = selected ? chalk.hex(PRIMARY)("\u276f ") : " ";
|
|
129
|
+
const labelColor = status === "ok"
|
|
130
|
+
? selected
|
|
131
|
+
? chalk.hex(PRIMARY)
|
|
132
|
+
: chalk.hex(TEXT)
|
|
133
|
+
: selected
|
|
134
|
+
? chalk.hex(PRIMARY).bold
|
|
135
|
+
: chalk.hex(TEXT);
|
|
136
|
+
const label = labelColor(c.label.padEnd(22));
|
|
137
|
+
return `${marker}${statusGlyph(c)} ${label}${chalk.hex(TEXT_DIM)(` \u2014 ${c.detail}`)}`;
|
|
138
|
+
}
|
|
139
|
+
function renderScreen(items, selectedIdx, onboarding, note) {
|
|
140
|
+
const lines = [...bannerLines(onboarding), ""];
|
|
141
|
+
for (let i = 0; i < items.length; i++) {
|
|
142
|
+
const c = items[i];
|
|
143
|
+
const status = c.status === "ok" ? "ok" : c.status === "warn" ? "warn" : "miss";
|
|
144
|
+
lines.push(renderItemLine(c, i === selectedIdx, status));
|
|
145
|
+
}
|
|
146
|
+
lines.push("");
|
|
147
|
+
if (note)
|
|
148
|
+
lines.push(" " + chalk.hex(ACCENT)(note));
|
|
149
|
+
lines.push(chalk.hex(TEXT_DIM)(" \u2191\u2193 navigate \u00b7 ") +
|
|
150
|
+
chalk.hex(PRIMARY)("Enter") +
|
|
151
|
+
chalk.hex(TEXT_DIM)(" fix \u00b7 ") +
|
|
152
|
+
chalk.hex(PRIMARY)("r") +
|
|
153
|
+
chalk.hex(TEXT_DIM)(" refresh \u00b7 ") +
|
|
154
|
+
chalk.hex(PRIMARY)("Esc") +
|
|
155
|
+
chalk.hex(TEXT_DIM)(" quit"));
|
|
156
|
+
return lines.join("\n");
|
|
157
|
+
}
|
|
158
|
+
// ── Interactive selector ──────────────────────────────────
|
|
159
|
+
async function mountSelector(onboarding) {
|
|
62
160
|
const stdout = process.stdout;
|
|
63
161
|
const stdin = process.stdin;
|
|
64
|
-
// Enter alternate buffer so we don't bury existing scrollback. On exit
|
|
65
|
-
// we restore it cleanly. `runLogin` does its own variant — we use
|
|
66
|
-
// alt-screen here because the doctor list can be tall.
|
|
67
|
-
stdout.write(ENTER_ALT + HIDE_CURSOR);
|
|
68
|
-
const skipped = new Set();
|
|
69
162
|
let report = runDoctor();
|
|
70
|
-
let
|
|
71
|
-
let selectedIdx =
|
|
72
|
-
let
|
|
73
|
-
let
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
163
|
+
let items = report.checks.filter((c) => c.severity !== "info");
|
|
164
|
+
let selectedIdx = pickFirstActionable(items);
|
|
165
|
+
let note;
|
|
166
|
+
let noteTimer = null;
|
|
167
|
+
// Full-clear + cursor home, then save the position so subsequent
|
|
168
|
+
// redraws can restore it. Wipes the shell prompt that ran us, so the
|
|
169
|
+
// doctor screen looks like a standalone view.
|
|
170
|
+
stdout.write("\x1b[2J\x1b[H\x1b[s");
|
|
171
|
+
const draw = () => {
|
|
172
|
+
stdout.write("\x1b[u\x1b[J" + renderScreen(items, selectedIdx, onboarding, note) + "\n");
|
|
173
|
+
};
|
|
174
|
+
const flashNote = (text) => {
|
|
175
|
+
if (noteTimer)
|
|
176
|
+
clearTimeout(noteTimer);
|
|
177
|
+
note = text;
|
|
79
178
|
draw();
|
|
80
|
-
|
|
81
|
-
|
|
179
|
+
noteTimer = setTimeout(() => {
|
|
180
|
+
note = undefined;
|
|
82
181
|
draw();
|
|
83
182
|
}, 2500);
|
|
84
183
|
};
|
|
85
184
|
const reload = () => {
|
|
86
185
|
report = runDoctor();
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
selectedIdx = Math.max(0, actionable.length - 1);
|
|
91
|
-
};
|
|
92
|
-
const draw = () => {
|
|
93
|
-
stdout.write(HOME + CLEAR_BELOW);
|
|
94
|
-
stdout.write(banner);
|
|
95
|
-
stdout.write(renderItemList(actionable, selectedIdx, skipped));
|
|
96
|
-
stdout.write("\n");
|
|
97
|
-
stdout.write(renderDetail(actionable[selectedIdx], stdout.columns ?? 80));
|
|
98
|
-
stdout.write("\n");
|
|
99
|
-
stdout.write(renderFooter(footerNote));
|
|
186
|
+
items = report.checks.filter((c) => c.severity !== "info");
|
|
187
|
+
if (selectedIdx >= items.length)
|
|
188
|
+
selectedIdx = Math.max(0, items.length - 1);
|
|
100
189
|
};
|
|
101
190
|
draw();
|
|
102
191
|
stdin.setRawMode(true);
|
|
103
192
|
stdin.resume();
|
|
104
|
-
stdin.setEncoding("utf8");
|
|
105
193
|
return new Promise((resolve) => {
|
|
106
194
|
const cleanup = () => {
|
|
107
|
-
if (
|
|
108
|
-
clearTimeout(
|
|
195
|
+
if (noteTimer)
|
|
196
|
+
clearTimeout(noteTimer);
|
|
109
197
|
stdin.removeListener("data", onData);
|
|
110
198
|
stdin.setRawMode(false);
|
|
111
199
|
stdin.pause();
|
|
112
|
-
|
|
113
|
-
//
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
const ok =
|
|
117
|
-
if (ok ===
|
|
118
|
-
|
|
119
|
-
chalk.
|
|
200
|
+
// Full clear so the user's terminal scrollback isn't polluted with
|
|
201
|
+
// selector frames; print one summary line as a fresh start.
|
|
202
|
+
stdout.write("\x1b[2J\x1b[H");
|
|
203
|
+
const total = items.length;
|
|
204
|
+
const ok = items.filter((c) => c.status === "ok").length;
|
|
205
|
+
if (ok === total) {
|
|
206
|
+
stdout.write(chalk.green("\u2713 Nothing to fix. You're all good.") +
|
|
207
|
+
chalk.hex(TEXT_DIM)(" Run `ggeditor` to start.\n"));
|
|
120
208
|
}
|
|
121
209
|
else {
|
|
122
|
-
|
|
210
|
+
stdout.write(chalk.hex(TEXT_DIM)(`Doctor closed. ${ok}/${total} ready. Re-run \`ggeditor doctor\` any time.\n`));
|
|
123
211
|
}
|
|
124
212
|
resolve();
|
|
125
213
|
};
|
|
214
|
+
/**
|
|
215
|
+
* Tear down the selector, fully clear the screen, re-print the
|
|
216
|
+
* branded banner, then run an async block with normal stdio. The
|
|
217
|
+
* full clear (\x1b[2J\x1b[H) wipes the prior shell prompt so the
|
|
218
|
+
* sub-screen looks like a standalone view, not a continuation of
|
|
219
|
+
* the user's terminal scrollback.
|
|
220
|
+
*/
|
|
221
|
+
const runWithSubshell = async (block) => {
|
|
222
|
+
stdin.removeListener("data", onData);
|
|
223
|
+
stdin.setRawMode(false);
|
|
224
|
+
stdin.pause();
|
|
225
|
+
// Full clear + cursor home, then re-render the banner.
|
|
226
|
+
stdout.write("\x1b[2J\x1b[H");
|
|
227
|
+
stdout.write(staticBanner(onboarding));
|
|
228
|
+
let result;
|
|
229
|
+
try {
|
|
230
|
+
result = await block();
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
process.stdout.write(chalk.red(`\n Error: ${e.message}\n`));
|
|
234
|
+
result = { ok: false };
|
|
235
|
+
}
|
|
236
|
+
// Brief pause so the user sees the outcome.
|
|
237
|
+
await new Promise((r) => setTimeout(r, 600));
|
|
238
|
+
// Full clear + re-save cursor + redraw the selector.
|
|
239
|
+
stdout.write("\x1b[2J\x1b[H\x1b[s");
|
|
240
|
+
stdin.setRawMode(true);
|
|
241
|
+
stdin.resume();
|
|
242
|
+
stdin.on("data", onData);
|
|
243
|
+
reload();
|
|
244
|
+
const cur = items[selectedIdx];
|
|
245
|
+
if (cur) {
|
|
246
|
+
const newIdx = items.findIndex((c) => c.id === cur.id);
|
|
247
|
+
selectedIdx = newIdx >= 0 ? newIdx : pickFirstActionable(items);
|
|
248
|
+
}
|
|
249
|
+
if (result.ok)
|
|
250
|
+
flashNote(`Saved`);
|
|
251
|
+
else
|
|
252
|
+
draw();
|
|
253
|
+
};
|
|
126
254
|
const onData = (chunk) => {
|
|
127
|
-
|
|
128
|
-
|
|
255
|
+
const key = chunk.toString();
|
|
256
|
+
// Esc / Ctrl+C / q → quit
|
|
257
|
+
if (key === "\x1b" || key === "\x03" || key === "q") {
|
|
129
258
|
cleanup();
|
|
130
259
|
return;
|
|
131
260
|
}
|
|
132
261
|
// ↑
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
draw();
|
|
137
|
-
}
|
|
262
|
+
if (key === "\x1b[A" && selectedIdx > 0) {
|
|
263
|
+
selectedIdx--;
|
|
264
|
+
draw();
|
|
138
265
|
return;
|
|
139
266
|
}
|
|
140
267
|
// ↓
|
|
141
|
-
if (
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
draw();
|
|
145
|
-
}
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
// s — skip current item this session (does NOT advance — user can
|
|
149
|
-
// navigate with arrows. Skipped items stay in the list, just greyed).
|
|
150
|
-
if (chunk === "s") {
|
|
151
|
-
const cur = actionable[selectedIdx];
|
|
152
|
-
if (cur && cur.status !== "ok") {
|
|
153
|
-
skipped.add(cur.id);
|
|
154
|
-
setFooterNote(`Skipped ${cur.label}`, "info");
|
|
155
|
-
}
|
|
268
|
+
if (key === "\x1b[B" && selectedIdx < items.length - 1) {
|
|
269
|
+
selectedIdx++;
|
|
270
|
+
draw();
|
|
156
271
|
return;
|
|
157
272
|
}
|
|
158
|
-
// r
|
|
159
|
-
|
|
160
|
-
if (chunk === "r") {
|
|
273
|
+
// r → refresh
|
|
274
|
+
if (key === "r") {
|
|
161
275
|
reload();
|
|
162
|
-
|
|
276
|
+
flashNote("Refreshed");
|
|
163
277
|
return;
|
|
164
278
|
}
|
|
165
|
-
// Enter
|
|
166
|
-
if (
|
|
167
|
-
const cur =
|
|
279
|
+
// Enter → install / prompt / nothing
|
|
280
|
+
if (key === "\r" || key === "\n") {
|
|
281
|
+
const cur = items[selectedIdx];
|
|
168
282
|
if (!cur)
|
|
169
283
|
return;
|
|
170
284
|
if (cur.status === "ok") {
|
|
171
|
-
|
|
285
|
+
flashNote("Already done");
|
|
172
286
|
return;
|
|
173
287
|
}
|
|
174
288
|
if (cur.installable) {
|
|
289
|
+
const inst = cur.installable;
|
|
175
290
|
void runWithSubshell(async () => {
|
|
176
|
-
|
|
177
|
-
process.stdout.write(chalk.dim(`\n Running: `) +
|
|
291
|
+
process.stdout.write(chalk.hex(TEXT_DIM)("Running: ") +
|
|
178
292
|
chalk.cyan(`${inst.command} ${inst.args.join(" ")}`) +
|
|
179
293
|
"\n\n");
|
|
180
294
|
const code = await spawnInstall(inst.command, inst.args);
|
|
181
295
|
if (code === 0) {
|
|
182
|
-
process.stdout.write(chalk.green("\n
|
|
296
|
+
process.stdout.write(chalk.green("\n\u2713 Installed.\n"));
|
|
183
297
|
return { ok: true };
|
|
184
298
|
}
|
|
185
|
-
process.stdout.write(chalk.red(`\n
|
|
186
|
-
if (cur.fix) {
|
|
187
|
-
for (const line of cur.fix.split("\n")) {
|
|
188
|
-
process.stdout.write(" " + chalk.cyan(line) + "\n");
|
|
189
|
-
}
|
|
190
|
-
}
|
|
299
|
+
process.stdout.write(chalk.red(`\n\u2717 Install failed (exit ${code}).\n`));
|
|
191
300
|
return { ok: false };
|
|
192
|
-
}).then((result) => {
|
|
193
|
-
if (result.ok)
|
|
194
|
-
setFooterNote(`Installed ${cur.label}`, "ok");
|
|
195
301
|
});
|
|
196
302
|
return;
|
|
197
303
|
}
|
|
198
304
|
if (cur.prompt) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
setFooterNote(`Saved ${cur.label}`, "ok");
|
|
202
|
-
else
|
|
203
|
-
setFooterNote("Cancelled", "info");
|
|
204
|
-
});
|
|
305
|
+
const p = cur.prompt;
|
|
306
|
+
void runWithSubshell(async () => promptForSecret(p));
|
|
205
307
|
return;
|
|
206
308
|
}
|
|
207
|
-
|
|
208
|
-
return;
|
|
309
|
+
flashNote("No automatic fix");
|
|
209
310
|
}
|
|
210
311
|
};
|
|
211
|
-
/**
|
|
212
|
-
* Tear down alt-screen + raw-mode, run an async block with normal
|
|
213
|
-
* stdio (so spawn / readline behave normally), then re-mount the
|
|
214
|
-
* screen and re-attach the keypress listener. The async block
|
|
215
|
-
* returns { ok } so the caller can flash the right footer note.
|
|
216
|
-
*/
|
|
217
|
-
async function runWithSubshell(block) {
|
|
218
|
-
stdout.write(SHOW_CURSOR + EXIT_ALT);
|
|
219
|
-
stdin.setRawMode(false);
|
|
220
|
-
stdin.pause();
|
|
221
|
-
stdin.removeListener("data", onData);
|
|
222
|
-
let result;
|
|
223
|
-
try {
|
|
224
|
-
result = await block();
|
|
225
|
-
}
|
|
226
|
-
catch (e) {
|
|
227
|
-
process.stdout.write(chalk.red(`\n Error: ${e.message}\n`));
|
|
228
|
-
result = { ok: false };
|
|
229
|
-
}
|
|
230
|
-
// Brief pause so the user sees the outcome before the screen
|
|
231
|
-
// re-mounts and clears it. 600ms is enough to glance at ✓/✗.
|
|
232
|
-
await new Promise((r) => setTimeout(r, 600));
|
|
233
|
-
stdout.write(ENTER_ALT + HIDE_CURSOR);
|
|
234
|
-
stdin.setRawMode(true);
|
|
235
|
-
stdin.resume();
|
|
236
|
-
stdin.on("data", onData);
|
|
237
|
-
reload();
|
|
238
|
-
const cur = actionable[selectedIdx];
|
|
239
|
-
if (cur) {
|
|
240
|
-
const newIdx = actionable.findIndex((c) => c.id === cur.id);
|
|
241
|
-
selectedIdx = newIdx >= 0 ? newIdx : pickFirstActionableIdx(actionable, skipped);
|
|
242
|
-
}
|
|
243
|
-
draw();
|
|
244
|
-
return result;
|
|
245
|
-
}
|
|
246
312
|
stdin.on("data", onData);
|
|
247
313
|
});
|
|
248
314
|
}
|
|
249
|
-
// ──
|
|
250
|
-
function
|
|
251
|
-
const total = report.checks.filter((c) => c.severity !== "info").length;
|
|
252
|
-
const done = report.checks.filter((c) => c.severity !== "info" && c.status === "ok").length;
|
|
253
|
-
return renderCliBanner({
|
|
254
|
-
version: getPackageVersion(),
|
|
255
|
-
screen: onboarding ? "Welcome" : "Doctor",
|
|
256
|
-
subtitle: `${done} of ${total} ready` + (onboarding ? " · first-run check" : ""),
|
|
257
|
-
});
|
|
258
|
-
}
|
|
259
|
-
function renderItemList(items, selectedIdx, skipped) {
|
|
260
|
-
const lines = [];
|
|
261
|
-
for (let i = 0; i < items.length; i++) {
|
|
262
|
-
const c = items[i];
|
|
263
|
-
const isSelected = i === selectedIdx;
|
|
264
|
-
const isSkipped = skipped.has(c.id);
|
|
265
|
-
const checkbox = renderCheckbox(c, isSkipped);
|
|
266
|
-
const label = c.label.padEnd(28);
|
|
267
|
-
const detail = chalk.dim(c.detail);
|
|
268
|
-
if (isSelected) {
|
|
269
|
-
lines.push(" " + chalk.hex("#f97316")("❯ ") + checkbox + " " + chalk.bold(label) + " " + detail);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
const baseColor = isSkipped ? chalk.hex("#475569") : chalk.reset;
|
|
273
|
-
lines.push(" " + checkbox + " " + baseColor(label) + " " + detail);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return lines.join("\n") + "\n";
|
|
277
|
-
}
|
|
278
|
-
function renderCheckbox(c, isSkipped) {
|
|
279
|
-
if (c.status === "ok")
|
|
280
|
-
return chalk.green("[✓]");
|
|
281
|
-
if (c.status === "warn")
|
|
282
|
-
return chalk.yellow("[!]");
|
|
283
|
-
if (isSkipped)
|
|
284
|
-
return chalk.dim("[—]");
|
|
285
|
-
if (c.severity === "required" || c.severity === "block")
|
|
286
|
-
return chalk.red("[✗]");
|
|
287
|
-
return chalk.yellow("[○]");
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Render the detail block under the list. STRICTLY two lines:
|
|
291
|
-
* - Why: <unlocks>
|
|
292
|
-
* - Fix: <one-line action>
|
|
293
|
-
*
|
|
294
|
-
* No multi-line dumps; URLs / longer guidance live on the prompt's hint
|
|
295
|
-
* (only shown during the actual prompt screen) or on the structured
|
|
296
|
-
* installable's command. The static `--all` path renders the full
|
|
297
|
-
* `fix` string; this interactive path is for the next single action.
|
|
298
|
-
*/
|
|
299
|
-
function renderDetail(c, columns) {
|
|
300
|
-
if (!c)
|
|
301
|
-
return "";
|
|
302
|
-
const lines = [];
|
|
303
|
-
// Allow at least 60 chars even on a narrow / unknown-size terminal so
|
|
304
|
-
// we never truncate the explanation into uselessness.
|
|
305
|
-
const safeWidth = Math.max(60, columns) - 8;
|
|
306
|
-
lines.push(" " + chalk.dim("Why: ") + truncate(c.unlocks, safeWidth));
|
|
307
|
-
const action = nextAction(c);
|
|
308
|
-
if (action) {
|
|
309
|
-
lines.push(" " + chalk.dim("Fix: ") + action);
|
|
310
|
-
}
|
|
311
|
-
return lines.join("\n") + "\n";
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Single-line, ANSI-aware description of the next action for an item.
|
|
315
|
-
* Returns undefined when status === ok.
|
|
316
|
-
*/
|
|
317
|
-
function nextAction(c) {
|
|
318
|
-
if (c.status === "ok")
|
|
319
|
-
return undefined;
|
|
320
|
-
if (c.installable) {
|
|
321
|
-
const cmd = `${c.installable.command} ${c.installable.args.join(" ")}`;
|
|
322
|
-
return chalk.cyan(cmd) + chalk.dim(" (press Enter)");
|
|
323
|
-
}
|
|
324
|
-
if (c.prompt) {
|
|
325
|
-
return chalk.cyan(c.prompt.label) + chalk.dim(" (press Enter)");
|
|
326
|
-
}
|
|
327
|
-
// No structured action — fall back to the FIRST line of `fix` only.
|
|
328
|
-
// We never render the multi-line tail here.
|
|
329
|
-
if (c.fix) {
|
|
330
|
-
const firstLine = c.fix.split("\n")[0].trim();
|
|
331
|
-
return chalk.cyan(firstLine);
|
|
332
|
-
}
|
|
333
|
-
return undefined;
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Truncate a string to at most `max` columns. Adds an ellipsis when
|
|
337
|
-
* truncated. Does NOT respect ANSI escapes — only call on plain text.
|
|
338
|
-
*/
|
|
339
|
-
function truncate(s, max) {
|
|
340
|
-
if (s.length <= max)
|
|
341
|
-
return s;
|
|
342
|
-
return s.slice(0, Math.max(0, max - 1)) + "\u2026";
|
|
343
|
-
}
|
|
344
|
-
function renderFooter(note) {
|
|
345
|
-
const dim = chalk.dim;
|
|
346
|
-
const primary = chalk.hex("#f97316");
|
|
347
|
-
const keymap = " " +
|
|
348
|
-
primary("↑↓") +
|
|
349
|
-
dim(" navigate · ") +
|
|
350
|
-
primary("Enter") +
|
|
351
|
-
dim(" fix · ") +
|
|
352
|
-
primary("s") +
|
|
353
|
-
dim(" skip · ") +
|
|
354
|
-
primary("r") +
|
|
355
|
-
dim(" re-probe · ") +
|
|
356
|
-
primary("q") +
|
|
357
|
-
dim(" quit");
|
|
358
|
-
if (!note)
|
|
359
|
-
return keymap + "\n";
|
|
360
|
-
const noteColor = note.color === "ok" ? chalk.green : note.color === "warn" ? chalk.yellow : chalk.cyan;
|
|
361
|
-
return keymap + "\n " + noteColor(note.text) + "\n";
|
|
362
|
-
}
|
|
363
|
-
function pickFirstActionableIdx(items, skipped) {
|
|
315
|
+
// ── Helpers ───────────────────────────────────────────────
|
|
316
|
+
function pickFirstActionable(items) {
|
|
364
317
|
// Priority: required-missing/warn → optional-warn → optional-missing → 0.
|
|
365
318
|
const tiers = [
|
|
366
319
|
{ severity: "block", statuses: ["missing", "warn"] },
|
|
@@ -369,7 +322,7 @@ function pickFirstActionableIdx(items, skipped) {
|
|
|
369
322
|
{ severity: "optional", statuses: ["missing"] },
|
|
370
323
|
];
|
|
371
324
|
for (const tier of tiers) {
|
|
372
|
-
const idx = items.findIndex((c) => c.severity === tier.severity && tier.statuses.includes(c.status)
|
|
325
|
+
const idx = items.findIndex((c) => c.severity === tier.severity && tier.statuses.includes(c.status));
|
|
373
326
|
if (idx >= 0)
|
|
374
327
|
return idx;
|
|
375
328
|
}
|
|
@@ -383,30 +336,26 @@ function spawnInstall(command, args) {
|
|
|
383
336
|
});
|
|
384
337
|
}
|
|
385
338
|
/**
|
|
386
|
-
* Prompt the user for a secret
|
|
387
|
-
* persist via setStoredApiKey. The user can hit Esc / blank-Enter to
|
|
388
|
-
* cancel without writing anything.
|
|
339
|
+
* Prompt the user for a secret, validate it, persist via setStoredApiKey.
|
|
389
340
|
*
|
|
390
|
-
* Echoes
|
|
391
|
-
*
|
|
392
|
-
* access could
|
|
341
|
+
* Echoes input as it's typed — these are API keys, and node has no
|
|
342
|
+
* built-in masked-input primitive without dragging in a dep. Anyone
|
|
343
|
+
* with shell access could `cat ~/.gg/api-keys.json` anyway.
|
|
393
344
|
*/
|
|
394
345
|
async function promptForSecret(p) {
|
|
395
|
-
const dim = chalk.
|
|
396
|
-
const primary = chalk.hex(
|
|
397
|
-
const accent = chalk.hex(
|
|
398
|
-
|
|
399
|
-
|
|
346
|
+
const dim = chalk.hex(TEXT_DIM);
|
|
347
|
+
const primary = chalk.hex(PRIMARY);
|
|
348
|
+
const accent = chalk.hex(ACCENT);
|
|
349
|
+
// Caller (runWithSubshell) has already cleared the screen + printed
|
|
350
|
+
// the banner. We just add the prompt body.
|
|
351
|
+
process.stdout.write(" " + primary.bold(p.label) + "\n");
|
|
352
|
+
if (p.hint)
|
|
400
353
|
process.stdout.write(" " + dim(p.hint) + "\n");
|
|
401
|
-
}
|
|
402
354
|
process.stdout.write(" " + dim("(blank + Enter to cancel)") + "\n\n");
|
|
403
|
-
const rl = createInterface({
|
|
404
|
-
input: process.stdin,
|
|
405
|
-
output: process.stdout,
|
|
406
|
-
});
|
|
355
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
407
356
|
try {
|
|
408
357
|
for (let attempt = 0; attempt < 3; attempt++) {
|
|
409
|
-
const value = (await rl.question(" " + accent("
|
|
358
|
+
const value = (await rl.question(" " + accent("\u276f "))).trim();
|
|
410
359
|
if (value.length === 0) {
|
|
411
360
|
process.stdout.write(dim(" Cancelled.\n"));
|
|
412
361
|
return { ok: false };
|
|
@@ -420,10 +369,10 @@ async function promptForSecret(p) {
|
|
|
420
369
|
setStoredApiKey(p.store, value);
|
|
421
370
|
}
|
|
422
371
|
catch (e) {
|
|
423
|
-
process.stdout.write(chalk.red(`
|
|
372
|
+
process.stdout.write(chalk.red(` \u2717 Failed to save: ${e.message}\n`));
|
|
424
373
|
return { ok: false };
|
|
425
374
|
}
|
|
426
|
-
process.stdout.write(chalk.green(
|
|
375
|
+
process.stdout.write(chalk.green(" \u2713 Saved to ~/.gg/api-keys.json (chmod 600).\n"));
|
|
427
376
|
return { ok: true };
|
|
428
377
|
}
|
|
429
378
|
process.stdout.write(dim(" Too many invalid attempts. Cancelled.\n"));
|
|
@@ -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";
|
|
7
6
|
media: "media";
|
|
8
7
|
cut: "cut";
|
|
9
8
|
edit: "edit";
|
|
10
9
|
fusion: "fusion";
|
|
10
|
+
color: "color";
|
|
11
11
|
fairlight: "fairlight";
|
|
12
12
|
deliver: "deliver";
|
|
13
13
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/gg-editor",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "CLI video editor agent. Drives DaVinci Resolve and Premiere Pro via API + hotkeys + GUI fallback.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"react": "^19.2.5",
|
|
28
28
|
"ws": "^8.18.0",
|
|
29
29
|
"zod": "^4.3.6",
|
|
30
|
-
"@kenkaiiii/gg-ai": "4.3.85",
|
|
31
30
|
"@kenkaiiii/gg-agent": "4.3.85",
|
|
32
|
-
"@kenkaiiii/ggcoder": "4.3.85"
|
|
31
|
+
"@kenkaiiii/ggcoder": "4.3.85",
|
|
32
|
+
"@kenkaiiii/gg-ai": "4.3.85"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^25.6.0",
|