@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
|
@@ -5,39 +5,34 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from 'node:fs';
|
|
7
7
|
import * as path from 'node:path';
|
|
8
|
+
import yaml from 'js-yaml';
|
|
8
9
|
import { getLogger } from '../logging/logger.js';
|
|
9
10
|
/**
|
|
10
|
-
* Parse
|
|
11
|
-
*
|
|
11
|
+
* Parse YAML frontmatter from SKILL.md content.
|
|
12
|
+
* Supports both simple key: value and YAML block scalars (e.g., description: >-).
|
|
12
13
|
*
|
|
13
14
|
* @param content - File content with frontmatter
|
|
14
15
|
* @returns Parsed frontmatter or null if invalid
|
|
15
16
|
*/
|
|
16
17
|
export function parseSkillFrontmatter(content) {
|
|
17
|
-
// Match frontmatter between --- delimiters
|
|
18
18
|
const match = content.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
19
19
|
if (!match) {
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
result.name = value.trim();
|
|
31
|
-
}
|
|
32
|
-
else if (key === 'description') {
|
|
33
|
-
result.description = value.trim();
|
|
34
|
-
}
|
|
22
|
+
try {
|
|
23
|
+
const parsed = yaml.load(match[1]);
|
|
24
|
+
if (!parsed)
|
|
25
|
+
return null;
|
|
26
|
+
const name = typeof parsed.name === 'string' ? parsed.name.trim() : undefined;
|
|
27
|
+
const description = typeof parsed.description === 'string' ? parsed.description.trim() : undefined;
|
|
28
|
+
if (!name || !description) {
|
|
29
|
+
return null;
|
|
35
30
|
}
|
|
31
|
+
return { name, description };
|
|
36
32
|
}
|
|
37
|
-
|
|
33
|
+
catch {
|
|
38
34
|
return null;
|
|
39
35
|
}
|
|
40
|
-
return { name: result.name, description: result.description };
|
|
41
36
|
}
|
|
42
37
|
/**
|
|
43
38
|
* Scan a directory for skills and extract their metadata.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/skills/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/skills/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
function pluginsTag(version) {
|
|
7
|
+
const bare = version.replace(/^v/, '');
|
|
8
|
+
return `b2c-agent-plugins@${bare}`;
|
|
9
|
+
}
|
|
10
|
+
export const SKILL_SOURCES = {
|
|
11
|
+
b2c: {
|
|
12
|
+
id: 'b2c',
|
|
13
|
+
displayName: 'B2C Commerce development patterns',
|
|
14
|
+
type: 'release-artifact',
|
|
15
|
+
repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
|
|
16
|
+
assetName: 'b2c-skills.zip',
|
|
17
|
+
tagPattern: pluginsTag,
|
|
18
|
+
},
|
|
19
|
+
'b2c-cli': {
|
|
20
|
+
id: 'b2c-cli',
|
|
21
|
+
displayName: 'B2C CLI commands and operations',
|
|
22
|
+
type: 'release-artifact',
|
|
23
|
+
repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
|
|
24
|
+
assetName: 'b2c-cli-skills.zip',
|
|
25
|
+
tagPattern: pluginsTag,
|
|
26
|
+
},
|
|
27
|
+
'cap-dev': {
|
|
28
|
+
id: 'cap-dev',
|
|
29
|
+
displayName: 'Commerce Apps development skills',
|
|
30
|
+
type: 'repo-contents',
|
|
31
|
+
repo: 'SalesforceCommerceCloud/commerce-apps',
|
|
32
|
+
ref: 'main',
|
|
33
|
+
skillsPath: '.claude/skills',
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
export function getSkillSource(skillSet) {
|
|
37
|
+
const source = SKILL_SOURCES[skillSet];
|
|
38
|
+
if (!source) {
|
|
39
|
+
throw new Error(`Unknown skill set: ${skillSet}`);
|
|
40
|
+
}
|
|
41
|
+
return source;
|
|
42
|
+
}
|
|
43
|
+
export const ALL_SKILL_SETS = Object.keys(SKILL_SOURCES);
|
|
44
|
+
//# sourceMappingURL=sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/skills/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uCAAuC;QAC7C,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC"}
|
|
@@ -5,7 +5,20 @@ export type IdeType = 'claude-code' | 'cursor' | 'windsurf' | 'vscode' | 'codex'
|
|
|
5
5
|
/**
|
|
6
6
|
* Skill set categories matching the plugins directory structure.
|
|
7
7
|
*/
|
|
8
|
-
export type SkillSet = 'b2c' | 'b2c-cli';
|
|
8
|
+
export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev';
|
|
9
|
+
/**
|
|
10
|
+
* Configuration for a skill source — defines how to fetch skills from a particular repository.
|
|
11
|
+
*/
|
|
12
|
+
export interface SkillSourceConfig {
|
|
13
|
+
id: SkillSet;
|
|
14
|
+
displayName: string;
|
|
15
|
+
type: 'release-artifact' | 'repo-contents';
|
|
16
|
+
repo: string;
|
|
17
|
+
assetName?: string;
|
|
18
|
+
tagPattern?: (version: string) => string;
|
|
19
|
+
ref?: string;
|
|
20
|
+
skillsPath?: string;
|
|
21
|
+
}
|
|
9
22
|
/**
|
|
10
23
|
* IDE path configuration for skill installation.
|
|
11
24
|
*/
|
|
@@ -133,4 +146,6 @@ export interface CachedArtifact {
|
|
|
133
146
|
path: string;
|
|
134
147
|
/** ISO date string when artifact was downloaded */
|
|
135
148
|
downloadedAt: string;
|
|
149
|
+
/** For repo-contents sources: the resolved commit SHA */
|
|
150
|
+
commitSha?: string;
|
|
136
151
|
}
|
|
@@ -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>;
|