vskill 0.5.140 → 0.5.142
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/agents.json +1 -1
- package/dist/eval/activation-tester.d.ts +5 -0
- package/dist/eval/activation-tester.js +25 -5
- package/dist/eval/activation-tester.js.map +1 -1
- package/dist/eval/test-case-parser.d.ts +8 -0
- package/dist/eval/test-case-parser.js +74 -0
- package/dist/eval/test-case-parser.js.map +1 -0
- package/dist/eval-server/api-routes.d.ts +35 -0
- package/dist/eval-server/api-routes.js +170 -6
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/skill-create-routes.d.ts +20 -0
- package/dist/eval-server/skill-create-routes.js +50 -2
- package/dist/eval-server/skill-create-routes.js.map +1 -1
- package/dist/eval-server/skill-dir-registry.d.ts +2 -14
- package/dist/eval-server/skill-dir-registry.js +18 -0
- package/dist/eval-server/skill-dir-registry.js.map +1 -1
- package/dist/eval-ui/assets/{CommandPalette-DeEo1aM2.js → CommandPalette-D42KauW9.js} +1 -1
- package/dist/eval-ui/assets/{CreateSkillPage-BGi_wZ1y.js → CreateSkillPage-BWoyQQ0n.js} +1 -1
- package/dist/eval-ui/assets/{FindSkillsPalette-BbJJSef2.js → FindSkillsPalette-BtyebylE.js} +2 -2
- package/dist/eval-ui/assets/{SearchPaletteCore-BK0cFJb6.js → SearchPaletteCore-9ObzwMtM.js} +1 -1
- package/dist/eval-ui/assets/{SkillDetailPanel-DxidXsNP.js → SkillDetailPanel-8XS9hdR_.js} +1 -1
- package/dist/eval-ui/assets/{UpdateDropdown-CcaDVKoz.js → UpdateDropdown-D0dHy9y-.js} +1 -1
- package/dist/eval-ui/assets/{index-ByzTygib.css → index-CycZyHaL.css} +1 -1
- package/dist/eval-ui/assets/index-DUUmBJUa.js +120 -0
- package/dist/eval-ui/index.html +2 -2
- package/dist/first-run-onboarding.d.ts +10 -0
- package/dist/first-run-onboarding.js +50 -3
- package/dist/first-run-onboarding.js.map +1 -1
- package/package.json +3 -2
- package/dist/eval-ui/assets/index-C12VKBb6.js +0 -110
package/dist/eval-ui/index.html
CHANGED
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
}
|
|
47
47
|
})();
|
|
48
48
|
</script>
|
|
49
|
-
<script type="module" crossorigin src="/assets/index-
|
|
50
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
49
|
+
<script type="module" crossorigin src="/assets/index-DUUmBJUa.js"></script>
|
|
50
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CycZyHaL.css">
|
|
51
51
|
<link rel="stylesheet" crossorigin href="/assets/fonts-i7Lkz2zN.css">
|
|
52
52
|
</head>
|
|
53
53
|
<body>
|
|
@@ -15,5 +15,15 @@ export interface OnboardingIO {
|
|
|
15
15
|
promptConfirm: (question: string) => Promise<boolean>;
|
|
16
16
|
readMaskedKey: () => Promise<string>;
|
|
17
17
|
env: NodeJS.ProcessEnv;
|
|
18
|
+
/** 0772 US-001: detect whether the `claude` CLI binary is on PATH. When
|
|
19
|
+
* true, the prompt is skipped silently because Claude Code provides a
|
|
20
|
+
* no-key path. Defaults to a real `which`/`where` call when omitted. */
|
|
21
|
+
detectClaudeBinary?: () => boolean;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* 0772 US-001 — Detect whether the `claude` CLI binary is on PATH.
|
|
25
|
+
* POSIX uses `which claude`; win32 uses `where claude`. Bounded 250 ms timeout.
|
|
26
|
+
* Never throws — any failure is reported as "not detected".
|
|
27
|
+
*/
|
|
28
|
+
export declare function detectClaudeBinaryDefault(): boolean;
|
|
19
29
|
export declare function firstRunOnboarding(io?: OnboardingIO): Promise<OnboardingResult>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Runs BEFORE the browser opens. Skips silently when:
|
|
6
6
|
// - stdin is not a TTY
|
|
7
|
+
// - claude binary is on PATH (Claude Code provides a no-key path)
|
|
7
8
|
// - any provider env var is already set
|
|
8
9
|
// - any provider already has a stored key
|
|
9
10
|
//
|
|
@@ -11,9 +12,36 @@
|
|
|
11
12
|
// store. On any failure path, returns action=declined rather than throwing —
|
|
12
13
|
// studio launch must not be blocked by onboarding.
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
15
|
+
import { spawnSync } from "node:child_process";
|
|
14
16
|
import { PROVIDERS, } from "./eval-server/providers.js";
|
|
15
17
|
import { saveKey, listKeys, redactKey, } from "./eval-server/settings-store.js";
|
|
16
18
|
import { readSecretFromStdin } from "./commands/masked-stdin.js";
|
|
19
|
+
// 0772 US-001: softened copy lives at the top so tests can import it.
|
|
20
|
+
const PROMPT_HEADER = "\nSkill Studio works with Claude Code (no key needed) or with an optional API key for OpenAI / OpenRouter / Anthropic comparisons.\n";
|
|
21
|
+
const DECLINE_HINT = "Skipping. Install Claude Code for a no-key path, or run `vskill keys set anthropic` later to add a key.\n";
|
|
22
|
+
/**
|
|
23
|
+
* 0772 US-001 — Detect whether the `claude` CLI binary is on PATH.
|
|
24
|
+
* POSIX uses `which claude`; win32 uses `where claude`. Bounded 250 ms timeout.
|
|
25
|
+
* Never throws — any failure is reported as "not detected".
|
|
26
|
+
*/
|
|
27
|
+
export function detectClaudeBinaryDefault() {
|
|
28
|
+
try {
|
|
29
|
+
const isWin = process.platform === "win32";
|
|
30
|
+
const cmd = isWin ? "where" : "which";
|
|
31
|
+
const result = spawnSync(cmd, ["claude"], {
|
|
32
|
+
timeout: 250,
|
|
33
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
34
|
+
});
|
|
35
|
+
if (result.error)
|
|
36
|
+
return false;
|
|
37
|
+
if (typeof result.status !== "number")
|
|
38
|
+
return false;
|
|
39
|
+
return result.status === 0;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
17
45
|
function defaultPromptConfirm(question) {
|
|
18
46
|
return new Promise((resolve) => {
|
|
19
47
|
process.stdout.write(`${question} (y/N): `);
|
|
@@ -51,6 +79,7 @@ function defaultIO() {
|
|
|
51
79
|
promptConfirm: defaultPromptConfirm,
|
|
52
80
|
readMaskedKey: () => readSecretFromStdin(),
|
|
53
81
|
env: process.env,
|
|
82
|
+
detectClaudeBinary: detectClaudeBinaryDefault,
|
|
54
83
|
};
|
|
55
84
|
}
|
|
56
85
|
/**
|
|
@@ -69,17 +98,35 @@ function anyProviderConfigured(env) {
|
|
|
69
98
|
}
|
|
70
99
|
return false;
|
|
71
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* 0772 US-001 — Safe wrapper: never propagate throws. Failure means "not
|
|
103
|
+
* detected" so the prompt still fires.
|
|
104
|
+
*/
|
|
105
|
+
function safeDetectClaude(io) {
|
|
106
|
+
if (!io.detectClaudeBinary)
|
|
107
|
+
return false;
|
|
108
|
+
try {
|
|
109
|
+
return io.detectClaudeBinary();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
72
115
|
export async function firstRunOnboarding(io = defaultIO()) {
|
|
73
116
|
// Non-TTY: never prompt (e.g. CI, piped, detached).
|
|
74
117
|
if (!io.isTTY())
|
|
75
118
|
return { action: "skip" };
|
|
119
|
+
// 0772 US-001: claude binary on PATH → silent skip (Claude Code is the
|
|
120
|
+
// no-key path; surfacing the prompt here would mislead the user).
|
|
121
|
+
if (safeDetectClaude(io))
|
|
122
|
+
return { action: "skip" };
|
|
76
123
|
// Already configured → nothing to do.
|
|
77
124
|
if (anyProviderConfigured(io.env))
|
|
78
125
|
return { action: "skip" };
|
|
79
|
-
io.stdout.write(
|
|
80
|
-
const accepted = await io.promptConfirm("Add
|
|
126
|
+
io.stdout.write(PROMPT_HEADER);
|
|
127
|
+
const accepted = await io.promptConfirm("Add an API key now?");
|
|
81
128
|
if (!accepted) {
|
|
82
|
-
io.stdout.write(
|
|
129
|
+
io.stdout.write(DECLINE_HINT);
|
|
83
130
|
return { action: "declined" };
|
|
84
131
|
}
|
|
85
132
|
io.stdout.write("Paste your Anthropic API key (input masked): ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-run-onboarding.js","sourceRoot":"","sources":["../src/first-run-onboarding.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,+BAA+B;AAC/B,EAAE;AACF,sDAAsD;AACtD,yBAAyB;AACzB,0CAA0C;AAC1C,4CAA4C;AAC5C,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,mDAAmD;AACnD,8EAA8E;AAE9E,OAAO,EACL,SAAS,GAEV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,OAAO,EACP,QAAQ,EACR,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"first-run-onboarding.js","sourceRoot":"","sources":["../src/first-run-onboarding.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,+BAA+B;AAC/B,EAAE;AACF,sDAAsD;AACtD,yBAAyB;AACzB,oEAAoE;AACpE,0CAA0C;AAC1C,4CAA4C;AAC5C,EAAE;AACF,yEAAyE;AACzE,6EAA6E;AAC7E,mDAAmD;AACnD,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,SAAS,GAEV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,OAAO,EACP,QAAQ,EACR,SAAS,GACV,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAsBjE,sEAAsE;AACtE,MAAM,aAAa,GACjB,sIAAsI,CAAC;AACzI,MAAM,YAAY,GAChB,2GAA2G,CAAC;AAE9G;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;YACxC,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,UAAU,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;QACpC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU;YAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,CAAC,GAAW,EAAQ,EAAE;YACnC,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QACF,SAAS,OAAO;YACd,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU;gBAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACrE,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS;IAChB,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAClC,aAAa,EAAE,oBAAoB;QACnC,aAAa,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,kBAAkB,EAAE,yBAAyB;KAC9C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,GAAsB;IACnD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,EAAgB;IACxC,IAAI,CAAC,EAAE,CAAC,kBAAkB;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,kBAAkB,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAmB,SAAS,EAAE;IAE9B,oDAAoD;IACpD,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE3C,uEAAuE;IACvE,kEAAkE;IAClE,IAAI,gBAAgB,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEpD,sCAAsC;IACtC,IAAI,qBAAqB,CAAC,EAAE,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAE7D,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,wEAAwE,CACzE,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wEAAwE;QACxE,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,MAAM,CAAC,KAAK,CACb,uDAAuD,CACxD,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,SAAS,SAAS,CAAC,GAAG,CAAC,6CAA6C,CACrE,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACpD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vskill",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.142",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Secure multi-platform AI skill installer — scan before you install",
|
|
6
6
|
"bin": {
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"lint:skills-spec": "npx tsx scripts/validate-skills-spec.ts",
|
|
27
27
|
"clean": "rm -rf dist",
|
|
28
28
|
"preuninstall": "node scripts/preuninstall.cjs",
|
|
29
|
-
"
|
|
29
|
+
"sync:readme-badges": "node scripts/sync-readme-badges.cjs",
|
|
30
|
+
"prepublishOnly": "npm run build && npm run build:eval-ui && node scripts/sync-readme-badges.cjs && git diff --exit-code README.md"
|
|
30
31
|
},
|
|
31
32
|
"keywords": [
|
|
32
33
|
"ai",
|