vskill 1.0.14 → 1.0.16

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 (122) hide show
  1. package/README.md +61 -0
  2. package/agents.json +1 -1
  3. package/dist/agents/agents-registry.d.ts +8 -3
  4. package/dist/agents/agents-registry.js.map +1 -1
  5. package/dist/bin.js +0 -0
  6. package/dist/clone/github-scaffold.d.ts +38 -0
  7. package/dist/clone/github-scaffold.js +108 -0
  8. package/dist/clone/github-scaffold.js.map +1 -0
  9. package/dist/clone/provenance-fork.d.ts +34 -0
  10. package/dist/clone/provenance-fork.js +97 -0
  11. package/dist/clone/provenance-fork.js.map +1 -0
  12. package/dist/clone/reference-scanner.d.ts +19 -0
  13. package/dist/clone/reference-scanner.js +144 -0
  14. package/dist/clone/reference-scanner.js.map +1 -0
  15. package/dist/clone/skill-locator.d.ts +26 -0
  16. package/dist/clone/skill-locator.js +248 -0
  17. package/dist/clone/skill-locator.js.map +1 -0
  18. package/dist/clone/target-router.d.ts +73 -0
  19. package/dist/clone/target-router.js +200 -0
  20. package/dist/clone/target-router.js.map +1 -0
  21. package/dist/clone/types.d.ts +82 -0
  22. package/dist/clone/types.js +11 -0
  23. package/dist/clone/types.js.map +1 -0
  24. package/dist/commands/add.js +96 -32
  25. package/dist/commands/add.js.map +1 -1
  26. package/dist/commands/auth.d.ts +23 -0
  27. package/dist/commands/auth.js +273 -0
  28. package/dist/commands/auth.js.map +1 -0
  29. package/dist/commands/clone-prompts.d.ts +13 -0
  30. package/dist/commands/clone-prompts.js +67 -0
  31. package/dist/commands/clone-prompts.js.map +1 -0
  32. package/dist/commands/clone.d.ts +70 -0
  33. package/dist/commands/clone.js +649 -0
  34. package/dist/commands/clone.js.map +1 -0
  35. package/dist/commands/eval/serve.js +8 -1
  36. package/dist/commands/eval/serve.js.map +1 -1
  37. package/dist/commands/keys.js +54 -2
  38. package/dist/commands/keys.js.map +1 -1
  39. package/dist/eval/skill-scanner.d.ts +2 -12
  40. package/dist/eval/skill-scanner.js +27 -5
  41. package/dist/eval/skill-scanner.js.map +1 -1
  42. package/dist/eval-server/api-routes.js +527 -35
  43. package/dist/eval-server/api-routes.js.map +1 -1
  44. package/dist/eval-server/data-events.d.ts +1 -1
  45. package/dist/eval-server/data-events.js.map +1 -1
  46. package/dist/eval-server/eval-server.js +8 -1
  47. package/dist/eval-server/eval-server.js.map +1 -1
  48. package/dist/eval-server/install-engine-routes-helpers.d.ts +1 -3
  49. package/dist/eval-server/install-engine-routes-helpers.js +6 -14
  50. package/dist/eval-server/install-engine-routes-helpers.js.map +1 -1
  51. package/dist/eval-server/install-state-routes.d.ts +21 -0
  52. package/dist/eval-server/install-state-routes.js +111 -0
  53. package/dist/eval-server/install-state-routes.js.map +1 -0
  54. package/dist/eval-server/origin-resolver.d.ts +42 -0
  55. package/dist/eval-server/origin-resolver.js +168 -0
  56. package/dist/eval-server/origin-resolver.js.map +1 -0
  57. package/dist/eval-server/platform-proxy.d.ts +10 -0
  58. package/dist/eval-server/platform-proxy.js +58 -2
  59. package/dist/eval-server/platform-proxy.js.map +1 -1
  60. package/dist/eval-server/skill-resolver.js +40 -0
  61. package/dist/eval-server/skill-resolver.js.map +1 -1
  62. package/dist/eval-server/utils/resolve-editor.d.ts +6 -1
  63. package/dist/eval-server/utils/resolve-editor.js +11 -26
  64. package/dist/eval-server/utils/resolve-editor.js.map +1 -1
  65. package/dist/eval-server/utils/scan-install-locations.d.ts +7 -0
  66. package/dist/eval-server/utils/scan-install-locations.js +20 -0
  67. package/dist/eval-server/utils/scan-install-locations.js.map +1 -1
  68. package/dist/eval-server/utils/which.d.ts +15 -0
  69. package/dist/eval-server/utils/which.js +76 -0
  70. package/dist/eval-server/utils/which.js.map +1 -0
  71. package/dist/eval-ui/assets/{CreateSkillPage-CKvqAya0.js → CreateSkillPage-CvdYq8Rr.js} +5 -5
  72. package/dist/eval-ui/assets/{FindSkillsPalette-B8pTa5NP.js → FindSkillsPalette-DsSgotS9.js} +2 -2
  73. package/dist/eval-ui/assets/{SearchPaletteCore-CkVRvaZk.js → SearchPaletteCore-Bf3PBC64.js} +2 -2
  74. package/dist/eval-ui/assets/SkillDetailPanel-DAD2yJO-.js +1 -0
  75. package/dist/eval-ui/assets/{UpdateDropdown-DA7OktXO.js → UpdateDropdown-h5Hg3h7Z.js} +1 -1
  76. package/dist/eval-ui/assets/{index-BKAvJDDF.css → index-CKLqBL52.css} +1 -1
  77. package/dist/eval-ui/assets/index-JaDg6FlU.js +124 -0
  78. package/dist/eval-ui/index.html +2 -2
  79. package/dist/index.js +39 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/installer/canonical.js +2 -11
  82. package/dist/installer/canonical.js.map +1 -1
  83. package/dist/installer/frontmatter.d.ts +26 -0
  84. package/dist/installer/frontmatter.js +91 -1
  85. package/dist/installer/frontmatter.js.map +1 -1
  86. package/dist/lib/github-fetch.d.ts +22 -0
  87. package/dist/lib/github-fetch.js +152 -0
  88. package/dist/lib/github-fetch.js.map +1 -0
  89. package/dist/lib/keychain.d.ts +41 -0
  90. package/dist/lib/keychain.js +232 -0
  91. package/dist/lib/keychain.js.map +1 -0
  92. package/dist/studio/lib/provenance.js +3 -2
  93. package/dist/studio/lib/provenance.js.map +1 -1
  94. package/dist/studio/lib/query.d.ts +1 -0
  95. package/dist/studio/lib/query.js +7 -0
  96. package/dist/studio/lib/query.js.map +1 -0
  97. package/dist/studio/lib/scope-transfer.d.ts +6 -0
  98. package/dist/studio/lib/scope-transfer.js +5 -2
  99. package/dist/studio/lib/scope-transfer.js.map +1 -1
  100. package/dist/studio/routes/index.js +3 -0
  101. package/dist/studio/routes/index.js.map +1 -1
  102. package/dist/studio/routes/ops.js +1 -3
  103. package/dist/studio/routes/ops.js.map +1 -1
  104. package/dist/studio/routes/promote.js +1 -3
  105. package/dist/studio/routes/promote.js.map +1 -1
  106. package/dist/studio/routes/revert.js +2 -17
  107. package/dist/studio/routes/revert.js.map +1 -1
  108. package/dist/studio/routes/test-install.js +1 -3
  109. package/dist/studio/routes/test-install.js.map +1 -1
  110. package/dist/studio/types.d.ts +13 -0
  111. package/dist/utils/claude-plugin.d.ts +26 -0
  112. package/dist/utils/claude-plugin.js +60 -0
  113. package/dist/utils/claude-plugin.js.map +1 -1
  114. package/dist/utils/skill-builder-detection.d.ts +14 -1
  115. package/dist/utils/skill-builder-detection.js +20 -8
  116. package/dist/utils/skill-builder-detection.js.map +1 -1
  117. package/dist/utils/skill-creator-detection.d.ts +10 -2
  118. package/dist/utils/skill-creator-detection.js +12 -43
  119. package/dist/utils/skill-creator-detection.js.map +1 -1
  120. package/package.json +2 -1
  121. package/dist/eval-ui/assets/SkillDetailPanel-d4_LquVH.js +0 -1
  122. package/dist/eval-ui/assets/index-DCbohW6l.js +0 -122
@@ -0,0 +1,232 @@
1
+ // ---------------------------------------------------------------------------
2
+ // keychain.ts — OS-level secure storage for the vskill CLI's GitHub token.
3
+ //
4
+ // Backend selection (in order):
5
+ // 1. @napi-rs/keyring (macOS Keychain / Windows DPAPI / libsecret on Linux)
6
+ // 2. ~/.vskill/keys.env file with mode 0600 (when keyring is unavailable —
7
+ // headless Linux without keyring daemon, sandboxed environments, etc.)
8
+ //
9
+ // Public surface:
10
+ // - getGitHubToken(): string | null
11
+ // - setGitHubToken(token: string): void
12
+ // - clearGitHubToken(): boolean /// true if a token was removed
13
+ //
14
+ // Tokens are NEVER logged. Callers should redact via `redactToken()` before
15
+ // any user-facing output.
16
+ //
17
+ // Service identity:
18
+ // - service: "vskill-github"
19
+ // - account: "github_token"
20
+ // ---------------------------------------------------------------------------
21
+ import * as nodeFs from "node:fs";
22
+ import * as nodePath from "node:path";
23
+ import * as nodeOs from "node:os";
24
+ export const SERVICE_NAME = "vskill-github";
25
+ export const GITHUB_TOKEN_KEY = "github_token";
26
+ const DEFAULT_FALLBACK = nodePath.join(nodeOs.homedir(), ".vskill", "keys.env");
27
+ const defaultFs = {
28
+ readFileSync: (p) => nodeFs.readFileSync(p, { encoding: "utf8" }),
29
+ writeFileSync: (p, c, mode) => nodeFs.writeFileSync(p, c, { encoding: "utf8", mode }),
30
+ chmodSync: (p, mode) => nodeFs.chmodSync(p, mode),
31
+ existsSync: (p) => nodeFs.existsSync(p),
32
+ mkdirSync: (p) => nodeFs.mkdirSync(p, { recursive: true, mode: 0o700 }),
33
+ unlinkSync: (p) => nodeFs.unlinkSync(p),
34
+ };
35
+ function loadDefaultKeyring() {
36
+ // The native module is loaded lazily so the CLI still boots in environments
37
+ // where the binary isn't available (rare, since @napi-rs/keyring ships
38
+ // prebuilds for the major platforms — but we never want a missing native to
39
+ // crash unrelated subcommands like `vskill --version`).
40
+ try {
41
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
42
+ const mod = require("@napi-rs/keyring");
43
+ return {
44
+ setPassword(service, account, password) {
45
+ const entry = new mod.Entry(service, account);
46
+ entry.setPassword(password);
47
+ },
48
+ getPassword(service, account) {
49
+ try {
50
+ const entry = new mod.Entry(service, account);
51
+ return entry.getPassword();
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ },
57
+ deletePassword(service, account) {
58
+ try {
59
+ const entry = new mod.Entry(service, account);
60
+ return entry.deletePassword();
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ },
66
+ };
67
+ }
68
+ catch {
69
+ return null;
70
+ }
71
+ }
72
+ function parseEnvFile(content) {
73
+ const map = new Map();
74
+ for (const rawLine of content.split(/\r?\n/)) {
75
+ const line = rawLine.trim();
76
+ if (!line || line.startsWith("#"))
77
+ continue;
78
+ const eq = line.indexOf("=");
79
+ if (eq <= 0)
80
+ continue;
81
+ const key = line.slice(0, eq).trim();
82
+ const val = line.slice(eq + 1).trim();
83
+ map.set(key, val);
84
+ }
85
+ return map;
86
+ }
87
+ function serializeEnvMap(map) {
88
+ const lines = [
89
+ "# vskill keys.env — fallback secret store (mode 0600).",
90
+ "# Managed by vskill; edit at your own risk.",
91
+ ];
92
+ for (const [k, v] of map)
93
+ lines.push(`${k}=${v}`);
94
+ return lines.join("\n") + "\n";
95
+ }
96
+ export function createKeychain(opts = {}) {
97
+ const fs = opts.fs ?? defaultFs;
98
+ const fallbackPath = opts.fallbackPath ?? DEFAULT_FALLBACK;
99
+ const warn = opts.warn ?? ((msg) => process.stderr.write(`${msg}\n`));
100
+ let keyring;
101
+ if (opts.keyring !== undefined)
102
+ keyring = opts.keyring;
103
+ else
104
+ keyring = loadDefaultKeyring();
105
+ let warnedFallback = false;
106
+ let fallbackInUse = false;
107
+ function tryKeyring(fn) {
108
+ if (!keyring)
109
+ return { ok: false };
110
+ try {
111
+ return { ok: true, value: fn(keyring) };
112
+ }
113
+ catch {
114
+ return { ok: false };
115
+ }
116
+ }
117
+ function ensureFallbackWarned() {
118
+ fallbackInUse = true;
119
+ if (warnedFallback)
120
+ return;
121
+ warnedFallback = true;
122
+ warn(`vskill: OS keychain unavailable; storing GitHub token at ${fallbackPath} (mode 0600).`);
123
+ }
124
+ function readFallback() {
125
+ if (!fs.existsSync(fallbackPath))
126
+ return new Map();
127
+ try {
128
+ return parseEnvFile(fs.readFileSync(fallbackPath));
129
+ }
130
+ catch {
131
+ return new Map();
132
+ }
133
+ }
134
+ function writeFallback(map) {
135
+ const dir = nodePath.dirname(fallbackPath);
136
+ if (!fs.existsSync(dir))
137
+ fs.mkdirSync(dir);
138
+ fs.writeFileSync(fallbackPath, serializeEnvMap(map), 0o600);
139
+ fs.chmodSync(fallbackPath, 0o600);
140
+ }
141
+ return {
142
+ setGitHubToken(token) {
143
+ if (!token || typeof token !== "string") {
144
+ throw new Error("setGitHubToken: token must be a non-empty string");
145
+ }
146
+ const r = tryKeyring((kr) => kr.setPassword(SERVICE_NAME, GITHUB_TOKEN_KEY, token));
147
+ if (r.ok)
148
+ return;
149
+ ensureFallbackWarned();
150
+ const map = readFallback();
151
+ map.set(GITHUB_TOKEN_KEY, token);
152
+ writeFallback(map);
153
+ },
154
+ getGitHubToken() {
155
+ const r = tryKeyring((kr) => kr.getPassword(SERVICE_NAME, GITHUB_TOKEN_KEY));
156
+ if (r.ok && r.value)
157
+ return r.value;
158
+ if (r.ok && r.value === null) {
159
+ // keyring works but slot is empty — also peek at fallback in case the
160
+ // user set a token before keyring became available, but DO NOT warn
161
+ // because keyring is fine.
162
+ const map = readFallback();
163
+ return map.get(GITHUB_TOKEN_KEY) ?? null;
164
+ }
165
+ ensureFallbackWarned();
166
+ const map = readFallback();
167
+ return map.get(GITHUB_TOKEN_KEY) ?? null;
168
+ },
169
+ clearGitHubToken() {
170
+ let removed = false;
171
+ const r = tryKeyring((kr) => kr.deletePassword(SERVICE_NAME, GITHUB_TOKEN_KEY));
172
+ if (r.ok && r.value)
173
+ removed = true;
174
+ // Always also clear the fallback — defense in depth in case both backends
175
+ // hold copies (e.g., keyring re-enabled after a fallback period).
176
+ if (fs.existsSync(fallbackPath)) {
177
+ const map = readFallback();
178
+ if (map.delete(GITHUB_TOKEN_KEY)) {
179
+ if (map.size === 0) {
180
+ try {
181
+ fs.unlinkSync(fallbackPath);
182
+ }
183
+ catch {
184
+ writeFallback(map);
185
+ }
186
+ }
187
+ else {
188
+ writeFallback(map);
189
+ }
190
+ removed = true;
191
+ }
192
+ }
193
+ return removed;
194
+ },
195
+ usingFallback() {
196
+ return fallbackInUse || keyring === null;
197
+ },
198
+ };
199
+ }
200
+ /**
201
+ * Convenience accessor used by every CLI surface that needs the GitHub token.
202
+ * Lazily constructs a default keychain on first call.
203
+ */
204
+ let _defaultKeychain = null;
205
+ export function getDefaultKeychain() {
206
+ if (_defaultKeychain)
207
+ return _defaultKeychain;
208
+ _defaultKeychain = createKeychain();
209
+ return _defaultKeychain;
210
+ }
211
+ /** Test-only reset hook — never call from production code. */
212
+ export function _resetDefaultKeychainForTests() {
213
+ _defaultKeychain = null;
214
+ }
215
+ export function getGitHubToken() {
216
+ return getDefaultKeychain().getGitHubToken();
217
+ }
218
+ export function setGitHubToken(token) {
219
+ getDefaultKeychain().setGitHubToken(token);
220
+ }
221
+ export function clearGitHubToken() {
222
+ return getDefaultKeychain().clearGitHubToken();
223
+ }
224
+ /** Last-4 redaction for log-safe output. */
225
+ export function redactToken(token) {
226
+ if (!token)
227
+ return "(none)";
228
+ if (token.length <= 8)
229
+ return "****";
230
+ return `****${token.slice(-4)}`;
231
+ }
232
+ //# sourceMappingURL=keychain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/lib/keychain.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,gCAAgC;AAChC,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAC5E,EAAE;AACF,kBAAkB;AAClB,sCAAsC;AACtC,0CAA0C;AAC1C,oEAAoE;AACpE,EAAE;AACF,4EAA4E;AAC5E,0BAA0B;AAC1B,EAAE;AACF,oBAAoB;AACpB,gCAAgC;AAChC,+BAA+B;AAC/B,8EAA8E;AAE9E,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAoC/C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAEhF,MAAM,SAAS,GAAc;IAC3B,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACjE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAC5B,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxD,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;CACxC,CAAC;AAEF,SAAS,kBAAkB;IACzB,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,wDAAwD;IACxD,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAMrC,CAAC;QACF,OAAO;YACL,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ;gBACpC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC9C,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;YACD,WAAW,CAAC,OAAO,EAAE,OAAO;gBAC1B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC9C,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,cAAc,CAAC,OAAO,EAAE,OAAO;gBAC7B,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC9C,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAwB;IAC/C,MAAM,KAAK,GAAa;QACtB,wDAAwD;QACxD,6CAA6C;KAC9C,CAAC;IACF,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAwB,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IAEtE,IAAI,OAA8B,CAAC;IACnC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;QAClD,OAAO,GAAG,kBAAkB,EAAE,CAAC;IAEpC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,SAAS,UAAU,CAAI,EAA6B;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,SAAS,oBAAoB;QAC3B,aAAa,GAAG,IAAI,CAAC;QACrB,IAAI,cAAc;YAAE,OAAO;QAC3B,cAAc,GAAG,IAAI,CAAC;QACtB,IAAI,CACF,4DAA4D,YAAY,eAAe,CACxF,CAAC;IACJ,CAAC;IAED,SAAS,YAAY;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,SAAS,aAAa,CAAC,GAAwB;QAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5D,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO;QACL,cAAc,CAAC,KAAa;YAC1B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,EAAE;gBAAE,OAAO;YACjB,oBAAoB,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;YAC3B,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACjC,aAAa,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAED,cAAc;YACZ,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;YACpC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC7B,sEAAsE;gBACtE,oEAAoE;gBACpE,2BAA2B;gBAC3B,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;gBAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;YAC3C,CAAC;YACD,oBAAoB,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC;QAC3C,CAAC;QAED,gBAAgB;YACd,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAChF,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK;gBAAE,OAAO,GAAG,IAAI,CAAC;YACpC,0EAA0E;YAC1E,kEAAkE;YAClE,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBACjC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBACnB,IAAI,CAAC;4BACH,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;wBAC9B,CAAC;wBAAC,MAAM,CAAC;4BACP,aAAa,CAAC,GAAG,CAAC,CAAC;wBACrB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,aAAa,CAAC,GAAG,CAAC,CAAC;oBACrB,CAAC;oBACD,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,aAAa;YACX,OAAO,aAAa,IAAI,OAAO,KAAK,IAAI,CAAC;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,IAAI,gBAAgB,GAAoB,IAAI,CAAC;AAC7C,MAAM,UAAU,kBAAkB;IAChC,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,gBAAgB,GAAG,cAAc,EAAE,CAAC;IACpC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,6BAA6B;IAC3C,gBAAgB,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,kBAAkB,EAAE,CAAC,cAAc,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,kBAAkB,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,kBAAkB,EAAE,CAAC,gBAAgB,EAAE,CAAC;AACjD,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,KAAgC;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC"}
@@ -22,8 +22,9 @@ export async function readProvenance(skillDir) {
22
22
  catch (err) {
23
23
  const code = err?.code;
24
24
  if (code !== "ENOENT") {
25
- // Parse error or transient IO — log at debug, do not throw.
26
- console.error(`[provenance] readProvenance(${skillDir}) failed: ${err.message}`);
25
+ // Parse error or transient IO — emit a breadcrumb (matches the
26
+ // best-effort pattern used elsewhere; caller still gets null).
27
+ console.warn(`[provenance] readProvenance(${skillDir}) failed: ${err.message}`);
27
28
  }
28
29
  return null;
29
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../../src/studio/lib/provenance.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,0EAA0E;AAC1E,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,CAAa;IACnE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;QAClD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,4DAA4D;YAC5D,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,aAAc,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;QAClD,IAAI,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"provenance.js","sourceRoot":"","sources":["../../../src/studio/lib/provenance.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAC9E,0EAA0E;AAC1E,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AACrE,8EAA8E;AAE9E,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,CAAa;IACnE,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;QAClD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,+DAA+D;YAC/D,+DAA+D;YAC/D,OAAO,CAAC,IAAI,CAAC,+BAA+B,QAAQ,aAAc,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,EAAE,IAAI,CAAC;QAClD,IAAI,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function parseQuery(url: string | undefined): URLSearchParams;
@@ -0,0 +1,7 @@
1
+ // Tiny URL-querystring helper shared by studio routes. Same trick used inline
2
+ // in ~12 other places across eval-server; kept local-scoped for now since the
3
+ // wider extraction touches more files than this simplification pass.
4
+ export function parseQuery(url) {
5
+ return new URL(url || "/", "http://localhost").searchParams;
6
+ }
7
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/studio/lib/query.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,qEAAqE;AAErE,MAAM,UAAU,UAAU,CAAC,GAAuB;IAChD,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC,YAAY,CAAC;AAC9D,CAAC"}
@@ -25,4 +25,10 @@ export declare class MissingSourceError extends Error {
25
25
  constructor(path: string);
26
26
  }
27
27
  export declare function resolveScopePath(scope: SkillScope, root: string, skill: string, home: string): string;
28
+ /**
29
+ * Count files written recursively into a directory — used for the SSE
30
+ * `copied` and `deleted` event payloads. Returns 0 for missing dirs so
31
+ * callers can use it on paths that may have been removed mid-flight.
32
+ */
33
+ export declare function countFiles(dir: string): number;
28
34
  export declare function transfer(req: TransferRequest, emit: SSEEmit): Promise<TransferResult>;
@@ -47,9 +47,12 @@ export function resolveScopePath(scope, root, skill, home) {
47
47
  }
48
48
  /**
49
49
  * Count files written recursively into a directory — used for the SSE
50
- * `copied` event payload.
50
+ * `copied` and `deleted` event payloads. Returns 0 for missing dirs so
51
+ * callers can use it on paths that may have been removed mid-flight.
51
52
  */
52
- function countFiles(dir) {
53
+ export function countFiles(dir) {
54
+ if (!existsSync(dir))
55
+ return 0;
53
56
  let n = 0;
54
57
  for (const entry of readdirSync(dir)) {
55
58
  const full = join(dir, entry);
@@ -1 +1 @@
1
- {"version":3,"file":"scope-transfer.js","sourceRoot":"","sources":["../../../src/studio/lib/scope-transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope-transfer.js","sourceRoot":"","sources":["../../../src/studio/lib/scope-transfer.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import { registerOpsRoutes } from "./ops.js";
13
13
  import { registerDetectEnginesRoute } from "../../eval-server/detect-engines-route.js";
14
14
  import { registerInstallEngineRoutes } from "../../eval-server/install-engine-routes.js";
15
15
  import { registerInstallSkillRoutes } from "../../eval-server/install-skill-routes.js";
16
+ import { registerInstallStateRoutes } from "../../eval-server/install-state-routes.js";
16
17
  export function registerScopeTransferRoutes(router, root) {
17
18
  registerPromoteRoute(router, root);
18
19
  registerTestInstallRoute(router, root);
@@ -21,5 +22,7 @@ export function registerScopeTransferRoutes(router, root) {
21
22
  registerDetectEnginesRoute(router, root);
22
23
  registerInstallEngineRoutes(router, root);
23
24
  registerInstallSkillRoutes(router);
25
+ // 0827 — per-skill install-state for the panel's scope picker.
26
+ registerInstallStateRoutes(router, root);
24
27
  }
25
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/studio/routes/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,qEAAqE;AACrE,cAAc;AACd,8EAA8E;AAG9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,MAAM,UAAU,2BAA2B,CAAC,MAAc,EAAE,IAAY;IACtE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/studio/routes/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAC9E,wEAAwE;AACxE,4EAA4E;AAC5E,qEAAqE;AACrE,cAAc;AACd,8EAA8E;AAG9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;AAEvF,MAAM,UAAU,2BAA2B,CAAC,MAAc,EAAE,IAAY;IACtE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,+DAA+D;IAC/D,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC"}
@@ -8,9 +8,7 @@
8
8
  import { sendJson } from "../../eval-server/router.js";
9
9
  import { initSSE, sendSSE } from "../../eval-server/sse-helpers.js";
10
10
  import { listOps, subscribe, deleteOp } from "../lib/ops-log.js";
11
- function parseQuery(url) {
12
- return new URL(url || "/", "http://localhost").searchParams;
13
- }
11
+ import { parseQuery } from "../lib/query.js";
14
12
  export function registerOpsRoutes(router) {
15
13
  // GET /api/studio/ops?limit=50&before=<ts>
16
14
  router.get("/api/studio/ops", async (req, res) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../../src/studio/routes/ops.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAC9E,iEAAiE;AACjE,2EAA2E;AAC3E,8DAA8D;AAC9D,8EAA8E;AAK9E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE,SAAS,UAAU,CAAC,GAAuB;IACzC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC,YAAY,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,2CAA2C;IAC3C,MAAM,CAAC,GAAG,CACR,iBAAiB,EACjB,KAAK,EAAE,GAAyB,EAAE,GAAwB,EAAE,EAAE;QAC5D,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC;YACxB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC1C,MAAM,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACvE,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;IAEF,4EAA4E;IAC5E,MAAM,CAAC,GAAG,CACR,wBAAwB,EACxB,KAAK,EAAE,GAAyB,EAAE,GAAwB,EAAE,EAAE;QAC5D,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAElB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC;QACV,CAAC,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7B,CAAC,CACF,CAAC;IAEF,0CAA0C;IAC1C,MAAM,CAAC,MAAM,CACX,qBAAqB,EACrB,KAAK,EAAE,GAAyB,EAAE,GAAwB,EAAE,MAA8B,EAAE,EAAE;QAC5F,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnB,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ops.js","sourceRoot":"","sources":["../../../src/studio/routes/ops.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,7 @@ import { initSSE, sendSSE, sendSSEDone } from "../../eval-server/sse-helpers.js"
13
13
  import { transfer, CollisionError, MissingSourceError, resolveScopePath, } from "../lib/scope-transfer.js";
14
14
  import { writeProvenance } from "../lib/provenance.js";
15
15
  import { appendOp } from "../lib/ops-log.js";
16
- function parseQuery(url) {
17
- return new URL(url || "/", "http://localhost").searchParams;
18
- }
16
+ import { parseQuery } from "../lib/query.js";
19
17
  export function registerPromoteRoute(router, root, home = homedir()) {
20
18
  router.post("/api/skills/:plugin/:skill/promote", async (req, res, params) => {
21
19
  const { plugin, skill } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../../src/studio/routes/promote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promote.js","sourceRoot":"","sources":["../../../src/studio/routes/promote.ts"],"names":[],"mappings":"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"}
@@ -8,27 +8,12 @@
8
8
  // ---------------------------------------------------------------------------
9
9
  import { randomUUID } from "node:crypto";
10
10
  import { homedir } from "node:os";
11
- import { existsSync, readdirSync, statSync, rmSync } from "node:fs";
12
- import { join } from "node:path";
11
+ import { existsSync, rmSync } from "node:fs";
13
12
  import { sendJson } from "../../eval-server/router.js";
14
13
  import { initSSE, sendSSE, sendSSEDone } from "../../eval-server/sse-helpers.js";
15
- import { resolveScopePath } from "../lib/scope-transfer.js";
14
+ import { countFiles, resolveScopePath } from "../lib/scope-transfer.js";
16
15
  import { readProvenance } from "../lib/provenance.js";
17
16
  import { appendOp } from "../lib/ops-log.js";
18
- function countFiles(dir) {
19
- let n = 0;
20
- if (!existsSync(dir))
21
- return 0;
22
- for (const entry of readdirSync(dir)) {
23
- const full = join(dir, entry);
24
- const st = statSync(full);
25
- if (st.isDirectory())
26
- n += countFiles(full);
27
- else if (st.isFile())
28
- n += 1;
29
- }
30
- return n;
31
- }
32
17
  export function registerRevertRoute(router, root, home = homedir()) {
33
18
  router.post("/api/skills/:plugin/:skill/revert", async (req, res, params) => {
34
19
  const { plugin, skill } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"revert.js","sourceRoot":"","sources":["../../../src/studio/routes/revert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revert.js","sourceRoot":"","sources":["../../../src/studio/routes/revert.ts"],"names":[],"mappings":"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"}
@@ -14,9 +14,7 @@ import { sendJson } from "../../eval-server/router.js";
14
14
  import { initSSE, sendSSE, sendSSEDone } from "../../eval-server/sse-helpers.js";
15
15
  import { transfer, CollisionError, MissingSourceError, resolveScopePath, } from "../lib/scope-transfer.js";
16
16
  import { appendOp } from "../lib/ops-log.js";
17
- function parseQuery(url) {
18
- return new URL(url || "/", "http://localhost").searchParams;
19
- }
17
+ import { parseQuery } from "../lib/query.js";
20
18
  export function registerTestInstallRoute(router, root, home = homedir()) {
21
19
  router.post("/api/skills/:plugin/:skill/test-install", async (req, res, params) => {
22
20
  const { plugin, skill } = params;
@@ -1 +1 @@
1
- {"version":3,"file":"test-install.js","sourceRoot":"","sources":["../../../src/studio/routes/test-install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-install.js","sourceRoot":"","sources":["../../../src/studio/routes/test-install.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,19 @@ export type Provenance = {
19
19
  sourcePath: string;
20
20
  promotedAt: number;
21
21
  sourceSkillVersion?: string;
22
+ /** Set when this skill was created via `vskill clone`. */
23
+ forkedFrom?: {
24
+ source: string;
25
+ version: string;
26
+ clonedAt: string;
27
+ };
28
+ /** Set when the source itself was a fork — points to the deepest known ancestor. */
29
+ originalSource?: {
30
+ repoUrl?: string;
31
+ skillPath?: string;
32
+ };
33
+ /** Chain of intermediate `forkedFrom.source` values when forking a fork. Oldest-first (`forkChain[0]` is the deepest ancestor; latest intermediate parent is appended at the end). */
34
+ forkChain?: string[];
22
35
  };
23
36
  export type TransferEventName = "started" | "copied" | "deleted" | "indexed" | "done" | "error";
24
37
  export type TransferEvent = {
@@ -1,3 +1,29 @@
1
+ /**
2
+ * 0826: Add a Claude Code plugin marketplace via the claude CLI.
3
+ *
4
+ * Delegates to: claude plugin marketplace add --scope <scope> -- <source>
5
+ *
6
+ * Required when installing plugins from a marketplace that hasn't been
7
+ * registered yet — `claude plugin install foo@bar` fails with "Plugin foo
8
+ * not found in marketplace bar" until the marketplace itself is added.
9
+ *
10
+ * Safe to call against an already-registered marketplace: claude prints a
11
+ * "marketplace already exists" message and exits 0.
12
+ *
13
+ * @throws if the claude binary is not found or the add fails (network,
14
+ * invalid source, etc.). Callers should `try/catch` and surface a
15
+ * user-friendly error.
16
+ */
17
+ export declare function claudePluginMarketplaceAdd(source: string, scope?: "user" | "project"): void;
18
+ /**
19
+ * 0826: List Claude Code marketplace names registered with the CLI.
20
+ *
21
+ * Cheap probe used by the install flow to decide whether to call
22
+ * `claudePluginMarketplaceAdd` before `claudePluginInstall`. Returns an
23
+ * empty list (instead of throwing) when claude isn't installed or the
24
+ * subcommand fails — callers fall through to "treat as not registered".
25
+ */
26
+ export declare function claudePluginMarketplaceList(): string[];
1
27
  /**
2
28
  * Install a marketplace plugin via the claude CLI.
3
29
  *
@@ -7,6 +7,66 @@
7
7
  import { execFileSync } from "node:child_process";
8
8
  import { resolveCliBinary } from "./resolve-binary.js";
9
9
  import { purgeStalePlugins } from "../settings/index.js";
10
+ /**
11
+ * 0826: Add a Claude Code plugin marketplace via the claude CLI.
12
+ *
13
+ * Delegates to: claude plugin marketplace add --scope <scope> -- <source>
14
+ *
15
+ * Required when installing plugins from a marketplace that hasn't been
16
+ * registered yet — `claude plugin install foo@bar` fails with "Plugin foo
17
+ * not found in marketplace bar" until the marketplace itself is added.
18
+ *
19
+ * Safe to call against an already-registered marketplace: claude prints a
20
+ * "marketplace already exists" message and exits 0.
21
+ *
22
+ * @throws if the claude binary is not found or the add fails (network,
23
+ * invalid source, etc.). Callers should `try/catch` and surface a
24
+ * user-friendly error.
25
+ */
26
+ export function claudePluginMarketplaceAdd(source, scope = "user") {
27
+ const claude = resolveCliBinary("claude");
28
+ execFileSync(claude, ["plugin", "marketplace", "add", "--scope", scope, "--", source], { stdio: "pipe", timeout: 180_000 });
29
+ }
30
+ /**
31
+ * 0826: List Claude Code marketplace names registered with the CLI.
32
+ *
33
+ * Cheap probe used by the install flow to decide whether to call
34
+ * `claudePluginMarketplaceAdd` before `claudePluginInstall`. Returns an
35
+ * empty list (instead of throwing) when claude isn't installed or the
36
+ * subcommand fails — callers fall through to "treat as not registered".
37
+ */
38
+ export function claudePluginMarketplaceList() {
39
+ let claude;
40
+ try {
41
+ claude = resolveCliBinary("claude");
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ let stdout = "";
47
+ try {
48
+ stdout = execFileSync(claude, ["plugin", "marketplace", "list"], {
49
+ stdio: ["ignore", "pipe", "pipe"],
50
+ timeout: 30_000,
51
+ }).toString("utf-8");
52
+ }
53
+ catch {
54
+ return [];
55
+ }
56
+ // Format: leading marker (e.g. "❯ "), then name, then "Source: …" line.
57
+ // The marker's exact glyph varies across terminals — match anything that
58
+ // isn't word/whitespace, followed by a name token.
59
+ const names = [];
60
+ for (const raw of stdout.split(/\r?\n/)) {
61
+ const line = raw.trim();
62
+ if (line.startsWith("Source:"))
63
+ continue;
64
+ const m = line.match(/^[^\w\s]+\s+([a-z0-9][\w./:-]*)\s*$/i);
65
+ if (m)
66
+ names.push(m[1]);
67
+ }
68
+ return names;
69
+ }
10
70
  /**
11
71
  * Install a marketplace plugin via the claude CLI.
12
72
  *