@kenkaiiii/gg-editor 0.4.1 → 0.5.1

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
- /** Print the welcome banner instead of the plain doctor banner. */
2
+ /** Welcome banner instead of the plain doctor banner. */
3
3
  onboarding?: boolean;
4
- /** Show the full inventory and exit (no install prompts). */
4
+ /** Show the full inventory and exit (no interactive screen). */
5
5
  all?: boolean;
6
- /** Skip every prompt — print the report and exit. Useful in CI. */
6
+ /** Skip every prompt — print the report once and exit. CI-friendly. */
7
7
  nonInteractive?: boolean;
8
8
  }
9
9
  /**
10
- * Top-level entry. Renders the orange banner, then either
11
- * - prints the inventory (`all` or `nonInteractive`), OR
12
- * - walks the user through fixable items one at a time.
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":"AA2BA,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,mEAAmE;IACnE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAarF"}
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,208 +1,302 @@
1
1
  /**
2
- * Interactive doctor runner.
2
+ * Interactive doctor screen.
3
3
  *
4
- * Used by `ggeditor doctor` and the first-run onboarding flow. Walks
5
- * through actionable items one at a time:
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
- * - If the item carries an `installable` hint → ask "Install X? [Y/n]".
8
- * Yes spawn the package manager, stream output live, re-run the
9
- * doctor, move on. No → print the manual `fix` text, move on.
10
- * - If the item only has a `fix` string (manual setup, env var, etc.)
11
- * → print it and move on.
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
- * The banner matches `runStatus`'s look ("GG Editor Doctor", orange-
14
- * bold, two-space indent, dim subline) so the three CLI commands
15
- * (auth/login/doctor) feel like one product.
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. Renders the orange banner, then either
28
- * - prints the inventory (`all` or `nonInteractive`), OR
29
- * - walks the user through fixable items one at a time.
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 walkActionableItems();
40
- }
41
- // ── Internals ──────────────────────────────────────────────
42
- function printBanner(onboarding) {
43
- process.stdout.write(renderCliBanner({
44
- version: getPackageVersion(),
45
- screen: onboarding ? "Welcome" : "Doctor",
46
- subtitle: onboarding
47
- ? "One-time environment check. Re-run any time."
48
- : "Environment check. Re-run any time.",
49
- }));
49
+ await mountInteractiveScreen(opts.onboarding === true);
50
50
  }
51
- /**
52
- * Walk through actionable items in priority order. After each step we
53
- * re-run the doctor so that successful installs unblock follow-on
54
- * checks (e.g. installing ffmpeg flips both ffmpeg + ffprobe to OK).
55
- */
56
- async function walkActionableItems() {
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
- try {
62
- for (let step = 0; step < 20; step++) {
63
- const report = runDoctor();
64
- const next = pickNextActionable(report, skipped);
65
- const total = countActionable(report);
66
- const done = countDone(report);
67
- if (!next) {
68
- // Either everything's clean or we've skipped everything we can.
69
- const cleanEverything = total === done;
70
- if (cleanEverything) {
71
- process.stdout.write(" " +
72
- chalk.green("✓ Nothing to fix. You're all good.") +
73
- chalk.dim(" Run `ggeditor` to start.\n\n"));
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
- else {
76
- process.stdout.write(" " +
77
- chalk.dim(`Skipped the rest. ${done}/${total} ready. Re-run \`ggeditor doctor\` any time.\n\n`));
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
- const proceed = await handleItem(next, rl);
82
- // Always mark the current item as 'seen' so the loop advances.
83
- // It's only re-surfaced if a successful install would have flipped
84
- // its state to ok (in which case it wouldn't appear anyway).
85
- if (proceed !== "installed")
86
- skipped.add(next.id);
87
- if (proceed === "quit") {
88
- process.stdout.write(chalk.dim(" Done. Re-run `ggeditor doctor` any time.\n\n"));
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
+ }
89
154
  return;
90
155
  }
91
- }
92
- // Safety bound — should never hit this.
93
- process.stdout.write(chalk.dim(" Reached step limit. Re-run `ggeditor doctor` to continue.\n\n"));
94
- }
95
- finally {
96
- rl.close();
97
- }
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
+ });
98
220
  }
99
- async function handleItem(item, rl) {
100
- // Header: severity + label + detail.
101
- const tag = item.severity === "required" || item.severity === "block"
102
- ? chalk.red("required")
103
- : item.status === "warn"
104
- ? chalk.yellow("needs attention")
105
- : chalk.yellow("optional");
106
- process.stdout.write(` ${tag} · ${chalk.bold(item.label)} ${chalk.dim(" " + item.detail)}\n`);
107
- process.stdout.write(" " + chalk.dim(item.unlocks) + "\n\n");
108
- if (item.installable) {
109
- return await offerInstall(item, item.installable, rl);
110
- }
111
- // No structured installer print the manual fix and pause.
112
- if (item.fix) {
113
- process.stdout.write(chalk.dim(" Fix:\n"));
114
- for (const line of item.fix.split("\n")) {
115
- process.stdout.write(" " + chalk.cyan(line) + "\n");
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
+ });
230
+ }
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);
116
246
  }
117
- process.stdout.write("\n");
118
247
  }
119
- // ALWAYS pause so the user actually reads each item, even when there's
120
- // no installer to confirm. "y" continues, "n" stops the walkthrough,
121
- // "s" skips this item permanently for the session.
122
- const ans = await askContinue(rl);
123
- if (ans === "quit")
124
- return "quit";
125
- if (ans === "skip")
126
- return "skip";
127
- return "next";
248
+ return lines.join("\n") + "\n";
128
249
  }
129
- async function askContinue(rl) {
130
- const raw = (await rl.question(chalk.dim(" [Enter] continue · [s] skip · [q] quit ")))
131
- .trim()
132
- .toLowerCase();
133
- if (raw === "q" || raw === "quit" || raw === "exit")
134
- return "quit";
135
- if (raw === "s" || raw === "skip")
136
- return "skip";
137
- return "next";
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("[○]");
138
260
  }
139
- async function offerInstall(item, hint, rl) {
140
- const cmdline = `${hint.command} ${hint.args.join(" ")}`;
141
- process.stdout.write(` ${chalk.bold(hint.label)}\n`);
142
- process.stdout.write(` ${pink(cmdline)}\n`);
143
- if (hint.needsSudo) {
144
- process.stdout.write(chalk.dim(" (will prompt for your sudo password)\n"));
145
- }
146
- process.stdout.write("\n");
147
- const yes = await askYN(rl, " Install now?", "y");
148
- if (!yes) {
149
- if (item.fix) {
150
- process.stdout.write(chalk.dim(" Skipping. To install later:\n"));
151
- for (const line of item.fix.split("\n")) {
152
- process.stdout.write(" " + chalk.cyan(line) + "\n");
153
- }
154
- process.stdout.write("\n");
155
- }
156
- return "skip";
157
- }
158
- const exitCode = await spawnInstall(hint);
159
- if (exitCode === 0) {
160
- process.stdout.write(chalk.green(" ✓ Installed.\n\n"));
161
- // Don't add to `skipped`: a successful install should make the
162
- // re-probe pass, removing the item from the priority list naturally.
163
- return "installed";
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)"));
164
269
  }
165
- process.stdout.write(chalk.red(` ✗ Install failed (exit ${exitCode}).`) + chalk.dim(" You can fix it manually:\n"));
166
- if (item.fix) {
167
- for (const line of item.fix.split("\n")) {
168
- process.stdout.write(" " + chalk.cyan(line) + "\n");
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));
169
275
  }
170
276
  }
171
- process.stdout.write("\n");
172
- return "skip";
277
+ return lines.join("\n") + "\n";
173
278
  }
174
- function spawnInstall(hint) {
175
- return new Promise((resolve) => {
176
- const child = spawn(hint.command, hint.args, {
177
- stdio: "inherit", // user sees + interacts with the manager directly
178
- });
179
- child.on("close", (code) => resolve(code ?? 1));
180
- child.on("error", () => resolve(1));
181
- });
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";
182
297
  }
183
- async function askYN(rl, prompt, defaultAns) {
184
- const suffix = defaultAns === "y" ? chalk.dim(" [Y/n] ") : chalk.dim(" [y/N] ");
185
- const raw = (await rl.question(prompt + suffix)).trim().toLowerCase();
186
- if (raw === "")
187
- return defaultAns === "y";
188
- if (raw === "y" || raw === "yes")
189
- return true;
190
- if (raw === "n" || raw === "no")
191
- return false;
192
- // Anything else: re-ask once, then fall through to default.
193
- const retry = (await rl.question(chalk.dim(' Please answer "y" or "n": '))).trim().toLowerCase();
194
- if (retry === "y" || retry === "yes")
195
- return true;
196
- if (retry === "n" || retry === "no")
197
- return false;
198
- return defaultAns === "y";
199
- }
200
- /**
201
- * Pick the next actionable item (block > required > optional-warn >
202
- * optional-missing) that the user hasn't already skipped this session.
203
- * Info-severity items are never returned.
204
- */
205
- function pickNextActionable(report, skipped) {
298
+ function pickFirstActionableIdx(items, skipped) {
299
+ // Priority: required-missing/warn optional-warn optional-missing 0.
206
300
  const tiers = [
207
301
  { severity: "block", statuses: ["missing", "warn"] },
208
302
  { severity: "required", statuses: ["missing", "warn"] },
@@ -210,16 +304,17 @@ function pickNextActionable(report, skipped) {
210
304
  { severity: "optional", statuses: ["missing"] },
211
305
  ];
212
306
  for (const tier of tiers) {
213
- const hit = report.checks.find((c) => c.severity === tier.severity && tier.statuses.includes(c.status) && !skipped.has(c.id));
214
- if (hit)
215
- return hit;
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;
216
310
  }
217
- return undefined;
311
+ return 0;
218
312
  }
219
- function countActionable(report) {
220
- return report.checks.filter((c) => c.severity !== "info").length;
221
- }
222
- function countDone(report) {
223
- return report.checks.filter((c) => c.severity !== "info" && c.status === "ok").length;
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
+ });
224
319
  }
225
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACvD,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEpE;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,OAAO,CAM7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAkB,GAAG,YAAY,CAqBhE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAEvE,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACvD,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEpE;AAED,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAkB,GAAG,OAAO,CAM7D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,MAAkB,GAAG,YAAY,CAsBhE"}
@@ -20,11 +20,10 @@
20
20
  * - Pure module — no I/O writes, no side effects beyond `spawnSync` /
21
21
  * `existsSync` probes.
22
22
  */
23
- import { existsSync, statSync } from "node:fs";
23
+ import { statSync } from "node:fs";
24
24
  import { homedir, platform } from "node:os";
25
25
  import { join } from "node:path";
26
26
  import { spawnSync } from "node:child_process";
27
- import { detectHost } from "./hosts/detect.js";
28
27
  import { checkFfmpeg, checkFfprobe } from "./media/ffmpeg.js";
29
28
  const ONBOARDED_MARKER = "onboarded-ggeditor";
30
29
  export function onboardedMarkerPath(home = homedir()) {
@@ -43,17 +42,18 @@ export function isOnboarded(home = homedir()) {
43
42
  * `--version` style probes.
44
43
  */
45
44
  export function runDoctor(home = homedir()) {
45
+ // Host (Resolve / Premiere) detection lives in the live banner +
46
+ // footer at runtime — the doctor doesn't lecture users about which
47
+ // NLE they have. They know.
46
48
  const checks = [
47
49
  checkFfmpegProbe(),
48
50
  checkFfprobeProbe(),
51
+ checkAuthFile(home),
49
52
  checkOpenAIKey(),
50
- checkAnthropicKey(),
51
53
  checkPython(),
52
- checkResolve(),
53
- checkPremiere(),
54
54
  checkWhisperCpp(),
55
55
  checkWhisperX(),
56
- checkAuthFile(home),
56
+ checkAnthropicKey(),
57
57
  ];
58
58
  const ready = checks.every((c) => c.severity !== "required" || c.status === "ok");
59
59
  return {
@@ -109,7 +109,7 @@ function checkOpenAIKey() {
109
109
  label: "OPENAI_API_KEY",
110
110
  status: present ? "ok" : "missing",
111
111
  severity: "optional",
112
- detail: present ? "set in environment" : "not set",
112
+ detail: present ? "set" : "not set",
113
113
  unlocks: "Vision tools: analyze_hook (retention scoring), score_shot, color_match, " +
114
114
  "grade_skin_tones, match_clip_color, and the OpenAI transcription backend.",
115
115
  fix: present
@@ -129,9 +129,7 @@ function checkAnthropicKey() {
129
129
  label: "ANTHROPIC_API_KEY",
130
130
  status: present ? "ok" : "missing",
131
131
  severity: "info",
132
- detail: present
133
- ? "set in environment (overrides OAuth token if present)"
134
- : "not set (OAuth is the recommended path)",
132
+ detail: present ? "set" : "not set",
135
133
  unlocks: "Direct Anthropic API auth without OAuth. Most users should `ggeditor login` instead.",
136
134
  fix: undefined,
137
135
  };
@@ -144,12 +142,13 @@ function checkPython() {
144
142
  });
145
143
  if (r.status === 0) {
146
144
  const out = (r.stdout || r.stderr).trim();
145
+ const m = /\b(\d+\.\d+(?:\.\d+)?)\b/.exec(out);
147
146
  return {
148
147
  id: "python",
149
148
  label: "Python 3",
150
149
  status: "ok",
151
150
  severity: "optional",
152
- detail: `${cmd}: ${out}`,
151
+ detail: m ? `v${m[1]}` : "found",
153
152
  unlocks: "DaVinci Resolve scripting bridge (host integration). Without Python, file-only " +
154
153
  "mode still works.",
155
154
  };
@@ -160,72 +159,22 @@ function checkPython() {
160
159
  label: "Python 3",
161
160
  status: "missing",
162
161
  severity: "optional",
163
- detail: "no python3 / python / py interpreter found",
162
+ detail: "not on PATH",
164
163
  unlocks: "DaVinci Resolve scripting bridge (host integration). File-only mode works without it.",
165
164
  fix: platform() === "darwin"
166
- ? "brew install python@3.12 # or use python.org installer"
165
+ ? "brew install python # latest 3.x (currently 3.14)"
167
166
  : platform() === "linux"
168
167
  ? "sudo apt install python3 # debian/ubuntu — your distro's package manager otherwise"
169
168
  : "winget install Python.Python.3 # or python.org installer",
170
169
  installable: buildInstallable({
171
- pkg: { darwin: "python@3.12", linux: "python3", win32: "Python.Python.3" },
170
+ // 'python' is Homebrew's alias for the current default Python 3
171
+ // bottle (currently 3.14). Tracks Homebrew's choice so we don't
172
+ // pin a stale minor.
173
+ pkg: { darwin: "python", linux: "python3", win32: "Python.Python.3" },
172
174
  label: "Install Python 3",
173
175
  }),
174
176
  };
175
177
  }
176
- function checkResolve() {
177
- const detected = detectHost();
178
- if (detected.name === "resolve") {
179
- return {
180
- id: "resolve",
181
- label: "DaVinci Resolve",
182
- status: "ok",
183
- severity: "optional",
184
- detail: "running",
185
- unlocks: "Live timeline editing on Resolve: cut, marker, append, color grade, smart reframe, render.",
186
- };
187
- }
188
- // Resolve isn't running — but is it INSTALLED? Check the canonical
189
- // install path so the message is precise.
190
- const installed = isResolveInstalled();
191
- return {
192
- id: "resolve",
193
- label: "DaVinci Resolve",
194
- status: "missing",
195
- severity: "optional",
196
- detail: installed ? "installed but not running" : "not installed",
197
- unlocks: "Live timeline editing on Resolve. Open Resolve before launching ggeditor (or " +
198
- "mid-session — the agent re-detects every 2s).",
199
- fix: installed
200
- ? "Open DaVinci Resolve, then re-run ggeditor (or just keep going — ggeditor will pick " +
201
- "it up automatically within a few seconds)."
202
- : "Install the free version from https://www.blackmagicdesign.com/products/davinciresolve",
203
- };
204
- }
205
- function checkPremiere() {
206
- const detected = detectHost();
207
- if (detected.name === "premiere") {
208
- return {
209
- id: "premiere",
210
- label: "Adobe Premiere Pro",
211
- status: "ok",
212
- severity: "optional",
213
- detail: "running",
214
- unlocks: "Live timeline editing on Premiere via the gg-editor UXP panel (insert / cut / marker " +
215
- "/ render). Requires the panel installed (`ggeditor-premiere-panel install`).",
216
- };
217
- }
218
- // Premiere is paid; we don't try to detect installation. Just note it.
219
- return {
220
- id: "premiere",
221
- label: "Adobe Premiere Pro",
222
- status: "missing",
223
- severity: "optional",
224
- detail: "not running",
225
- unlocks: "Live timeline editing on Premiere. Open Premiere + install the gg-editor panel.",
226
- fix: "Open Premiere Pro, then install the panel:\n npx @kenkaiiii/gg-editor-premiere-panel install",
227
- };
228
- }
229
178
  function checkWhisperCpp() {
230
179
  for (const cmd of ["whisper-cli", "whisper", "main"]) {
231
180
  const r = spawnSync(cmd, ["--help"], { encoding: "utf8" });
@@ -235,7 +184,7 @@ function checkWhisperCpp() {
235
184
  label: "whisper.cpp",
236
185
  status: "ok",
237
186
  severity: "optional",
238
- detail: `${cmd} on PATH`,
187
+ detail: "installed",
239
188
  unlocks: "Local transcription (free, fast, private). Without it, transcribe falls back to " +
240
189
  "the OpenAI API (requires OPENAI_API_KEY).",
241
190
  };
@@ -246,7 +195,7 @@ function checkWhisperCpp() {
246
195
  label: "whisper.cpp",
247
196
  status: "missing",
248
197
  severity: "optional",
249
- detail: "not on PATH",
198
+ detail: "not installed",
250
199
  unlocks: "Local transcription. Without it, transcribe uses the OpenAI API (requires OPENAI_API_KEY).",
251
200
  fix: platform() === "darwin"
252
201
  ? "brew install whisper-cpp # then download a model from https://huggingface.co/ggerganov/whisper.cpp"
@@ -269,7 +218,7 @@ function checkWhisperX() {
269
218
  label: "whisperx + HF_TOKEN",
270
219
  status: "ok",
271
220
  severity: "optional",
272
- detail: "whisperx on PATH, HF_TOKEN set",
221
+ detail: "ready",
273
222
  unlocks: "Speaker diarization (transcribe with diarize=true). Required for read_transcript with " +
274
223
  "speaker filters.",
275
224
  };
@@ -280,7 +229,7 @@ function checkWhisperX() {
280
229
  label: "whisperx + HF_TOKEN",
281
230
  status: "warn",
282
231
  severity: "optional",
283
- detail: "whisperx on PATH but HF_TOKEN not set",
232
+ detail: "missing HF_TOKEN",
284
233
  unlocks: "Speaker diarization (transcribe with diarize=true).",
285
234
  fix: "Get a token at https://huggingface.co/settings/tokens (free), then:\n" +
286
235
  " export HF_TOKEN=hf_...\n" +
@@ -292,30 +241,49 @@ function checkWhisperX() {
292
241
  label: "whisperx + HF_TOKEN",
293
242
  status: "missing",
294
243
  severity: "optional",
295
- detail: "whisperx not on PATH",
244
+ detail: "not installed",
296
245
  unlocks: "Speaker diarization (transcribe with diarize=true).",
297
- fix: "pip install whisperx\n" +
298
- "export HF_TOKEN=hf_... # https://huggingface.co/settings/tokens\n" +
299
- "Then accept https://huggingface.co/pyannote/speaker-diarization-3.1 model terms.",
300
- // pip install handles the package; HF_TOKEN + license acceptance
301
- // remain manual (handled via the `fix` text on the post-install run).
302
- installable: hasManager("pip3")
303
- ? {
304
- label: "Install whisperx (you'll still need HF_TOKEN + accept model terms)",
305
- command: "pip3",
306
- args: ["install", "--user", "whisperx"],
307
- manager: "pip",
308
- }
309
- : hasManager("pip")
310
- ? {
311
- label: "Install whisperx (you'll still need HF_TOKEN + accept model terms)",
312
- command: "pip",
313
- args: ["install", "--user", "whisperx"],
314
- manager: "pip",
315
- }
316
- : undefined,
246
+ fix: whisperxFixHint(),
247
+ installable: whisperxInstaller(),
317
248
  };
318
249
  }
250
+ /**
251
+ * Install path for whisperx. We prefer `pipx` because modern Python on
252
+ * Homebrew / most distros enforces PEP 668 — `pip install --user` is
253
+ * refused unless you pass `--break-system-packages`. pipx solves this
254
+ * by isolating each tool in its own venv and exposing the entry point
255
+ * on PATH. Fallback chain:
256
+ * 1. pipx — the recommended path on Homebrew/Linux distros (PEP 668-safe).
257
+ * 2. pip3 with --break-system-packages — last resort when pipx isn't
258
+ * installed; the user can always install pipx manually first.
259
+ * 3. nothing — falls back to the manual `fix` text.
260
+ */
261
+ function whisperxInstaller() {
262
+ if (hasManager("pipx")) {
263
+ return {
264
+ label: "Install whisperx via pipx (you'll still need HF_TOKEN + accept model terms)",
265
+ command: "pipx",
266
+ args: ["install", "whisperx"],
267
+ manager: "pip",
268
+ };
269
+ }
270
+ // No pipx — don't try `pip3 install --user`; PEP 668 will reject it on
271
+ // any sane Python install. Surface the manual fix instead so the user
272
+ // sees the right next step (install pipx) rather than a wall of pip
273
+ // error text.
274
+ return undefined;
275
+ }
276
+ function whisperxFixHint() {
277
+ const installPipx = platform() === "darwin"
278
+ ? "brew install pipx"
279
+ : platform() === "linux"
280
+ ? "sudo apt install pipx # or your distro's package manager"
281
+ : "winget install pipx";
282
+ return (`${installPipx}\n` +
283
+ "pipx install whisperx\n" +
284
+ "export HF_TOKEN=hf_... # https://huggingface.co/settings/tokens\n" +
285
+ "Then accept https://huggingface.co/pyannote/speaker-diarization-3.1 model terms.");
286
+ }
319
287
  function checkAuthFile(home) {
320
288
  const path = join(home, ".gg", "auth.json");
321
289
  const exists = (() => {
@@ -328,10 +296,10 @@ function checkAuthFile(home) {
328
296
  })();
329
297
  return {
330
298
  id: "auth",
331
- label: "Auth (~/.gg/auth.json)",
299
+ label: "Auth",
332
300
  status: exists ? "ok" : "missing",
333
301
  severity: "required",
334
- detail: exists ? `present at ${path}` : "not configured",
302
+ detail: exists ? "signed in" : "not configured",
335
303
  unlocks: "The agent itself. Without auth, ggeditor can't talk to a model provider.",
336
304
  fix: exists
337
305
  ? undefined
@@ -340,12 +308,18 @@ function checkAuthFile(home) {
340
308
  };
341
309
  }
342
310
  // ── Helpers ────────────────────────────────────────────────
311
+ /**
312
+ * Probe a `<cmd> -version` output and return ONLY the version number
313
+ * (e.g. "v8.0.1"). Trims away program name + copyright noise so the
314
+ * doctor's right-hand column stays a clean one-word status.
315
+ */
343
316
  function versionLine(cmd) {
344
317
  const r = spawnSync(cmd, ["-version"], { encoding: "utf8" });
345
318
  if (r.status !== 0)
346
319
  return "found";
347
320
  const first = (r.stdout.split(/\r?\n/)[0] || "").trim();
348
- return first || "found";
321
+ const m = /\b(\d+\.\d+(?:\.\d+)?)\b/.exec(first);
322
+ return m ? `v${m[1]}` : "found";
349
323
  }
350
324
  function ffmpegInstallHint() {
351
325
  switch (platform()) {
@@ -416,14 +390,4 @@ function buildInstallable(opts) {
416
390
  }
417
391
  return undefined;
418
392
  }
419
- function isResolveInstalled() {
420
- if (platform() === "darwin") {
421
- return existsSync("/Applications/DaVinci Resolve/DaVinci Resolve.app");
422
- }
423
- if (platform() === "win32") {
424
- return existsSync("C:\\Program Files\\Blackmagic Design\\DaVinci Resolve\\Resolve.exe");
425
- }
426
- // Linux: Resolve installs into /opt/resolve by default.
427
- return existsSync("/opt/resolve/bin/resolve");
428
- }
429
393
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,7 @@ describe("runDoctor", () => {
21
21
  "ffmpeg",
22
22
  "ffprobe",
23
23
  "openai-key",
24
- "premiere",
25
24
  "python",
26
- "resolve",
27
25
  "whisper-cpp",
28
26
  "whisperx",
29
27
  ].sort());
@@ -83,7 +81,7 @@ describe("isOnboarded / onboardedMarkerPath", () => {
83
81
  const r = runDoctor(home);
84
82
  const auth = r.checks.find((c) => c.id === "auth");
85
83
  expect(auth.status).toBe("ok");
86
- expect(auth.detail).toContain("auth.json");
84
+ expect(auth.detail).toBe("signed in");
87
85
  });
88
86
  it("auth check reports missing on a fresh home", () => {
89
87
  const home = mkdtempSync(join(tmpdir(), "gg-doctor-"));
@@ -134,10 +132,10 @@ describe("doctor severity / status invariants", () => {
134
132
  expect(ff.severity).toBe("required");
135
133
  expect(fp.severity).toBe("required");
136
134
  });
137
- it("host probes (resolve/premiere) are optional", () => {
135
+ it("does not include host (resolve/premiere) checks — those live in the runtime UI", () => {
138
136
  const r = runDoctor();
139
- expect(r.checks.find((c) => c.id === "resolve").severity).toBe("optional");
140
- expect(r.checks.find((c) => c.id === "premiere").severity).toBe("optional");
137
+ expect(r.checks.find((c) => c.id === "resolve")).toBeUndefined();
138
+ expect(r.checks.find((c) => c.id === "premiere")).toBeUndefined();
141
139
  });
142
140
  });
143
141
  //# sourceMappingURL=doctor.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/core/doctor.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1E;;;;;;;GAOG;AAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CACjB;YACE,eAAe;YACf,MAAM;YACN,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,SAAS;YACT,aAAa;YACb,UAAU;SACX,CAAC,IAAI,EAAE,CACT,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC;aACxC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,aAAa,CAAC,IAAI,EAAE,4BAA4B,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,2DAA2D;QAC3D,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAE,CAAC;YACvD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QAC5D,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,eAAe,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAE,CAAC;YACvD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;;gBACrD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;QACzC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAE,CAAC;QAC1D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAE,CAAC;QACpD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAE,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/core/doctor.test.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
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenkaiiii/gg-editor",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
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-agent": "4.3.84",
31
- "@kenkaiiii/gg-ai": "4.3.84",
32
- "@kenkaiiii/ggcoder": "4.3.84"
30
+ "@kenkaiiii/gg-agent": "4.3.85",
31
+ "@kenkaiiii/gg-ai": "4.3.85",
32
+ "@kenkaiiii/ggcoder": "4.3.85"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/node": "^25.6.0",