agent-skills-cli 1.1.0 → 1.1.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/README.md +85 -13
- package/dist/__tests__/git-auth.test.d.ts +11 -0
- package/dist/__tests__/git-auth.test.d.ts.map +1 -0
- package/dist/__tests__/git-auth.test.js +160 -0
- package/dist/__tests__/git-auth.test.js.map +1 -0
- package/dist/__tests__/skill-lock.test.d.ts +8 -0
- package/dist/__tests__/skill-lock.test.d.ts.map +1 -0
- package/dist/__tests__/skill-lock.test.js +104 -0
- package/dist/__tests__/skill-lock.test.js.map +1 -0
- package/dist/__tests__/skillsrc.test.d.ts +11 -0
- package/dist/__tests__/skillsrc.test.d.ts.map +1 -0
- package/dist/__tests__/skillsrc.test.js +185 -0
- package/dist/__tests__/skillsrc.test.js.map +1 -0
- package/dist/__tests__/source-parser.test.d.ts +16 -0
- package/dist/__tests__/source-parser.test.d.ts.map +1 -0
- package/dist/__tests__/source-parser.test.js +231 -0
- package/dist/__tests__/source-parser.test.js.map +1 -0
- package/dist/cli/commands/install.d.ts +8 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +203 -90
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/core/git-auth.d.ts +74 -0
- package/dist/core/git-auth.d.ts.map +1 -0
- package/dist/core/git-auth.js +299 -0
- package/dist/core/git-auth.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/skill-lock.d.ts +1 -1
- package/dist/core/skill-lock.d.ts.map +1 -1
- package/dist/core/skillsrc.d.ts +65 -0
- package/dist/core/skillsrc.d.ts.map +1 -0
- package/dist/core/skillsrc.js +161 -0
- package/dist/core/skillsrc.js.map +1 -0
- package/dist/core/source-parser.d.ts +9 -1
- package/dist/core/source-parser.d.ts.map +1 -1
- package/dist/core/source-parser.js +85 -6
- package/dist/core/source-parser.js.map +1 -1
- package/package.json +9 -3
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Authentication Module
|
|
3
|
+
* Resolves credentials for private Git repositories across platforms
|
|
4
|
+
*
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Environment variables (GIT_TOKEN, GITLAB_TOKEN, BITBUCKET_TOKEN, GH_TOKEN)
|
|
7
|
+
* - SSH key detection
|
|
8
|
+
* - Git credential helper
|
|
9
|
+
* - Interactive token prompt (fallback)
|
|
10
|
+
*/
|
|
11
|
+
import { exec } from 'child_process';
|
|
12
|
+
import { promisify } from 'util';
|
|
13
|
+
import { existsSync } from 'fs';
|
|
14
|
+
import { readFile } from 'fs/promises';
|
|
15
|
+
import { join } from 'path';
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
const execAsync = promisify(exec);
|
|
18
|
+
// ─── Host Detection ──────────────────────────────────────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Detect the Git hosting provider from a URL
|
|
21
|
+
*/
|
|
22
|
+
export function detectGitHost(url) {
|
|
23
|
+
const lower = url.toLowerCase();
|
|
24
|
+
if (lower.includes('github.com') || lower.includes('github'))
|
|
25
|
+
return 'github';
|
|
26
|
+
if (lower.includes('gitlab.com') || lower.includes('gitlab'))
|
|
27
|
+
return 'gitlab';
|
|
28
|
+
if (lower.includes('bitbucket.org') || lower.includes('bitbucket'))
|
|
29
|
+
return 'bitbucket';
|
|
30
|
+
return 'custom';
|
|
31
|
+
}
|
|
32
|
+
// ─── Token Resolution ────────────────────────────────────────────────
|
|
33
|
+
/**
|
|
34
|
+
* Map of environment variables to check for each host type
|
|
35
|
+
*/
|
|
36
|
+
const HOST_ENV_VARS = {
|
|
37
|
+
github: ['GH_TOKEN', 'GITHUB_TOKEN', 'GIT_TOKEN'],
|
|
38
|
+
gitlab: ['GITLAB_TOKEN', 'GL_TOKEN', 'GIT_TOKEN'],
|
|
39
|
+
bitbucket: ['BITBUCKET_TOKEN', 'BB_TOKEN', 'GIT_TOKEN'],
|
|
40
|
+
custom: ['GIT_TOKEN', 'GITLAB_TOKEN', 'GH_TOKEN'],
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Try to resolve a token from environment variables
|
|
44
|
+
*/
|
|
45
|
+
function resolveTokenFromEnv(host) {
|
|
46
|
+
const vars = HOST_ENV_VARS[host];
|
|
47
|
+
for (const envVar of vars) {
|
|
48
|
+
const value = process.env[envVar];
|
|
49
|
+
if (value && value.trim()) {
|
|
50
|
+
return value.trim();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if SSH keys are available via ssh-agent
|
|
57
|
+
*/
|
|
58
|
+
async function checkSshAvailable() {
|
|
59
|
+
try {
|
|
60
|
+
const { stdout } = await execAsync('ssh-add -l', { timeout: 5000 });
|
|
61
|
+
// ssh-add -l returns identities if any are loaded
|
|
62
|
+
return !stdout.includes('no identities');
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Also check if SSH key files exist
|
|
66
|
+
const sshDir = join(homedir(), '.ssh');
|
|
67
|
+
return (existsSync(join(sshDir, 'id_rsa')) ||
|
|
68
|
+
existsSync(join(sshDir, 'id_ed25519')) ||
|
|
69
|
+
existsSync(join(sshDir, 'id_ecdsa')));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Try to resolve a token from Git credential helper
|
|
74
|
+
*/
|
|
75
|
+
async function resolveFromCredentialHelper(hostname) {
|
|
76
|
+
try {
|
|
77
|
+
// Check if a credential helper is configured
|
|
78
|
+
const { stdout: helper } = await execAsync('git config credential.helper', { timeout: 3000 });
|
|
79
|
+
if (!helper.trim())
|
|
80
|
+
return undefined;
|
|
81
|
+
// Try to get credentials using a script that writes to stdin and reads stdout
|
|
82
|
+
const { stdout } = await execAsync(`printf 'protocol=https\nhost=${hostname}\n\n' | git credential fill`, {
|
|
83
|
+
timeout: 3000,
|
|
84
|
+
env: {
|
|
85
|
+
...process.env,
|
|
86
|
+
GIT_TERMINAL_PROMPT: '0',
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
const passwordMatch = stdout.match(/password=(.+)/);
|
|
90
|
+
if (passwordMatch) {
|
|
91
|
+
return passwordMatch[1].trim();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Credential helper not available or failed
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Try to resolve credentials from .netrc file
|
|
101
|
+
*/
|
|
102
|
+
async function resolveFromNetrc(hostname) {
|
|
103
|
+
const netrcPath = join(homedir(), process.platform === 'win32' ? '_netrc' : '.netrc');
|
|
104
|
+
if (!existsSync(netrcPath))
|
|
105
|
+
return undefined;
|
|
106
|
+
try {
|
|
107
|
+
const content = await readFile(netrcPath, 'utf-8');
|
|
108
|
+
// Simple .netrc parser — find machine entry for this host
|
|
109
|
+
const machineRegex = new RegExp(`machine\\s+${hostname.replace('.', '\\.')}[\\s\\S]*?password\\s+(\\S+)`, 'i');
|
|
110
|
+
const match = content.match(machineRegex);
|
|
111
|
+
if (match)
|
|
112
|
+
return match[1];
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// .netrc not readable
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
// ─── Main Auth Resolution ────────────────────────────────────────────
|
|
120
|
+
/**
|
|
121
|
+
* Extract hostname from a Git URL
|
|
122
|
+
*/
|
|
123
|
+
function extractHostname(url) {
|
|
124
|
+
// SSH format: git@hostname:path
|
|
125
|
+
const sshMatch = url.match(/^git@([^:]+):/);
|
|
126
|
+
if (sshMatch)
|
|
127
|
+
return sshMatch[1];
|
|
128
|
+
// HTTPS format
|
|
129
|
+
try {
|
|
130
|
+
const parsed = new URL(url);
|
|
131
|
+
return parsed.hostname;
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// Try extracting from path-like URLs
|
|
135
|
+
const match = url.match(/^https?:\/\/([^/:]+)/);
|
|
136
|
+
if (match)
|
|
137
|
+
return match[1];
|
|
138
|
+
}
|
|
139
|
+
return url;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Resolve Git authentication for a given URL
|
|
143
|
+
*
|
|
144
|
+
* Resolution priority:
|
|
145
|
+
* 1. Environment variables (host-specific)
|
|
146
|
+
* 2. SSH key availability (for SSH URLs)
|
|
147
|
+
* 3. Git credential helper
|
|
148
|
+
* 4. .netrc file
|
|
149
|
+
* 5. None (public repo or will fail)
|
|
150
|
+
*/
|
|
151
|
+
export async function resolveGitAuth(url, explicitToken) {
|
|
152
|
+
const host = detectGitHost(url);
|
|
153
|
+
const hostname = extractHostname(url);
|
|
154
|
+
// Explicit token takes priority
|
|
155
|
+
if (explicitToken) {
|
|
156
|
+
return { method: 'token', token: explicitToken, host };
|
|
157
|
+
}
|
|
158
|
+
// 1. Environment variables
|
|
159
|
+
const envToken = resolveTokenFromEnv(host);
|
|
160
|
+
if (envToken) {
|
|
161
|
+
return { method: 'token', token: envToken, host };
|
|
162
|
+
}
|
|
163
|
+
// 2. SSH availability (for SSH URLs)
|
|
164
|
+
const isSshUrl = url.startsWith('git@') || url.includes('ssh://');
|
|
165
|
+
if (isSshUrl) {
|
|
166
|
+
const sshAvailable = await checkSshAvailable();
|
|
167
|
+
if (sshAvailable) {
|
|
168
|
+
return { method: 'ssh', sshAvailable: true, host };
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// 3. Git credential helper
|
|
172
|
+
const credToken = await resolveFromCredentialHelper(hostname);
|
|
173
|
+
if (credToken) {
|
|
174
|
+
return { method: 'credential-helper', token: credToken, host };
|
|
175
|
+
}
|
|
176
|
+
// 4. .netrc
|
|
177
|
+
const netrcToken = await resolveFromNetrc(hostname);
|
|
178
|
+
if (netrcToken) {
|
|
179
|
+
return { method: 'netrc', token: netrcToken, host };
|
|
180
|
+
}
|
|
181
|
+
// 5. No auth found — will attempt without authentication
|
|
182
|
+
return { method: 'none', host };
|
|
183
|
+
}
|
|
184
|
+
// ─── URL Manipulation ────────────────────────────────────────────────
|
|
185
|
+
/**
|
|
186
|
+
* Build an authenticated HTTPS URL by injecting a token
|
|
187
|
+
*
|
|
188
|
+
* Input: https://gitlab.com/team/repo.git + token "abc123"
|
|
189
|
+
* Output: https://oauth2:abc123@gitlab.com/team/repo.git
|
|
190
|
+
*/
|
|
191
|
+
export function buildAuthenticatedUrl(url, token) {
|
|
192
|
+
try {
|
|
193
|
+
const parsed = new URL(url);
|
|
194
|
+
parsed.username = 'oauth2';
|
|
195
|
+
parsed.password = token;
|
|
196
|
+
return parsed.toString();
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Fallback: inject after protocol
|
|
200
|
+
return url.replace(/^(https?:\/\/)/, `$1oauth2:${token}@`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Convert an SSH URL to HTTPS URL for token-based auth
|
|
205
|
+
* git@github.com:owner/repo.git → https://github.com/owner/repo.git
|
|
206
|
+
*/
|
|
207
|
+
export function sshToHttps(url) {
|
|
208
|
+
const match = url.match(/^git@([^:]+):(.+?)(?:\.git)?$/);
|
|
209
|
+
if (match) {
|
|
210
|
+
return `https://${match[1]}/${match[2]}.git`;
|
|
211
|
+
}
|
|
212
|
+
return url;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Normalize a Git URL for cloning
|
|
216
|
+
* Ensures URL has .git suffix and proper protocol
|
|
217
|
+
*/
|
|
218
|
+
export function normalizeGitUrl(url) {
|
|
219
|
+
// Already an SSH URL — leave as-is
|
|
220
|
+
if (url.startsWith('git@') || url.startsWith('ssh://')) {
|
|
221
|
+
return url;
|
|
222
|
+
}
|
|
223
|
+
// Ensure HTTPS prefix
|
|
224
|
+
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
225
|
+
url = `https://${url}`;
|
|
226
|
+
}
|
|
227
|
+
// Ensure .git suffix
|
|
228
|
+
if (!url.endsWith('.git')) {
|
|
229
|
+
url = `${url}.git`;
|
|
230
|
+
}
|
|
231
|
+
return url;
|
|
232
|
+
}
|
|
233
|
+
// ─── Clone with Auth ─────────────────────────────────────────────────
|
|
234
|
+
/**
|
|
235
|
+
* Clone a Git repository with automatic authentication
|
|
236
|
+
*
|
|
237
|
+
* Handles SSH, HTTPS+token, and public repos transparently.
|
|
238
|
+
*/
|
|
239
|
+
export async function cloneWithAuth(url, destDir, options) {
|
|
240
|
+
const { ref, depth = 1, token } = options || {};
|
|
241
|
+
// Resolve authentication
|
|
242
|
+
const auth = await resolveGitAuth(url, token);
|
|
243
|
+
// Build the clone URL
|
|
244
|
+
let cloneUrl;
|
|
245
|
+
if (auth.method === 'ssh' || (auth.method === 'none' && url.startsWith('git@'))) {
|
|
246
|
+
// Use SSH URL directly
|
|
247
|
+
cloneUrl = url;
|
|
248
|
+
}
|
|
249
|
+
else if (auth.token) {
|
|
250
|
+
// Convert SSH to HTTPS if needed, then inject token
|
|
251
|
+
const httpsUrl = url.startsWith('git@') ? sshToHttps(url) : normalizeGitUrl(url);
|
|
252
|
+
cloneUrl = buildAuthenticatedUrl(httpsUrl, auth.token);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// No auth — try public access
|
|
256
|
+
cloneUrl = normalizeGitUrl(url);
|
|
257
|
+
}
|
|
258
|
+
// Build clone command
|
|
259
|
+
const args = ['git', 'clone'];
|
|
260
|
+
if (depth)
|
|
261
|
+
args.push('--depth', String(depth));
|
|
262
|
+
if (ref)
|
|
263
|
+
args.push('--branch', ref);
|
|
264
|
+
args.push(cloneUrl, '.');
|
|
265
|
+
try {
|
|
266
|
+
await execAsync(args.join(' '), {
|
|
267
|
+
cwd: destDir,
|
|
268
|
+
timeout: 60000, // 60s timeout
|
|
269
|
+
env: {
|
|
270
|
+
...process.env,
|
|
271
|
+
// Suppress interactive prompts in CI
|
|
272
|
+
GIT_TERMINAL_PROMPT: '0',
|
|
273
|
+
},
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
// Clean error message (strip token from output)
|
|
278
|
+
const message = (err.stderr || err.message || 'Unknown error')
|
|
279
|
+
.replace(/oauth2:[^@]+@/g, 'oauth2:***@')
|
|
280
|
+
.trim();
|
|
281
|
+
if (message.includes('Authentication failed') || message.includes('403') || message.includes('401')) {
|
|
282
|
+
const host = detectGitHost(url);
|
|
283
|
+
const envVars = HOST_ENV_VARS[host].join(' or ');
|
|
284
|
+
throw new Error(`Authentication failed for ${url}\n` +
|
|
285
|
+
`Set ${envVars} environment variable, or use --token flag.\n` +
|
|
286
|
+
`For SSH, ensure your key is added: ssh-add ~/.ssh/id_ed25519`);
|
|
287
|
+
}
|
|
288
|
+
throw new Error(`Git clone failed: ${message}`);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get the display-safe version of a URL (strips tokens)
|
|
293
|
+
*/
|
|
294
|
+
export function sanitizeUrl(url) {
|
|
295
|
+
return url
|
|
296
|
+
.replace(/oauth2:[^@]+@/g, 'oauth2:***@')
|
|
297
|
+
.replace(/(https?:\/\/)[^:]+:[^@]+@/g, '$1***:***@');
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=git-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-auth.js","sourceRoot":"","sources":["../../src/core/git-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export type { AssetEntry, AssetFile } from './assets.js';
|
|
|
15
15
|
export { track, trackInstall, trackSearch, trackCommand, setVersion } from './telemetry.js';
|
|
16
16
|
export { parseSource, getOwnerRepo, getSourceTypeDisplay } from './source-parser.js';
|
|
17
17
|
export type { ParsedSource } from './source-parser.js';
|
|
18
|
+
export { detectGitHost, resolveGitAuth, buildAuthenticatedUrl, sshToHttps, normalizeGitUrl, cloneWithAuth, sanitizeUrl, } from './git-auth.js';
|
|
19
|
+
export type { GitHost, GitAuthResult, CloneOptions } from './git-auth.js';
|
|
18
20
|
export { getCanonicalSkillsDir, getCanonicalPath, getAgentSkillPath, isSymlink, installSkillWithSymlinks, removeSkillInstallation, getSkillInstallMethod } from './installer.js';
|
|
19
21
|
export type { AgentConfig, InstallOptions, InstalledSkillInfo } from './installer.js';
|
|
20
22
|
export { getLockFilePath, readLock, writeLock, addSkillToLock, removeSkillFromLock, getSkillFromLock, listInstalledSkills, isSkillInstalled, getInstalledSkillCount, updateSkillVersion, updateSkillAgents, createLockEntry } from './skill-lock.js';
|
|
@@ -25,6 +27,8 @@ export { runAudit, shouldFail, toSARIF, } from './audit.js';
|
|
|
25
27
|
export type { AuditOptions, } from './audit.js';
|
|
26
28
|
export { SCANNER_RULES, getRulesByCategory, getRuleById, getCategories, createEmptyScanResult, } from './scanner-rules.js';
|
|
27
29
|
export type { ScannerRule, ScanFinding, ScanResult, Severity, } from './scanner-rules.js';
|
|
30
|
+
export { loadSkillsRC, getSourcesByType, getRegistryForScope, getAuthEnvVar, } from './skillsrc.js';
|
|
31
|
+
export type { SkillsRC, SkillsRCSource, SkillsRCDefaults, } from './skillsrc.js';
|
|
28
32
|
export { assessQuality, formatScoreBar, getScoreColor, } from './quality.js';
|
|
29
33
|
export type { QualityScore, ScoreDetail, } from './quality.js';
|
|
30
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -18,8 +18,10 @@ export { fetchFromDB, getSkillByScoped, searchSkillsDB, getSkillsByAuthor, parse
|
|
|
18
18
|
export { getSkillBaseUrl, getAssetUrl, parseRawUrl, fetchAssetManifest, listAssetsFromGitHub, fetchAsset, fetchAssetBinary, getSkillAssets, getAssetUrlFromEntry } from './assets.js';
|
|
19
19
|
// Telemetry (anonymous usage tracking with opt-out)
|
|
20
20
|
export { track, trackInstall, trackSearch, trackCommand, setVersion } from './telemetry.js';
|
|
21
|
-
// Source parser (GitHub, GitLab, local paths, direct URLs)
|
|
21
|
+
// Source parser (GitHub, GitLab, Bitbucket, SSH, npm, local paths, direct URLs)
|
|
22
22
|
export { parseSource, getOwnerRepo, getSourceTypeDisplay } from './source-parser.js';
|
|
23
|
+
// Git authentication (private repos, SSH, tokens)
|
|
24
|
+
export { detectGitHost, resolveGitAuth, buildAuthenticatedUrl, sshToHttps, normalizeGitUrl, cloneWithAuth, sanitizeUrl, } from './git-auth.js';
|
|
23
25
|
// Installer (symlink-based installation)
|
|
24
26
|
export { getCanonicalSkillsDir, getCanonicalPath, getAgentSkillPath, isSymlink, installSkillWithSymlinks, removeSkillInstallation, getSkillInstallMethod } from './installer.js';
|
|
25
27
|
// Skill Lock (installation tracking)
|
|
@@ -30,6 +32,8 @@ export { analyzeProject, buildSearchKeywords, scoreSkill, } from './suggest.js';
|
|
|
30
32
|
export { runAudit, shouldFail, toSARIF, } from './audit.js';
|
|
31
33
|
// Scanner rules (security rule definitions)
|
|
32
34
|
export { SCANNER_RULES, getRulesByCategory, getRuleById, getCategories, createEmptyScanResult, } from './scanner-rules.js';
|
|
35
|
+
// .skillsrc configuration file support
|
|
36
|
+
export { loadSkillsRC, getSourcesByType, getRegistryForScope, getAuthEnvVar, } from './skillsrc.js';
|
|
33
37
|
// Quality scoring (4-dimension skill assessment)
|
|
34
38
|
export { assessQuality, formatScoreBar, getScoreColor, } from './quality.js';
|
|
35
39
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,mBAAmB;AACnB,OAAO,EACH,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACtB,MAAM,aAAa,CAAC;AAErB,sBAAsB;AACtB,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACzB,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO,EACH,uBAAuB,EACvB,6BAA6B,EAC7B,+BAA+B,EAC/B,yBAAyB,EAC5B,MAAM,eAAe,CAAC;AAEvB,qBAAqB;AACrB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,WAAW,EACd,MAAM,eAAe,CAAC;AAEvB,wBAAwB;AACxB,OAAO,EACH,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,8DAA8D;AAC9D,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAWvB,2BAA2B;AAC3B,OAAO,EACH,eAAe,EACf,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAOrB,oDAAoD;AACpD,OAAO,EACH,KAAK,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACb,MAAM,gBAAgB,CAAC;AAExB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,mBAAmB;AACnB,OAAO,EACH,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACtB,MAAM,aAAa,CAAC;AAErB,sBAAsB;AACtB,OAAO,EACH,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACzB,MAAM,gBAAgB,CAAC;AAExB,qBAAqB;AACrB,OAAO,EACH,uBAAuB,EACvB,6BAA6B,EAC7B,+BAA+B,EAC/B,yBAAyB,EAC5B,MAAM,eAAe,CAAC;AAEvB,qBAAqB;AACrB,OAAO,EACH,aAAa,EACb,YAAY,EACZ,WAAW,EACd,MAAM,eAAe,CAAC;AAEvB,wBAAwB;AACxB,OAAO,EACH,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,8DAA8D;AAC9D,OAAO,EACH,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACvB,MAAM,eAAe,CAAC;AAWvB,2BAA2B;AAC3B,OAAO,EACH,eAAe,EACf,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACvB,MAAM,aAAa,CAAC;AAOrB,oDAAoD;AACpD,OAAO,EACH,KAAK,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACb,MAAM,gBAAgB,CAAC;AAExB,gFAAgF;AAChF,OAAO,EACH,WAAW,EACX,YAAY,EACZ,oBAAoB,EACvB,MAAM,oBAAoB,CAAC;AAI5B,kDAAkD;AAClD,OAAO,EACH,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,eAAe,EACf,aAAa,EACb,WAAW,GACd,MAAM,eAAe,CAAC;AAIvB,yCAAyC;AACzC,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACxB,MAAM,gBAAgB,CAAC;AAQxB,qCAAqC;AACrC,OAAO,EACH,eAAe,EACf,QAAQ,EACR,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAClB,MAAM,iBAAiB,CAAC;AASzB,iDAAiD;AACjD,OAAO,EACH,cAAc,EACd,mBAAmB,EACnB,UAAU,GACb,MAAM,cAAc,CAAC;AAQtB,mCAAmC;AACnC,OAAO,EACH,QAAQ,EACR,UAAU,EACV,OAAO,GACV,MAAM,YAAY,CAAC;AAMpB,4CAA4C;AAC5C,OAAO,EACH,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,qBAAqB,GACxB,MAAM,oBAAoB,CAAC;AAS5B,uCAAuC;AACvC,OAAO,EACH,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GAChB,MAAM,eAAe,CAAC;AAQvB,iDAAiD;AACjD,OAAO,EACH,aAAa,EACb,cAAc,EACd,aAAa,GAChB,MAAM,cAAc,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Source type for installed skills
|
|
7
7
|
*/
|
|
8
|
-
export type SourceType = 'database' | 'github' | 'gitlab' | 'local';
|
|
8
|
+
export type SourceType = 'database' | 'github' | 'gitlab' | 'bitbucket' | 'npm' | 'private-git' | 'local';
|
|
9
9
|
/**
|
|
10
10
|
* Lock entry for a single installed skill
|
|
11
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-lock.d.ts","sourceRoot":"","sources":["../../src/core/skill-lock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-lock.d.ts","sourceRoot":"","sources":["../../src/core/skill-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .skillsrc Configuration File Module
|
|
3
|
+
*
|
|
4
|
+
* Supports project-level and user-level configuration for skill sources,
|
|
5
|
+
* registries, and installation defaults.
|
|
6
|
+
*
|
|
7
|
+
* Search order:
|
|
8
|
+
* 1. cwd/.skillsrc (YAML/JSON)
|
|
9
|
+
* 2. cwd/.skillsrc.json
|
|
10
|
+
* 3. ~/.skillsrc
|
|
11
|
+
* 4. ~/.skillsrc.json
|
|
12
|
+
*/
|
|
13
|
+
export interface SkillsRCSource {
|
|
14
|
+
/** Source type */
|
|
15
|
+
type: 'git' | 'npm';
|
|
16
|
+
/** Git URL (for git sources) */
|
|
17
|
+
url?: string;
|
|
18
|
+
/** npm registry URL (for npm sources) */
|
|
19
|
+
registry?: string;
|
|
20
|
+
/** npm scope (e.g. "@company") */
|
|
21
|
+
scope?: string;
|
|
22
|
+
/** Auth method hint */
|
|
23
|
+
auth?: 'token' | 'ssh' | 'env';
|
|
24
|
+
/** Environment variable name containing auth token */
|
|
25
|
+
envVar?: string;
|
|
26
|
+
/** Optional label for display */
|
|
27
|
+
name?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface SkillsRCDefaults {
|
|
30
|
+
/** Default agents to install to */
|
|
31
|
+
agents?: string[];
|
|
32
|
+
/** Whether to install globally by default */
|
|
33
|
+
global?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface SkillsRC {
|
|
36
|
+
/** Pre-configured skill sources */
|
|
37
|
+
sources?: SkillsRCSource[];
|
|
38
|
+
/** Installation defaults */
|
|
39
|
+
defaults?: SkillsRCDefaults;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Load .skillsrc configuration from project or user directory
|
|
43
|
+
*
|
|
44
|
+
* Searches in order:
|
|
45
|
+
* 1. cwd/.skillsrc
|
|
46
|
+
* 2. cwd/.skillsrc.json
|
|
47
|
+
* 3. ~/.skillsrc
|
|
48
|
+
* 4. ~/.skillsrc.json
|
|
49
|
+
*
|
|
50
|
+
* Returns the first valid config found, or null if none exist.
|
|
51
|
+
*/
|
|
52
|
+
export declare function loadSkillsRC(cwd?: string): Promise<SkillsRC | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Get all configured sources from .skillsrc, optionally filtered by type
|
|
55
|
+
*/
|
|
56
|
+
export declare function getSourcesByType(config: SkillsRC, type: 'git' | 'npm'): SkillsRCSource[];
|
|
57
|
+
/**
|
|
58
|
+
* Get the npm registry URL for a given scope from .skillsrc
|
|
59
|
+
*/
|
|
60
|
+
export declare function getRegistryForScope(config: SkillsRC, scope: string): string | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Get the auth env var for a given source URL
|
|
63
|
+
*/
|
|
64
|
+
export declare function getAuthEnvVar(config: SkillsRC, url: string): string | undefined;
|
|
65
|
+
//# sourceMappingURL=skillsrc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsrc.d.ts","sourceRoot":"","sources":["../../src/core/skillsrc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,WAAW,cAAc;IAC3B,kBAAkB;IAClB,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IACpB,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC;IAC/B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACrB,mCAAmC;IACnC,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AA0GD;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmBzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,cAAc,EAAE,CAExF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKvF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK/E"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* .skillsrc Configuration File Module
|
|
3
|
+
*
|
|
4
|
+
* Supports project-level and user-level configuration for skill sources,
|
|
5
|
+
* registries, and installation defaults.
|
|
6
|
+
*
|
|
7
|
+
* Search order:
|
|
8
|
+
* 1. cwd/.skillsrc (YAML/JSON)
|
|
9
|
+
* 2. cwd/.skillsrc.json
|
|
10
|
+
* 3. ~/.skillsrc
|
|
11
|
+
* 4. ~/.skillsrc.json
|
|
12
|
+
*/
|
|
13
|
+
import { readFile } from 'fs/promises';
|
|
14
|
+
import { existsSync } from 'fs';
|
|
15
|
+
import { join } from 'path';
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
// ─── Config File Loading ─────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Try to parse a file as JSON or simple YAML-like key-value format
|
|
20
|
+
*/
|
|
21
|
+
async function parseConfigFile(filePath) {
|
|
22
|
+
try {
|
|
23
|
+
const content = await readFile(filePath, 'utf-8');
|
|
24
|
+
const trimmed = content.trim();
|
|
25
|
+
// Try JSON first
|
|
26
|
+
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
27
|
+
return JSON.parse(trimmed);
|
|
28
|
+
}
|
|
29
|
+
// Try JSON (sometimes files don't start with { if they have comments)
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(trimmed);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Not JSON — try simple YAML-like format
|
|
35
|
+
}
|
|
36
|
+
// Simple YAML-like parsing (handles common cases)
|
|
37
|
+
return parseSimpleYaml(trimmed);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parse a simple YAML-like format for .skillsrc files
|
|
45
|
+
* Handles nested objects and arrays with basic indentation
|
|
46
|
+
*/
|
|
47
|
+
function parseSimpleYaml(content) {
|
|
48
|
+
try {
|
|
49
|
+
const result = {};
|
|
50
|
+
const lines = content.split('\n').filter(l => l.trim() && !l.trim().startsWith('#'));
|
|
51
|
+
let currentSection = null;
|
|
52
|
+
let currentSource = null;
|
|
53
|
+
for (const line of lines) {
|
|
54
|
+
const trimmed = line.trim();
|
|
55
|
+
const indent = line.length - line.trimStart().length;
|
|
56
|
+
// Top-level section
|
|
57
|
+
if (indent === 0 && trimmed.endsWith(':')) {
|
|
58
|
+
currentSection = trimmed.slice(0, -1);
|
|
59
|
+
if (currentSection === 'sources') {
|
|
60
|
+
result.sources = result.sources || [];
|
|
61
|
+
}
|
|
62
|
+
else if (currentSection === 'defaults') {
|
|
63
|
+
result.defaults = result.defaults || {};
|
|
64
|
+
}
|
|
65
|
+
currentSource = null;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// Array item (- prefix)
|
|
69
|
+
if (trimmed.startsWith('- ') && currentSection === 'sources') {
|
|
70
|
+
if (currentSource && Object.keys(currentSource).length > 0) {
|
|
71
|
+
result.sources.push(currentSource);
|
|
72
|
+
}
|
|
73
|
+
currentSource = {};
|
|
74
|
+
const kv = trimmed.slice(2).trim();
|
|
75
|
+
if (kv.includes(':')) {
|
|
76
|
+
const [key, ...rest] = kv.split(':');
|
|
77
|
+
const value = rest.join(':').trim();
|
|
78
|
+
currentSource[key.trim()] = value;
|
|
79
|
+
}
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Key-value pair within current context
|
|
83
|
+
if (trimmed.includes(':') && !trimmed.startsWith('#')) {
|
|
84
|
+
const [key, ...rest] = trimmed.split(':');
|
|
85
|
+
const value = rest.join(':').trim();
|
|
86
|
+
if (currentSource && indent >= 4) {
|
|
87
|
+
currentSource[key.trim()] = value === 'true' ? true : value === 'false' ? false : value;
|
|
88
|
+
}
|
|
89
|
+
else if (currentSection === 'defaults' && result.defaults) {
|
|
90
|
+
const k = key.trim();
|
|
91
|
+
if (k === 'global') {
|
|
92
|
+
result.defaults.global = value === 'true';
|
|
93
|
+
}
|
|
94
|
+
else if (k === 'agents') {
|
|
95
|
+
result.defaults.agents = value.split(',').map(a => a.trim()).filter(Boolean);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Push last source
|
|
101
|
+
if (currentSource && Object.keys(currentSource).length > 0) {
|
|
102
|
+
result.sources = result.sources || [];
|
|
103
|
+
result.sources.push(currentSource);
|
|
104
|
+
}
|
|
105
|
+
return Object.keys(result).length > 0 ? result : null;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// ─── Main API ────────────────────────────────────────────────────────
|
|
112
|
+
/**
|
|
113
|
+
* Load .skillsrc configuration from project or user directory
|
|
114
|
+
*
|
|
115
|
+
* Searches in order:
|
|
116
|
+
* 1. cwd/.skillsrc
|
|
117
|
+
* 2. cwd/.skillsrc.json
|
|
118
|
+
* 3. ~/.skillsrc
|
|
119
|
+
* 4. ~/.skillsrc.json
|
|
120
|
+
*
|
|
121
|
+
* Returns the first valid config found, or null if none exist.
|
|
122
|
+
*/
|
|
123
|
+
export async function loadSkillsRC(cwd) {
|
|
124
|
+
const searchDirs = [
|
|
125
|
+
cwd || process.cwd(),
|
|
126
|
+
homedir(),
|
|
127
|
+
];
|
|
128
|
+
const fileNames = ['.skillsrc', '.skillsrc.json'];
|
|
129
|
+
for (const dir of searchDirs) {
|
|
130
|
+
for (const fileName of fileNames) {
|
|
131
|
+
const filePath = join(dir, fileName);
|
|
132
|
+
if (existsSync(filePath)) {
|
|
133
|
+
const config = await parseConfigFile(filePath);
|
|
134
|
+
if (config)
|
|
135
|
+
return config;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get all configured sources from .skillsrc, optionally filtered by type
|
|
143
|
+
*/
|
|
144
|
+
export function getSourcesByType(config, type) {
|
|
145
|
+
return (config.sources || []).filter(s => s.type === type);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get the npm registry URL for a given scope from .skillsrc
|
|
149
|
+
*/
|
|
150
|
+
export function getRegistryForScope(config, scope) {
|
|
151
|
+
const source = (config.sources || []).find(s => s.type === 'npm' && s.scope === scope);
|
|
152
|
+
return source?.registry;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Get the auth env var for a given source URL
|
|
156
|
+
*/
|
|
157
|
+
export function getAuthEnvVar(config, url) {
|
|
158
|
+
const source = (config.sources || []).find(s => s.url && url.includes(s.url));
|
|
159
|
+
return source?.envVar;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=skillsrc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsrc.js","sourceRoot":"","sources":["../../src/core/skillsrc.ts"],"names":[],"mappings":"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"}
|