vskill 0.5.103 → 0.5.105
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/README.md +147 -4
- package/agents.json +1 -1
- package/dist/agents/agents-registry.d.ts +13 -3
- package/dist/agents/agents-registry.js +100 -57
- package/dist/agents/agents-registry.js.map +1 -1
- package/dist/api/client.d.ts +21 -0
- package/dist/api/client.js +39 -5
- package/dist/api/client.js.map +1 -1
- package/dist/commands/diff.d.ts +6 -0
- package/dist/commands/diff.js +104 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/eval/serve.js +29 -83
- package/dist/commands/eval/serve.js.map +1 -1
- package/dist/commands/keys.d.ts +14 -0
- package/dist/commands/keys.js +166 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/masked-stdin.d.ts +14 -0
- package/dist/commands/masked-stdin.js +79 -0
- package/dist/commands/masked-stdin.js.map +1 -0
- package/dist/commands/skill.d.ts +6 -0
- package/dist/commands/skill.js +366 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/update.js +15 -4
- package/dist/commands/update.js.map +1 -1
- package/dist/core/skill-emitter.d.ts +37 -0
- package/dist/core/skill-emitter.js +333 -0
- package/dist/core/skill-emitter.js.map +1 -0
- package/dist/core/skill-generator.d.ts +27 -0
- package/dist/core/skill-generator.js +100 -0
- package/dist/core/skill-generator.js.map +1 -0
- package/dist/eval/anthropic-catalog.d.ts +49 -0
- package/dist/eval/anthropic-catalog.js +238 -0
- package/dist/eval/anthropic-catalog.js.map +1 -0
- package/dist/eval/llm.d.ts +1 -1
- package/dist/eval/llm.js +68 -10
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/mcp-detector.js +24 -3
- package/dist/eval/mcp-detector.js.map +1 -1
- package/dist/eval/model-resolver.d.ts +39 -0
- package/dist/eval/model-resolver.js +94 -0
- package/dist/eval/model-resolver.js.map +1 -0
- package/dist/eval/pricing.js +42 -16
- package/dist/eval/pricing.js.map +1 -1
- package/dist/eval/skill-scanner.d.ts +0 -5
- package/dist/eval/skill-scanner.js +0 -12
- package/dist/eval/skill-scanner.js.map +1 -1
- package/dist/eval-server/api-routes.d.ts +1 -0
- package/dist/eval-server/api-routes.js +191 -63
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/authoring-routes.js +21 -1
- package/dist/eval-server/authoring-routes.js.map +1 -1
- package/dist/eval-server/boot-preflight.js +8 -10
- package/dist/eval-server/boot-preflight.js.map +1 -1
- package/dist/eval-server/darwin-migrator.d.ts +57 -0
- package/dist/eval-server/darwin-migrator.js +169 -0
- package/dist/eval-server/darwin-migrator.js.map +1 -0
- package/dist/eval-server/eval-server.d.ts +1 -0
- package/dist/eval-server/eval-server.js +10 -0
- package/dist/eval-server/eval-server.js.map +1 -1
- package/dist/eval-server/providers.d.ts +7 -12
- package/dist/eval-server/providers.js +13 -15
- package/dist/eval-server/providers.js.map +1 -1
- package/dist/eval-server/settings-store.d.ts +17 -19
- package/dist/eval-server/settings-store.js +192 -189
- package/dist/eval-server/settings-store.js.map +1 -1
- package/dist/eval-server/skill-create-routes.d.ts +62 -0
- package/dist/eval-server/skill-create-routes.js +97 -132
- package/dist/eval-server/skill-create-routes.js.map +1 -1
- package/dist/eval-ui/assets/{CommandPalette-6cLEufX0.js → CommandPalette-DAWyTgXL.js} +1 -1
- package/dist/eval-ui/assets/CreateSkillPage-D5xmvnzV.js +12 -0
- package/dist/eval-ui/assets/UpdateDropdown-6bfwsX0-.js +1 -0
- package/dist/eval-ui/assets/index-C_-YXE6O.js +102 -0
- package/dist/eval-ui/index.html +1 -1
- package/dist/first-run-onboarding.d.ts +19 -0
- package/dist/first-run-onboarding.js +104 -0
- package/dist/first-run-onboarding.js.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/installer/canonical.d.ts +2 -0
- package/dist/installer/canonical.js +33 -3
- package/dist/installer/canonical.js.map +1 -1
- package/dist/studio/lib/ops-log.js +1 -4
- package/dist/studio/lib/ops-log.js.map +1 -1
- package/dist/studio/lib/scope-transfer.d.ts +0 -10
- package/dist/studio/lib/scope-transfer.js +13 -116
- package/dist/studio/lib/scope-transfer.js.map +1 -1
- package/dist/studio/routes/ops.js +3 -26
- package/dist/studio/routes/ops.js.map +1 -1
- package/dist/studio/routes/promote.js +15 -9
- package/dist/studio/routes/promote.js.map +1 -1
- package/dist/studio/routes/test-install.js +11 -4
- package/dist/studio/routes/test-install.js.map +1 -1
- package/dist/utils/agent-filter.js +5 -4
- package/dist/utils/agent-filter.js.map +1 -1
- package/dist/utils/resolve-binary.d.ts +22 -0
- package/dist/utils/resolve-binary.js +44 -1
- package/dist/utils/resolve-binary.js.map +1 -1
- package/package.json +3 -1
- package/scripts/preuninstall.cjs +2 -9
- package/dist/eval-ui/assets/CreateSkillPage-kn7xDaAP.js +0 -12
- package/dist/eval-ui/assets/UpdateDropdown-9qR5NxTi.js +0 -1
- package/dist/eval-ui/assets/index-4LdVR3Lo.js +0 -102
package/dist/api/client.js
CHANGED
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
// HTTP client for verified-skill.com API
|
|
3
3
|
// ---------------------------------------------------------------------------
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
|
-
|
|
5
|
+
// Base URL is overridable via `VSKILL_API_BASE` so tests (and hermetic CI runs)
|
|
6
|
+
// can point the CLI at a mock server without touching the production host.
|
|
7
|
+
// Resolved lazily so test env mutation is always picked up.
|
|
8
|
+
const DEFAULT_BASE_URL = "https://verified-skill.com";
|
|
9
|
+
function resolveBaseUrl() {
|
|
10
|
+
return process.env.VSKILL_API_BASE || DEFAULT_BASE_URL;
|
|
11
|
+
}
|
|
6
12
|
const VERSION = (() => {
|
|
7
13
|
try {
|
|
8
14
|
const require = createRequire(import.meta.url);
|
|
@@ -13,7 +19,7 @@ const VERSION = (() => {
|
|
|
13
19
|
}
|
|
14
20
|
})();
|
|
15
21
|
async function apiRequest(path, options) {
|
|
16
|
-
const url = `${
|
|
22
|
+
const url = `${resolveBaseUrl()}${path}`;
|
|
17
23
|
const res = await fetch(url, {
|
|
18
24
|
...options,
|
|
19
25
|
headers: {
|
|
@@ -160,7 +166,7 @@ export async function reportInstall(skillName, repoUrl, version) {
|
|
|
160
166
|
const controller = new AbortController();
|
|
161
167
|
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
162
168
|
try {
|
|
163
|
-
const res = await fetch(`${
|
|
169
|
+
const res = await fetch(`${resolveBaseUrl()}${skillApiPath(skillName)}/installs`, {
|
|
164
170
|
method: "POST",
|
|
165
171
|
headers: {
|
|
166
172
|
"User-Agent": "vskill-cli",
|
|
@@ -210,7 +216,7 @@ export async function checkUpdates(skills) {
|
|
|
210
216
|
const controller = new AbortController();
|
|
211
217
|
const timeout = setTimeout(() => controller.abort(), 15000);
|
|
212
218
|
try {
|
|
213
|
-
const res = await fetch(`${
|
|
219
|
+
const res = await fetch(`${resolveBaseUrl()}/api/v1/skills/check-updates`, {
|
|
214
220
|
method: "POST",
|
|
215
221
|
headers: {
|
|
216
222
|
"User-Agent": "vskill-cli",
|
|
@@ -236,6 +242,34 @@ export async function checkUpdates(skills) {
|
|
|
236
242
|
clearTimeout(timeout);
|
|
237
243
|
}
|
|
238
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Fetch a multi-file diff between two versions of a skill.
|
|
247
|
+
* Hits the platform `/versions/compare?from=X&to=Y` endpoint which returns
|
|
248
|
+
* GitHub-backed compare data when both versions have valid SHAs (source:"github"),
|
|
249
|
+
* or an LCS fallback on SKILL.md alone (source:"local-content").
|
|
250
|
+
*/
|
|
251
|
+
export async function compareVersions(skill, from, to) {
|
|
252
|
+
// F-CR-006: encode each path segment separately so skill names containing
|
|
253
|
+
// spaces (` `), `#`, or other reserved characters hit the right endpoint.
|
|
254
|
+
// Whole-string encoding would escape the `/` separators — so we split first,
|
|
255
|
+
// encode per segment, then rejoin on an unencoded `/`.
|
|
256
|
+
const encodedSkill = skill
|
|
257
|
+
.split("/")
|
|
258
|
+
.map(encodeURIComponent)
|
|
259
|
+
.join("/");
|
|
260
|
+
const url = `${resolveBaseUrl()}/api/v1/skills/${encodedSkill}/versions/compare?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}`;
|
|
261
|
+
const res = await fetch(url, {
|
|
262
|
+
headers: {
|
|
263
|
+
"User-Agent": "vskill-cli",
|
|
264
|
+
"Content-Type": "application/json",
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
if (!res.ok) {
|
|
268
|
+
const body = await res.text().catch(() => "");
|
|
269
|
+
throw new Error(`Compare request failed: ${res.status} ${res.statusText}${body ? ` - ${body.slice(0, 200)}` : ""}`);
|
|
270
|
+
}
|
|
271
|
+
return (await res.json());
|
|
272
|
+
}
|
|
239
273
|
export async function reportInstallBatch(skills) {
|
|
240
274
|
const verbose = process.env.VSKILL_DEBUG === "1";
|
|
241
275
|
try {
|
|
@@ -248,7 +282,7 @@ export async function reportInstallBatch(skills) {
|
|
|
248
282
|
const controller = new AbortController();
|
|
249
283
|
const timeout = setTimeout(() => controller.abort(), 10000);
|
|
250
284
|
try {
|
|
251
|
-
const res = await fetch(`${
|
|
285
|
+
const res = await fetch(`${resolveBaseUrl()}/api/v1/skills/installs`, {
|
|
252
286
|
method: "POST",
|
|
253
287
|
headers: {
|
|
254
288
|
"User-Agent": "vskill-cli",
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// `vskill diff <skill> <from> <to>` — multi-file version diff renderer.
|
|
3
|
+
//
|
|
4
|
+
// Fetches GitHub-backed compare data via the platform /versions/compare
|
|
5
|
+
// endpoint and renders it to stdout. Zero shell-outs (no `git`, no `diff`);
|
|
6
|
+
// pure fetch + stdout.write. Works on Windows cmd/PowerShell because it uses
|
|
7
|
+
// raw ANSI escape codes that Windows Terminal and modern cmd.exe render
|
|
8
|
+
// natively (conhost: enabled since Windows 10 1511+).
|
|
9
|
+
//
|
|
10
|
+
// Flags:
|
|
11
|
+
// default unified color diff (respects TTY + NO_COLOR/FORCE_COLOR)
|
|
12
|
+
// --stat per-file `filename +N -M` summary with a totals line
|
|
13
|
+
// --json pretty-printed raw compare response, no colors
|
|
14
|
+
// --files glob filter applied via minimatch
|
|
15
|
+
//
|
|
16
|
+
// Exit code: 0 on success, 1 on fetch error / non-OK HTTP.
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
import { minimatch } from "minimatch";
|
|
19
|
+
import { compareVersions } from "../api/client.js";
|
|
20
|
+
const ANSI = {
|
|
21
|
+
green: "\x1b[32m",
|
|
22
|
+
red: "\x1b[31m",
|
|
23
|
+
grey: "\x1b[90m",
|
|
24
|
+
cyan: "\x1b[36m",
|
|
25
|
+
bold: "\x1b[1m",
|
|
26
|
+
reset: "\x1b[0m",
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Color output decision. Matches conventions used by git, diff, and ls:
|
|
30
|
+
* • FORCE_COLOR=1 → force colors on
|
|
31
|
+
* • NO_COLOR=1 → force colors off (https://no-color.org/)
|
|
32
|
+
* • else → colors iff stdout is a TTY
|
|
33
|
+
*/
|
|
34
|
+
function shouldColor() {
|
|
35
|
+
if (process.env.FORCE_COLOR && process.env.FORCE_COLOR !== "0")
|
|
36
|
+
return true;
|
|
37
|
+
if (process.env.NO_COLOR)
|
|
38
|
+
return false;
|
|
39
|
+
return !!process.stdout.isTTY;
|
|
40
|
+
}
|
|
41
|
+
export async function diffCommand(skill, from, to, opts = {}) {
|
|
42
|
+
let data;
|
|
43
|
+
try {
|
|
44
|
+
data = await compareVersions(skill, from, to);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
48
|
+
process.stderr.write(`vskill diff: ${msg}\n`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
const files = opts.files
|
|
52
|
+
? data.files.filter((f) => minimatch(f.filename, opts.files))
|
|
53
|
+
: data.files;
|
|
54
|
+
if (opts.json) {
|
|
55
|
+
// --json emits raw compare response with filtered file list, pretty-printed,
|
|
56
|
+
// no colors so output is pipeable into `jq` etc.
|
|
57
|
+
process.stdout.write(JSON.stringify({ ...data, files }, null, 2) + "\n");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (opts.stat) {
|
|
61
|
+
printStat(files);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const useColor = shouldColor();
|
|
65
|
+
for (const file of files) {
|
|
66
|
+
printFileDiff(file, useColor);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function printStat(files) {
|
|
70
|
+
let totalAdd = 0;
|
|
71
|
+
let totalDel = 0;
|
|
72
|
+
for (const f of files) {
|
|
73
|
+
totalAdd += f.additions || 0;
|
|
74
|
+
totalDel += f.deletions || 0;
|
|
75
|
+
process.stdout.write(` ${f.filename} +${f.additions || 0} -${f.deletions || 0}\n`);
|
|
76
|
+
}
|
|
77
|
+
process.stdout.write(` ${files.length} files changed, ${totalAdd} insertions(+), ${totalDel} deletions(-)\n`);
|
|
78
|
+
}
|
|
79
|
+
function printFileDiff(file, useColor) {
|
|
80
|
+
const bold = useColor ? ANSI.bold : "";
|
|
81
|
+
const cyan = useColor ? ANSI.cyan : "";
|
|
82
|
+
const reset = useColor ? ANSI.reset : "";
|
|
83
|
+
process.stdout.write(`${bold}${cyan}diff --skill ${file.filename}${reset}\n`);
|
|
84
|
+
process.stdout.write(`${bold}status: ${file.status} +${file.additions || 0} -${file.deletions || 0}${reset}\n`);
|
|
85
|
+
if (!file.patch) {
|
|
86
|
+
process.stdout.write(`${useColor ? ANSI.grey : ""}(no patch content)${reset}\n`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
for (const line of file.patch.split("\n")) {
|
|
90
|
+
process.stdout.write(colorize(line, useColor) + "\n");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function colorize(line, useColor) {
|
|
94
|
+
if (!useColor)
|
|
95
|
+
return line;
|
|
96
|
+
if (line.startsWith("+") && !line.startsWith("+++"))
|
|
97
|
+
return `${ANSI.green}${line}${ANSI.reset}`;
|
|
98
|
+
if (line.startsWith("-") && !line.startsWith("---"))
|
|
99
|
+
return `${ANSI.red}${line}${ANSI.reset}`;
|
|
100
|
+
if (line.startsWith("@@"))
|
|
101
|
+
return `${ANSI.grey}${line}${ANSI.reset}`;
|
|
102
|
+
return line;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
import { resolve, basename } from "node:path";
|
|
5
5
|
import { existsSync } from "node:fs";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
|
-
|
|
7
|
+
// 0706 T-007: dropped `execSync` — no more lsof/ps shell-outs (Windows had
|
|
8
|
+
// no lsof, no POSIX ps, which crashed `vskill studio` on Windows).
|
|
8
9
|
import * as net from "node:net";
|
|
9
10
|
import { startEvalServer } from "../../eval-server/eval-server.js";
|
|
10
11
|
import { yellow, dim, red, cyan, bold } from "../../utils/output.js";
|
|
11
|
-
import { createPrompter } from "../../utils/prompts.js";
|
|
12
12
|
import { isSkillCreatorInstalled } from "../../utils/skill-creator-detection.js";
|
|
13
13
|
/**
|
|
14
14
|
* Deterministic port for a project path.
|
|
@@ -69,97 +69,39 @@ async function probeVskillServer(port) {
|
|
|
69
69
|
return null;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
-
/** Find the PID using a port. */
|
|
73
|
-
function findProcessOnPort(port) {
|
|
74
|
-
try {
|
|
75
|
-
const output = execSync(`lsof -ti:${port}`, { encoding: "utf-8", timeout: 3000 }).trim();
|
|
76
|
-
const pid = parseInt(output.split("\n")[0], 10);
|
|
77
|
-
if (!pid)
|
|
78
|
-
return null;
|
|
79
|
-
const cmd = execSync(`ps -p ${pid} -o command=`, { encoding: "utf-8", timeout: 3000 }).trim();
|
|
80
|
-
return { pid, command: cmd.slice(0, 120) };
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/** Kill a process and wait for the port to actually free up. */
|
|
87
|
-
async function killAndWait(pid, port) {
|
|
88
|
-
try {
|
|
89
|
-
process.kill(pid, "SIGTERM");
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
// Wait for process to exit
|
|
95
|
-
const procDeadline = Date.now() + 3000;
|
|
96
|
-
while (Date.now() < procDeadline) {
|
|
97
|
-
try {
|
|
98
|
-
process.kill(pid, 0);
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
break;
|
|
102
|
-
} // gone
|
|
103
|
-
await new Promise((r) => setTimeout(r, 100));
|
|
104
|
-
}
|
|
105
|
-
// Force-kill if still alive
|
|
106
|
-
try {
|
|
107
|
-
process.kill(pid, 0);
|
|
108
|
-
process.kill(pid, "SIGKILL");
|
|
109
|
-
}
|
|
110
|
-
catch { /* already dead */ }
|
|
111
|
-
// Wait for port to actually free up (OS may hold it briefly after process exits)
|
|
112
|
-
const portDeadline = Date.now() + 5000;
|
|
113
|
-
while (Date.now() < portDeadline) {
|
|
114
|
-
if (!(await isPortInUse(port)))
|
|
115
|
-
return;
|
|
116
|
-
await new Promise((r) => setTimeout(r, 200));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
72
|
/**
|
|
120
|
-
*
|
|
73
|
+
* 0706 T-007: Windows-safe port-conflict handler.
|
|
74
|
+
*
|
|
75
|
+
* The prior implementation shelled out to `lsof -ti:${port}` and `ps -p`
|
|
76
|
+
* to discover which process owned the port. Neither tool exists on
|
|
77
|
+
* Windows — `vskill studio` crashed there. Replacement strategy:
|
|
78
|
+
*
|
|
79
|
+
* 1. HTTP-probe the port with `probeVskillServer(port)` — if it returns
|
|
80
|
+
* vskill identity, reuse the existing server (same contract as before).
|
|
81
|
+
* 2. Otherwise, print the Windows-safe "port in use by a non-vskill
|
|
82
|
+
* process — please free it manually" message and exit.
|
|
83
|
+
*
|
|
84
|
+
* We drop the PID discovery + kill-and-confirm flow entirely: it didn't
|
|
85
|
+
* work on Windows, and telling the user "PID 4723 is node.exe" isn't
|
|
86
|
+
* actionable. The probe alone distinguishes our server from everything
|
|
87
|
+
* else, which is the only discrimination `vskill studio` needs.
|
|
121
88
|
*/
|
|
122
89
|
async function handlePortConflict(port, resolvedRoot) {
|
|
123
90
|
const existing = await probeVskillServer(port);
|
|
124
|
-
const proc = findProcessOnPort(port);
|
|
125
|
-
const prompter = createPrompter();
|
|
126
91
|
if (existing) {
|
|
127
92
|
const sameProject = existing.root === resolvedRoot;
|
|
128
|
-
console.log(`\n ${bold("Port")} ${cyan(String(port))} ${bold("is already in use:")}` +
|
|
93
|
+
console.log(`\n ${bold("Port")} ${cyan(String(port))} ${bold("is already in use by a vskill server:")}` +
|
|
129
94
|
`\n ${bold("Project:")} ${cyan(existing.projectName || "unknown")}${sameProject ? dim(" (same project)") : ""}` +
|
|
130
95
|
`\n ${bold("Root:")} ${dim(existing.root)}` +
|
|
131
96
|
`\n ${bold("Model:")} ${dim(existing.model)}` +
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
if (!confirmed) {
|
|
136
|
-
console.log(dim(`\n Aborted. Use ${cyan(`vskill eval serve --port ${port + 1}`)} for a different port.\n`));
|
|
137
|
-
process.exit(0);
|
|
138
|
-
}
|
|
139
|
-
if (proc) {
|
|
140
|
-
console.log(dim(` Stopping process ${proc.pid}...`));
|
|
141
|
-
await killAndWait(proc.pid, port);
|
|
142
|
-
}
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
// Not a vskill server — unknown process
|
|
146
|
-
if (proc) {
|
|
147
|
-
console.log(`\n ${bold("Port")} ${cyan(String(port))} ${bold("is in use by another process:")}` +
|
|
148
|
-
`\n ${bold("PID:")} ${proc.pid}` +
|
|
149
|
-
`\n ${bold("Command:")} ${dim(proc.command)}` +
|
|
150
|
-
"\n");
|
|
151
|
-
const confirmed = await prompter.promptConfirm(` Kill it and proceed?`, false);
|
|
152
|
-
if (!confirmed) {
|
|
153
|
-
console.log(dim(`\n Aborted. Use ${cyan(`vskill eval serve --port ${port + 1}`)} for a different port.\n`));
|
|
154
|
-
process.exit(0);
|
|
155
|
-
}
|
|
156
|
-
console.log(dim(` Stopping process ${proc.pid}...`));
|
|
157
|
-
await killAndWait(proc.pid, port);
|
|
158
|
-
return;
|
|
97
|
+
`\n\n ${dim("Open the browser to:")} ${cyan(`http://localhost:${port}`)}\n`);
|
|
98
|
+
// Reuse semantics: exit cleanly so the user can point their browser.
|
|
99
|
+
process.exit(0);
|
|
159
100
|
}
|
|
160
|
-
// Port
|
|
161
|
-
|
|
162
|
-
|
|
101
|
+
// Port occupied by a non-vskill process. No PID discovery (Windows can't
|
|
102
|
+
// do it portably, and the PID wasn't actionable anyway).
|
|
103
|
+
console.error(red(`\n Port ${port} is in use by a non-vskill process — please free it manually.\n`) +
|
|
104
|
+
` ${dim("Or pick a different port:")} ${cyan(`vskill eval serve --port ${port + 1}`)}\n`);
|
|
163
105
|
process.exit(1);
|
|
164
106
|
}
|
|
165
107
|
// ---------------------------------------------------------------------------
|
|
@@ -176,6 +118,10 @@ export async function runEvalServe(root, port) {
|
|
|
176
118
|
}
|
|
177
119
|
const effectivePort = port ?? projectPort(resolvedRoot);
|
|
178
120
|
const name = basename(resolvedRoot);
|
|
121
|
+
// 0702 T-041: prompt to configure API key on first run if none detected.
|
|
122
|
+
// Non-TTY / already-configured → silent skip.
|
|
123
|
+
const { firstRunOnboarding } = await import("../../first-run-onboarding.js");
|
|
124
|
+
await firstRunOnboarding();
|
|
179
125
|
// Handle port conflicts gracefully
|
|
180
126
|
if (await isPortInUse(effectivePort)) {
|
|
181
127
|
await handlePortConflict(effectivePort, resolvedRoot);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/eval/serve.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,oDAAoD;AACpD,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/commands/eval/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface KeysCommandIO {
|
|
2
|
+
stdout: {
|
|
3
|
+
write: (s: string) => boolean;
|
|
4
|
+
};
|
|
5
|
+
stderr: {
|
|
6
|
+
write: (s: string) => boolean;
|
|
7
|
+
};
|
|
8
|
+
exit: (code: number) => void;
|
|
9
|
+
/** Returns the secret key read from stdin (piped or interactive masked). */
|
|
10
|
+
readKeyFromStdin: () => Promise<string>;
|
|
11
|
+
/** True if stdin is piped (non-TTY). */
|
|
12
|
+
isPiped: () => boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function keysCommand(subcommand: string | undefined, arg: string | undefined, io?: KeysCommandIO): Promise<void>;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// keys.ts — `vskill keys` subcommand dispatcher.
|
|
3
|
+
//
|
|
4
|
+
// Subcommands:
|
|
5
|
+
// set <provider> Prompt (masked) or read piped stdin, persist via store
|
|
6
|
+
// list Show [Provider, Status, Last Updated, Source] table
|
|
7
|
+
// remove <provider> Idempotent delete
|
|
8
|
+
// path Print absolute path of keys.env
|
|
9
|
+
//
|
|
10
|
+
// Keys are NEVER echoed. Only `redactKey()` output (****<last-4>) appears in
|
|
11
|
+
// user-facing output.
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
import { PROVIDERS, isProviderId, } from "../eval-server/providers.js";
|
|
14
|
+
import { saveKey, removeKey, listKeys, getKeysFilePath, redactKey, } from "../eval-server/settings-store.js";
|
|
15
|
+
import { readSecretFromStdin } from "./masked-stdin.js";
|
|
16
|
+
function defaultIO() {
|
|
17
|
+
return {
|
|
18
|
+
stdout: process.stdout,
|
|
19
|
+
stderr: process.stderr,
|
|
20
|
+
exit: (code) => process.exit(code),
|
|
21
|
+
readKeyFromStdin: () => readSecretFromStdin(),
|
|
22
|
+
isPiped: () => !process.stdin.isTTY,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function usageText() {
|
|
26
|
+
return [
|
|
27
|
+
"Usage: vskill keys <subcommand>",
|
|
28
|
+
"",
|
|
29
|
+
"Subcommands:",
|
|
30
|
+
" set <provider> Store an API key (provider: anthropic, openai, openrouter)",
|
|
31
|
+
" list Show stored keys (redacted) and sources",
|
|
32
|
+
" remove <provider> Delete a stored key",
|
|
33
|
+
" path Print absolute path of keys.env",
|
|
34
|
+
"",
|
|
35
|
+
].join("\n");
|
|
36
|
+
}
|
|
37
|
+
function knownProvidersHint() {
|
|
38
|
+
const ids = PROVIDERS.map((p) => p.id).join(", ");
|
|
39
|
+
return `Known providers: ${ids}`;
|
|
40
|
+
}
|
|
41
|
+
function pad(s, width) {
|
|
42
|
+
if (s.length >= width)
|
|
43
|
+
return s;
|
|
44
|
+
return s + " ".repeat(width - s.length);
|
|
45
|
+
}
|
|
46
|
+
async function cmdSet(provider, io) {
|
|
47
|
+
if (!provider) {
|
|
48
|
+
io.stderr.write(`Usage: vskill keys set <provider>\n${knownProvidersHint()}\n`);
|
|
49
|
+
io.exit(1);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!isProviderId(provider)) {
|
|
53
|
+
io.stderr.write(`unknown provider: "${provider}"\n${knownProvidersHint()}\n`);
|
|
54
|
+
io.exit(1);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!io.isPiped()) {
|
|
58
|
+
io.stdout.write(`Paste API key for ${provider} (input masked): `);
|
|
59
|
+
}
|
|
60
|
+
const key = (await io.readKeyFromStdin()).trim();
|
|
61
|
+
if (!key) {
|
|
62
|
+
io.stderr.write("no key provided\n");
|
|
63
|
+
io.exit(1);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
await saveKey(provider, key);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
// redactKey is guaranteed to not echo the raw key; err.message is already
|
|
71
|
+
// scrubbed by settings-store but we redact again for defense-in-depth.
|
|
72
|
+
const msg = err.message.replace(key, redactKey(key));
|
|
73
|
+
io.stderr.write(`failed to save key: ${msg}\n`);
|
|
74
|
+
io.exit(1);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
io.stdout.write(`Stored ${redactKey(key)} for ${provider} at ${getKeysFilePath()}\n`);
|
|
78
|
+
}
|
|
79
|
+
async function cmdList(io) {
|
|
80
|
+
const list = listKeys();
|
|
81
|
+
const headers = ["Provider", "Status", "Last Updated", "Source"];
|
|
82
|
+
const rows = [];
|
|
83
|
+
let anyAvailable = false;
|
|
84
|
+
for (const p of PROVIDERS) {
|
|
85
|
+
const meta = list[p.id];
|
|
86
|
+
const envSet = !!process.env[p.envVarName];
|
|
87
|
+
let source = "—";
|
|
88
|
+
if (envSet)
|
|
89
|
+
source = "env var";
|
|
90
|
+
else if (meta.stored)
|
|
91
|
+
source = "file";
|
|
92
|
+
let status = "not set";
|
|
93
|
+
if (envSet) {
|
|
94
|
+
const raw = process.env[p.envVarName] ?? "";
|
|
95
|
+
status = redactKey(raw);
|
|
96
|
+
anyAvailable = true;
|
|
97
|
+
}
|
|
98
|
+
else if (meta.stored) {
|
|
99
|
+
// We can't read the raw key without touching the store, but redact
|
|
100
|
+
// only needs last 4 chars. Read via the store's public readKey (which
|
|
101
|
+
// returns null if neither env nor memoryMap has it — but after
|
|
102
|
+
// listKeys+loadIfNeeded it's in the map).
|
|
103
|
+
const { readKey } = await import("../eval-server/settings-store.js");
|
|
104
|
+
const raw = readKey(p.id) ?? "";
|
|
105
|
+
status = redactKey(raw);
|
|
106
|
+
anyAvailable = true;
|
|
107
|
+
}
|
|
108
|
+
const updated = meta.updatedAt ?? "—";
|
|
109
|
+
rows.push([p.id, status, updated, source]);
|
|
110
|
+
}
|
|
111
|
+
const widths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
|
|
112
|
+
io.stdout.write(headers.map((h, i) => pad(h, widths[i])).join(" ") + "\n");
|
|
113
|
+
io.stdout.write(widths.map((w) => "-".repeat(w)).join(" ") + "\n");
|
|
114
|
+
for (const row of rows) {
|
|
115
|
+
io.stdout.write(row.map((c, i) => pad(c, widths[i])).join(" ") + "\n");
|
|
116
|
+
}
|
|
117
|
+
if (!anyAvailable) {
|
|
118
|
+
io.stdout.write(`\nNo API keys configured. Run \`vskill keys set <provider>\` to add one.\n`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function cmdRemove(provider, io) {
|
|
122
|
+
if (!provider) {
|
|
123
|
+
io.stderr.write(`Usage: vskill keys remove <provider>\n${knownProvidersHint()}\n`);
|
|
124
|
+
io.exit(1);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (!isProviderId(provider)) {
|
|
128
|
+
io.stderr.write(`unknown provider: "${provider}"\n${knownProvidersHint()}\n`);
|
|
129
|
+
io.exit(1);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
await removeKey(provider);
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
io.stderr.write(`failed to remove key: ${err.message}\n`);
|
|
137
|
+
io.exit(1);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
io.stdout.write(`Removed ${provider} from keys.env\n`);
|
|
141
|
+
}
|
|
142
|
+
function cmdPath(io) {
|
|
143
|
+
io.stdout.write(`${getKeysFilePath()}\n`);
|
|
144
|
+
}
|
|
145
|
+
export async function keysCommand(subcommand, arg, io = defaultIO()) {
|
|
146
|
+
switch (subcommand) {
|
|
147
|
+
case "set":
|
|
148
|
+
return cmdSet(arg, io);
|
|
149
|
+
case "list":
|
|
150
|
+
return cmdList(io);
|
|
151
|
+
case "remove":
|
|
152
|
+
case "rm":
|
|
153
|
+
return cmdRemove(arg, io);
|
|
154
|
+
case "path":
|
|
155
|
+
return cmdPath(io);
|
|
156
|
+
case undefined:
|
|
157
|
+
io.stderr.write(usageText());
|
|
158
|
+
io.exit(1);
|
|
159
|
+
return;
|
|
160
|
+
default:
|
|
161
|
+
io.stderr.write(`unknown subcommand: "${subcommand}"\n${usageText()}`);
|
|
162
|
+
io.exit(1);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iDAAiD;AACjD,EAAE;AACF,eAAe;AACf,4EAA4E;AAC5E,yEAAyE;AACzE,wCAAwC;AACxC,qDAAqD;AACrD,EAAE;AACF,6EAA6E;AAC7E,sBAAsB;AACtB,8EAA8E;AAE9E,OAAO,EACL,SAAS,EACT,YAAY,GAEb,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,OAAO,EACP,SAAS,EACT,QAAQ,EACR,eAAe,EACf,SAAS,GACV,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAYxD,SAAS,SAAS;IAChB,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAClC,gBAAgB,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;QAC7C,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;QACL,iCAAiC;QACjC,EAAE;QACF,cAAc;QACd,gFAAgF;QAChF,6DAA6D;QAC7D,yCAAyC;QACzC,qDAAqD;QACrD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,oBAAoB,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,KAAa;IACnC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,QAA4B,EAAE,EAAiB;IACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,sCAAsC,kBAAkB,EAAE,IAAI,CAC/D,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,sBAAsB,QAAQ,MAAM,kBAAkB,EAAE,IAAI,CAC7D,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,mBAAmB,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0EAA0E;QAC1E,uEAAuE;QACvE,MAAM,GAAG,GAAI,GAAa,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QAChD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,UAAU,SAAS,CAAC,GAAG,CAAC,QAAQ,QAAQ,OAAO,eAAe,EAAE,IAAI,CACrE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,EAAiB;IACtC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IACjE,MAAM,IAAI,GAAe,EAAE,CAAC;IAE5B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,IAAI,MAAM;YAAE,MAAM,GAAG,SAAS,CAAC;aAC1B,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,MAAM,CAAC;QAEtC,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,mEAAmE;YACnE,sEAAsE;YACtE,+DAA+D;YAC/D,0CAA0C;YAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CACpD,CAAC;IAEF,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAC3D,CAAC;IACF,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACnD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,QAA4B,EAAE,EAAiB;IACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,yCAAyC,kBAAkB,EAAE,IAAI,CAClE,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,sBAAsB,QAAQ,MAAM,kBAAkB,EAAE,IAAI,CAC7D,CAAC;QACF,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,QAAsB,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,yBAA0B,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACrE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACX,OAAO;IACT,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,OAAO,CAAC,EAAiB;IAChC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAA8B,EAC9B,GAAuB,EACvB,KAAoB,SAAS,EAAE;IAE/B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,SAAS;YACZ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACX,OAAO;QACT;YACE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,UAAU,MAAM,SAAS,EAAE,EAAE,CAAC,CAAC;YACvE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACX,OAAO;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface MaskedStdinIO {
|
|
2
|
+
stdout: {
|
|
3
|
+
write: (s: string) => boolean;
|
|
4
|
+
};
|
|
5
|
+
stderr: {
|
|
6
|
+
write: (s: string) => boolean;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read from stdin. If input is piped (non-TTY), reads until EOF and returns
|
|
11
|
+
* trimmed text. If TTY, reads interactively with masking (each char echoed
|
|
12
|
+
* as `*`) until Enter.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readSecretFromStdin(io?: MaskedStdinIO): Promise<string>;
|