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.
Files changed (102) hide show
  1. package/README.md +147 -4
  2. package/agents.json +1 -1
  3. package/dist/agents/agents-registry.d.ts +13 -3
  4. package/dist/agents/agents-registry.js +100 -57
  5. package/dist/agents/agents-registry.js.map +1 -1
  6. package/dist/api/client.d.ts +21 -0
  7. package/dist/api/client.js +39 -5
  8. package/dist/api/client.js.map +1 -1
  9. package/dist/commands/diff.d.ts +6 -0
  10. package/dist/commands/diff.js +104 -0
  11. package/dist/commands/diff.js.map +1 -0
  12. package/dist/commands/eval/serve.js +29 -83
  13. package/dist/commands/eval/serve.js.map +1 -1
  14. package/dist/commands/keys.d.ts +14 -0
  15. package/dist/commands/keys.js +166 -0
  16. package/dist/commands/keys.js.map +1 -0
  17. package/dist/commands/masked-stdin.d.ts +14 -0
  18. package/dist/commands/masked-stdin.js +79 -0
  19. package/dist/commands/masked-stdin.js.map +1 -0
  20. package/dist/commands/skill.d.ts +6 -0
  21. package/dist/commands/skill.js +366 -0
  22. package/dist/commands/skill.js.map +1 -0
  23. package/dist/commands/update.js +15 -4
  24. package/dist/commands/update.js.map +1 -1
  25. package/dist/core/skill-emitter.d.ts +37 -0
  26. package/dist/core/skill-emitter.js +333 -0
  27. package/dist/core/skill-emitter.js.map +1 -0
  28. package/dist/core/skill-generator.d.ts +27 -0
  29. package/dist/core/skill-generator.js +100 -0
  30. package/dist/core/skill-generator.js.map +1 -0
  31. package/dist/eval/anthropic-catalog.d.ts +49 -0
  32. package/dist/eval/anthropic-catalog.js +238 -0
  33. package/dist/eval/anthropic-catalog.js.map +1 -0
  34. package/dist/eval/llm.d.ts +1 -1
  35. package/dist/eval/llm.js +68 -10
  36. package/dist/eval/llm.js.map +1 -1
  37. package/dist/eval/mcp-detector.js +24 -3
  38. package/dist/eval/mcp-detector.js.map +1 -1
  39. package/dist/eval/model-resolver.d.ts +39 -0
  40. package/dist/eval/model-resolver.js +94 -0
  41. package/dist/eval/model-resolver.js.map +1 -0
  42. package/dist/eval/pricing.js +42 -16
  43. package/dist/eval/pricing.js.map +1 -1
  44. package/dist/eval/skill-scanner.d.ts +0 -5
  45. package/dist/eval/skill-scanner.js +0 -12
  46. package/dist/eval/skill-scanner.js.map +1 -1
  47. package/dist/eval-server/api-routes.d.ts +1 -0
  48. package/dist/eval-server/api-routes.js +191 -63
  49. package/dist/eval-server/api-routes.js.map +1 -1
  50. package/dist/eval-server/authoring-routes.js +21 -1
  51. package/dist/eval-server/authoring-routes.js.map +1 -1
  52. package/dist/eval-server/boot-preflight.js +8 -10
  53. package/dist/eval-server/boot-preflight.js.map +1 -1
  54. package/dist/eval-server/darwin-migrator.d.ts +57 -0
  55. package/dist/eval-server/darwin-migrator.js +169 -0
  56. package/dist/eval-server/darwin-migrator.js.map +1 -0
  57. package/dist/eval-server/eval-server.d.ts +1 -0
  58. package/dist/eval-server/eval-server.js +10 -0
  59. package/dist/eval-server/eval-server.js.map +1 -1
  60. package/dist/eval-server/providers.d.ts +7 -12
  61. package/dist/eval-server/providers.js +13 -15
  62. package/dist/eval-server/providers.js.map +1 -1
  63. package/dist/eval-server/settings-store.d.ts +17 -19
  64. package/dist/eval-server/settings-store.js +192 -189
  65. package/dist/eval-server/settings-store.js.map +1 -1
  66. package/dist/eval-server/skill-create-routes.d.ts +62 -0
  67. package/dist/eval-server/skill-create-routes.js +97 -132
  68. package/dist/eval-server/skill-create-routes.js.map +1 -1
  69. package/dist/eval-ui/assets/{CommandPalette-6cLEufX0.js → CommandPalette-DAWyTgXL.js} +1 -1
  70. package/dist/eval-ui/assets/CreateSkillPage-D5xmvnzV.js +12 -0
  71. package/dist/eval-ui/assets/UpdateDropdown-6bfwsX0-.js +1 -0
  72. package/dist/eval-ui/assets/index-C_-YXE6O.js +102 -0
  73. package/dist/eval-ui/index.html +1 -1
  74. package/dist/first-run-onboarding.d.ts +19 -0
  75. package/dist/first-run-onboarding.js +104 -0
  76. package/dist/first-run-onboarding.js.map +1 -0
  77. package/dist/index.js +21 -0
  78. package/dist/index.js.map +1 -1
  79. package/dist/installer/canonical.d.ts +2 -0
  80. package/dist/installer/canonical.js +33 -3
  81. package/dist/installer/canonical.js.map +1 -1
  82. package/dist/studio/lib/ops-log.js +1 -4
  83. package/dist/studio/lib/ops-log.js.map +1 -1
  84. package/dist/studio/lib/scope-transfer.d.ts +0 -10
  85. package/dist/studio/lib/scope-transfer.js +13 -116
  86. package/dist/studio/lib/scope-transfer.js.map +1 -1
  87. package/dist/studio/routes/ops.js +3 -26
  88. package/dist/studio/routes/ops.js.map +1 -1
  89. package/dist/studio/routes/promote.js +15 -9
  90. package/dist/studio/routes/promote.js.map +1 -1
  91. package/dist/studio/routes/test-install.js +11 -4
  92. package/dist/studio/routes/test-install.js.map +1 -1
  93. package/dist/utils/agent-filter.js +5 -4
  94. package/dist/utils/agent-filter.js.map +1 -1
  95. package/dist/utils/resolve-binary.d.ts +22 -0
  96. package/dist/utils/resolve-binary.js +44 -1
  97. package/dist/utils/resolve-binary.js.map +1 -1
  98. package/package.json +3 -1
  99. package/scripts/preuninstall.cjs +2 -9
  100. package/dist/eval-ui/assets/CreateSkillPage-kn7xDaAP.js +0 -12
  101. package/dist/eval-ui/assets/UpdateDropdown-9qR5NxTi.js +0 -1
  102. package/dist/eval-ui/assets/index-4LdVR3Lo.js +0 -102
@@ -46,7 +46,7 @@
46
46
  }
47
47
  })();
48
48
  </script>
49
- <script type="module" crossorigin src="/assets/index-4LdVR3Lo.js"></script>
49
+ <script type="module" crossorigin src="/assets/index-C_-YXE6O.js"></script>
50
50
  <link rel="stylesheet" crossorigin href="/assets/index-C0Gc_4KC.css">
51
51
  <link rel="stylesheet" crossorigin href="/assets/fonts-i7Lkz2zN.css">
52
52
  </head>
@@ -0,0 +1,19 @@
1
+ import { type ProviderId } from "./eval-server/providers.js";
2
+ export type OnboardingAction = "skip" | "saved" | "declined";
3
+ export interface OnboardingResult {
4
+ action: OnboardingAction;
5
+ provider?: ProviderId;
6
+ }
7
+ export interface OnboardingIO {
8
+ stdout: {
9
+ write: (s: string) => boolean;
10
+ };
11
+ stderr: {
12
+ write: (s: string) => boolean;
13
+ };
14
+ isTTY: () => boolean;
15
+ promptConfirm: (question: string) => Promise<boolean>;
16
+ readMaskedKey: () => Promise<string>;
17
+ env: NodeJS.ProcessEnv;
18
+ }
19
+ export declare function firstRunOnboarding(io?: OnboardingIO): Promise<OnboardingResult>;
@@ -0,0 +1,104 @@
1
+ // ---------------------------------------------------------------------------
2
+ // first-run-onboarding.ts — Prompt user to configure an API key on studio
3
+ // startup if none is detected.
4
+ //
5
+ // Runs BEFORE the browser opens. Skips silently when:
6
+ // - stdin is not a TTY
7
+ // - any provider env var is already set
8
+ // - any provider already has a stored key
9
+ //
10
+ // Otherwise asks yes/no; on yes, reads a masked key and saves it via the
11
+ // store. On any failure path, returns action=declined rather than throwing —
12
+ // studio launch must not be blocked by onboarding.
13
+ // ---------------------------------------------------------------------------
14
+ import { PROVIDERS, } from "./eval-server/providers.js";
15
+ import { saveKey, listKeys, redactKey, } from "./eval-server/settings-store.js";
16
+ import { readSecretFromStdin } from "./commands/masked-stdin.js";
17
+ function defaultPromptConfirm(question) {
18
+ return new Promise((resolve) => {
19
+ process.stdout.write(`${question} (y/N): `);
20
+ const stdin = process.stdin;
21
+ const wasRaw = stdin.isRaw === true;
22
+ if (typeof stdin.setRawMode === "function")
23
+ stdin.setRawMode(true);
24
+ stdin.resume();
25
+ const onData = (buf) => {
26
+ const ch = buf.toString("utf8").toLowerCase();
27
+ cleanup();
28
+ if (ch === "y") {
29
+ process.stdout.write("y\n");
30
+ resolve(true);
31
+ }
32
+ else {
33
+ process.stdout.write("\n");
34
+ resolve(false);
35
+ }
36
+ };
37
+ function cleanup() {
38
+ stdin.removeListener("data", onData);
39
+ if (typeof stdin.setRawMode === "function")
40
+ stdin.setRawMode(wasRaw);
41
+ stdin.pause();
42
+ }
43
+ stdin.on("data", onData);
44
+ });
45
+ }
46
+ function defaultIO() {
47
+ return {
48
+ stdout: process.stdout,
49
+ stderr: process.stderr,
50
+ isTTY: () => !!process.stdin.isTTY,
51
+ promptConfirm: defaultPromptConfirm,
52
+ readMaskedKey: () => readSecretFromStdin(),
53
+ env: process.env,
54
+ };
55
+ }
56
+ /**
57
+ * Returns true if any provider env var is set or any key is stored in the
58
+ * file-backed store.
59
+ */
60
+ function anyProviderConfigured(env) {
61
+ for (const p of PROVIDERS) {
62
+ if (env[p.envVarName])
63
+ return true;
64
+ }
65
+ const list = listKeys();
66
+ for (const p of PROVIDERS) {
67
+ if (list[p.id].stored)
68
+ return true;
69
+ }
70
+ return false;
71
+ }
72
+ export async function firstRunOnboarding(io = defaultIO()) {
73
+ // Non-TTY: never prompt (e.g. CI, piped, detached).
74
+ if (!io.isTTY())
75
+ return { action: "skip" };
76
+ // Already configured → nothing to do.
77
+ if (anyProviderConfigured(io.env))
78
+ return { action: "skip" };
79
+ io.stdout.write("\nNo API key detected. Skill Studio needs an Anthropic API key to run evals.\n");
80
+ const accepted = await io.promptConfirm("Add one now?");
81
+ if (!accepted) {
82
+ io.stdout.write("Skipping. Run `vskill keys set anthropic` later to configure.\n");
83
+ return { action: "declined" };
84
+ }
85
+ io.stdout.write("Paste your Anthropic API key (input masked): ");
86
+ const key = (await io.readMaskedKey()).trim();
87
+ if (!key) {
88
+ io.stdout.write("No key provided. Run `vskill keys set anthropic` later to configure.\n");
89
+ return { action: "declined" };
90
+ }
91
+ try {
92
+ await saveKey("anthropic", key);
93
+ }
94
+ catch (err) {
95
+ // Defense-in-depth redaction; settings-store already scrubs its errors.
96
+ const msg = err.message.replace(key, redactKey(key));
97
+ io.stderr.write(`failed to save key: ${msg}\n`);
98
+ io.stdout.write("Run `vskill keys set anthropic` later to try again.\n");
99
+ return { action: "declined" };
100
+ }
101
+ io.stdout.write(`Saved ${redactKey(key)} for anthropic. Continuing studio launch.\n`);
102
+ return { action: "saved", provider: "anthropic" };
103
+ }
104
+ //# sourceMappingURL=first-run-onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-run-onboarding.js","sourceRoot":"","sources":["../src/first-run-onboarding.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -139,6 +139,16 @@ program
139
139
  const { versionsCommand } = await import("./commands/versions.js");
140
140
  await versionsCommand(skillName, opts);
141
141
  });
142
+ program
143
+ .command("diff <skill> <from> <to>")
144
+ .description("Show multi-file diff between two versions of a skill")
145
+ .option("--stat", "Summary only (filename +N -M per file + total)")
146
+ .option("--json", "Machine-readable raw compare response")
147
+ .option("--files <pattern>", "Glob filter (minimatch)")
148
+ .action(async (skill, from, to, opts) => {
149
+ const { diffCommand } = await import("./commands/diff.js");
150
+ await diffCommand(skill, from, to, opts);
151
+ });
142
152
  program
143
153
  .command("blocklist [subcommand] [name]")
144
154
  .description("Manage the malicious skills blocklist")
@@ -216,5 +226,16 @@ program
216
226
  const { outdatedCommand } = await import("./commands/outdated.js");
217
227
  await outdatedCommand(opts);
218
228
  });
229
+ // 0670: vskill skill {new|import|list|info|publish} — skill-builder workflow.
230
+ const { registerSkillCommand } = await import("./commands/skill.js");
231
+ registerSkillCommand(program);
232
+ // 0702: vskill keys {set|list|remove|path} — cross-platform API key storage.
233
+ program
234
+ .command("keys [subcommand] [provider]")
235
+ .description("Manage API keys stored at ~/.vskill/keys.env (set|list|remove|path)")
236
+ .action(async (subcommand, provider) => {
237
+ const { keysCommand } = await import("./commands/keys.js");
238
+ await keysCommand(subcommand, provider);
239
+ });
219
240
  program.parse();
220
241
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface InstallOptions {
17
17
  */
18
18
  export declare function resolveAgentSkillsDir(agent: AgentDefinition, opts: InstallOptions): string;
19
19
  export declare function ensureCanonicalDir(base: string, global: boolean): string;
20
+ /** Test-only helper to reset the module-scoped symlink-warning flag. */
21
+ export declare function __resetSymlinkWarning(): void;
20
22
  export declare function createRelativeSymlink(target: string, linkPath: string): boolean;
21
23
  /**
22
24
  * Install a skill using the canonical symlink approach:
@@ -1,5 +1,7 @@
1
1
  import { mkdirSync, writeFileSync, symlinkSync, lstatSync, rmSync } from "node:fs";
2
- import { join, relative, dirname } from "node:path";
2
+ // 0706 T-004: `relative` + `sep` (as pathSep) power the cross-platform
3
+ // path-traversal guard. `path.relative` handles Windows backslash correctly.
4
+ import { join, relative, dirname, sep as pathSep } from "node:path";
3
5
  import os from "node:os";
4
6
  import { ensureFrontmatter, stripClaudeFields } from "./frontmatter.js";
5
7
  /**
@@ -35,7 +37,13 @@ export function resolveAgentSkillsDir(agent, opts) {
35
37
  }
36
38
  const resolved = join(opts.projectRoot, agent.localSkillsDir);
37
39
  const normalizedRoot = join(opts.projectRoot, ".");
38
- if (resolved !== normalizedRoot && !resolved.startsWith(normalizedRoot + "/")) {
40
+ // 0706 T-004: switch from `resolved.startsWith(normalizedRoot + "/")` to
41
+ // `path.relative()`. The old check hardcoded `/` as the separator, which
42
+ // false-positives on Windows where `path.join` emits `\`. `path.relative`
43
+ // returns a path starting with `..` iff the target escapes the base —
44
+ // works correctly on POSIX and win32 without separator juggling.
45
+ const rel = relative(normalizedRoot, resolved);
46
+ if (resolved !== normalizedRoot && (rel === ".." || rel.startsWith(".." + pathSep) || rel.startsWith("../"))) {
39
47
  throw new Error(`Path traversal detected: ${agent.localSkillsDir} resolves above project root ${opts.projectRoot}`);
40
48
  }
41
49
  return resolved;
@@ -53,6 +61,16 @@ export function ensureCanonicalDir(base, global) {
53
61
  mkdirSync(dir, { recursive: true });
54
62
  return dir;
55
63
  }
64
+ /**
65
+ * 0706 T-006: module-scoped flag so we only warn once per process about
66
+ * missing symlink permissions (Windows without Developer Mode / without
67
+ * Administrator). Exported `__resetSymlinkWarning` is for tests only.
68
+ */
69
+ let warnedAboutSymlinkFallback = false;
70
+ /** Test-only helper to reset the module-scoped symlink-warning flag. */
71
+ export function __resetSymlinkWarning() {
72
+ warnedAboutSymlinkFallback = false;
73
+ }
56
74
  export function createRelativeSymlink(target, linkPath) {
57
75
  try {
58
76
  const relTarget = relative(dirname(linkPath), target);
@@ -69,7 +87,19 @@ export function createRelativeSymlink(target, linkPath) {
69
87
  symlinkSync(relTarget, linkPath, "dir");
70
88
  return true;
71
89
  }
72
- catch {
90
+ catch (err) {
91
+ // 0706 T-006: warn ONCE per process when we hit a permission-related
92
+ // symlink failure (Windows without Developer Mode / Administrator) —
93
+ // before, the error was silent, which made the Windows fallback
94
+ // invisible to users. For any other failure we preserve the prior
95
+ // contract (return false and let the caller copy) so pre-existing
96
+ // installs and tests keep working; only the user-facing diagnostics
97
+ // change here.
98
+ if ((err?.code === "EPERM" || err?.code === "EACCES") &&
99
+ !warnedAboutSymlinkFallback) {
100
+ console.error("Symlinks not available — copying files (enable Developer Mode to use symlinks)");
101
+ warnedAboutSymlinkFallback = true;
102
+ }
73
103
  return false;
74
104
  }
75
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/installer/canonical.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/installer/canonical.ts"],"names":[],"mappings":"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"}
@@ -16,10 +16,7 @@ import { homedir } from "node:os";
16
16
  import { EventEmitter } from "node:events";
17
17
  const APPEND_FLAGS = "a";
18
18
  const emitter = new EventEmitter();
19
- // LOG-003: cap listeners at a realistic upper bound (not Infinity). A single
20
- // OpsDrawer session subscribes 1 listener; 100 is generous for tests running
21
- // in parallel while still surfacing real leaks as a Node warning.
22
- emitter.setMaxListeners(100);
19
+ emitter.setMaxListeners(0);
23
20
  export function getLogPath() {
24
21
  return process.env.VSKILL_OPS_LOG_PATH || join(homedir(), ".vskill", "studio-ops.jsonl");
25
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ops-log.js","sourceRoot":"","sources":["../../../src/studio/lib/ops-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops-log.js","sourceRoot":"","sources":["../../../src/studio/lib/ops-log.ts"],"names":[],"mappings":"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"}
@@ -24,15 +24,5 @@ export declare class MissingSourceError extends Error {
24
24
  readonly code: "missing-source";
25
25
  constructor(path: string);
26
26
  }
27
- /**
28
- * SEC-001: Thrown when plugin/skill identifiers fail the safe-slug check OR
29
- * when a resolved path escapes its scope root (e.g., via symlink traversal).
30
- * Routes translate this to HTTP 400 `{ok:false, code:"invalid_path"}`.
31
- */
32
- export declare class InvalidSkillRefError extends Error {
33
- readonly code: "invalid_path";
34
- constructor(message: string);
35
- }
36
- export declare function assertSafeSkillRef(plugin: string, skill: string): void;
37
27
  export declare function resolveScopePath(scope: SkillScope, root: string, skill: string, home: string): string;
38
28
  export declare function transfer(req: TransferRequest, emit: SSEEmit): Promise<TransferResult>;
@@ -12,21 +12,10 @@
12
12
  //
13
13
  // Provenance sidecar (.vskill-meta.json) must NEVER leak out of OWN scope —
14
14
  // filtered inside transfer before invoking copy.
15
- //
16
- // Path-safety contract (SEC-001):
17
- // - plugin/skill identifiers MUST match /^[A-Za-z0-9._-]+$/ (no `/`, no `..`,
18
- // no null bytes). Reject with InvalidSkillRefError otherwise.
19
- // - After resolving a scope path, we re-verify the resolved absolute path
20
- // stays under its scope root. Any escape (symlink, manual `..`) throws
21
- // InvalidSkillRefError. Routes translate this to HTTP 400.
22
- //
23
- // Collision atomicity (LOG-001):
24
- // - transfer() uses `mkdirSync(dest, { recursive: false })` as the atomic
25
- // collision gate. EEXIST → CollisionError. Callers must NOT pre-check.
26
15
  // ---------------------------------------------------------------------------
27
16
  import { existsSync, rmSync, readdirSync, statSync, copyFileSync, mkdirSync } from "node:fs";
28
- import { join, resolve, sep } from "node:path";
29
- import { copyPluginFiltered, shouldSkipFromCommands, } from "../../shared/copy-plugin-filtered.js";
17
+ import { join, basename } from "node:path";
18
+ import { copyPluginFiltered, isSkillMdCandidate, shouldSkipFromCommands, } from "../../shared/copy-plugin-filtered.js";
30
19
  export class CollisionError extends Error {
31
20
  path;
32
21
  code = "collision";
@@ -45,83 +34,16 @@ export class MissingSourceError extends Error {
45
34
  this.path = path;
46
35
  }
47
36
  }
48
- /**
49
- * SEC-001: Thrown when plugin/skill identifiers fail the safe-slug check OR
50
- * when a resolved path escapes its scope root (e.g., via symlink traversal).
51
- * Routes translate this to HTTP 400 `{ok:false, code:"invalid_path"}`.
52
- */
53
- export class InvalidSkillRefError extends Error {
54
- code = "invalid_path";
55
- constructor(message) {
56
- super(message);
57
- this.name = "InvalidSkillRefError";
58
- }
59
- }
60
- /**
61
- * SEC-001: Strict slug validator. Accepts only lowercase alphanumeric plus
62
- * `-` and `_`, 1-64 chars, first char must be alphanumeric. No slashes, no
63
- * `..`, no null bytes, no leading dot/dash/underscore, no uppercase, no
64
- * whitespace. Applied uniformly to BOTH `plugin` and `skill` identifiers.
65
- *
66
- * Why this shape: these values come off URL path params (`/api/skills/:plugin/:skill/...`)
67
- * and flow directly into `path.join` / `rmSync`. A stricter grammar than the
68
- * underlying filesystem permits gives us belt-and-braces defense against path
69
- * traversal; legitimate skill/plugin names already conform to this shape.
70
- */
71
- const SAFE_SLUG = /^[a-z0-9][a-z0-9_-]{0,63}$/;
72
- export function assertSafeSkillRef(plugin, skill) {
73
- if (typeof plugin !== "string" || !SAFE_SLUG.test(plugin)) {
74
- throw new InvalidSkillRefError(`invalid plugin identifier: ${JSON.stringify(plugin)}`);
75
- }
76
- if (typeof skill !== "string" || !SAFE_SLUG.test(skill)) {
77
- throw new InvalidSkillRefError(`invalid skill identifier: ${JSON.stringify(skill)}`);
78
- }
79
- }
80
- /**
81
- * SEC-001: Returns the scope-root dir (NOT skill dir) — used for the
82
- * prefix-verification check after resolveScopePath().
83
- */
84
- function scopeRootDir(scope, root, home) {
37
+ export function resolveScopePath(scope, root, skill, home) {
85
38
  switch (scope) {
86
39
  case "own":
87
- return join(root, "skills");
40
+ return join(root, "skills", skill);
88
41
  case "installed":
89
- return join(root, ".claude", "skills");
42
+ return join(root, ".claude", "skills", skill);
90
43
  case "global":
91
- return join(home, ".claude", "skills");
44
+ return join(home, ".claude", "skills", skill);
92
45
  }
93
46
  }
94
- /**
95
- * SEC-001: After joining, verify the resolved absolute path stays under the
96
- * scope root. This defends against path-traversal even if future callers
97
- * bypass assertSafeSkillRef.
98
- */
99
- function assertPathUnderRoot(scopeRoot, candidate) {
100
- const rootResolved = resolve(scopeRoot);
101
- const candidateResolved = resolve(candidate);
102
- // Must be inside rootResolved — either equal (unlikely, but defensive) OR
103
- // prefixed by rootResolved + sep.
104
- if (candidateResolved !== rootResolved &&
105
- !candidateResolved.startsWith(rootResolved + sep)) {
106
- throw new InvalidSkillRefError(`resolved path escapes scope root: ${candidateResolved} not under ${rootResolved}`);
107
- }
108
- }
109
- export function resolveScopePath(scope, root, skill, home) {
110
- // SEC-001: validate skill identifier BEFORE joining. Every callsite
111
- // (routes, transfer) funnels through resolveScopePath, so enforcing the
112
- // contract here is the single source of truth. `plugin` is validated
113
- // separately in transfer() since it isn't part of the path computation
114
- // here — but routes also validate both before calling resolveScopePath.
115
- if (typeof skill !== "string" || !SAFE_SLUG.test(skill)) {
116
- throw new InvalidSkillRefError(`invalid skill identifier: ${JSON.stringify(skill)}`);
117
- }
118
- const base = scopeRootDir(scope, root, home);
119
- const candidate = join(base, skill);
120
- // Belt-and-braces: re-verify the resolved absolute path stays under the
121
- // scope root. Defends against intermediate symlinks and any future bypass.
122
- assertPathUnderRoot(base, candidate);
123
- return candidate;
124
- }
125
47
  /**
126
48
  * Count files written recursively into a directory — used for the SSE
127
49
  * `copied` event payload.
@@ -142,9 +64,6 @@ function countFiles(dir) {
142
64
  * Copy a OWN skill directory filtering out `.vskill-meta.json`. Unlike
143
65
  * copyPluginFiltered this does not do the plugin-root flattening, because
144
66
  * OWN → INSTALLED|GLOBAL is a straight skill-dir copy with one exclusion.
145
- *
146
- * NOTE: target dir must already exist (created by the atomic-mkdir gate in
147
- * transfer()). This function does NOT create the outer targetDir.
148
67
  */
149
68
  function copyOwnSkillFiltered(sourceDir, targetDir, relBase = "") {
150
69
  mkdirSync(targetDir, { recursive: true });
@@ -161,43 +80,21 @@ function copyOwnSkillFiltered(sourceDir, targetDir, relBase = "") {
161
80
  copyFileSync(sourcePath, join(targetDir, entry));
162
81
  }
163
82
  }
83
+ void isSkillMdCandidate;
84
+ void basename;
164
85
  }
165
86
  export async function transfer(req, emit) {
166
- // SEC-001: validate identifiers BEFORE any fs call.
167
- assertSafeSkillRef(req.plugin, req.skill);
168
87
  const sourcePath = resolveScopePath(req.fromScope, req.root, req.skill, req.home);
169
88
  const destPath = resolveScopePath(req.toScope, req.root, req.skill, req.home);
170
89
  if (!existsSync(sourcePath)) {
171
90
  throw new MissingSourceError(sourcePath);
172
91
  }
173
- // LOG-001: atomic collision gate via exclusive mkdir.
174
- // - overwrite=false → mkdir exclusive; EEXIST → CollisionError
175
- // - overwrite=true → rmSync (still under prefix-check) then exclusive mkdir
176
- if (req.overwrite) {
177
- if (existsSync(destPath)) {
178
- // Defense-in-depth: re-verify destPath is inside its scope root before
179
- // destroying it. resolveScopePath already asserted this, but an
180
- // intermediate symlink could have changed meaning; keep the guard.
181
- assertPathUnderRoot(scopeRootDir(req.toScope, req.root, req.home), destPath);
182
- rmSync(destPath, { recursive: true, force: true });
183
- }
184
- }
185
- try {
186
- mkdirSync(destPath, { recursive: false });
92
+ if (existsSync(destPath) && !req.overwrite) {
93
+ throw new CollisionError(destPath);
187
94
  }
188
- catch (err) {
189
- const code = err?.code;
190
- if (code === "EEXIST") {
191
- throw new CollisionError(destPath);
192
- }
193
- if (code === "ENOENT") {
194
- // Parent dir missing — create it and retry once. The outer `.claude/skills`
195
- // scope root may not exist yet on first use.
196
- mkdirSync(destPath, { recursive: true });
197
- }
198
- else {
199
- throw err;
200
- }
95
+ // If overwrite, clear the destination first so stale files aren't left behind.
96
+ if (existsSync(destPath) && req.overwrite) {
97
+ rmSync(destPath, { recursive: true, force: true });
201
98
  }
202
99
  // Branch on direction — OWN → * uses the sidecar-filtering copier,
203
100
  // * → OWN uses the plugin-root copier (which already ignores PLUGIN.md etc
@@ -1 +1 @@
1
- {"version":3,"file":"scope-transfer.js","sourceRoot":"","sources":["../../../src/studio/lib/scope-transfer.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,qCAAqC;AACrC,EAAE;AACF,gCAAgC;AAChC,wCAAwC;AACxC,iGAAiG;AACjG,gDAAgD;AAChD,EAAE;AACF,4EAA4E;AAC5E,iDAAiD;AACjD,EAAE;AACF,kCAAkC;AAClC,gFAAgF;AAChF,kEAAkE;AAClE,4EAA4E;AAC5E,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,iCAAiC;AACjC,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAoB9C,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,CAAS;IACb,IAAI,GAAG,WAAoB,CAAC;IACrC,YAAY,IAAY;QACtB,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAS;IACb,IAAI,GAAG,gBAAyB,CAAC;IAC1C,YAAY,IAAY;QACtB,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,GAAG,cAAuB,CAAC;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,KAAa;IAC9D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,oBAAoB,CAAC,8BAA8B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,oBAAoB,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAiB,EAAE,IAAY,EAAE,IAAY;IACjE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9B,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,SAAiB,EAAE,SAAiB;IAC/D,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,0EAA0E;IAC1E,kCAAkC;IAClC,IACE,iBAAiB,KAAK,YAAY;QAClC,CAAC,iBAAiB,CAAC,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,EACjD,CAAC;QACD,MAAM,IAAI,oBAAoB,CAC5B,qCAAqC,iBAAiB,cAAc,YAAY,EAAE,CACnF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAiB,EACjB,IAAY,EACZ,KAAa,EACb,IAAY;IAEZ,oEAAoE;IACpE,wEAAwE;IACxE,qEAAqE;IACrE,uEAAuE;IACvE,wEAAwE;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,oBAAoB,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,wEAAwE;IACxE,2EAA2E;IAC3E,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,CAAC,WAAW,EAAE;YAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;aACvC,IAAI,EAAE,CAAC,MAAM,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAO,GAAG,EAAE;IAC9E,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,mBAAmB;YAAE,SAAS;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAoB,EAAE,IAAa;IAChE,oDAAoD;IACpD,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAE9E,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,sDAAsD;IACtD,+DAA+D;IAC/D,6EAA6E;IAC7E,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,uEAAuE;YACvE,gEAAgE;YAChE,mEAAmE;YACnE,mBAAmB,CACjB,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAC7C,QAAQ,CACT,CAAC;YACF,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;QAClD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,4EAA4E;YAC5E,6CAA6C;YAC7C,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,2EAA2E;IAC3E,qCAAqC;IACrC,IAAI,GAAG,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC5B,oBAAoB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE1C,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAEvC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"scope-transfer.js","sourceRoot":"","sources":["../../../src/studio/lib/scope-transfer.ts"],"names":[],"mappings":"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"}
@@ -32,45 +32,22 @@ export function registerOpsRoutes(router) {
32
32
  try {
33
33
  sendSSE(res, "op", op);
34
34
  }
35
- catch (err) {
36
- // SIL-001: only swallow benign client-disconnect errors. Anything
37
- // else should surface so real bugs are visible.
38
- const code = err?.code;
39
- if (code === "ERR_STREAM_WRITE_AFTER_END" || code === "EPIPE") {
40
- // Client disconnected mid-write — expected, silent.
41
- return;
42
- }
43
- const msg = err instanceof Error ? err.message : String(err);
44
- console.warn(`[ops/stream] sendSSE(op) failed: ${msg.slice(0, 200)}`);
35
+ catch {
36
+ // Writing after stream close safe to swallow.
45
37
  }
46
38
  });
47
39
  const heartbeat = setInterval(() => {
48
40
  try {
49
41
  sendSSE(res, "heartbeat", { ts: Date.now() });
50
42
  }
51
- catch (err) {
52
- const code = err?.code;
53
- if (code === "ERR_STREAM_WRITE_AFTER_END" || code === "EPIPE") {
54
- return;
55
- }
56
- const msg = err instanceof Error ? err.message : String(err);
57
- console.warn(`[ops/stream] sendSSE(heartbeat) failed: ${msg.slice(0, 200)}`);
58
- }
43
+ catch { }
59
44
  }, 3000);
60
- // LOG-003: cleanup must fire for BOTH req close (client disconnected)
61
- // AND res close (socket error / backpressure stall). Guard with a
62
- // flag so a double-fire is safe and idempotent.
63
- let cleaned = false;
64
45
  const cleanup = () => {
65
- if (cleaned)
66
- return;
67
- cleaned = true;
68
46
  clearInterval(heartbeat);
69
47
  unsub();
70
48
  };
71
49
  req.on("close", cleanup);
72
50
  req.on("aborted", cleanup);
73
- res.on("close", cleanup);
74
51
  });
75
52
  // DELETE /api/studio/ops/:id — tombstone.
76
53
  router.delete("/api/studio/ops/:id", async (req, res, params) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../../src/studio/routes/ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../../src/studio/routes/ops.ts"],"names":[],"mappings":"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"}