@kenkaiiii/gg-editor 0.6.0 → 0.6.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 +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,246 @@ 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
|
+
// Save cursor + draw, exactly like renderLoginSelector.
|
|
168
|
+
stdout.write("\n\x1b[s");
|
|
169
|
+
const draw = () => {
|
|
170
|
+
stdout.write("\x1b[u\x1b[J" + renderScreen(items, selectedIdx, onboarding, note) + "\n");
|
|
171
|
+
};
|
|
172
|
+
const flashNote = (text) => {
|
|
173
|
+
if (noteTimer)
|
|
174
|
+
clearTimeout(noteTimer);
|
|
175
|
+
note = text;
|
|
79
176
|
draw();
|
|
80
|
-
|
|
81
|
-
|
|
177
|
+
noteTimer = setTimeout(() => {
|
|
178
|
+
note = undefined;
|
|
82
179
|
draw();
|
|
83
180
|
}, 2500);
|
|
84
181
|
};
|
|
85
182
|
const reload = () => {
|
|
86
183
|
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));
|
|
184
|
+
items = report.checks.filter((c) => c.severity !== "info");
|
|
185
|
+
if (selectedIdx >= items.length)
|
|
186
|
+
selectedIdx = Math.max(0, items.length - 1);
|
|
100
187
|
};
|
|
101
188
|
draw();
|
|
102
189
|
stdin.setRawMode(true);
|
|
103
190
|
stdin.resume();
|
|
104
|
-
stdin.setEncoding("utf8");
|
|
105
191
|
return new Promise((resolve) => {
|
|
106
192
|
const cleanup = () => {
|
|
107
|
-
if (
|
|
108
|
-
clearTimeout(
|
|
193
|
+
if (noteTimer)
|
|
194
|
+
clearTimeout(noteTimer);
|
|
109
195
|
stdin.removeListener("data", onData);
|
|
110
196
|
stdin.setRawMode(false);
|
|
111
197
|
stdin.pause();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
chalk.dim(" Run `ggeditor` to start.\n"));
|
|
198
|
+
// Wipe the selector display + leave a one-line summary in scrollback.
|
|
199
|
+
stdout.write("\x1b[u\x1b[J");
|
|
200
|
+
const total = items.length;
|
|
201
|
+
const ok = items.filter((c) => c.status === "ok").length;
|
|
202
|
+
if (ok === total) {
|
|
203
|
+
stdout.write(chalk.green("\u2713 Nothing to fix. You're all good.") +
|
|
204
|
+
chalk.hex(TEXT_DIM)(" Run `ggeditor` to start.\n"));
|
|
120
205
|
}
|
|
121
206
|
else {
|
|
122
|
-
|
|
207
|
+
stdout.write(chalk.hex(TEXT_DIM)(`Doctor closed. ${ok}/${total} ready. Re-run \`ggeditor doctor\` any time.\n`));
|
|
123
208
|
}
|
|
124
209
|
resolve();
|
|
125
210
|
};
|
|
211
|
+
/**
|
|
212
|
+
* Tear down the selector, run an async block with normal stdio, then
|
|
213
|
+
* re-mount. Used for both install commands and secret prompts.
|
|
214
|
+
*/
|
|
215
|
+
const runWithSubshell = async (block) => {
|
|
216
|
+
stdin.removeListener("data", onData);
|
|
217
|
+
stdin.setRawMode(false);
|
|
218
|
+
stdin.pause();
|
|
219
|
+
stdout.write("\x1b[u\x1b[J"); // wipe the selector
|
|
220
|
+
let result;
|
|
221
|
+
try {
|
|
222
|
+
result = await block();
|
|
223
|
+
}
|
|
224
|
+
catch (e) {
|
|
225
|
+
process.stdout.write(chalk.red(`\n Error: ${e.message}\n`));
|
|
226
|
+
result = { ok: false };
|
|
227
|
+
}
|
|
228
|
+
// Brief pause so the user sees the outcome.
|
|
229
|
+
await new Promise((r) => setTimeout(r, 600));
|
|
230
|
+
// Re-save cursor + redraw.
|
|
231
|
+
stdout.write("\n\x1b[s");
|
|
232
|
+
stdin.setRawMode(true);
|
|
233
|
+
stdin.resume();
|
|
234
|
+
stdin.on("data", onData);
|
|
235
|
+
reload();
|
|
236
|
+
const cur = items[selectedIdx];
|
|
237
|
+
if (cur) {
|
|
238
|
+
const newIdx = items.findIndex((c) => c.id === cur.id);
|
|
239
|
+
selectedIdx = newIdx >= 0 ? newIdx : pickFirstActionable(items);
|
|
240
|
+
}
|
|
241
|
+
if (result.ok)
|
|
242
|
+
flashNote(`Saved`);
|
|
243
|
+
else
|
|
244
|
+
draw();
|
|
245
|
+
};
|
|
126
246
|
const onData = (chunk) => {
|
|
127
|
-
|
|
128
|
-
|
|
247
|
+
const key = chunk.toString();
|
|
248
|
+
// Esc / Ctrl+C / q → quit
|
|
249
|
+
if (key === "\x1b" || key === "\x03" || key === "q") {
|
|
129
250
|
cleanup();
|
|
130
251
|
return;
|
|
131
252
|
}
|
|
132
253
|
// ↑
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
draw();
|
|
137
|
-
}
|
|
254
|
+
if (key === "\x1b[A" && selectedIdx > 0) {
|
|
255
|
+
selectedIdx--;
|
|
256
|
+
draw();
|
|
138
257
|
return;
|
|
139
258
|
}
|
|
140
259
|
// ↓
|
|
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
|
-
}
|
|
260
|
+
if (key === "\x1b[B" && selectedIdx < items.length - 1) {
|
|
261
|
+
selectedIdx++;
|
|
262
|
+
draw();
|
|
156
263
|
return;
|
|
157
264
|
}
|
|
158
|
-
// r
|
|
159
|
-
|
|
160
|
-
if (chunk === "r") {
|
|
265
|
+
// r → refresh
|
|
266
|
+
if (key === "r") {
|
|
161
267
|
reload();
|
|
162
|
-
|
|
268
|
+
flashNote("Refreshed");
|
|
163
269
|
return;
|
|
164
270
|
}
|
|
165
|
-
// Enter
|
|
166
|
-
if (
|
|
167
|
-
const cur =
|
|
271
|
+
// Enter → install / prompt / nothing
|
|
272
|
+
if (key === "\r" || key === "\n") {
|
|
273
|
+
const cur = items[selectedIdx];
|
|
168
274
|
if (!cur)
|
|
169
275
|
return;
|
|
170
276
|
if (cur.status === "ok") {
|
|
171
|
-
|
|
277
|
+
flashNote("Already done");
|
|
172
278
|
return;
|
|
173
279
|
}
|
|
174
280
|
if (cur.installable) {
|
|
281
|
+
const inst = cur.installable;
|
|
175
282
|
void runWithSubshell(async () => {
|
|
176
|
-
|
|
177
|
-
process.stdout.write(chalk.dim(`\n Running: `) +
|
|
283
|
+
process.stdout.write(chalk.hex(TEXT_DIM)("Running: ") +
|
|
178
284
|
chalk.cyan(`${inst.command} ${inst.args.join(" ")}`) +
|
|
179
285
|
"\n\n");
|
|
180
286
|
const code = await spawnInstall(inst.command, inst.args);
|
|
181
287
|
if (code === 0) {
|
|
182
|
-
process.stdout.write(chalk.green("\n
|
|
288
|
+
process.stdout.write(chalk.green("\n\u2713 Installed.\n"));
|
|
183
289
|
return { ok: true };
|
|
184
290
|
}
|
|
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
|
-
}
|
|
291
|
+
process.stdout.write(chalk.red(`\n\u2717 Install failed (exit ${code}).\n`));
|
|
191
292
|
return { ok: false };
|
|
192
|
-
}).then((result) => {
|
|
193
|
-
if (result.ok)
|
|
194
|
-
setFooterNote(`Installed ${cur.label}`, "ok");
|
|
195
293
|
});
|
|
196
294
|
return;
|
|
197
295
|
}
|
|
198
296
|
if (cur.prompt) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
setFooterNote(`Saved ${cur.label}`, "ok");
|
|
202
|
-
else
|
|
203
|
-
setFooterNote("Cancelled", "info");
|
|
204
|
-
});
|
|
297
|
+
const p = cur.prompt;
|
|
298
|
+
void runWithSubshell(async () => promptForSecret(p));
|
|
205
299
|
return;
|
|
206
300
|
}
|
|
207
|
-
|
|
208
|
-
return;
|
|
301
|
+
flashNote("No automatic fix");
|
|
209
302
|
}
|
|
210
303
|
};
|
|
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
304
|
stdin.on("data", onData);
|
|
247
305
|
});
|
|
248
306
|
}
|
|
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) {
|
|
307
|
+
// ── Helpers ───────────────────────────────────────────────
|
|
308
|
+
function pickFirstActionable(items) {
|
|
364
309
|
// Priority: required-missing/warn → optional-warn → optional-missing → 0.
|
|
365
310
|
const tiers = [
|
|
366
311
|
{ severity: "block", statuses: ["missing", "warn"] },
|
|
@@ -369,7 +314,7 @@ function pickFirstActionableIdx(items, skipped) {
|
|
|
369
314
|
{ severity: "optional", statuses: ["missing"] },
|
|
370
315
|
];
|
|
371
316
|
for (const tier of tiers) {
|
|
372
|
-
const idx = items.findIndex((c) => c.severity === tier.severity && tier.statuses.includes(c.status)
|
|
317
|
+
const idx = items.findIndex((c) => c.severity === tier.severity && tier.statuses.includes(c.status));
|
|
373
318
|
if (idx >= 0)
|
|
374
319
|
return idx;
|
|
375
320
|
}
|
|
@@ -383,30 +328,24 @@ function spawnInstall(command, args) {
|
|
|
383
328
|
});
|
|
384
329
|
}
|
|
385
330
|
/**
|
|
386
|
-
* Prompt the user for a secret
|
|
387
|
-
* persist via setStoredApiKey. The user can hit Esc / blank-Enter to
|
|
388
|
-
* cancel without writing anything.
|
|
331
|
+
* Prompt the user for a secret, validate it, persist via setStoredApiKey.
|
|
389
332
|
*
|
|
390
|
-
* Echoes
|
|
391
|
-
*
|
|
392
|
-
* access could
|
|
333
|
+
* Echoes input as it's typed — these are API keys, and node has no
|
|
334
|
+
* built-in masked-input primitive without dragging in a dep. Anyone
|
|
335
|
+
* with shell access could `cat ~/.gg/api-keys.json` anyway.
|
|
393
336
|
*/
|
|
394
337
|
async function promptForSecret(p) {
|
|
395
|
-
const dim = chalk.
|
|
396
|
-
const primary = chalk.hex(
|
|
397
|
-
const accent = chalk.hex(
|
|
338
|
+
const dim = chalk.hex(TEXT_DIM);
|
|
339
|
+
const primary = chalk.hex(PRIMARY);
|
|
340
|
+
const accent = chalk.hex(ACCENT);
|
|
398
341
|
process.stdout.write("\n " + primary.bold(p.label) + "\n");
|
|
399
|
-
if (p.hint)
|
|
342
|
+
if (p.hint)
|
|
400
343
|
process.stdout.write(" " + dim(p.hint) + "\n");
|
|
401
|
-
}
|
|
402
344
|
process.stdout.write(" " + dim("(blank + Enter to cancel)") + "\n\n");
|
|
403
|
-
const rl = createInterface({
|
|
404
|
-
input: process.stdin,
|
|
405
|
-
output: process.stdout,
|
|
406
|
-
});
|
|
345
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
407
346
|
try {
|
|
408
347
|
for (let attempt = 0; attempt < 3; attempt++) {
|
|
409
|
-
const value = (await rl.question(" " + accent("
|
|
348
|
+
const value = (await rl.question(" " + accent("\u276f "))).trim();
|
|
410
349
|
if (value.length === 0) {
|
|
411
350
|
process.stdout.write(dim(" Cancelled.\n"));
|
|
412
351
|
return { ok: false };
|
|
@@ -420,10 +359,10 @@ async function promptForSecret(p) {
|
|
|
420
359
|
setStoredApiKey(p.store, value);
|
|
421
360
|
}
|
|
422
361
|
catch (e) {
|
|
423
|
-
process.stdout.write(chalk.red(`
|
|
362
|
+
process.stdout.write(chalk.red(` \u2717 Failed to save: ${e.message}\n`));
|
|
424
363
|
return { ok: false };
|
|
425
364
|
}
|
|
426
|
-
process.stdout.write(chalk.green(
|
|
365
|
+
process.stdout.write(chalk.green(" \u2713 Saved to ~/.gg/api-keys.json (chmod 600).\n"));
|
|
427
366
|
return { ok: true };
|
|
428
367
|
}
|
|
429
368
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAqC,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAWjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAyB,EAAE;IACpE,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,CAAC;YACd,OAAO,EAAE,iBAAiB,EAAE;YAC5B,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAC9C,QAAQ,EAAE,IAAI,CAAC,UAAU;gBACvB,CAAC,CAAC,8CAA8C;gBAChD,CAAC,CAAC,qCAAqC;SAC1C,CAAC,CACH,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kBAAkB,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAC3E,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,sBAAsB,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,8DAA8D;AAE9D,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,oCAAoC;AACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,sBAAsB;AACtD,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,oBAAoB;AAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,qCAAqC;AAEnE,8DAA8D;AAE9D,KAAK,UAAU,sBAAsB,CAAC,UAAmB;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAE5B,uEAAuE;IACvE,kEAAkE;IAClE,uDAAuD;IACvD,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;IACzB,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IACpE,IAAI,WAAW,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9C,IAAI,UAAU,GAA2D,IAAI,CAAC;IAC9E,IAAI,eAAe,GAAyC,IAAI,CAAC;IAEjE,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,KAA6B,EAAE,EAAE;QACpE,IAAI,eAAe;YAAE,YAAY,CAAC,eAAe,CAAC,CAAC;QACnD,UAAU,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC7B,IAAI,EAAE,CAAC;QACP,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,UAAU,GAAG,IAAI,CAAC;YAClB,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,MAAM,GAAG,SAAS,EAAE,CAAC;QACrB,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAChE,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAI,WAAW,IAAI,UAAU,CAAC,MAAM;YAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,IAAI,EAAE,CAAC;IACP,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,eAAe;gBAAE,YAAY,CAAC,eAAe,CAAC,CAAC;YACnD,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;YACrC,iEAAiE;YACjE,kDAAkD;YAClD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC;YAC1C,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;YAC9D,IAAI,EAAE,KAAK,eAAe,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC;oBAC/C,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAC3C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CACP,kBAAkB,EAAE,IAAI,eAAe,gDAAgD,CACxF,CACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC/B,OAAO;YACP,IAAI,KAAK,KAAK,MAAM,CAAC,YAAY,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;gBACvE,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI;YACJ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACxC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,WAAW,EAAE,CAAC;oBACd,IAAI,EAAE,CAAC;gBACT,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI;YACJ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACxC,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,WAAW,EAAE,CAAC;oBACd,IAAI,EAAE,CAAC;gBACT,CAAC;gBACD,OAAO;YACT,CAAC;YAED,kEAAkE;YAClE,sEAAsE;YACtE,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACpB,aAAa,CAAC,WAAW,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,mEAAmE;YACnE,sBAAsB;YACtB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,MAAM,EAAE,CAAC;gBACT,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,mCAAmC;YACnC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACrC,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,CAAC,GAAG;oBAAE,OAAO;gBACjB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBACxB,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBAED,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;oBACpB,KAAK,eAAe,CAAC,KAAK,IAAI,EAAE;wBAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAY,CAAC;wBAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;4BACxB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACpD,MAAM,CACT,CAAC;wBACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;4BACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;4BACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;wBACtB,CAAC;wBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,IAAI,MAAM,CAAC,CAAC,CAAC;wBAC1E,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;4BACZ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gCACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;4BACzD,CAAC;wBACH,CAAC;wBACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;oBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBACjB,IAAI,MAAM,CAAC,EAAE;4BAAE,aAAa,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBACf,KAAK,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBAC7E,IAAI,MAAM,CAAC,EAAE;4BAAE,aAAa,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;;4BACpD,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,aAAa,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QAEF;;;;;WAKG;QACH,KAAK,UAAU,eAAe,CAC5B,KAAqC;YAErC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;YACrC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,MAAuB,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,cAAe,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBACxE,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACzB,CAAC;YACD,6DAA6D;YAC7D,6DAA6D;YAC7D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;YACtC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvB,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzB,MAAM,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5D,WAAW,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,EAAE,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8DAA8D;AAE9D,SAAS,YAAY,CAAC,MAAoC,EAAE,UAAmB;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAC5F,OAAO,eAAe,CAAC;QACrB,OAAO,EAAE,iBAAiB,EAAE;QAC5B,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QACzC,QAAQ,EAAE,GAAG,IAAI,OAAO,KAAK,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAoB,EAAE,WAAmB,EAAE,OAAoB;IACrF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,UAAU,GAAG,CAAC,KAAK,WAAW,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CACR,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CACtF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,CAAc,EAAE,SAAkB;IACxD,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjF,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,YAAY,CAAC,CAA0B,EAAE,OAAe;IAC/D,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,sEAAsE;IACtE,sDAAsD;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,CAAc;IAChC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;IACD,oEAAoE;IACpE,4CAA4C;IAC5C,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACV,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACtC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,IAA4D;IAChF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,MAAM,GACV,IAAI;QACJ,OAAO,CAAC,IAAI,CAAC;QACb,GAAG,CAAC,cAAc,CAAC;QACnB,OAAO,CAAC,OAAO,CAAC;QAChB,GAAG,CAAC,SAAS,CAAC;QACd,OAAO,CAAC,GAAG,CAAC;QACZ,GAAG,CAAC,UAAU,CAAC;QACf,OAAO,CAAC,GAAG,CAAC;QACZ,GAAG,CAAC,cAAc,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC;QACZ,GAAG,CAAC,OAAO,CAAC,CAAC;IAEf,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,SAAS,GACb,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IACxF,OAAO,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB,EAAE,OAAoB;IACxE,0EAA0E;IAC1E,MAAM,KAAK,GAAoF;QAC7F,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QACpD,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QACvD,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;QAC5C,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;KAChD,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC9F,CAAC;QACF,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,IAAc;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,eAAe,CAAC,CAAa;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,2BAA2B,CAAC,GAAG,MAAM,CAAC,CAAC;IAEvE,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAwB,CAAW,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBACjF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;YACrF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
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.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-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",
|