@kenkaiiii/gg-editor 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/auth/api-keys.d.ts +18 -0
- package/dist/core/auth/api-keys.d.ts.map +1 -0
- package/dist/core/auth/api-keys.js +72 -0
- package/dist/core/auth/api-keys.js.map +1 -0
- package/dist/core/color-match.d.ts.map +1 -1
- package/dist/core/color-match.js +2 -1
- package/dist/core/color-match.js.map +1 -1
- package/dist/core/doctor-runner.d.ts.map +1 -1
- package/dist/core/doctor-runner.js +164 -48
- package/dist/core/doctor-runner.js.map +1 -1
- package/dist/core/doctor.d.ts +33 -5
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +103 -119
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/doctor.test.js +7 -19
- package/dist/core/doctor.test.js.map +1 -1
- package/dist/core/hook-analysis.d.ts.map +1 -1
- package/dist/core/hook-analysis.js +2 -1
- package/dist/core/hook-analysis.js.map +1 -1
- package/dist/core/skin-grade.d.ts.map +1 -1
- package/dist/core/skin-grade.js +2 -1
- package/dist/core/skin-grade.js.map +1 -1
- package/dist/core/vision.d.ts.map +1 -1
- package/dist/core/vision.js +2 -1
- package/dist/core/vision.js.map +1 -1
- package/dist/core/whisper.d.ts.map +1 -1
- package/dist/core/whisper.js +2 -1
- package/dist/core/whisper.js.map +1 -1
- package/package.json +4 -4
package/dist/core/doctor.js
CHANGED
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
* - Pure module — no I/O writes, no side effects beyond `spawnSync` /
|
|
21
21
|
* `existsSync` probes.
|
|
22
22
|
*/
|
|
23
|
-
import {
|
|
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 {
|
|
27
|
+
import { getStoredApiKey } from "./auth/api-keys.js";
|
|
28
28
|
import { checkFfmpeg, checkFfprobe } from "./media/ffmpeg.js";
|
|
29
29
|
const ONBOARDED_MARKER = "onboarded-ggeditor";
|
|
30
30
|
export function onboardedMarkerPath(home = homedir()) {
|
|
@@ -43,17 +43,18 @@ export function isOnboarded(home = homedir()) {
|
|
|
43
43
|
* `--version` style probes.
|
|
44
44
|
*/
|
|
45
45
|
export function runDoctor(home = homedir()) {
|
|
46
|
+
// Host (Resolve / Premiere) detection lives in the live banner +
|
|
47
|
+
// footer at runtime — the doctor doesn't lecture users about which
|
|
48
|
+
// NLE they have. They know.
|
|
46
49
|
const checks = [
|
|
47
50
|
checkFfmpegProbe(),
|
|
48
51
|
checkFfprobeProbe(),
|
|
52
|
+
checkAuthFile(home),
|
|
49
53
|
checkOpenAIKey(),
|
|
50
|
-
checkAnthropicKey(),
|
|
51
54
|
checkPython(),
|
|
52
|
-
checkResolve(),
|
|
53
|
-
checkPremiere(),
|
|
54
55
|
checkWhisperCpp(),
|
|
55
56
|
checkWhisperX(),
|
|
56
|
-
|
|
57
|
+
checkAnthropicKey(),
|
|
57
58
|
];
|
|
58
59
|
const ready = checks.every((c) => c.severity !== "required" || c.status === "ok");
|
|
59
60
|
return {
|
|
@@ -103,20 +104,28 @@ function checkFfprobeProbe() {
|
|
|
103
104
|
};
|
|
104
105
|
}
|
|
105
106
|
function checkOpenAIKey() {
|
|
106
|
-
const
|
|
107
|
+
const fromEnv = !!process.env.OPENAI_API_KEY;
|
|
108
|
+
const fromStore = !!getStoredApiKey("openai");
|
|
109
|
+
const present = fromEnv || fromStore;
|
|
107
110
|
return {
|
|
108
111
|
id: "openai-key",
|
|
109
|
-
label: "
|
|
112
|
+
label: "OpenAI API key",
|
|
110
113
|
status: present ? "ok" : "missing",
|
|
111
114
|
severity: "optional",
|
|
112
|
-
detail:
|
|
113
|
-
unlocks: "Vision tools: analyze_hook
|
|
114
|
-
"
|
|
115
|
+
detail: fromEnv ? "set (env)" : fromStore ? "set (saved)" : "not set",
|
|
116
|
+
unlocks: "Vision tools: analyze_hook, score_shot, color_match, grade_skin_tones, " +
|
|
117
|
+
"match_clip_color, and the OpenAI transcription backend.",
|
|
118
|
+
prompt: present
|
|
119
|
+
? undefined
|
|
120
|
+
: {
|
|
121
|
+
label: "Paste your OpenAI API key",
|
|
122
|
+
hint: "Get one at https://platform.openai.com/api-keys (free tier available)",
|
|
123
|
+
store: "openai",
|
|
124
|
+
validate: (v) => (v.startsWith("sk-") ? undefined : "OpenAI keys start with 'sk-'"),
|
|
125
|
+
},
|
|
115
126
|
fix: present
|
|
116
127
|
? undefined
|
|
117
|
-
: "
|
|
118
|
-
" export OPENAI_API_KEY=sk-...\n" +
|
|
119
|
-
" # add to ~/.zshrc / ~/.bashrc to persist",
|
|
128
|
+
: "Press Enter to paste your key here — it'll be saved to ~/.gg/api-keys.json.",
|
|
120
129
|
};
|
|
121
130
|
}
|
|
122
131
|
function checkAnthropicKey() {
|
|
@@ -129,9 +138,7 @@ function checkAnthropicKey() {
|
|
|
129
138
|
label: "ANTHROPIC_API_KEY",
|
|
130
139
|
status: present ? "ok" : "missing",
|
|
131
140
|
severity: "info",
|
|
132
|
-
detail: present
|
|
133
|
-
? "set in environment (overrides OAuth token if present)"
|
|
134
|
-
: "not set (OAuth is the recommended path)",
|
|
141
|
+
detail: present ? "set" : "not set",
|
|
135
142
|
unlocks: "Direct Anthropic API auth without OAuth. Most users should `ggeditor login` instead.",
|
|
136
143
|
fix: undefined,
|
|
137
144
|
};
|
|
@@ -144,12 +151,13 @@ function checkPython() {
|
|
|
144
151
|
});
|
|
145
152
|
if (r.status === 0) {
|
|
146
153
|
const out = (r.stdout || r.stderr).trim();
|
|
154
|
+
const m = /\b(\d+\.\d+(?:\.\d+)?)\b/.exec(out);
|
|
147
155
|
return {
|
|
148
156
|
id: "python",
|
|
149
157
|
label: "Python 3",
|
|
150
158
|
status: "ok",
|
|
151
159
|
severity: "optional",
|
|
152
|
-
detail:
|
|
160
|
+
detail: m ? `v${m[1]}` : "found",
|
|
153
161
|
unlocks: "DaVinci Resolve scripting bridge (host integration). Without Python, file-only " +
|
|
154
162
|
"mode still works.",
|
|
155
163
|
};
|
|
@@ -160,72 +168,22 @@ function checkPython() {
|
|
|
160
168
|
label: "Python 3",
|
|
161
169
|
status: "missing",
|
|
162
170
|
severity: "optional",
|
|
163
|
-
detail: "
|
|
171
|
+
detail: "not on PATH",
|
|
164
172
|
unlocks: "DaVinci Resolve scripting bridge (host integration). File-only mode works without it.",
|
|
165
173
|
fix: platform() === "darwin"
|
|
166
|
-
? "brew install python
|
|
174
|
+
? "brew install python # latest 3.x (currently 3.14)"
|
|
167
175
|
: platform() === "linux"
|
|
168
176
|
? "sudo apt install python3 # debian/ubuntu — your distro's package manager otherwise"
|
|
169
177
|
: "winget install Python.Python.3 # or python.org installer",
|
|
170
178
|
installable: buildInstallable({
|
|
171
|
-
|
|
179
|
+
// 'python' is Homebrew's alias for the current default Python 3
|
|
180
|
+
// bottle (currently 3.14). Tracks Homebrew's choice so we don't
|
|
181
|
+
// pin a stale minor.
|
|
182
|
+
pkg: { darwin: "python", linux: "python3", win32: "Python.Python.3" },
|
|
172
183
|
label: "Install Python 3",
|
|
173
184
|
}),
|
|
174
185
|
};
|
|
175
186
|
}
|
|
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
187
|
function checkWhisperCpp() {
|
|
230
188
|
for (const cmd of ["whisper-cli", "whisper", "main"]) {
|
|
231
189
|
const r = spawnSync(cmd, ["--help"], { encoding: "utf8" });
|
|
@@ -235,7 +193,7 @@ function checkWhisperCpp() {
|
|
|
235
193
|
label: "whisper.cpp",
|
|
236
194
|
status: "ok",
|
|
237
195
|
severity: "optional",
|
|
238
|
-
detail:
|
|
196
|
+
detail: "installed",
|
|
239
197
|
unlocks: "Local transcription (free, fast, private). Without it, transcribe falls back to " +
|
|
240
198
|
"the OpenAI API (requires OPENAI_API_KEY).",
|
|
241
199
|
};
|
|
@@ -246,7 +204,7 @@ function checkWhisperCpp() {
|
|
|
246
204
|
label: "whisper.cpp",
|
|
247
205
|
status: "missing",
|
|
248
206
|
severity: "optional",
|
|
249
|
-
detail: "not
|
|
207
|
+
detail: "not installed",
|
|
250
208
|
unlocks: "Local transcription. Without it, transcribe uses the OpenAI API (requires OPENAI_API_KEY).",
|
|
251
209
|
fix: platform() === "darwin"
|
|
252
210
|
? "brew install whisper-cpp # then download a model from https://huggingface.co/ggerganov/whisper.cpp"
|
|
@@ -262,14 +220,16 @@ function checkWhisperCpp() {
|
|
|
262
220
|
function checkWhisperX() {
|
|
263
221
|
const r = spawnSync("whisperx", ["--help"], { encoding: "utf8" });
|
|
264
222
|
const ok = r.status === 0;
|
|
265
|
-
const
|
|
223
|
+
const fromEnv = !!process.env.HF_TOKEN;
|
|
224
|
+
const fromStore = !!getStoredApiKey("huggingface");
|
|
225
|
+
const hfToken = fromEnv || fromStore;
|
|
266
226
|
if (ok && hfToken) {
|
|
267
227
|
return {
|
|
268
228
|
id: "whisperx",
|
|
269
|
-
label: "whisperx
|
|
229
|
+
label: "whisperx",
|
|
270
230
|
status: "ok",
|
|
271
231
|
severity: "optional",
|
|
272
|
-
detail: "
|
|
232
|
+
detail: fromEnv ? "ready (env)" : "ready (saved)",
|
|
273
233
|
unlocks: "Speaker diarization (transcribe with diarize=true). Required for read_transcript with " +
|
|
274
234
|
"speaker filters.",
|
|
275
235
|
};
|
|
@@ -277,45 +237,73 @@ function checkWhisperX() {
|
|
|
277
237
|
if (ok && !hfToken) {
|
|
278
238
|
return {
|
|
279
239
|
id: "whisperx",
|
|
280
|
-
label: "whisperx
|
|
240
|
+
label: "whisperx",
|
|
281
241
|
status: "warn",
|
|
282
242
|
severity: "optional",
|
|
283
|
-
detail: "
|
|
243
|
+
detail: "missing HF_TOKEN",
|
|
284
244
|
unlocks: "Speaker diarization (transcribe with diarize=true).",
|
|
285
|
-
|
|
286
|
-
"
|
|
287
|
-
"
|
|
245
|
+
prompt: {
|
|
246
|
+
label: "Paste your Hugging Face token",
|
|
247
|
+
hint: "Free at https://huggingface.co/settings/tokens — also accept " +
|
|
248
|
+
"https://huggingface.co/pyannote/speaker-diarization-3.1 model terms.",
|
|
249
|
+
store: "huggingface",
|
|
250
|
+
validate: (v) => (v.startsWith("hf_") ? undefined : "Hugging Face tokens start with 'hf_'"),
|
|
251
|
+
},
|
|
252
|
+
fix: "Press Enter to paste your token here — it'll be saved to ~/.gg/api-keys.json.",
|
|
288
253
|
};
|
|
289
254
|
}
|
|
290
255
|
return {
|
|
291
256
|
id: "whisperx",
|
|
292
|
-
label: "whisperx
|
|
257
|
+
label: "whisperx",
|
|
293
258
|
status: "missing",
|
|
294
259
|
severity: "optional",
|
|
295
|
-
detail: "
|
|
260
|
+
detail: "not installed",
|
|
296
261
|
unlocks: "Speaker diarization (transcribe with diarize=true).",
|
|
297
|
-
fix:
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
//
|
|
301
|
-
//
|
|
302
|
-
|
|
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,
|
|
262
|
+
fix: whisperxFixHint(),
|
|
263
|
+
installable: whisperxInstaller(),
|
|
264
|
+
// After install succeeds the next doctor pass will see whisperx on
|
|
265
|
+
// PATH and surface the warn-state with the HF_TOKEN prompt above.
|
|
266
|
+
// We don't bundle the token prompt with the install action because
|
|
267
|
+
// pipx output is verbose and we want a clean transition.
|
|
317
268
|
};
|
|
318
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Install path for whisperx. We prefer `pipx` because modern Python on
|
|
272
|
+
* Homebrew / most distros enforces PEP 668 — `pip install --user` is
|
|
273
|
+
* refused unless you pass `--break-system-packages`. pipx solves this
|
|
274
|
+
* by isolating each tool in its own venv and exposing the entry point
|
|
275
|
+
* on PATH. Fallback chain:
|
|
276
|
+
* 1. pipx — the recommended path on Homebrew/Linux distros (PEP 668-safe).
|
|
277
|
+
* 2. pip3 with --break-system-packages — last resort when pipx isn't
|
|
278
|
+
* installed; the user can always install pipx manually first.
|
|
279
|
+
* 3. nothing — falls back to the manual `fix` text.
|
|
280
|
+
*/
|
|
281
|
+
function whisperxInstaller() {
|
|
282
|
+
if (hasManager("pipx")) {
|
|
283
|
+
return {
|
|
284
|
+
label: "Install whisperx via pipx (you'll still need HF_TOKEN + accept model terms)",
|
|
285
|
+
command: "pipx",
|
|
286
|
+
args: ["install", "whisperx"],
|
|
287
|
+
manager: "pip",
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
// No pipx — don't try `pip3 install --user`; PEP 668 will reject it on
|
|
291
|
+
// any sane Python install. Surface the manual fix instead so the user
|
|
292
|
+
// sees the right next step (install pipx) rather than a wall of pip
|
|
293
|
+
// error text.
|
|
294
|
+
return undefined;
|
|
295
|
+
}
|
|
296
|
+
function whisperxFixHint() {
|
|
297
|
+
const installPipx = platform() === "darwin"
|
|
298
|
+
? "brew install pipx"
|
|
299
|
+
: platform() === "linux"
|
|
300
|
+
? "sudo apt install pipx # or your distro's package manager"
|
|
301
|
+
: "winget install pipx";
|
|
302
|
+
return (`${installPipx}\n` +
|
|
303
|
+
"pipx install whisperx\n" +
|
|
304
|
+
"export HF_TOKEN=hf_... # https://huggingface.co/settings/tokens\n" +
|
|
305
|
+
"Then accept https://huggingface.co/pyannote/speaker-diarization-3.1 model terms.");
|
|
306
|
+
}
|
|
319
307
|
function checkAuthFile(home) {
|
|
320
308
|
const path = join(home, ".gg", "auth.json");
|
|
321
309
|
const exists = (() => {
|
|
@@ -328,10 +316,10 @@ function checkAuthFile(home) {
|
|
|
328
316
|
})();
|
|
329
317
|
return {
|
|
330
318
|
id: "auth",
|
|
331
|
-
label: "Auth
|
|
319
|
+
label: "Auth",
|
|
332
320
|
status: exists ? "ok" : "missing",
|
|
333
321
|
severity: "required",
|
|
334
|
-
detail: exists ?
|
|
322
|
+
detail: exists ? "signed in" : "not configured",
|
|
335
323
|
unlocks: "The agent itself. Without auth, ggeditor can't talk to a model provider.",
|
|
336
324
|
fix: exists
|
|
337
325
|
? undefined
|
|
@@ -340,12 +328,18 @@ function checkAuthFile(home) {
|
|
|
340
328
|
};
|
|
341
329
|
}
|
|
342
330
|
// ── Helpers ────────────────────────────────────────────────
|
|
331
|
+
/**
|
|
332
|
+
* Probe a `<cmd> -version` output and return ONLY the version number
|
|
333
|
+
* (e.g. "v8.0.1"). Trims away program name + copyright noise so the
|
|
334
|
+
* doctor's right-hand column stays a clean one-word status.
|
|
335
|
+
*/
|
|
343
336
|
function versionLine(cmd) {
|
|
344
337
|
const r = spawnSync(cmd, ["-version"], { encoding: "utf8" });
|
|
345
338
|
if (r.status !== 0)
|
|
346
339
|
return "found";
|
|
347
340
|
const first = (r.stdout.split(/\r?\n/)[0] || "").trim();
|
|
348
|
-
|
|
341
|
+
const m = /\b(\d+\.\d+(?:\.\d+)?)\b/.exec(first);
|
|
342
|
+
return m ? `v${m[1]}` : "found";
|
|
349
343
|
}
|
|
350
344
|
function ffmpegInstallHint() {
|
|
351
345
|
switch (platform()) {
|
|
@@ -416,14 +410,4 @@ function buildInstallable(opts) {
|
|
|
416
410
|
}
|
|
417
411
|
return undefined;
|
|
418
412
|
}
|
|
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
413
|
//# sourceMappingURL=doctor.js.map
|
package/dist/core/doctor.js.map
CHANGED
|
@@ -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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"}
|
package/dist/core/doctor.test.js
CHANGED
|
@@ -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).
|
|
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-"));
|
|
@@ -94,26 +92,16 @@ describe("isOnboarded / onboardedMarkerPath", () => {
|
|
|
94
92
|
});
|
|
95
93
|
});
|
|
96
94
|
describe("doctor severity / status invariants", () => {
|
|
97
|
-
it("OPENAI_API_KEY
|
|
95
|
+
it("OPENAI_API_KEY check returns ok when the env var is set", () => {
|
|
98
96
|
const prev = process.env.OPENAI_API_KEY;
|
|
99
|
-
delete process.env.OPENAI_API_KEY;
|
|
100
|
-
try {
|
|
101
|
-
const r = runDoctor();
|
|
102
|
-
const k = r.checks.find((c) => c.id === "openai-key");
|
|
103
|
-
expect(k.status).toBe("missing");
|
|
104
|
-
expect(k.severity).toBe("optional");
|
|
105
|
-
expect(k.fix).toContain("OPENAI_API_KEY");
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
if (prev !== undefined)
|
|
109
|
-
process.env.OPENAI_API_KEY = prev;
|
|
110
|
-
}
|
|
111
97
|
process.env.OPENAI_API_KEY = "test-fake-key";
|
|
112
98
|
try {
|
|
113
99
|
const r = runDoctor();
|
|
114
100
|
const k = r.checks.find((c) => c.id === "openai-key");
|
|
115
101
|
expect(k.status).toBe("ok");
|
|
102
|
+
expect(k.severity).toBe("optional");
|
|
116
103
|
expect(k.fix).toBeUndefined();
|
|
104
|
+
expect(k.prompt).toBeUndefined();
|
|
117
105
|
}
|
|
118
106
|
finally {
|
|
119
107
|
if (prev === undefined)
|
|
@@ -134,10 +122,10 @@ describe("doctor severity / status invariants", () => {
|
|
|
134
122
|
expect(ff.severity).toBe("required");
|
|
135
123
|
expect(fp.severity).toBe("required");
|
|
136
124
|
});
|
|
137
|
-
it("host
|
|
125
|
+
it("does not include host (resolve/premiere) checks — those live in the runtime UI", () => {
|
|
138
126
|
const r = runDoctor();
|
|
139
|
-
expect(r.checks.find((c) => c.id === "resolve")
|
|
140
|
-
expect(r.checks.find((c) => c.id === "premiere")
|
|
127
|
+
expect(r.checks.find((c) => c.id === "resolve")).toBeUndefined();
|
|
128
|
+
expect(r.checks.find((c) => c.id === "premiere")).toBeUndefined();
|
|
141
129
|
});
|
|
142
130
|
});
|
|
143
131
|
//# 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,
|
|
1
|
+
{"version":3,"file":"doctor.test.js","sourceRoot":"","sources":["../../src/core/doctor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-analysis.d.ts","sourceRoot":"","sources":["../../src/core/hook-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"hook-analysis.d.ts","sourceRoot":"","sources":["../../src/core/hook-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,EAAE,EACE,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,kBAAkB,GAClB,qBAAqB,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACpC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;CACb;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,SAAS,SAAM,GACd,MAAM,CAUR;AAqCD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAc3E;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,wBAAsB,aAAa,CACjC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAkD7B;AAID,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAUD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,EAC1B,IAAI,GAAE,YAAiB,GACtB,kBAAkB,CAiEpB"}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* score is below a threshold and propose a stronger opener.
|
|
22
22
|
*/
|
|
23
23
|
import { readFileSync } from "node:fs";
|
|
24
|
+
import { resolveApiKey } from "./auth/api-keys.js";
|
|
24
25
|
// ── Silence-side helpers ────────────────────────────────────
|
|
25
26
|
/**
|
|
26
27
|
* Compute the speech-at-0.5s score from a list of silence ranges
|
|
@@ -92,7 +93,7 @@ export function parseHookVisionResponse(content) {
|
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
export async function runHookVision(earlyFramePath, laterFramePath, opts = {}) {
|
|
95
|
-
const apiKey = opts.apiKey ??
|
|
96
|
+
const apiKey = opts.apiKey ?? resolveApiKey("OPENAI_API_KEY", "openai");
|
|
96
97
|
if (!apiKey)
|
|
97
98
|
throw new Error("OPENAI_API_KEY required for analyze_hook.");
|
|
98
99
|
const earlyB64 = readFileSync(earlyFramePath).toString("base64");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-analysis.js","sourceRoot":"","sources":["../../src/core/hook-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"hook-analysis.js","sourceRoot":"","sources":["../../src/core/hook-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin-grade.d.ts","sourceRoot":"","sources":["../../src/core/skin-grade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skin-grade.d.ts","sourceRoot":"","sources":["../../src/core/skin-grade.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,qBAAqB,CAAC;IACpC,cAAc,EAAE,uBAAuB,CAAC;IACxC,EAAE,EAAE,WAAW,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC;IAClB,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAiDD,wBAAsB,eAAe,CACnC,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,SAAS,CAAC,CAoDpB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CA+CjE;AAmBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAa7D;AAwBD,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,MAAM,CAAC,CAYjB"}
|
package/dist/core/skin-grade.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* Only one vision call covers both paths.
|
|
20
20
|
*/
|
|
21
21
|
import { readFileSync } from "node:fs";
|
|
22
|
+
import { resolveApiKey } from "./auth/api-keys.js";
|
|
22
23
|
import { runFfmpeg } from "./media/ffmpeg.js";
|
|
23
24
|
const SYSTEM = `You match the SKIN TONE LOOK of a target frame to a reference frame.
|
|
24
25
|
|
|
@@ -67,7 +68,7 @@ Conventions:
|
|
|
67
68
|
|
|
68
69
|
Stay subtle. If the two frames look indistinguishable, return neutral values + low confidence. The CDL must approximate the same look — don't let the two paths drift.`;
|
|
69
70
|
export async function deriveSkinGrade(referenceFramePath, targetFramePath, opts = {}) {
|
|
70
|
-
const apiKey = opts.apiKey ??
|
|
71
|
+
const apiKey = opts.apiKey ?? resolveApiKey("OPENAI_API_KEY", "openai");
|
|
71
72
|
if (!apiKey)
|
|
72
73
|
throw new Error("OPENAI_API_KEY required for skin-tone matching.");
|
|
73
74
|
const refB64 = readFileSync(referenceFramePath).toString("base64");
|