vskill 1.0.18 → 1.0.20
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 +1 -1
- package/agents.json +1 -1
- package/dist/commands/auth.js +31 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/eval-server/active-root-store.d.ts +19 -0
- package/dist/eval-server/active-root-store.js +50 -0
- package/dist/eval-server/active-root-store.js.map +1 -0
- package/dist/eval-server/api-routes.d.ts +1 -1
- package/dist/eval-server/api-routes.js +43 -5
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/authoring-routes.d.ts +1 -1
- package/dist/eval-server/authoring-routes.js +9 -7
- package/dist/eval-server/authoring-routes.js.map +1 -1
- package/dist/eval-server/detect-engines-route.d.ts +1 -1
- package/dist/eval-server/detect-engines-route.js +3 -1
- package/dist/eval-server/detect-engines-route.js.map +1 -1
- package/dist/eval-server/eval-server.js +26 -24
- package/dist/eval-server/eval-server.js.map +1 -1
- package/dist/eval-server/git-routes.d.ts +6 -6
- package/dist/eval-server/git-routes.js +22 -11
- package/dist/eval-server/git-routes.js.map +1 -1
- package/dist/eval-server/improve-routes.d.ts +1 -1
- package/dist/eval-server/improve-routes.js +4 -1
- package/dist/eval-server/improve-routes.js.map +1 -1
- package/dist/eval-server/install-engine-routes.d.ts +1 -1
- package/dist/eval-server/install-engine-routes.js +1 -1
- package/dist/eval-server/install-engine-routes.js.map +1 -1
- package/dist/eval-server/install-skill-routes.d.ts +1 -1
- package/dist/eval-server/install-skill-routes.js +3 -1
- package/dist/eval-server/install-skill-routes.js.map +1 -1
- package/dist/eval-server/install-state-routes.d.ts +1 -1
- package/dist/eval-server/install-state-routes.js +3 -1
- package/dist/eval-server/install-state-routes.js.map +1 -1
- package/dist/eval-server/integration-routes.d.ts +1 -1
- package/dist/eval-server/integration-routes.js +6 -1
- package/dist/eval-server/integration-routes.js.map +1 -1
- package/dist/eval-server/model-compare-routes.d.ts +1 -1
- package/dist/eval-server/model-compare-routes.js +3 -1
- package/dist/eval-server/model-compare-routes.js.map +1 -1
- package/dist/eval-server/platform-proxy.d.ts +6 -1
- package/dist/eval-server/platform-proxy.js +60 -11
- package/dist/eval-server/platform-proxy.js.map +1 -1
- package/dist/eval-server/plugin-cli-routes.d.ts +1 -1
- package/dist/eval-server/plugin-cli-routes.js +10 -1
- package/dist/eval-server/plugin-cli-routes.js.map +1 -1
- package/dist/eval-server/remove-skill-routes.d.ts +1 -1
- package/dist/eval-server/remove-skill-routes.js +3 -1
- package/dist/eval-server/remove-skill-routes.js.map +1 -1
- package/dist/eval-server/skill-create-routes.d.ts +1 -1
- package/dist/eval-server/skill-create-routes.js +8 -1
- package/dist/eval-server/skill-create-routes.js.map +1 -1
- package/dist/eval-server/sweep-routes.d.ts +1 -1
- package/dist/eval-server/sweep-routes.js +5 -1
- package/dist/eval-server/sweep-routes.js.map +1 -1
- package/dist/eval-server/workspace-routes.d.ts +12 -0
- package/dist/eval-server/workspace-routes.js +57 -2
- package/dist/eval-server/workspace-routes.js.map +1 -1
- package/dist/eval-ui/assets/{AdvancedTab-D8zbE5fH.js → AdvancedTab-DOgbx7u0.js} +1 -1
- package/dist/eval-ui/assets/{CreateSkillPage-DOBhKdgr.js → CreateSkillPage-gG-MYioa.js} +1 -1
- package/dist/eval-ui/assets/{FindSkillsPalette-CyMmNPr-.js → FindSkillsPalette-DgVp_buC.js} +2 -2
- package/dist/eval-ui/assets/{GeneralTab-DYR9NWC4.js → GeneralTab-AwK9sIkP.js} +1 -1
- package/dist/eval-ui/assets/{PrivacyTab-CXIqQokl.js → PrivacyTab-BtNrxpVV.js} +1 -1
- package/dist/eval-ui/assets/{SearchPaletteCore-Dn5gQJS_.js → SearchPaletteCore-D2gKxOTT.js} +1 -1
- package/dist/eval-ui/assets/{SkillDetailPanel-DTrRnyyJ.js → SkillDetailPanel-Ioc5XaDA.js} +1 -1
- package/dist/eval-ui/assets/{UpdateDropdown-Cvr2fe0z.js → UpdateDropdown-B9rCyfnR.js} +1 -1
- package/dist/eval-ui/assets/{UpdatesTab-DwJIUDPX.js → UpdatesTab-DTmo-vVb.js} +1 -1
- package/dist/eval-ui/assets/core-DZjBCfjp.js +1 -0
- package/dist/eval-ui/assets/{event-CDYWU2X3.js → event-QtOCMXAv.js} +1 -1
- package/dist/eval-ui/assets/globals-Dpf9KmYH.css +1 -0
- package/dist/eval-ui/assets/{index-D7M0Jdss.js → index-CUEYzTVL.js} +1 -1
- package/dist/eval-ui/assets/index-DDNzcrhv.js +1 -0
- package/dist/eval-ui/assets/index-DhhmQddr.js +1 -0
- package/dist/eval-ui/assets/{lifecycle-DSleOV-l.js → lifecycle-o_IRibOa.js} +1 -1
- package/dist/eval-ui/assets/main-sUAgJ9SV.js +87 -0
- package/dist/eval-ui/assets/{preferences-BKv6X7fK.js → preferences-DCdw0Kvu.js} +2 -2
- package/dist/eval-ui/assets/{useDesktopBridge-DxVWbYqK.js → useDesktopBridge-9oZFQsrw.js} +2 -2
- package/dist/eval-ui/index.html +4 -4
- package/dist/eval-ui/lifecycle.html +3 -3
- package/dist/eval-ui/preferences.html +4 -4
- package/dist/lib/keychain.js +20 -3
- package/dist/lib/keychain.js.map +1 -1
- package/dist/studio/routes/index.d.ts +1 -1
- package/dist/studio/routes/index.js +10 -9
- package/dist/studio/routes/index.js.map +1 -1
- package/dist/studio/routes/promote.d.ts +1 -1
- package/dist/studio/routes/promote.js +3 -1
- package/dist/studio/routes/promote.js.map +1 -1
- package/dist/studio/routes/revert.d.ts +1 -1
- package/dist/studio/routes/revert.js +3 -1
- package/dist/studio/routes/revert.js.map +1 -1
- package/dist/studio/routes/test-install.d.ts +1 -1
- package/dist/studio/routes/test-install.js +3 -1
- package/dist/studio/routes/test-install.js.map +1 -1
- package/package.json +2 -1
- package/dist/eval-ui/assets/core-DZAvsxlC.js +0 -1
- package/dist/eval-ui/assets/globals-C3oEdsJh.css +0 -1
- package/dist/eval-ui/assets/main-D2shn1dH.js +0 -87
- /package/dist/eval-ui/assets/{globals-BRZwPAPF.js → globals-hm1COkXX.js} +0 -0
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<a href="https://github.com/anton-abyzov/vskill/actions/workflows/desktop-release.yml"><img src="https://img.shields.io/github/actions/workflow/status/anton-abyzov/vskill/desktop-release.yml?branch=main&label=desktop%20build&logo=githubactions" alt="desktop build" /></a>
|
|
13
13
|
<img src="https://img.shields.io/badge/agents-54_platforms-0969DA" alt="54 agents" />
|
|
14
14
|
<img src="https://img.shields.io/badge/plugins-9-8B5CF6" alt="9 plugins" />
|
|
15
|
-
<img src="https://img.shields.io/badge/skills-
|
|
15
|
+
<img src="https://img.shields.io/badge/skills-17-10B981" alt="17 skills" />
|
|
16
16
|
<a href="https://verified-skill.com"><img src="https://img.shields.io/badge/registry-verified--skill.com-F59E0B" alt="registry" /></a>
|
|
17
17
|
<a href="https://github.com/anton-abyzov/vskill/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="MIT" /></a>
|
|
18
18
|
</p>
|
package/agents.json
CHANGED
package/dist/commands/auth.js
CHANGED
|
@@ -186,6 +186,10 @@ async function loginCmd(deps) {
|
|
|
186
186
|
// 0839 F-004 — bust again so vsk_ replaces gho_ in the cache.
|
|
187
187
|
if (deps.invalidateAuthCache)
|
|
188
188
|
deps.invalidateAuthCache();
|
|
189
|
+
// 0855 — confirm the verified-skill token was minted so the user
|
|
190
|
+
// knows the in-app submit/queue is enabled.
|
|
191
|
+
io.stdout.write(`\nLogged in as @${login} (verified-skill token minted — in-app submit/queue enabled).\n`);
|
|
192
|
+
return 0;
|
|
189
193
|
}
|
|
190
194
|
else {
|
|
191
195
|
io.stdout.write(`\nLogged in as @${login} (legacy mode — exchange returned no token).\n`);
|
|
@@ -239,14 +243,40 @@ async function statusCmd(args, deps) {
|
|
|
239
243
|
return 1;
|
|
240
244
|
}
|
|
241
245
|
const u = user.body;
|
|
246
|
+
// 0855 — also report whether a verified-skill vsk_ token is present so the
|
|
247
|
+
// user knows the in-app submit/queue (which the eval-server proxy gates on
|
|
248
|
+
// vsk_) will work. Never print the token value — only a redacted prefix.
|
|
249
|
+
const vsk = keychain.getVskillToken();
|
|
250
|
+
const vskPresent = typeof vsk === "string" && vsk.length > 0;
|
|
242
251
|
if (json) {
|
|
243
|
-
io.stdout.write(JSON.stringify({
|
|
252
|
+
io.stdout.write(JSON.stringify({
|
|
253
|
+
loggedIn: true,
|
|
254
|
+
login: u.login,
|
|
255
|
+
id: u.id,
|
|
256
|
+
vskToken: vskPresent,
|
|
257
|
+
}) + "\n");
|
|
244
258
|
}
|
|
245
259
|
else {
|
|
246
260
|
io.stdout.write(`Logged in as @${u.login} (id=${u.id}).\n`);
|
|
261
|
+
if (vskPresent) {
|
|
262
|
+
io.stdout.write(`verified-skill token: present (${redactVsk(vsk)}).\n`);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
io.stdout.write("verified-skill token: absent (run `vskill auth login` to mint one; in-app submit/queue needs it).\n");
|
|
266
|
+
}
|
|
247
267
|
}
|
|
248
268
|
return 0;
|
|
249
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* 0855 — log-safe rendering of a vsk_ token for `auth status`. Keeps the
|
|
272
|
+
* recognisable `vsk_` prefix + last 4 chars, masks the middle. Never emits
|
|
273
|
+
* the full secret.
|
|
274
|
+
*/
|
|
275
|
+
function redactVsk(token) {
|
|
276
|
+
if (token.length <= 8)
|
|
277
|
+
return "vsk_****";
|
|
278
|
+
return `vsk_…${token.slice(-4)}`;
|
|
279
|
+
}
|
|
250
280
|
async function logoutCmd(deps) {
|
|
251
281
|
const { io } = deps;
|
|
252
282
|
const keychain = deps.keychain ?? getDefaultKeychain();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ActiveRootStore {
|
|
2
|
+
/** The scan root all route handlers should use, resolved per request. */
|
|
3
|
+
getRoot(): string;
|
|
4
|
+
/** Replace the active scan root (e.g. after a project switch). */
|
|
5
|
+
setRoot(root: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* Re-derive the active root from `~/.vskill/workspace.json`'s active project.
|
|
8
|
+
* Updates the store and returns the new value; if no active project resolves,
|
|
9
|
+
* the current root is kept and returned.
|
|
10
|
+
*/
|
|
11
|
+
reload(workspaceDir: string): string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the active project's path from the workspace registry. Returns null
|
|
15
|
+
* when there is no workspace, no active project, or the active id is dangling.
|
|
16
|
+
* Shared by both boot resolution (eval-server) and runtime reloads (this store).
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveActiveRoot(workspaceDir: string): string | null;
|
|
19
|
+
export declare function createActiveRootStore(initialRoot: string): ActiveRootStore;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// 0863 T-001: ActiveRootStore — runtime-mutable scan root.
|
|
3
|
+
//
|
|
4
|
+
// Before 0863, the eval-server resolved the scan root ONCE at boot and froze
|
|
5
|
+
// it into every route handler's closure, so switching the active project from
|
|
6
|
+
// the UI (POST /api/workspace/active) changed ~/.vskill/workspace.json but the
|
|
7
|
+
// running server kept serving the original folder's skills.
|
|
8
|
+
//
|
|
9
|
+
// This store holds the current scan root in memory and lets handlers read it
|
|
10
|
+
// per-request via `getRoot()`. `POST /api/workspace/active` calls `setRoot()`
|
|
11
|
+
// after persisting, so the next `GET /api/skills` scans the new folder — no
|
|
12
|
+
// process restart, no port change, no studio-token re-mint. The same code path
|
|
13
|
+
// works in `npx vskill studio` (single process) and the desktop Tauri sidecar.
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
import { loadWorkspace } from "./workspace-store.js";
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the active project's path from the workspace registry. Returns null
|
|
18
|
+
* when there is no workspace, no active project, or the active id is dangling.
|
|
19
|
+
* Shared by both boot resolution (eval-server) and runtime reloads (this store).
|
|
20
|
+
*/
|
|
21
|
+
export function resolveActiveRoot(workspaceDir) {
|
|
22
|
+
try {
|
|
23
|
+
const ws = loadWorkspace(workspaceDir);
|
|
24
|
+
if (!ws.activeProjectId)
|
|
25
|
+
return null;
|
|
26
|
+
const active = ws.projects.find((p) => p.id === ws.activeProjectId);
|
|
27
|
+
return active ? active.path : null;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function createActiveRootStore(initialRoot) {
|
|
34
|
+
let current = initialRoot;
|
|
35
|
+
return {
|
|
36
|
+
getRoot() {
|
|
37
|
+
return current;
|
|
38
|
+
},
|
|
39
|
+
setRoot(root) {
|
|
40
|
+
current = root;
|
|
41
|
+
},
|
|
42
|
+
reload(workspaceDir) {
|
|
43
|
+
const resolved = resolveActiveRoot(workspaceDir);
|
|
44
|
+
if (resolved)
|
|
45
|
+
current = resolved;
|
|
46
|
+
return current;
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=active-root-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-root-store.js","sourceRoot":"","sources":["../../src/eval-server/active-root-store.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2DAA2D;AAC3D,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,4DAA4D;AAC5D,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAerD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAAoB;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,CAAC;QACpE,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,IAAI,OAAO,GAAG,WAAW,CAAC;IAC1B,OAAO;QACL,OAAO;YACL,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,CAAC,IAAY;YAClB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,YAAoB;YACzB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,QAAQ;gBAAE,OAAO,GAAG,QAAQ,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -214,4 +214,4 @@ export declare function detectAvailableProviders(): Promise<Array<{
|
|
|
214
214
|
models: ModelOption[];
|
|
215
215
|
resolvedModel?: string | null;
|
|
216
216
|
}>>;
|
|
217
|
-
export declare function registerRoutes(router: Router,
|
|
217
|
+
export declare function registerRoutes(router: Router, rootArg: string | (() => string), projectName?: string): void;
|
|
@@ -1154,7 +1154,8 @@ export async function detectAvailableProviders() {
|
|
|
1154
1154
|
});
|
|
1155
1155
|
return providers;
|
|
1156
1156
|
}
|
|
1157
|
-
export function registerRoutes(router,
|
|
1157
|
+
export function registerRoutes(router, rootArg, projectName) {
|
|
1158
|
+
const getRoot = typeof rootArg === "function" ? rootArg : () => rootArg;
|
|
1158
1159
|
// Health check
|
|
1159
1160
|
router.get("/api/health", (_req, res) => {
|
|
1160
1161
|
sendJson(res, { ok: true });
|
|
@@ -1173,6 +1174,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1173
1174
|
// shared-folder grouping. 30s detection cache (mirrors Ollama/LM Studio
|
|
1174
1175
|
// probe pattern from 0677).
|
|
1175
1176
|
router.get("/api/agents", async (req, res) => {
|
|
1177
|
+
const root = getRoot();
|
|
1176
1178
|
try {
|
|
1177
1179
|
const detected = await detectInstalledAgents();
|
|
1178
1180
|
const detectedBinaries = new Set(detected.map((a) => a.id));
|
|
@@ -1373,6 +1375,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1373
1375
|
// (e.g. "claude-sonnet"). The frontend round-trips config.model back to
|
|
1374
1376
|
// generate-evals and other endpoints, so it must be a valid CLI model ID.
|
|
1375
1377
|
router.get("/api/config", async (_req, res) => {
|
|
1378
|
+
const root = getRoot();
|
|
1376
1379
|
// 0682 F-001 — Boot-time restoration of .vskill/studio.json selection.
|
|
1377
1380
|
// Use a dedicated `studioLoaded` flag rather than checking
|
|
1378
1381
|
// `!currentOverrides.provider` because the module default
|
|
@@ -1442,6 +1445,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1442
1445
|
});
|
|
1443
1446
|
// Update config — change provider/model at runtime and persist atomically.
|
|
1444
1447
|
router.post("/api/config", async (req, res) => {
|
|
1448
|
+
const root = getRoot();
|
|
1445
1449
|
const body = (await readBody(req));
|
|
1446
1450
|
// 0682 F-001 (review iter 3): validate the incoming provider against the
|
|
1447
1451
|
// ProviderName union BEFORE mutating currentOverrides. Pre-fix, an
|
|
@@ -1503,6 +1507,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1503
1507
|
// unknown/missing fields default to `null` (not undefined) so the shape
|
|
1504
1508
|
// remains JSON-stable for all consumers.
|
|
1505
1509
|
router.get("/api/skills", async (req, res) => {
|
|
1510
|
+
const root = getRoot();
|
|
1506
1511
|
// 0686: ?scope=own|installed|global and ?agent=<id> query params.
|
|
1507
1512
|
// When either is present, switch to tri-scope scanning so the response
|
|
1508
1513
|
// carries the new `scope`/`isSymlink`/`symlinkTarget`/`installMethod`/
|
|
@@ -1657,6 +1662,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1657
1662
|
}
|
|
1658
1663
|
});
|
|
1659
1664
|
router.get("/api/skills/updates", async (req, res) => {
|
|
1665
|
+
const root = getRoot();
|
|
1660
1666
|
try {
|
|
1661
1667
|
const { getOutdatedJson } = await import("../commands/outdated.js");
|
|
1662
1668
|
const { scanSkillInstallLocations } = await import("./utils/scan-install-locations.js");
|
|
@@ -1714,7 +1720,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1714
1720
|
* git remote parse for skills authored in this repo. See skill-name-resolver.ts.
|
|
1715
1721
|
*/
|
|
1716
1722
|
function resolveSkillApiName(skill, plugin = null) {
|
|
1717
|
-
return resolveSkillApiNameImpl(skill,
|
|
1723
|
+
return resolveSkillApiNameImpl(skill, getRoot(), plugin);
|
|
1718
1724
|
}
|
|
1719
1725
|
// T-009 (proxy) + 0707 T-021 (harden): Versions endpoint
|
|
1720
1726
|
//
|
|
@@ -1733,7 +1739,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1733
1739
|
// Returns `{ apiPathRoot, origin }` — callers append `/versions` or
|
|
1734
1740
|
// `/versions/diff` as needed.
|
|
1735
1741
|
async function buildSkillApiPath(skill, plugin) {
|
|
1736
|
-
const origin = await resolveSkillOrigin(skill, plugin,
|
|
1742
|
+
const origin = await resolveSkillOrigin(skill, plugin, getRoot());
|
|
1737
1743
|
if (origin.owner && origin.repo) {
|
|
1738
1744
|
return {
|
|
1739
1745
|
apiPathRoot: `/api/v1/skills/${encodeURIComponent(origin.owner)}/${encodeURIComponent(origin.repo)}/${encodeURIComponent(skill)}`,
|
|
@@ -1750,6 +1756,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1750
1756
|
return { apiPathRoot, origin };
|
|
1751
1757
|
}
|
|
1752
1758
|
router.get("/api/skills/:plugin/:skill/versions", async (req, res, params) => {
|
|
1759
|
+
const root = getRoot();
|
|
1753
1760
|
// 0823: comprehensive origin resolver via shared buildSkillApiPath.
|
|
1754
1761
|
const { apiPathRoot, origin } = await buildSkillApiPath(params.skill, params.plugin);
|
|
1755
1762
|
const apiPath = `${apiPathRoot}/versions`;
|
|
@@ -1912,6 +1919,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1912
1919
|
//
|
|
1913
1920
|
// Idempotent + side-effect free on disk.
|
|
1914
1921
|
router.post("/api/v1/skills/:id/rescan", async (req, res, params) => {
|
|
1922
|
+
const root = getRoot();
|
|
1915
1923
|
const rawId = String(params.id ?? "");
|
|
1916
1924
|
const decoded = (() => {
|
|
1917
1925
|
try {
|
|
@@ -1998,6 +2006,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
1998
2006
|
sendJson(res, { jobId }, 200, req);
|
|
1999
2007
|
});
|
|
2000
2008
|
router.post("/api/skills/:plugin/:skill/update", async (req, res, params) => {
|
|
2009
|
+
const root = getRoot();
|
|
2001
2010
|
initSSE(res, req);
|
|
2002
2011
|
const skillName = params.skill;
|
|
2003
2012
|
// 0747 grill F-002: reject before doing anything so a malformed slug
|
|
@@ -2077,6 +2086,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2077
2086
|
// T-012: Batch update SSE + 409 conflict guard
|
|
2078
2087
|
let batchUpdateInProgress = false;
|
|
2079
2088
|
router.post("/api/skills/batch-update", async (req, res) => {
|
|
2089
|
+
const root = getRoot();
|
|
2080
2090
|
if (batchUpdateInProgress) {
|
|
2081
2091
|
sendJson(res, { error: "Update already in progress" }, 409, req);
|
|
2082
2092
|
return;
|
|
@@ -2145,7 +2155,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2145
2155
|
const skillFsAllowedRoots = () => {
|
|
2146
2156
|
const home = homedir();
|
|
2147
2157
|
return [
|
|
2148
|
-
|
|
2158
|
+
getRoot(),
|
|
2149
2159
|
join(home, ".claude/plugins/cache"),
|
|
2150
2160
|
join(home, ".claude/plugins/marketplaces"),
|
|
2151
2161
|
join(home, ".claude/skills"),
|
|
@@ -2162,7 +2172,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2162
2172
|
// path via setSkillDirEntry inside ensurePluginCacheEntry.
|
|
2163
2173
|
const resolveSkillDirForFsRoute = async (plugin, skill) => {
|
|
2164
2174
|
await ensurePluginCacheEntry(plugin, skill);
|
|
2165
|
-
return resolveAllowedSkillDir(
|
|
2175
|
+
return resolveAllowedSkillDir(getRoot(), plugin, skill, skillFsAllowedRoots());
|
|
2166
2176
|
};
|
|
2167
2177
|
// Get skill detail
|
|
2168
2178
|
router.get("/api/skills/:plugin/:skill", async (req, res, params) => {
|
|
@@ -2348,6 +2358,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2348
2358
|
});
|
|
2349
2359
|
// Save (create/overwrite) a file inside a skill directory
|
|
2350
2360
|
router.put("/api/skills/:plugin/:skill/file", async (req, res, params) => {
|
|
2361
|
+
const root = getRoot();
|
|
2351
2362
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2352
2363
|
if (!resolve(skillDir).startsWith(resolve(root))) {
|
|
2353
2364
|
sendJson(res, { error: "Invalid skill path" }, 400, req);
|
|
@@ -2377,6 +2388,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2377
2388
|
});
|
|
2378
2389
|
// Delete a source skill (recursively removes its directory)
|
|
2379
2390
|
router.delete("/api/skills/:plugin/:skill", async (req, res, params) => {
|
|
2391
|
+
const root = getRoot();
|
|
2380
2392
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2381
2393
|
// Path containment guard — prevent path traversal via ".." in params
|
|
2382
2394
|
if (!resolve(skillDir).startsWith(resolve(root))) {
|
|
@@ -2417,6 +2429,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2417
2429
|
// this route is the canonical uninstall path for lockfile-tracked
|
|
2418
2430
|
// installed skills.
|
|
2419
2431
|
router.post("/api/skills/:plugin/:skill/uninstall", async (req, res, params) => {
|
|
2432
|
+
const root = getRoot();
|
|
2420
2433
|
// Skill-name validation — same kebab-case regex used by skill-create
|
|
2421
2434
|
// routes. Performed BEFORE any filesystem access to defang path-traversal
|
|
2422
2435
|
// attempts (e.g. `../../etc/passwd`).
|
|
@@ -2505,6 +2518,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2505
2518
|
});
|
|
2506
2519
|
// Get skill description (for activation testing preview)
|
|
2507
2520
|
router.get("/api/skills/:plugin/:skill/description", async (req, res, params) => {
|
|
2521
|
+
const root = getRoot();
|
|
2508
2522
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2509
2523
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
2510
2524
|
let skillContent = "";
|
|
@@ -2530,6 +2544,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2530
2544
|
// generic client errors — 422 Unprocessable Entity is the correct semantic
|
|
2531
2545
|
// for well-formed requests whose payload fails validation.
|
|
2532
2546
|
router.get("/api/skills/:plugin/:skill/evals", async (req, res, params) => {
|
|
2547
|
+
const root = getRoot();
|
|
2533
2548
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2534
2549
|
const evalsPath = join(skillDir, "evals", "evals.json");
|
|
2535
2550
|
if (!existsSync(evalsPath)) {
|
|
@@ -2554,6 +2569,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2554
2569
|
});
|
|
2555
2570
|
// Save evals.json
|
|
2556
2571
|
router.put("/api/skills/:plugin/:skill/evals", async (req, res, params) => {
|
|
2572
|
+
const root = getRoot();
|
|
2557
2573
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2558
2574
|
const body = (await readBody(req));
|
|
2559
2575
|
// Validate before writing
|
|
@@ -2571,6 +2587,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2571
2587
|
// Generate evals using AI — reads SKILL.md and returns generated EvalsFile
|
|
2572
2588
|
// Accepts optional { provider, model, testType } in request body
|
|
2573
2589
|
router.post("/api/skills/:plugin/:skill/generate-evals", async (req, res, params) => {
|
|
2590
|
+
const root = getRoot();
|
|
2574
2591
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2575
2592
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
2576
2593
|
if (!existsSync(skillMdPath)) {
|
|
@@ -2680,6 +2697,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2680
2697
|
});
|
|
2681
2698
|
// Run benchmark (SSE) — optionally accepts { eval_ids, concurrency, judgeModel, noCache }
|
|
2682
2699
|
router.post("/api/skills/:plugin/:skill/benchmark", async (req, res, params) => {
|
|
2700
|
+
const root = getRoot();
|
|
2683
2701
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2684
2702
|
let aborted = false;
|
|
2685
2703
|
res.on("close", () => { aborted = true; });
|
|
@@ -2731,6 +2749,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2731
2749
|
});
|
|
2732
2750
|
// Run baseline (SSE) — same as benchmark but without skill content
|
|
2733
2751
|
router.post("/api/skills/:plugin/:skill/baseline", async (req, res, params) => {
|
|
2752
|
+
const root = getRoot();
|
|
2734
2753
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2735
2754
|
let aborted = false;
|
|
2736
2755
|
res.on("close", () => { aborted = true; });
|
|
@@ -2754,6 +2773,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2754
2773
|
});
|
|
2755
2774
|
// Run single case (SSE) — per-case endpoint with semaphore
|
|
2756
2775
|
router.post("/api/skills/:plugin/:skill/benchmark/case/:evalId", async (req, res, params) => {
|
|
2776
|
+
const root = getRoot();
|
|
2757
2777
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2758
2778
|
const evalId = parseInt(params.evalId, 10);
|
|
2759
2779
|
if (isNaN(evalId)) {
|
|
@@ -2829,6 +2849,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2829
2849
|
});
|
|
2830
2850
|
// Bulk save — client assembles result from per-case runs and saves as one history entry
|
|
2831
2851
|
router.post("/api/skills/:plugin/:skill/benchmark/bulk-save", async (req, res, params) => {
|
|
2852
|
+
const root = getRoot();
|
|
2832
2853
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2833
2854
|
try {
|
|
2834
2855
|
const body = await readBody(req);
|
|
@@ -2847,6 +2868,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
2847
2868
|
});
|
|
2848
2869
|
// Run comparison (SSE)
|
|
2849
2870
|
router.post("/api/skills/:plugin/:skill/compare", async (req, res, params) => {
|
|
2871
|
+
const root = getRoot();
|
|
2850
2872
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
2851
2873
|
let aborted = false;
|
|
2852
2874
|
res.on("close", () => { aborted = true; });
|
|
@@ -3053,6 +3075,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3053
3075
|
});
|
|
3054
3076
|
// List benchmark history (with optional filters)
|
|
3055
3077
|
router.get("/api/skills/:plugin/:skill/history", async (req, res, params) => {
|
|
3078
|
+
const root = getRoot();
|
|
3056
3079
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3057
3080
|
const url = new URL(req.url, `http://localhost`);
|
|
3058
3081
|
const filter = {};
|
|
@@ -3075,6 +3098,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3075
3098
|
});
|
|
3076
3099
|
// Compare two history runs
|
|
3077
3100
|
router.get("/api/skills/:plugin/:skill/history-compare", async (req, res, params) => {
|
|
3101
|
+
const root = getRoot();
|
|
3078
3102
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3079
3103
|
const url = new URL(req.url, `http://localhost`);
|
|
3080
3104
|
const tsA = url.searchParams.get("a");
|
|
@@ -3138,6 +3162,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3138
3162
|
});
|
|
3139
3163
|
// Per-case history
|
|
3140
3164
|
router.get("/api/skills/:plugin/:skill/history/case/:evalId", async (req, res, params) => {
|
|
3165
|
+
const root = getRoot();
|
|
3141
3166
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3142
3167
|
const evalId = parseInt(params.evalId, 10);
|
|
3143
3168
|
if (isNaN(evalId)) {
|
|
@@ -3151,6 +3176,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3151
3176
|
});
|
|
3152
3177
|
// Get specific history entry
|
|
3153
3178
|
router.get("/api/skills/:plugin/:skill/history/:timestamp", async (req, res, params) => {
|
|
3179
|
+
const root = getRoot();
|
|
3154
3180
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3155
3181
|
const entry = await readHistoryEntry(skillDir, params.timestamp);
|
|
3156
3182
|
if (!entry) {
|
|
@@ -3161,6 +3187,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3161
3187
|
});
|
|
3162
3188
|
// Delete history entry
|
|
3163
3189
|
router.delete("/api/skills/:plugin/:skill/history/:timestamp", async (req, res, params) => {
|
|
3190
|
+
const root = getRoot();
|
|
3164
3191
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3165
3192
|
const deleted = await deleteHistoryEntry(skillDir, params.timestamp);
|
|
3166
3193
|
if (!deleted) {
|
|
@@ -3171,6 +3198,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3171
3198
|
});
|
|
3172
3199
|
// Get aggregated stats
|
|
3173
3200
|
router.get("/api/skills/:plugin/:skill/stats", async (req, res, params) => {
|
|
3201
|
+
const root = getRoot();
|
|
3174
3202
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3175
3203
|
const stats = await computeStats(skillDir);
|
|
3176
3204
|
sendJson(res, stats, 200, req);
|
|
@@ -3185,6 +3213,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3185
3213
|
// Works for any plugin slug (including dashes like `google-workspace`)
|
|
3186
3214
|
// because routing uses `[^/]+` groups (see router.ts T-020).
|
|
3187
3215
|
router.get("/api/skills/:plugin/:skill/benchmark/latest", async (req, res, params) => {
|
|
3216
|
+
const root = getRoot();
|
|
3188
3217
|
// 0704: always 200; body null = no benchmark persisted yet.
|
|
3189
3218
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3190
3219
|
const benchmark = await readBenchmark(skillDir);
|
|
@@ -3192,6 +3221,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3192
3221
|
});
|
|
3193
3222
|
// Run activation test (SSE)
|
|
3194
3223
|
router.post("/api/skills/:plugin/:skill/activation-test", async (req, res, params) => {
|
|
3224
|
+
const root = getRoot();
|
|
3195
3225
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3196
3226
|
let aborted = false;
|
|
3197
3227
|
res.on("close", () => { aborted = true; });
|
|
@@ -3262,6 +3292,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3262
3292
|
});
|
|
3263
3293
|
// GET parsed `## Test Cases` block from SKILL.md (increment 0776)
|
|
3264
3294
|
router.get("/api/skills/:plugin/:skill/test-cases", (req, res, params) => {
|
|
3295
|
+
const root = getRoot();
|
|
3265
3296
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3266
3297
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
3267
3298
|
const content = existsSync(skillMdPath) ? readFileSync(skillMdPath, "utf-8") : "";
|
|
@@ -3272,6 +3303,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3272
3303
|
// Empty prompts array removes the section. Frontmatter and other body
|
|
3273
3304
|
// sections are preserved verbatim.
|
|
3274
3305
|
router.put("/api/skills/:plugin/:skill/test-cases", async (req, res, params) => {
|
|
3306
|
+
const root = getRoot();
|
|
3275
3307
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3276
3308
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
3277
3309
|
const body = (await readBody(req));
|
|
@@ -3302,6 +3334,7 @@ export function registerRoutes(router, root, projectName) {
|
|
|
3302
3334
|
});
|
|
3303
3335
|
// AI-generate activation test prompts (SSE)
|
|
3304
3336
|
router.post("/api/skills/:plugin/:skill/activation-prompts", async (req, res, params) => {
|
|
3337
|
+
const root = getRoot();
|
|
3305
3338
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3306
3339
|
let aborted = false;
|
|
3307
3340
|
res.on("close", () => { aborted = true; });
|
|
@@ -3367,6 +3400,7 @@ Return ONLY the JSON lines, no other text.`;
|
|
|
3367
3400
|
// 500 { error } only for unexpected I/O failures
|
|
3368
3401
|
// (ENOENT is explicitly not one)
|
|
3369
3402
|
router.get("/api/skills/:plugin/:skill/activation-history", async (req, res, params) => {
|
|
3403
|
+
const root = getRoot();
|
|
3370
3404
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3371
3405
|
try {
|
|
3372
3406
|
const runs = await listActivationRuns(skillDir);
|
|
@@ -3385,6 +3419,7 @@ Return ONLY the JSON lines, no other text.`;
|
|
|
3385
3419
|
});
|
|
3386
3420
|
// Get full activation test run by ID
|
|
3387
3421
|
router.get("/api/skills/:plugin/:skill/activation-history/:runId", async (req, res, params) => {
|
|
3422
|
+
const root = getRoot();
|
|
3388
3423
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3389
3424
|
const run = await getActivationRun(skillDir, params.runId);
|
|
3390
3425
|
if (!run) {
|
|
@@ -3395,6 +3430,7 @@ Return ONLY the JSON lines, no other text.`;
|
|
|
3395
3430
|
});
|
|
3396
3431
|
// Get skill dependencies (MCP + skill-to-skill)
|
|
3397
3432
|
router.get("/api/skills/:plugin/:skill/dependencies", async (req, res, params) => {
|
|
3433
|
+
const root = getRoot();
|
|
3398
3434
|
const skillDir = resolveSkillDir(root, params.plugin, params.skill);
|
|
3399
3435
|
const skillMdPath = join(skillDir, "SKILL.md");
|
|
3400
3436
|
if (!existsSync(skillMdPath)) {
|
|
@@ -3412,6 +3448,7 @@ Return ONLY the JSON lines, no other text.`;
|
|
|
3412
3448
|
// server-side via scanSkillInstallLocations and rejects any non-basename
|
|
3413
3449
|
// `file`. Spawn is detached + unref'd so the response returns immediately.
|
|
3414
3450
|
router.post("/api/skills/reveal-in-editor", async (req, res) => {
|
|
3451
|
+
const root = getRoot();
|
|
3415
3452
|
let body;
|
|
3416
3453
|
try {
|
|
3417
3454
|
body = (await readBody(req));
|
|
@@ -3542,6 +3579,7 @@ Return ONLY the JSON lines, no other text.`;
|
|
|
3542
3579
|
// 500 { error: "clone_failed", message: <stderr tail>, exitCode }
|
|
3543
3580
|
// -------------------------------------------------------------------------
|
|
3544
3581
|
router.post("/api/skills/clone", async (req, res) => {
|
|
3582
|
+
const root = getRoot();
|
|
3545
3583
|
let body;
|
|
3546
3584
|
try {
|
|
3547
3585
|
body = (await readBody(req));
|