@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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type ApiKeyName = "openai" | "huggingface";
|
|
2
|
+
/**
|
|
3
|
+
* Read a stored API key. Returns undefined when none is saved.
|
|
4
|
+
* The key store is cached after first load.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getStoredApiKey(name: ApiKeyName): string | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Persist an API key. Trims whitespace; throws if empty.
|
|
9
|
+
*/
|
|
10
|
+
export declare function setStoredApiKey(name: ApiKeyName, key: string): void;
|
|
11
|
+
/**
|
|
12
|
+
* Convenience: env var first, then the stored value. The order matches
|
|
13
|
+
* how the vision modules already work — they default to the env var,
|
|
14
|
+
* and now they get a sensible fallback when it's not set.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveApiKey(envVar: string, name: ApiKeyName): string | undefined;
|
|
17
|
+
export declare const API_KEYS_FILE: string;
|
|
18
|
+
//# sourceMappingURL=api-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../../src/core/auth/api-keys.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAiClD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAGpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAElF;AAED,eAAO,MAAM,aAAa,QAAgB,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API-key store. Separate from auth.json (which holds OAuth tokens
|
|
3
|
+
* with refresh metadata) so we don't pollute that schema with bare
|
|
4
|
+
* static keys. Lives at ~/.gg/api-keys.json:
|
|
5
|
+
*
|
|
6
|
+
* {
|
|
7
|
+
* "openai": "sk-...",
|
|
8
|
+
* "huggingface": "hf_..."
|
|
9
|
+
* }
|
|
10
|
+
*
|
|
11
|
+
* Used by vision tools (analyze_hook / score_shot / color_match /
|
|
12
|
+
* skin_grade / match_clip_color) when the matching env var isn't set
|
|
13
|
+
* — onboarding can capture the key once and persist it here.
|
|
14
|
+
*/
|
|
15
|
+
import { readFileSync, writeFileSync, mkdirSync, chmodSync } from "node:fs";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { dirname, join } from "node:path";
|
|
18
|
+
const API_KEYS_PATH = join(homedir(), ".gg", "api-keys.json");
|
|
19
|
+
let _cache;
|
|
20
|
+
function loadStore() {
|
|
21
|
+
if (_cache)
|
|
22
|
+
return _cache;
|
|
23
|
+
try {
|
|
24
|
+
const raw = readFileSync(API_KEYS_PATH, "utf8");
|
|
25
|
+
_cache = JSON.parse(raw);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
_cache = {};
|
|
29
|
+
}
|
|
30
|
+
return _cache;
|
|
31
|
+
}
|
|
32
|
+
function saveStore(store) {
|
|
33
|
+
mkdirSync(dirname(API_KEYS_PATH), { recursive: true });
|
|
34
|
+
writeFileSync(API_KEYS_PATH, JSON.stringify(store, null, 2) + "\n", "utf8");
|
|
35
|
+
// 0600 so other users on the system can't read the key.
|
|
36
|
+
try {
|
|
37
|
+
chmodSync(API_KEYS_PATH, 0o600);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Best-effort — some filesystems (network mounts, CI sandboxes)
|
|
41
|
+
// ignore chmod. Not a hard error.
|
|
42
|
+
}
|
|
43
|
+
_cache = store;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Read a stored API key. Returns undefined when none is saved.
|
|
47
|
+
* The key store is cached after first load.
|
|
48
|
+
*/
|
|
49
|
+
export function getStoredApiKey(name) {
|
|
50
|
+
const v = loadStore()[name];
|
|
51
|
+
return v && v.length > 0 ? v : undefined;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Persist an API key. Trims whitespace; throws if empty.
|
|
55
|
+
*/
|
|
56
|
+
export function setStoredApiKey(name, key) {
|
|
57
|
+
const trimmed = key.trim();
|
|
58
|
+
if (trimmed.length === 0)
|
|
59
|
+
throw new Error(`API key for ${name} is empty`);
|
|
60
|
+
const store = { ...loadStore(), [name]: trimmed };
|
|
61
|
+
saveStore(store);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Convenience: env var first, then the stored value. The order matches
|
|
65
|
+
* how the vision modules already work — they default to the env var,
|
|
66
|
+
* and now they get a sensible fallback when it's not set.
|
|
67
|
+
*/
|
|
68
|
+
export function resolveApiKey(envVar, name) {
|
|
69
|
+
return process.env[envVar] || getStoredApiKey(name);
|
|
70
|
+
}
|
|
71
|
+
export const API_KEYS_FILE = API_KEYS_PATH;
|
|
72
|
+
//# sourceMappingURL=api-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../../src/core/auth/api-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAS9D,IAAI,MAA4B,CAAC;AAEjC,SAAS,SAAS;IAChB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,wDAAwD;IACxD,IAAI,CAAC;QACH,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;QAChE,kCAAkC;IACpC,CAAC;IACD,MAAM,GAAG,KAAK,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB;IAC9C,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAgB,EAAE,GAAW;IAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,WAAW,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IAClD,SAAS,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAgB;IAC5D,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-match.d.ts","sourceRoot":"","sources":["../../src/core/color-match.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"color-match.d.ts","sourceRoot":"","sources":["../../src/core/color-match.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,SAAS;IACxB,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;IACnB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;CACb;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;AA4BD,wBAAsB,gBAAgB,CACpC,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EACvB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,SAAS,CAAC,CAoDpB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAelE"}
|
package/dist/core/color-match.js
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* so the agent can feed them straight into set_primary_correction.
|
|
12
12
|
*/
|
|
13
13
|
import { readFileSync } from "node:fs";
|
|
14
|
+
import { resolveApiKey } from "./auth/api-keys.js";
|
|
14
15
|
const SYSTEM = `You match the COLOR LOOK of a target frame to a reference frame.
|
|
15
16
|
|
|
16
17
|
Output a JSON object with these EXACT keys (no extras, no prose):
|
|
@@ -37,7 +38,7 @@ Conventions:
|
|
|
37
38
|
|
|
38
39
|
Stay subtle. The CDL will be applied additively to whatever grade is already on the target — don't try to do everything in one node. If the two frames look indistinguishable, return neutral values + low confidence.`;
|
|
39
40
|
export async function deriveColorMatch(referenceFramePath, targetFramePath, opts = {}) {
|
|
40
|
-
const apiKey = opts.apiKey ??
|
|
41
|
+
const apiKey = opts.apiKey ?? resolveApiKey("OPENAI_API_KEY", "openai");
|
|
41
42
|
if (!apiKey)
|
|
42
43
|
throw new Error("OPENAI_API_KEY required for color_match.");
|
|
43
44
|
const refB64 = readFileSync(referenceFramePath).toString("base64");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color-match.js","sourceRoot":"","sources":["../../src/core/color-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"color-match.js","sourceRoot":"","sources":["../../src/core/color-match.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"AA+BA,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"}
|
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
* forced advance.
|
|
22
22
|
*/
|
|
23
23
|
import { spawn } from "node:child_process";
|
|
24
|
+
import { createInterface } from "node:readline/promises";
|
|
24
25
|
import chalk from "chalk";
|
|
26
|
+
import { setStoredApiKey } from "./auth/api-keys.js";
|
|
25
27
|
import { renderCliBanner } from "./cli-banner.js";
|
|
26
28
|
import { runDoctor } from "./doctor.js";
|
|
27
29
|
import { renderDoctorReport } from "./doctor-render.js";
|
|
@@ -92,7 +94,7 @@ async function mountInteractiveScreen(onboarding) {
|
|
|
92
94
|
stdout.write(banner);
|
|
93
95
|
stdout.write(renderItemList(actionable, selectedIdx, skipped));
|
|
94
96
|
stdout.write("\n");
|
|
95
|
-
stdout.write(renderDetail(actionable[selectedIdx]));
|
|
97
|
+
stdout.write(renderDetail(actionable[selectedIdx], stdout.columns ?? 80));
|
|
96
98
|
stdout.write("\n");
|
|
97
99
|
stdout.write(renderFooter(footerNote));
|
|
98
100
|
};
|
|
@@ -160,7 +162,7 @@ async function mountInteractiveScreen(onboarding) {
|
|
|
160
162
|
setFooterNote("Re-probed", "ok");
|
|
161
163
|
return;
|
|
162
164
|
}
|
|
163
|
-
// Enter — install
|
|
165
|
+
// Enter — install / prompt / no-op
|
|
164
166
|
if (chunk === "\r" || chunk === "\n") {
|
|
165
167
|
const cur = actionable[selectedIdx];
|
|
166
168
|
if (!cur)
|
|
@@ -170,51 +172,77 @@ async function mountInteractiveScreen(onboarding) {
|
|
|
170
172
|
return;
|
|
171
173
|
}
|
|
172
174
|
if (cur.installable) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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) => {
|
|
175
|
+
void runWithSubshell(async () => {
|
|
176
|
+
const inst = cur.installable;
|
|
177
|
+
process.stdout.write(chalk.dim(`\n Running: `) +
|
|
178
|
+
chalk.cyan(`${inst.command} ${inst.args.join(" ")}`) +
|
|
179
|
+
"\n\n");
|
|
180
|
+
const code = await spawnInstall(inst.command, inst.args);
|
|
183
181
|
if (code === 0) {
|
|
184
|
-
process.stdout.write(chalk.green("\n ✓ Installed
|
|
182
|
+
process.stdout.write(chalk.green("\n ✓ Installed.\n"));
|
|
183
|
+
return { ok: true };
|
|
185
184
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
process.stdout.write(" " + chalk.cyan(line) + "\n");
|
|
191
|
-
}
|
|
185
|
+
process.stdout.write(chalk.red(`\n ✗ Install failed (exit ${code}).\n`));
|
|
186
|
+
if (cur.fix) {
|
|
187
|
+
for (const line of cur.fix.split("\n")) {
|
|
188
|
+
process.stdout.write(" " + chalk.cyan(line) + "\n");
|
|
192
189
|
}
|
|
193
|
-
process.stdout.write("\n");
|
|
194
190
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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)
|
|
191
|
+
return { ok: false };
|
|
192
|
+
}).then((result) => {
|
|
193
|
+
if (result.ok)
|
|
208
194
|
setFooterNote(`Installed ${cur.label}`, "ok");
|
|
209
|
-
draw();
|
|
210
195
|
});
|
|
211
196
|
return;
|
|
212
197
|
}
|
|
213
|
-
|
|
214
|
-
|
|
198
|
+
if (cur.prompt) {
|
|
199
|
+
void runWithSubshell(async () => promptForSecret(cur.prompt)).then((result) => {
|
|
200
|
+
if (result.ok)
|
|
201
|
+
setFooterNote(`Saved ${cur.label}`, "ok");
|
|
202
|
+
else
|
|
203
|
+
setFooterNote("Cancelled", "info");
|
|
204
|
+
});
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
setFooterNote("No automatic fix — see Fix line above", "warn");
|
|
215
208
|
return;
|
|
216
209
|
}
|
|
217
210
|
};
|
|
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
|
+
}
|
|
218
246
|
stdin.on("data", onData);
|
|
219
247
|
});
|
|
220
248
|
}
|
|
@@ -258,24 +286,61 @@ function renderCheckbox(c, isSkipped) {
|
|
|
258
286
|
return chalk.red("[✗]");
|
|
259
287
|
return chalk.yellow("[○]");
|
|
260
288
|
}
|
|
261
|
-
|
|
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) {
|
|
262
300
|
if (!c)
|
|
263
301
|
return "";
|
|
264
302
|
const lines = [];
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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));
|
|
275
|
-
}
|
|
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);
|
|
276
310
|
}
|
|
277
311
|
return lines.join("\n") + "\n";
|
|
278
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
|
+
}
|
|
279
344
|
function renderFooter(note) {
|
|
280
345
|
const dim = chalk.dim;
|
|
281
346
|
const primary = chalk.hex("#f97316");
|
|
@@ -317,4 +382,55 @@ function spawnInstall(command, args) {
|
|
|
317
382
|
child.on("error", () => resolve(1));
|
|
318
383
|
});
|
|
319
384
|
}
|
|
385
|
+
/**
|
|
386
|
+
* Prompt the user for a secret (API key / token), validate it, and
|
|
387
|
+
* persist via setStoredApiKey. The user can hit Esc / blank-Enter to
|
|
388
|
+
* cancel without writing anything.
|
|
389
|
+
*
|
|
390
|
+
* Echoes the input as it's typed — these are API keys, not passwords
|
|
391
|
+
* exposed to humans peering over the shoulder. Anyone with shell
|
|
392
|
+
* access could just `cat ~/.gg/api-keys.json` anyway.
|
|
393
|
+
*/
|
|
394
|
+
async function promptForSecret(p) {
|
|
395
|
+
const dim = chalk.dim;
|
|
396
|
+
const primary = chalk.hex("#f97316");
|
|
397
|
+
const accent = chalk.hex("#ec4899");
|
|
398
|
+
process.stdout.write("\n " + primary.bold(p.label) + "\n");
|
|
399
|
+
if (p.hint) {
|
|
400
|
+
process.stdout.write(" " + dim(p.hint) + "\n");
|
|
401
|
+
}
|
|
402
|
+
process.stdout.write(" " + dim("(blank + Enter to cancel)") + "\n\n");
|
|
403
|
+
const rl = createInterface({
|
|
404
|
+
input: process.stdin,
|
|
405
|
+
output: process.stdout,
|
|
406
|
+
});
|
|
407
|
+
try {
|
|
408
|
+
for (let attempt = 0; attempt < 3; attempt++) {
|
|
409
|
+
const value = (await rl.question(" " + accent("❯ "))).trim();
|
|
410
|
+
if (value.length === 0) {
|
|
411
|
+
process.stdout.write(dim(" Cancelled.\n"));
|
|
412
|
+
return { ok: false };
|
|
413
|
+
}
|
|
414
|
+
const err = p.validate?.(value);
|
|
415
|
+
if (err) {
|
|
416
|
+
process.stdout.write(chalk.yellow(` ! ${err}\n`));
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
try {
|
|
420
|
+
setStoredApiKey(p.store, value);
|
|
421
|
+
}
|
|
422
|
+
catch (e) {
|
|
423
|
+
process.stdout.write(chalk.red(` ✗ Failed to save: ${e.message}\n`));
|
|
424
|
+
return { ok: false };
|
|
425
|
+
}
|
|
426
|
+
process.stdout.write(chalk.green(` ✓ Saved to ~/.gg/api-keys.json (chmod 600).\n`));
|
|
427
|
+
return { ok: true };
|
|
428
|
+
}
|
|
429
|
+
process.stdout.write(dim(" Too many invalid attempts. Cancelled.\n"));
|
|
430
|
+
return { ok: false };
|
|
431
|
+
}
|
|
432
|
+
finally {
|
|
433
|
+
rl.close();
|
|
434
|
+
}
|
|
435
|
+
}
|
|
320
436
|
//# sourceMappingURL=doctor-runner.js.map
|
|
@@ -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,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAoB,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,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,CAAC,CAAC,CAAC;QACpD,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,2CAA2C;YAC3C,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,+DAA+D;oBAC/D,yDAAyD;oBACzD,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC;oBACrC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;oBACxB,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAErC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;wBACxB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC1E,MAAM,CACT,CAAC;oBAEF,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;wBACxE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;4BACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;wBACtE,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,CAAC,GAAG,CAAC,8BAA8B,IAAI,+BAA+B,CAAC,CAC7E,CAAC;4BACF,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gCACZ,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oCACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gCACzD,CAAC;4BACH,CAAC;4BACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC7B,CAAC;wBACD,uBAAuB;wBACvB,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC;wBACtC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBACvB,KAAK,CAAC,MAAM,EAAE,CAAC;wBACf,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACzB,MAAM,EAAE,CAAC;wBACT,0DAA0D;wBAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC5D,IAAI,MAAM,IAAI,CAAC;4BAAE,WAAW,GAAG,MAAM,CAAC;;4BACjC,WAAW,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC/D,IAAI,IAAI,KAAK,CAAC;4BAAE,aAAa,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;wBAC9D,IAAI,EAAE,CAAC;oBACT,CAAC,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,2DAA2D;gBAC3D,aAAa,CAAC,2DAA2D,EAAE,MAAM,CAAC,CAAC;gBACnF,OAAO;YACT,CAAC;QACH,CAAC,CAAC;QAEF,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,SAAS,YAAY,CAAC,CAA0B;IAC9C,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC9F,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,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"}
|
|
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"}
|
package/dist/core/doctor.d.ts
CHANGED
|
@@ -47,6 +47,26 @@ export interface InstallableHint {
|
|
|
47
47
|
/** True when the command requires elevated privileges (sudo / admin). */
|
|
48
48
|
needsSudo?: boolean;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Structured prompt action. When present, the doctor's interactive
|
|
52
|
+
* screen can capture a secret (API key, token) directly and persist
|
|
53
|
+
* it to the api-keys store — no "open another terminal and run
|
|
54
|
+
* export X=..." busywork.
|
|
55
|
+
*
|
|
56
|
+
* Persistence is on the runner side; this struct just describes WHAT
|
|
57
|
+
* to capture and WHERE to put it (`store` is a stable id used by
|
|
58
|
+
* `setStoredApiKey`).
|
|
59
|
+
*/
|
|
60
|
+
export interface PromptHint {
|
|
61
|
+
/** Title shown above the input: "Paste your OpenAI API key". */
|
|
62
|
+
label: string;
|
|
63
|
+
/** Optional one-line guidance under the title (URL where to get it). */
|
|
64
|
+
hint?: string;
|
|
65
|
+
/** ApiKeyName from auth/api-keys.ts — "openai" | "huggingface". */
|
|
66
|
+
store: "openai" | "huggingface";
|
|
67
|
+
/** Lightweight format check; rejects obviously-wrong input. */
|
|
68
|
+
validate?: (value: string) => string | undefined;
|
|
69
|
+
}
|
|
50
70
|
export interface DoctorCheck {
|
|
51
71
|
/** Stable id (also the check key). */
|
|
52
72
|
id: string;
|
|
@@ -61,17 +81,25 @@ export interface DoctorCheck {
|
|
|
61
81
|
* status=ok — gives the user the mental model.
|
|
62
82
|
*/
|
|
63
83
|
unlocks: string;
|
|
64
|
-
/**
|
|
65
|
-
* Fix instruction. Multi-line ok. Empty when status=ok.
|
|
66
|
-
* Platform-appropriate (macOS / linux / win32).
|
|
67
|
-
*/
|
|
68
|
-
fix?: string;
|
|
69
84
|
/**
|
|
70
85
|
* Optional structured install command for items where a single
|
|
71
86
|
* package-manager invocation does the job. The CLI offers Y/N
|
|
72
87
|
* confirmation and spawns it directly.
|
|
73
88
|
*/
|
|
74
89
|
installable?: InstallableHint;
|
|
90
|
+
/**
|
|
91
|
+
* Optional inline secret prompt (API key / token). When the user hits
|
|
92
|
+
* Enter on this item the doctor captures the value and persists it
|
|
93
|
+
* to ~/.gg/api-keys.json. Mutually exclusive with `installable` per
|
|
94
|
+
* action; if both are present, install runs first then prompt.
|
|
95
|
+
*/
|
|
96
|
+
prompt?: PromptHint;
|
|
97
|
+
/**
|
|
98
|
+
* Free-form fix copy for the static `--all` / non-interactive path.
|
|
99
|
+
* The interactive screen IGNORES this — it uses installable/prompt.
|
|
100
|
+
* Multi-line is fine here; only `--all` renders it.
|
|
101
|
+
*/
|
|
102
|
+
fix?: string;
|
|
75
103
|
}
|
|
76
104
|
export interface DoctorReport {
|
|
77
105
|
checks: DoctorCheck[];
|
|
@@ -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
|
|
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;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAClD;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;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;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"}
|