@salesforce/b2c-tooling-sdk 1.5.0 → 1.6.1
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/dist/cjs/skills/github.d.ts +2 -18
- package/dist/cjs/skills/github.js +214 -110
- package/dist/cjs/skills/github.js.map +1 -1
- package/dist/cjs/skills/index.d.ts +2 -1
- package/dist/cjs/skills/index.js +2 -0
- package/dist/cjs/skills/index.js.map +1 -1
- package/dist/cjs/skills/parser.d.ts +2 -2
- package/dist/cjs/skills/parser.js +13 -18
- package/dist/cjs/skills/parser.js.map +1 -1
- package/dist/cjs/skills/sources.d.ts +4 -0
- package/dist/cjs/skills/sources.js +44 -0
- package/dist/cjs/skills/sources.js.map +1 -0
- package/dist/cjs/skills/types.d.ts +16 -1
- package/dist/esm/skills/github.d.ts +2 -18
- package/dist/esm/skills/github.js +214 -110
- package/dist/esm/skills/github.js.map +1 -1
- package/dist/esm/skills/index.d.ts +2 -1
- package/dist/esm/skills/index.js +2 -0
- package/dist/esm/skills/index.js.map +1 -1
- package/dist/esm/skills/parser.d.ts +2 -2
- package/dist/esm/skills/parser.js +13 -18
- package/dist/esm/skills/parser.js.map +1 -1
- package/dist/esm/skills/sources.d.ts +4 -0
- package/dist/esm/skills/sources.js +44 -0
- package/dist/esm/skills/sources.js.map +1 -0
- package/dist/esm/skills/types.d.ts +16 -1
- package/package.json +3 -1
|
@@ -2,46 +2,30 @@ import type { CachedArtifact, DownloadSkillsOptions, ReleaseInfo, SkillSet } fro
|
|
|
2
2
|
/**
|
|
3
3
|
* Get the cache directory for skills.
|
|
4
4
|
* Uses XDG_CACHE_HOME on Linux, ~/.cache otherwise.
|
|
5
|
-
*
|
|
6
|
-
* @returns Absolute path to cache directory
|
|
7
5
|
*/
|
|
8
6
|
export declare function getCacheDir(): string;
|
|
9
7
|
/**
|
|
10
8
|
* Fetch release information from GitHub API.
|
|
11
|
-
*
|
|
12
|
-
* @param version - 'latest' or specific version (e.g., 'v0.1.0')
|
|
13
|
-
* @returns Release information
|
|
14
|
-
* @throws Error if release not found or API request fails
|
|
15
9
|
*/
|
|
16
10
|
export declare function getRelease(version?: string): Promise<ReleaseInfo>;
|
|
17
11
|
/**
|
|
18
12
|
* List available releases with skills artifacts.
|
|
19
|
-
*
|
|
20
|
-
* @param limit - Maximum number of releases to return (default: 10)
|
|
21
|
-
* @returns Array of release information
|
|
22
13
|
*/
|
|
23
14
|
export declare function listReleases(limit?: number): Promise<ReleaseInfo[]>;
|
|
24
15
|
/**
|
|
25
16
|
* Get cached artifact metadata if available.
|
|
26
|
-
*
|
|
27
|
-
* @param version - Release version
|
|
28
|
-
* @param skillSet - Skill set to check
|
|
29
|
-
* @returns Cached artifact info or null if not cached
|
|
30
17
|
*/
|
|
31
18
|
export declare function getCachedArtifact(version: string, skillSet: SkillSet): CachedArtifact | null;
|
|
32
19
|
/**
|
|
33
20
|
* Download and extract skills artifact.
|
|
34
|
-
*
|
|
21
|
+
* Dispatches to the appropriate download strategy based on the skill source type.
|
|
35
22
|
*
|
|
36
|
-
* @param skillSet - Which skill set to download
|
|
23
|
+
* @param skillSet - Which skill set to download
|
|
37
24
|
* @param options - Download options
|
|
38
25
|
* @returns Path to extracted skills directory
|
|
39
|
-
* @throws Error if download fails or artifact not available
|
|
40
26
|
*/
|
|
41
27
|
export declare function downloadSkillsArtifact(skillSet: SkillSet, options?: DownloadSkillsOptions): Promise<string>;
|
|
42
28
|
/**
|
|
43
29
|
* Clear the skills cache.
|
|
44
|
-
*
|
|
45
|
-
* @param version - Optional specific version to clear (default: all)
|
|
46
30
|
*/
|
|
47
31
|
export declare function clearCache(version?: string): Promise<void>;
|
|
@@ -3,46 +3,25 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2
|
|
4
4
|
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { execFile } from 'node:child_process';
|
|
6
7
|
import * as fs from 'node:fs';
|
|
7
8
|
import * as os from 'node:os';
|
|
8
9
|
import * as path from 'node:path';
|
|
10
|
+
import { promisify } from 'node:util';
|
|
9
11
|
import JSZip from 'jszip';
|
|
12
|
+
import { getSkillSource } from './sources.js';
|
|
10
13
|
import { getLogger } from '../logging/logger.js';
|
|
11
|
-
const
|
|
14
|
+
const execFileAsync = promisify(execFile);
|
|
12
15
|
const GITHUB_API_BASE = 'https://api.github.com';
|
|
13
16
|
const GITHUB_DOWNLOAD_BASE = 'https://github.com';
|
|
14
17
|
const GITHUB_RAW_BASE = 'https://raw.githubusercontent.com';
|
|
15
18
|
const LATEST_VERSION_CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
const ASSET_NAMES = {
|
|
20
|
-
b2c: 'b2c-skills.zip',
|
|
21
|
-
'b2c-cli': 'b2c-cli-skills.zip',
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Build a direct CDN download URL for a release asset.
|
|
25
|
-
* Assumes a concrete tag — call `resolveLatestVersion()` first if you have 'latest'.
|
|
26
|
-
*/
|
|
27
|
-
function buildDownloadUrl(tag, assetName) {
|
|
28
|
-
return `${GITHUB_DOWNLOAD_BASE}/${GITHUB_REPO}/releases/download/${tag}/${assetName}`;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Tag name used for skill-only releases (matches publish.yml).
|
|
32
|
-
*/
|
|
33
|
-
function pluginsTag(version) {
|
|
34
|
-
const bare = version.replace(/^v/, '');
|
|
35
|
-
return `b2c-agent-plugins@${bare}`;
|
|
19
|
+
function buildDownloadUrl(repo, tag, assetName) {
|
|
20
|
+
return `${GITHUB_DOWNLOAD_BASE}/${repo}/releases/download/${tag}/${assetName}`;
|
|
36
21
|
}
|
|
37
|
-
/**
|
|
38
|
-
* File path for the resolved-latest-version cache.
|
|
39
|
-
*/
|
|
40
22
|
function getLatestVersionCachePath() {
|
|
41
23
|
return path.join(getCacheDir(), '.latest-version.json');
|
|
42
24
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Read a cached "latest" version if still fresh (1-hour TTL).
|
|
45
|
-
*/
|
|
46
25
|
function readLatestVersionCache() {
|
|
47
26
|
try {
|
|
48
27
|
const p = getLatestVersionCachePath();
|
|
@@ -68,9 +47,16 @@ function writeLatestVersionCache(version) {
|
|
|
68
47
|
// Caching is best-effort
|
|
69
48
|
}
|
|
70
49
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
50
|
+
function clearLatestVersionCache() {
|
|
51
|
+
try {
|
|
52
|
+
const p = getLatestVersionCachePath();
|
|
53
|
+
if (fs.existsSync(p))
|
|
54
|
+
fs.unlinkSync(p);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Best-effort
|
|
58
|
+
}
|
|
59
|
+
}
|
|
74
60
|
function isRateLimited(response) {
|
|
75
61
|
if (response.status !== 403 && response.status !== 429)
|
|
76
62
|
return false;
|
|
@@ -78,27 +64,15 @@ function isRateLimited(response) {
|
|
|
78
64
|
return remaining === '0' || response.status === 429;
|
|
79
65
|
}
|
|
80
66
|
/**
|
|
81
|
-
* Resolve the version of the most recent skills release.
|
|
82
|
-
*
|
|
83
|
-
* Strategy:
|
|
84
|
-
* 1. API primary — paginate /releases and return the first entry that has
|
|
85
|
-
* a skills asset attached.
|
|
86
|
-
* 2. Rate-limit fallback — fetch skills/package.json from main via
|
|
87
|
-
* raw.githubusercontent.com. This is the version that will be tagged
|
|
88
|
-
* b2c-agent-plugins@<version> at release time.
|
|
89
|
-
*
|
|
90
|
-
* Caches the resolved version for 1 hour to avoid re-resolving on consecutive
|
|
91
|
-
* calls within the same session. Always returns a bare version string like
|
|
92
|
-
* "1.2.3" (no 'v' prefix, no tag format).
|
|
67
|
+
* Resolve the version of the most recent skills release from the b2c-developer-tooling repo.
|
|
93
68
|
*/
|
|
94
|
-
async function resolveLatestVersion() {
|
|
69
|
+
async function resolveLatestVersion(source) {
|
|
95
70
|
const logger = getLogger();
|
|
96
71
|
const cached = readLatestVersionCache();
|
|
97
72
|
if (cached) {
|
|
98
73
|
logger.debug({ version: cached }, 'Using cached latest version');
|
|
99
74
|
return cached;
|
|
100
75
|
}
|
|
101
|
-
// Primary — GitHub REST API with asset filtering
|
|
102
76
|
try {
|
|
103
77
|
const releases = await listReleases(30);
|
|
104
78
|
if (releases.length > 0) {
|
|
@@ -117,8 +91,7 @@ async function resolveLatestVersion() {
|
|
|
117
91
|
logger.warn({ err: err.message }, 'GitHub API unavailable; falling back to main branch for version resolution');
|
|
118
92
|
}
|
|
119
93
|
}
|
|
120
|
-
|
|
121
|
-
const rawUrl = `${GITHUB_RAW_BASE}/${GITHUB_REPO}/main/skills/package.json`;
|
|
94
|
+
const rawUrl = `${GITHUB_RAW_BASE}/${source.repo}/main/skills/package.json`;
|
|
122
95
|
logger.debug({ url: rawUrl }, 'Fetching version from raw.githubusercontent.com');
|
|
123
96
|
const response = await fetch(rawUrl, { headers: { 'User-Agent': 'b2c-cli' } });
|
|
124
97
|
if (!response.ok) {
|
|
@@ -134,23 +107,22 @@ async function resolveLatestVersion() {
|
|
|
134
107
|
/**
|
|
135
108
|
* Get the cache directory for skills.
|
|
136
109
|
* Uses XDG_CACHE_HOME on Linux, ~/.cache otherwise.
|
|
137
|
-
*
|
|
138
|
-
* @returns Absolute path to cache directory
|
|
139
110
|
*/
|
|
140
111
|
export function getCacheDir() {
|
|
141
112
|
const xdgCache = process.env.XDG_CACHE_HOME;
|
|
142
113
|
const baseCache = xdgCache || path.join(os.homedir(), '.cache');
|
|
143
114
|
return path.join(baseCache, 'b2c-cli', 'skills');
|
|
144
115
|
}
|
|
145
|
-
/**
|
|
146
|
-
* Parse GitHub API release response into ReleaseInfo.
|
|
147
|
-
*/
|
|
148
116
|
function parseRelease(release) {
|
|
149
|
-
const
|
|
150
|
-
const
|
|
117
|
+
const b2cSource = getSkillSource('b2c');
|
|
118
|
+
const b2cCliSource = getSkillSource('b2c-cli');
|
|
119
|
+
const b2cAsset = release.assets.find((a) => a.name === b2cSource.assetName);
|
|
120
|
+
const b2cCliAsset = release.assets.find((a) => a.name === b2cCliSource.assetName);
|
|
121
|
+
const versionMatch = release.tag_name.match(/@(\d+\.\d+\.\d+.*)$/);
|
|
122
|
+
const version = versionMatch ? versionMatch[1] : release.tag_name.replace(/^v/, '');
|
|
151
123
|
return {
|
|
152
124
|
tagName: release.tag_name,
|
|
153
|
-
version
|
|
125
|
+
version,
|
|
154
126
|
publishedAt: release.published_at,
|
|
155
127
|
b2cSkillsAssetUrl: b2cAsset?.browser_download_url ?? null,
|
|
156
128
|
b2cCliSkillsAssetUrl: b2cCliAsset?.browser_download_url ?? null,
|
|
@@ -158,29 +130,22 @@ function parseRelease(release) {
|
|
|
158
130
|
}
|
|
159
131
|
/**
|
|
160
132
|
* Fetch release information from GitHub API.
|
|
161
|
-
*
|
|
162
|
-
* @param version - 'latest' or specific version (e.g., 'v0.1.0')
|
|
163
|
-
* @returns Release information
|
|
164
|
-
* @throws Error if release not found or API request fails
|
|
165
133
|
*/
|
|
166
134
|
export async function getRelease(version = 'latest') {
|
|
167
135
|
const logger = getLogger();
|
|
168
|
-
|
|
169
|
-
// This avoids GitHub's /releases/latest endpoint, which returns whichever
|
|
170
|
-
// release GitHub flags as latest regardless of whether it contains skills.
|
|
136
|
+
const source = getSkillSource('b2c');
|
|
171
137
|
let tag;
|
|
172
138
|
if (version === 'latest') {
|
|
173
|
-
const resolved = await resolveLatestVersion();
|
|
174
|
-
tag =
|
|
139
|
+
const resolved = await resolveLatestVersion(source);
|
|
140
|
+
tag = source.tagPattern(resolved);
|
|
175
141
|
}
|
|
176
142
|
else if (/^b2c-agent-plugins@/.test(version) || version.includes('@')) {
|
|
177
|
-
// Caller passed an explicit tag (including other packages' tags, for tests/internal use).
|
|
178
143
|
tag = version;
|
|
179
144
|
}
|
|
180
145
|
else {
|
|
181
|
-
tag =
|
|
146
|
+
tag = source.tagPattern(version);
|
|
182
147
|
}
|
|
183
|
-
const endpoint = `${GITHUB_API_BASE}/repos/${
|
|
148
|
+
const endpoint = `${GITHUB_API_BASE}/repos/${source.repo}/releases/tags/${encodeURIComponent(tag)}`;
|
|
184
149
|
logger.debug({ endpoint }, 'Fetching release info');
|
|
185
150
|
const response = await fetch(endpoint, {
|
|
186
151
|
headers: {
|
|
@@ -189,6 +154,7 @@ export async function getRelease(version = 'latest') {
|
|
|
189
154
|
},
|
|
190
155
|
});
|
|
191
156
|
if (!response.ok) {
|
|
157
|
+
clearLatestVersionCache();
|
|
192
158
|
if (response.status === 404) {
|
|
193
159
|
throw new Error(`Release not found: ${tag}`);
|
|
194
160
|
}
|
|
@@ -202,13 +168,11 @@ export async function getRelease(version = 'latest') {
|
|
|
202
168
|
}
|
|
203
169
|
/**
|
|
204
170
|
* List available releases with skills artifacts.
|
|
205
|
-
*
|
|
206
|
-
* @param limit - Maximum number of releases to return (default: 10)
|
|
207
|
-
* @returns Array of release information
|
|
208
171
|
*/
|
|
209
172
|
export async function listReleases(limit = 10) {
|
|
210
173
|
const logger = getLogger();
|
|
211
|
-
const
|
|
174
|
+
const source = getSkillSource('b2c');
|
|
175
|
+
const endpoint = `${GITHUB_API_BASE}/repos/${source.repo}/releases?per_page=${limit}`;
|
|
212
176
|
logger.debug({ endpoint }, 'Listing releases');
|
|
213
177
|
const response = await fetch(endpoint, {
|
|
214
178
|
headers: {
|
|
@@ -220,15 +184,13 @@ export async function listReleases(limit = 10) {
|
|
|
220
184
|
throw new Error(`GitHub API error: ${response.status} ${response.statusText}`);
|
|
221
185
|
}
|
|
222
186
|
const data = (await response.json());
|
|
223
|
-
|
|
224
|
-
|
|
187
|
+
return data
|
|
188
|
+
.filter((r) => r.tag_name.startsWith('b2c-agent-plugins@'))
|
|
189
|
+
.map(parseRelease)
|
|
190
|
+
.filter((r) => r.b2cSkillsAssetUrl || r.b2cCliSkillsAssetUrl);
|
|
225
191
|
}
|
|
226
192
|
/**
|
|
227
193
|
* Get cached artifact metadata if available.
|
|
228
|
-
*
|
|
229
|
-
* @param version - Release version
|
|
230
|
-
* @param skillSet - Skill set to check
|
|
231
|
-
* @returns Cached artifact info or null if not cached
|
|
232
194
|
*/
|
|
233
195
|
export function getCachedArtifact(version, skillSet) {
|
|
234
196
|
const cacheDir = getCacheDir();
|
|
@@ -245,58 +207,41 @@ export function getCachedArtifact(version, skillSet) {
|
|
|
245
207
|
}
|
|
246
208
|
}
|
|
247
209
|
/**
|
|
248
|
-
* Download and extract
|
|
249
|
-
* Uses direct download URLs to avoid GitHub API rate limits.
|
|
250
|
-
*
|
|
251
|
-
* @param skillSet - Which skill set to download ('b2c' or 'b2c-cli')
|
|
252
|
-
* @param options - Download options
|
|
253
|
-
* @returns Path to extracted skills directory
|
|
254
|
-
* @throws Error if download fails or artifact not available
|
|
210
|
+
* Download and extract a release-artifact skill set (b2c or b2c-cli).
|
|
255
211
|
*/
|
|
256
|
-
|
|
212
|
+
async function downloadReleaseArtifact(source, options = {}) {
|
|
257
213
|
const logger = getLogger();
|
|
258
214
|
const { version = 'latest', forceDownload = false } = options;
|
|
259
|
-
const
|
|
260
|
-
|
|
261
|
-
// This keeps the cache keyed to real version tags and avoids GitHub's opinionated
|
|
262
|
-
// /releases/latest endpoint, which may point at a release that has no skills zips.
|
|
263
|
-
const resolvedVersion = version === 'latest' ? await resolveLatestVersion() : version.replace(/^v/, '');
|
|
264
|
-
const tag = pluginsTag(resolvedVersion);
|
|
265
|
-
// Check cache for the resolved version
|
|
215
|
+
const resolvedVersion = version === 'latest' ? await resolveLatestVersion(source) : version.replace(/^v/, '');
|
|
216
|
+
const tag = source.tagPattern(resolvedVersion);
|
|
266
217
|
if (!forceDownload) {
|
|
267
|
-
const cached = getCachedArtifact(resolvedVersion,
|
|
218
|
+
const cached = getCachedArtifact(resolvedVersion, source.id);
|
|
268
219
|
if (cached && fs.existsSync(cached.path)) {
|
|
269
|
-
logger.debug({ version: resolvedVersion, skillSet, path: cached.path }, 'Using cached skills');
|
|
220
|
+
logger.debug({ version: resolvedVersion, skillSet: source.id, path: cached.path }, 'Using cached skills');
|
|
270
221
|
return cached.path;
|
|
271
222
|
}
|
|
272
223
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
logger.debug({ url: downloadUrl, skillSet }, 'Downloading skills artifact');
|
|
276
|
-
// Download artifact - GitHub will redirect to the actual file
|
|
224
|
+
const downloadUrl = buildDownloadUrl(source.repo, tag, source.assetName);
|
|
225
|
+
logger.debug({ url: downloadUrl, skillSet: source.id }, 'Downloading skills artifact');
|
|
277
226
|
const response = await fetch(downloadUrl, {
|
|
278
|
-
headers: {
|
|
279
|
-
'User-Agent': 'b2c-cli',
|
|
280
|
-
},
|
|
227
|
+
headers: { 'User-Agent': 'b2c-cli' },
|
|
281
228
|
redirect: 'follow',
|
|
282
229
|
});
|
|
283
230
|
if (!response.ok) {
|
|
231
|
+
clearLatestVersionCache();
|
|
284
232
|
if (response.status === 404) {
|
|
285
|
-
throw new Error(`Skills artifact '${assetName}' not found for release ${tag}`);
|
|
233
|
+
throw new Error(`Skills artifact '${source.assetName}' not found for release ${tag}`);
|
|
286
234
|
}
|
|
287
235
|
throw new Error(`Failed to download skills: ${response.status} ${response.statusText}`);
|
|
288
236
|
}
|
|
289
237
|
const zipBuffer = Buffer.from(await response.arrayBuffer());
|
|
290
238
|
logger.debug({ size: zipBuffer.length, version: resolvedVersion }, 'Downloaded skills archive');
|
|
291
|
-
// Extract to cache directory
|
|
292
239
|
const cacheDir = options.cacheDir || getCacheDir();
|
|
293
|
-
const extractDir = path.join(cacheDir, resolvedVersion,
|
|
294
|
-
// Clean existing extraction if present
|
|
240
|
+
const extractDir = path.join(cacheDir, resolvedVersion, source.id);
|
|
295
241
|
if (fs.existsSync(extractDir)) {
|
|
296
242
|
await fs.promises.rm(extractDir, { recursive: true });
|
|
297
243
|
}
|
|
298
244
|
await fs.promises.mkdir(extractDir, { recursive: true });
|
|
299
|
-
// Extract zip contents
|
|
300
245
|
const zip = await JSZip.loadAsync(zipBuffer);
|
|
301
246
|
let extractedCount = 0;
|
|
302
247
|
for (const [relativePath, zipEntry] of Object.entries(zip.files)) {
|
|
@@ -306,15 +251,12 @@ export async function downloadSkillsArtifact(skillSet, options = {}) {
|
|
|
306
251
|
}
|
|
307
252
|
const targetPath = path.join(extractDir, relativePath);
|
|
308
253
|
const targetDir = path.dirname(targetPath);
|
|
309
|
-
// Ensure parent directory exists
|
|
310
254
|
await fs.promises.mkdir(targetDir, { recursive: true });
|
|
311
|
-
// Write file
|
|
312
255
|
const content = await zipEntry.async('nodebuffer');
|
|
313
256
|
await fs.promises.writeFile(targetPath, content);
|
|
314
257
|
extractedCount++;
|
|
315
258
|
}
|
|
316
259
|
logger.debug({ extractDir, fileCount: extractedCount }, 'Extracted skills');
|
|
317
|
-
// Write cache manifest
|
|
318
260
|
const manifest = {
|
|
319
261
|
version: resolvedVersion,
|
|
320
262
|
path: extractDir,
|
|
@@ -324,9 +266,171 @@ export async function downloadSkillsArtifact(skillSet, options = {}) {
|
|
|
324
266
|
return extractDir;
|
|
325
267
|
}
|
|
326
268
|
/**
|
|
327
|
-
*
|
|
269
|
+
* Resolve a git ref to a commit SHA via the GitHub API.
|
|
270
|
+
*/
|
|
271
|
+
async function resolveCommitSha(repo, ref) {
|
|
272
|
+
const response = await fetch(`${GITHUB_API_BASE}/repos/${repo}/commits/${encodeURIComponent(ref)}`, {
|
|
273
|
+
headers: { 'User-Agent': 'b2c-cli', Accept: 'application/vnd.github.v3.sha' },
|
|
274
|
+
});
|
|
275
|
+
if (!response.ok) {
|
|
276
|
+
throw new Error(`Failed to resolve ref '${ref}' for ${repo}: ${response.status} ${response.statusText}`);
|
|
277
|
+
}
|
|
278
|
+
return (await response.text()).trim();
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Recursively fetch directory contents from the GitHub Contents API and write to disk.
|
|
282
|
+
*/
|
|
283
|
+
async function fetchContentsRecursive(repo, repoPath, ref, destDir) {
|
|
284
|
+
const logger = getLogger();
|
|
285
|
+
const endpoint = `${GITHUB_API_BASE}/repos/${repo}/contents/${encodeURIComponent(repoPath)}?ref=${encodeURIComponent(ref)}`;
|
|
286
|
+
const response = await fetch(endpoint, {
|
|
287
|
+
headers: { Accept: 'application/vnd.github.v3+json', 'User-Agent': 'b2c-cli' },
|
|
288
|
+
});
|
|
289
|
+
if (!response.ok) {
|
|
290
|
+
if (isRateLimited(response)) {
|
|
291
|
+
throw Object.assign(new Error('GitHub API rate-limited'), { rateLimited: true });
|
|
292
|
+
}
|
|
293
|
+
throw new Error(`GitHub Contents API error for ${repoPath}: ${response.status} ${response.statusText}`);
|
|
294
|
+
}
|
|
295
|
+
const entries = (await response.json());
|
|
296
|
+
let fileCount = 0;
|
|
297
|
+
await fs.promises.mkdir(destDir, { recursive: true });
|
|
298
|
+
for (const entry of entries) {
|
|
299
|
+
const targetPath = path.join(destDir, entry.name);
|
|
300
|
+
if (entry.type === 'dir') {
|
|
301
|
+
fileCount += await fetchContentsRecursive(repo, entry.path, ref, targetPath);
|
|
302
|
+
}
|
|
303
|
+
else if (entry.type === 'file' && entry.download_url) {
|
|
304
|
+
const fileResponse = await fetch(entry.download_url, { headers: { 'User-Agent': 'b2c-cli' } });
|
|
305
|
+
if (!fileResponse.ok) {
|
|
306
|
+
logger.warn({ path: entry.path }, 'Failed to download file, skipping');
|
|
307
|
+
continue;
|
|
308
|
+
}
|
|
309
|
+
const content = Buffer.from(await fileResponse.arrayBuffer());
|
|
310
|
+
await fs.promises.writeFile(targetPath, content);
|
|
311
|
+
fileCount++;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return fileCount;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Recursively copy a directory tree.
|
|
318
|
+
*/
|
|
319
|
+
async function copyDirRecursive(src, dest) {
|
|
320
|
+
await fs.promises.mkdir(dest, { recursive: true });
|
|
321
|
+
const entries = await fs.promises.readdir(src, { withFileTypes: true });
|
|
322
|
+
for (const entry of entries) {
|
|
323
|
+
const srcPath = path.join(src, entry.name);
|
|
324
|
+
const destPath = path.join(dest, entry.name);
|
|
325
|
+
if (entry.isDirectory()) {
|
|
326
|
+
await copyDirRecursive(srcPath, destPath);
|
|
327
|
+
}
|
|
328
|
+
else if (entry.isFile()) {
|
|
329
|
+
await fs.promises.copyFile(srcPath, destPath);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Fallback: use sparse git checkout to fetch only the skills subtree.
|
|
335
|
+
*/
|
|
336
|
+
async function fetchViaSparseCheckout(repo, ref, skillsPath, destDir) {
|
|
337
|
+
const logger = getLogger();
|
|
338
|
+
const tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'b2c-skills-'));
|
|
339
|
+
try {
|
|
340
|
+
const repoUrl = `${GITHUB_DOWNLOAD_BASE}/${repo}.git`;
|
|
341
|
+
logger.debug({ repoUrl, skillsPath }, 'Falling back to sparse git checkout');
|
|
342
|
+
await execFileAsync('git', [
|
|
343
|
+
'clone',
|
|
344
|
+
'--no-checkout',
|
|
345
|
+
'--depth',
|
|
346
|
+
'1',
|
|
347
|
+
'--filter=blob:none',
|
|
348
|
+
'--sparse',
|
|
349
|
+
repoUrl,
|
|
350
|
+
tmpDir,
|
|
351
|
+
]);
|
|
352
|
+
await execFileAsync('git', ['-C', tmpDir, 'sparse-checkout', 'set', skillsPath]);
|
|
353
|
+
await execFileAsync('git', ['-C', tmpDir, 'checkout']);
|
|
354
|
+
const skillsSrc = path.join(tmpDir, skillsPath);
|
|
355
|
+
if (!fs.existsSync(skillsSrc)) {
|
|
356
|
+
throw new Error(`Skills path '${skillsPath}' not found in repo ${repo}`);
|
|
357
|
+
}
|
|
358
|
+
await copyDirRecursive(skillsSrc, destDir);
|
|
359
|
+
}
|
|
360
|
+
finally {
|
|
361
|
+
await fs.promises.rm(tmpDir, { recursive: true, force: true });
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Download skills from a repo-contents source (e.g., commerce-apps).
|
|
366
|
+
* Primary: GitHub Contents API. Fallback: sparse git checkout.
|
|
367
|
+
*/
|
|
368
|
+
async function downloadRepoContents(source, options = {}) {
|
|
369
|
+
const logger = getLogger();
|
|
370
|
+
const ref = options.version || source.ref || 'main';
|
|
371
|
+
const forceDownload = options.forceDownload ?? false;
|
|
372
|
+
const skillsPath = source.skillsPath || '.claude/skills';
|
|
373
|
+
const commitSha = await resolveCommitSha(source.repo, ref);
|
|
374
|
+
const cacheKey = `${ref}-${commitSha.slice(0, 8)}`;
|
|
375
|
+
if (!forceDownload) {
|
|
376
|
+
const cached = getCachedArtifact(cacheKey, source.id);
|
|
377
|
+
if (cached && fs.existsSync(cached.path)) {
|
|
378
|
+
logger.debug({ cacheKey, skillSet: source.id, path: cached.path }, 'Using cached skills');
|
|
379
|
+
return cached.path;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
const cacheDir = options.cacheDir || getCacheDir();
|
|
383
|
+
const extractDir = path.join(cacheDir, cacheKey, source.id);
|
|
384
|
+
const skillsDestDir = path.join(extractDir, 'skills');
|
|
385
|
+
if (fs.existsSync(extractDir)) {
|
|
386
|
+
await fs.promises.rm(extractDir, { recursive: true });
|
|
387
|
+
}
|
|
388
|
+
await fs.promises.mkdir(skillsDestDir, { recursive: true });
|
|
389
|
+
try {
|
|
390
|
+
logger.debug({ repo: source.repo, skillsPath, ref }, 'Fetching skills via Contents API');
|
|
391
|
+
const fileCount = await fetchContentsRecursive(source.repo, skillsPath, ref, skillsDestDir);
|
|
392
|
+
logger.debug({ extractDir, fileCount }, 'Fetched skills via Contents API');
|
|
393
|
+
}
|
|
394
|
+
catch (err) {
|
|
395
|
+
const isRateLimit = err instanceof Error && 'rateLimited' in err;
|
|
396
|
+
if (isRateLimit) {
|
|
397
|
+
logger.warn('Contents API rate-limited; falling back to sparse git checkout');
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
logger.warn({ err: err.message }, 'Contents API failed; falling back to sparse git checkout');
|
|
401
|
+
}
|
|
402
|
+
if (fs.existsSync(skillsDestDir)) {
|
|
403
|
+
await fs.promises.rm(skillsDestDir, { recursive: true });
|
|
404
|
+
}
|
|
405
|
+
await fs.promises.mkdir(skillsDestDir, { recursive: true });
|
|
406
|
+
await fetchViaSparseCheckout(source.repo, ref, skillsPath, skillsDestDir);
|
|
407
|
+
}
|
|
408
|
+
const manifest = {
|
|
409
|
+
version: cacheKey,
|
|
410
|
+
path: extractDir,
|
|
411
|
+
downloadedAt: new Date().toISOString(),
|
|
412
|
+
commitSha,
|
|
413
|
+
};
|
|
414
|
+
await fs.promises.writeFile(path.join(extractDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
|
415
|
+
return extractDir;
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Download and extract skills artifact.
|
|
419
|
+
* Dispatches to the appropriate download strategy based on the skill source type.
|
|
328
420
|
*
|
|
329
|
-
* @param
|
|
421
|
+
* @param skillSet - Which skill set to download
|
|
422
|
+
* @param options - Download options
|
|
423
|
+
* @returns Path to extracted skills directory
|
|
424
|
+
*/
|
|
425
|
+
export async function downloadSkillsArtifact(skillSet, options = {}) {
|
|
426
|
+
const source = getSkillSource(skillSet);
|
|
427
|
+
if (source.type === 'release-artifact') {
|
|
428
|
+
return downloadReleaseArtifact(source, options);
|
|
429
|
+
}
|
|
430
|
+
return downloadRepoContents(source, options);
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Clear the skills cache.
|
|
330
434
|
*/
|
|
331
435
|
export async function clearCache(version) {
|
|
332
436
|
const cacheDir = getCacheDir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/skills/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/skills/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
*
|
|
36
36
|
* @module skills
|
|
37
37
|
*/
|
|
38
|
-
export type { IdeType, SkillSet, IdePaths, IdeConfig, SkillMetadata, ReleaseInfo, DownloadSkillsOptions, InstallSkillsOptions, SkillInstallation, SkillSkipped, SkillError, InstallSkillsResult, CachedArtifact, } from './types.js';
|
|
38
|
+
export type { IdeType, SkillSet, SkillSourceConfig, IdePaths, IdeConfig, SkillMetadata, ReleaseInfo, DownloadSkillsOptions, InstallSkillsOptions, SkillInstallation, SkillSkipped, SkillError, InstallSkillsResult, CachedArtifact, } from './types.js';
|
|
39
|
+
export { SKILL_SOURCES, getSkillSource, ALL_SKILL_SETS } from './sources.js';
|
|
39
40
|
export { IDE_CONFIGS, ALL_IDE_TYPES, detectInstalledIdes, getSkillInstallPath, getIdeDisplayName, getIdeDocsUrl, } from './agents.js';
|
|
40
41
|
export { getCacheDir, getRelease, listReleases, getCachedArtifact, downloadSkillsArtifact, clearCache, } from './github.js';
|
|
41
42
|
export { parseSkillFrontmatter, scanSkills, filterSkillsByName, findSkillsByName } from './parser.js';
|
package/dist/cjs/skills/index.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2
|
|
4
4
|
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
|
+
// Skill source registry
|
|
7
|
+
export { SKILL_SOURCES, getSkillSource, ALL_SKILL_SETS } from './sources.js';
|
|
6
8
|
// Agent/IDE utilities
|
|
7
9
|
export { IDE_CONFIGS, ALL_IDE_TYPES, detectInstalledIdes, getSkillInstallPath, getIdeDisplayName, getIdeDocsUrl, } from './agents.js';
|
|
8
10
|
// GitHub/download utilities
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0DH,wBAAwB;AACxB,OAAO,EAAC,aAAa,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AAE3E,sBAAsB;AACtB,OAAO,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,4BAA4B;AAC5B,OAAO,EACL,WAAW,EACX,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,gBAAgB;AAChB,OAAO,EAAC,qBAAqB,EAAE,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAEpG,eAAe;AACf,OAAO,EAAC,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { SkillMetadata, SkillSet } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Parse
|
|
4
|
-
*
|
|
3
|
+
* Parse YAML frontmatter from SKILL.md content.
|
|
4
|
+
* Supports both simple key: value and YAML block scalars (e.g., description: >-).
|
|
5
5
|
*
|
|
6
6
|
* @param content - File content with frontmatter
|
|
7
7
|
* @returns Parsed frontmatter or null if invalid
|