agentinit 1.8.1 → 1.10.0
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/CHANGELOG.md +15 -0
- package/README.md +27 -2
- package/dist/cli.js +25193 -24549
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts +1 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +8 -1
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +11 -2
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +64 -37
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +6 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/core/managedState.d.ts +1 -0
- package/dist/core/managedState.d.ts.map +1 -1
- package/dist/core/managedState.js +40 -8
- package/dist/core/managedState.js.map +1 -1
- package/dist/core/marketplaceRegistry.d.ts +5 -0
- package/dist/core/marketplaceRegistry.d.ts.map +1 -0
- package/dist/core/marketplaceRegistry.js +23 -0
- package/dist/core/marketplaceRegistry.js.map +1 -0
- package/dist/core/pluginManager.d.ts +2 -0
- package/dist/core/pluginManager.d.ts.map +1 -1
- package/dist/core/pluginManager.js +114 -54
- package/dist/core/pluginManager.js.map +1 -1
- package/dist/core/projectSkills.d.ts +3 -3
- package/dist/core/projectSkills.d.ts.map +1 -1
- package/dist/core/projectSkills.js +22 -18
- package/dist/core/projectSkills.js.map +1 -1
- package/dist/core/propagator.d.ts +2 -0
- package/dist/core/propagator.d.ts.map +1 -1
- package/dist/core/propagator.js +89 -21
- package/dist/core/propagator.js.map +1 -1
- package/dist/core/skillsManager.d.ts +32 -6
- package/dist/core/skillsManager.d.ts.map +1 -1
- package/dist/core/skillsManager.js +341 -108
- package/dist/core/skillsManager.js.map +1 -1
- package/dist/types/plugins.d.ts +4 -5
- package/dist/types/plugins.d.ts.map +1 -1
- package/dist/types/skills.d.ts +23 -3
- package/dist/types/skills.d.ts.map +1 -1
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +86 -1
- package/dist/utils/fs.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { resolve, join, relative } from 'path';
|
|
2
2
|
import { promises as fs } from 'fs';
|
|
3
|
-
import { tmpdir } from 'os';
|
|
3
|
+
import { homedir, tmpdir } from 'os';
|
|
4
4
|
import { execFile } from 'child_process';
|
|
5
5
|
import { promisify } from 'util';
|
|
6
6
|
import matter from 'gray-matter';
|
|
7
|
-
import {
|
|
7
|
+
import { createRelativeSymlink, fileExists, isDirectory, listFiles, pathsReferToSameLocation, readFileIfExists, resolveRealPathOrSelf, } from '../utils/fs.js';
|
|
8
8
|
import { AgentManager } from './agentManager.js';
|
|
9
|
+
import { getMarketplace, getMarketplaceIds } from './marketplaceRegistry.js';
|
|
9
10
|
const execFileAsync = promisify(execFile);
|
|
11
|
+
const DEFAULT_SKILLS_CATALOG = {
|
|
12
|
+
owner: 'vercel-labs',
|
|
13
|
+
repo: 'agent-skills',
|
|
14
|
+
url: 'https://github.com/vercel-labs/agent-skills.git',
|
|
15
|
+
};
|
|
10
16
|
/**
|
|
11
17
|
* Standard directories where skills are discovered in a repository
|
|
12
18
|
* Compatible with the open agent skills ecosystem (vercel-labs/skills)
|
|
@@ -28,7 +34,7 @@ export class SkillsManager {
|
|
|
28
34
|
/**
|
|
29
35
|
* Parse a source string into a structured SkillSource
|
|
30
36
|
*/
|
|
31
|
-
resolveSource(source) {
|
|
37
|
+
resolveSource(source, options) {
|
|
32
38
|
// Local path
|
|
33
39
|
if (source.startsWith('.') || source.startsWith('/') || source.startsWith('~')) {
|
|
34
40
|
return { type: 'local', path: source };
|
|
@@ -48,6 +54,27 @@ export class SkillsManager {
|
|
|
48
54
|
if (source.startsWith('git@') || source.endsWith('.git')) {
|
|
49
55
|
return { type: 'github', url: source };
|
|
50
56
|
}
|
|
57
|
+
if (options?.from) {
|
|
58
|
+
if (!getMarketplace(options.from)) {
|
|
59
|
+
throw new Error(`Unknown marketplace: ${options.from}. Available: ${getMarketplaceIds().join(', ')}`);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
type: 'marketplace',
|
|
63
|
+
marketplace: options.from,
|
|
64
|
+
pluginName: source,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
const marketplacePrefixMatch = source.match(/^([a-zA-Z0-9._-]+)\/(.+)$/);
|
|
68
|
+
if (marketplacePrefixMatch) {
|
|
69
|
+
const [, marketplaceId, pluginName] = marketplacePrefixMatch;
|
|
70
|
+
if (marketplaceId && pluginName && getMarketplace(marketplaceId)) {
|
|
71
|
+
return {
|
|
72
|
+
type: 'marketplace',
|
|
73
|
+
marketplace: marketplaceId,
|
|
74
|
+
pluginName,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
51
78
|
// GitHub shorthand: owner/repo
|
|
52
79
|
if (/^[a-zA-Z0-9._-]+\/[a-zA-Z0-9._-]+$/.test(source)) {
|
|
53
80
|
const [owner, repo] = source.split('/');
|
|
@@ -61,6 +88,38 @@ export class SkillsManager {
|
|
|
61
88
|
// Fallback: treat as local path
|
|
62
89
|
return { type: 'local', path: source };
|
|
63
90
|
}
|
|
91
|
+
isImplicitCatalogSkillSource(source, options) {
|
|
92
|
+
const normalizedSource = source.trim();
|
|
93
|
+
if (!normalizedSource || options?.from) {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
return !(normalizedSource.startsWith('.') ||
|
|
97
|
+
normalizedSource.startsWith('/') ||
|
|
98
|
+
normalizedSource.startsWith('~') ||
|
|
99
|
+
normalizedSource.startsWith('https://') ||
|
|
100
|
+
normalizedSource.startsWith('http://') ||
|
|
101
|
+
normalizedSource.startsWith('git@') ||
|
|
102
|
+
normalizedSource.endsWith('.git') ||
|
|
103
|
+
normalizedSource.includes('/') ||
|
|
104
|
+
normalizedSource.includes('\\'));
|
|
105
|
+
}
|
|
106
|
+
resolveSourceRequest(source, options) {
|
|
107
|
+
if (this.isImplicitCatalogSkillSource(source, options)) {
|
|
108
|
+
return {
|
|
109
|
+
source: {
|
|
110
|
+
type: 'github',
|
|
111
|
+
owner: DEFAULT_SKILLS_CATALOG.owner,
|
|
112
|
+
repo: DEFAULT_SKILLS_CATALOG.repo,
|
|
113
|
+
url: DEFAULT_SKILLS_CATALOG.url,
|
|
114
|
+
},
|
|
115
|
+
implicitSkills: [source.trim()],
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
source: this.resolveSource(source, options),
|
|
120
|
+
implicitSkills: [],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
64
123
|
/**
|
|
65
124
|
* Parse a SKILL.md file and extract name + description from frontmatter
|
|
66
125
|
*/
|
|
@@ -150,6 +209,77 @@ export class SkillsManager {
|
|
|
150
209
|
}
|
|
151
210
|
return tempDir;
|
|
152
211
|
}
|
|
212
|
+
getMarketplaceSourceId(source) {
|
|
213
|
+
if (source.type !== 'marketplace' || !source.marketplace || !source.pluginName) {
|
|
214
|
+
throw new Error('Invalid marketplace skill source');
|
|
215
|
+
}
|
|
216
|
+
return `${source.marketplace}/${source.pluginName}`;
|
|
217
|
+
}
|
|
218
|
+
getMissingLocalPathError(source, resolvedPath) {
|
|
219
|
+
const normalizedSource = source.trim();
|
|
220
|
+
if (!normalizedSource || normalizedSource.startsWith('.') || normalizedSource.startsWith('/') || normalizedSource.startsWith('~')) {
|
|
221
|
+
return new Error(`Local path not found: ${resolvedPath}`);
|
|
222
|
+
}
|
|
223
|
+
const marketplaces = getMarketplaceIds();
|
|
224
|
+
const marketplaceHints = marketplaces.length > 0
|
|
225
|
+
? ` If you meant a marketplace skill, use "${marketplaces[0]}/${normalizedSource}" or "--from ${marketplaces[0]}".`
|
|
226
|
+
: '';
|
|
227
|
+
return new Error(`Local path not found: ${resolvedPath}. If you meant a local path, prefix it with "./".${marketplaceHints}`);
|
|
228
|
+
}
|
|
229
|
+
async discoverMarketplaceSkills(source, projectPath) {
|
|
230
|
+
const { PluginManager } = await import('./pluginManager.js');
|
|
231
|
+
const pluginManager = new PluginManager(this.agentManager);
|
|
232
|
+
const result = await pluginManager.installPlugin(source.pluginName || this.getMarketplaceSourceId(source), projectPath, {
|
|
233
|
+
from: source.marketplace,
|
|
234
|
+
list: true,
|
|
235
|
+
});
|
|
236
|
+
const warnings = [...result.warnings];
|
|
237
|
+
if (result.plugin.mcpServers.length > 0) {
|
|
238
|
+
warnings.push(`Source "${this.getMarketplaceSourceId(source)}" also includes ${result.plugin.mcpServers.length} MCP server(s); use "agentinit plugins install ${this.getMarketplaceSourceId(source)}" to install them.`);
|
|
239
|
+
}
|
|
240
|
+
return {
|
|
241
|
+
skills: result.plugin.skills,
|
|
242
|
+
warnings,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async discoverFromSource(source, projectPath, options = {}) {
|
|
246
|
+
const request = this.resolveSourceRequest(source, options);
|
|
247
|
+
const resolved = request.source;
|
|
248
|
+
let tempDir = null;
|
|
249
|
+
try {
|
|
250
|
+
if (resolved.type === 'marketplace') {
|
|
251
|
+
return await this.discoverMarketplaceSkills(resolved, projectPath);
|
|
252
|
+
}
|
|
253
|
+
let repoPath;
|
|
254
|
+
if (resolved.type === 'github') {
|
|
255
|
+
if (!resolved.url) {
|
|
256
|
+
throw new Error(`Invalid source: ${source}`);
|
|
257
|
+
}
|
|
258
|
+
tempDir = await this.cloneRepo(resolved.url);
|
|
259
|
+
repoPath = tempDir;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
repoPath = resolve(resolved.path || source);
|
|
263
|
+
if (!(await fileExists(repoPath))) {
|
|
264
|
+
throw this.getMissingLocalPathError(source, repoPath);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
let skills = await this.discoverSkills(repoPath);
|
|
268
|
+
if (request.implicitSkills.length > 0) {
|
|
269
|
+
const names = new Set(request.implicitSkills.map(skill => skill.toLowerCase()));
|
|
270
|
+
skills = skills.filter(skill => names.has(skill.name.toLowerCase()));
|
|
271
|
+
}
|
|
272
|
+
const warnings = request.implicitSkills.length > 0
|
|
273
|
+
? [`Resolved "${source}" from the default skills catalog ${DEFAULT_SKILLS_CATALOG.owner}/${DEFAULT_SKILLS_CATALOG.repo}. Use "./${source}" for a local path.`]
|
|
274
|
+
: [];
|
|
275
|
+
return { skills, warnings };
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
if (tempDir) {
|
|
279
|
+
await fs.rm(tempDir, { recursive: true, force: true }).catch(() => { });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
153
283
|
/**
|
|
154
284
|
* Get target agents based on options
|
|
155
285
|
*/
|
|
@@ -197,6 +327,97 @@ export class SkillsManager {
|
|
|
197
327
|
await fs.writeFile(join(destPath, 'SKILL.md'), skillContent, 'utf8');
|
|
198
328
|
return destPath;
|
|
199
329
|
}
|
|
330
|
+
getCanonicalSkillsDir(projectPath, global = false) {
|
|
331
|
+
return global
|
|
332
|
+
? resolve(homedir(), '.agents/skills')
|
|
333
|
+
: resolve(projectPath, '.agents/skills');
|
|
334
|
+
}
|
|
335
|
+
async getInstallPlan(skillName, agent, projectPath, options = {}) {
|
|
336
|
+
const normalizedSkillName = this.normalizeSkillName(skillName);
|
|
337
|
+
const skillsDir = agent.getSkillsDir(projectPath, options.global);
|
|
338
|
+
if (!skillsDir) {
|
|
339
|
+
throw new Error(`No skills directory for ${agent.name}`);
|
|
340
|
+
}
|
|
341
|
+
const agentPath = this.resolveInstallPath(skillsDir, normalizedSkillName);
|
|
342
|
+
if (options.copy) {
|
|
343
|
+
return {
|
|
344
|
+
path: agentPath,
|
|
345
|
+
mode: 'copy',
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
const canonicalPath = this.resolveInstallPath(this.getCanonicalSkillsDir(projectPath, options.global ?? false), normalizedSkillName);
|
|
349
|
+
if (await pathsReferToSameLocation(canonicalPath, agentPath)) {
|
|
350
|
+
return {
|
|
351
|
+
path: canonicalPath,
|
|
352
|
+
canonicalPath,
|
|
353
|
+
mode: 'symlink',
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
return {
|
|
357
|
+
path: agentPath,
|
|
358
|
+
canonicalPath,
|
|
359
|
+
mode: 'symlink',
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
async installSkillForAgent(skillPath, skillName, agent, projectPath, options = {}) {
|
|
363
|
+
const plan = await this.getInstallPlan(skillName, agent, projectPath, options);
|
|
364
|
+
const skillsDir = agent.getSkillsDir(projectPath, options.global);
|
|
365
|
+
if (!skillsDir) {
|
|
366
|
+
throw new Error(`No skills directory for ${agent.name}`);
|
|
367
|
+
}
|
|
368
|
+
if (plan.mode === 'copy') {
|
|
369
|
+
await this.installSkill(skillPath, skillName, skillsDir, true);
|
|
370
|
+
return plan;
|
|
371
|
+
}
|
|
372
|
+
const canonicalPath = plan.canonicalPath;
|
|
373
|
+
if (!canonicalPath) {
|
|
374
|
+
throw new Error(`Missing canonical path for ${skillName}`);
|
|
375
|
+
}
|
|
376
|
+
await this.cleanAndCreateDirectory(canonicalPath);
|
|
377
|
+
await this.copyDir(skillPath, canonicalPath);
|
|
378
|
+
if (plan.path === canonicalPath) {
|
|
379
|
+
return plan;
|
|
380
|
+
}
|
|
381
|
+
const symlinkCreated = await createRelativeSymlink(canonicalPath, plan.path);
|
|
382
|
+
if (!symlinkCreated) {
|
|
383
|
+
await this.cleanAndCreateDirectory(plan.path);
|
|
384
|
+
await this.copyDir(skillPath, plan.path);
|
|
385
|
+
return {
|
|
386
|
+
...plan,
|
|
387
|
+
symlinkFailed: true,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
return plan;
|
|
391
|
+
}
|
|
392
|
+
async installSkillFromContentForAgent(skillName, skillContent, agent, projectPath, options = {}) {
|
|
393
|
+
const plan = await this.getInstallPlan(skillName, agent, projectPath, options);
|
|
394
|
+
const skillsDir = agent.getSkillsDir(projectPath, options.global);
|
|
395
|
+
if (!skillsDir) {
|
|
396
|
+
throw new Error(`No skills directory for ${agent.name}`);
|
|
397
|
+
}
|
|
398
|
+
if (plan.mode === 'copy') {
|
|
399
|
+
await this.installSkillFromContent(skillName, skillContent, skillsDir);
|
|
400
|
+
return plan;
|
|
401
|
+
}
|
|
402
|
+
const canonicalPath = plan.canonicalPath;
|
|
403
|
+
if (!canonicalPath) {
|
|
404
|
+
throw new Error(`Missing canonical path for ${skillName}`);
|
|
405
|
+
}
|
|
406
|
+
await this.cleanAndCreateDirectory(canonicalPath);
|
|
407
|
+
await fs.writeFile(join(canonicalPath, 'SKILL.md'), skillContent, 'utf8');
|
|
408
|
+
if (plan.path === canonicalPath) {
|
|
409
|
+
return plan;
|
|
410
|
+
}
|
|
411
|
+
const symlinkCreated = await createRelativeSymlink(canonicalPath, plan.path);
|
|
412
|
+
if (!symlinkCreated) {
|
|
413
|
+
await this.installSkillFromContent(skillName, skillContent, skillsDir);
|
|
414
|
+
return {
|
|
415
|
+
...plan,
|
|
416
|
+
symlinkFailed: true,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
return plan;
|
|
420
|
+
}
|
|
200
421
|
normalizeSkillName(skillName) {
|
|
201
422
|
const normalized = skillName.trim();
|
|
202
423
|
if (!normalized) {
|
|
@@ -219,110 +440,88 @@ export class SkillsManager {
|
|
|
219
440
|
getInstallPath(skillName, targetDir) {
|
|
220
441
|
return this.resolveInstallPath(targetDir, this.normalizeSkillName(skillName));
|
|
221
442
|
}
|
|
443
|
+
async cleanAndCreateDirectory(path) {
|
|
444
|
+
await fs.rm(path, { recursive: true, force: true }).catch(() => { });
|
|
445
|
+
await fs.mkdir(path, { recursive: true });
|
|
446
|
+
}
|
|
447
|
+
isWithinPath(basePath, targetPath) {
|
|
448
|
+
const relativePath = relative(resolve(basePath), resolve(targetPath));
|
|
449
|
+
return relativePath === '' || (!relativePath.startsWith('..') &&
|
|
450
|
+
!relativePath.includes('/../') &&
|
|
451
|
+
!relativePath.includes('\\..\\'));
|
|
452
|
+
}
|
|
222
453
|
/**
|
|
223
454
|
* Recursively copy a directory
|
|
224
455
|
*/
|
|
225
456
|
async copyDir(src, dest) {
|
|
226
|
-
await fs.
|
|
227
|
-
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
228
|
-
for (const entry of entries) {
|
|
229
|
-
const srcPath = join(src, entry.name);
|
|
230
|
-
const destPath = join(dest, entry.name);
|
|
231
|
-
if (entry.isDirectory()) {
|
|
232
|
-
await this.copyDir(srcPath, destPath);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
await fs.copyFile(srcPath, destPath);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
457
|
+
await fs.cp(src, dest, { recursive: true, dereference: true });
|
|
238
458
|
}
|
|
239
459
|
/**
|
|
240
460
|
* Add skills from a source (GitHub repo or local path)
|
|
241
461
|
*/
|
|
242
462
|
async addFromSource(source, projectPath, options = {}) {
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
tempDir = await this.cloneRepo(resolved.url);
|
|
250
|
-
repoPath = tempDir;
|
|
463
|
+
const discovered = await this.discoverFromSource(source, projectPath, {
|
|
464
|
+
...(options.from !== undefined ? { from: options.from } : {}),
|
|
465
|
+
});
|
|
466
|
+
let skills = discovered.skills;
|
|
467
|
+
if (skills.length === 0) {
|
|
468
|
+
return { installed: [], skipped: [], warnings: discovered.warnings };
|
|
251
469
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
throw new Error(`Local path not found: ${repoPath}`);
|
|
256
|
-
}
|
|
470
|
+
if (options.skills && options.skills.length > 0) {
|
|
471
|
+
const names = new Set(options.skills.map(skill => skill.toLowerCase()));
|
|
472
|
+
skills = skills.filter(skill => names.has(skill.name.toLowerCase()));
|
|
257
473
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return {
|
|
273
|
-
installed: [],
|
|
274
|
-
skipped: skills.map(s => ({ skill: s, reason: 'No target agents found' }))
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
const result = { installed: [], skipped: [] };
|
|
278
|
-
const dirToAgents = new Map();
|
|
279
|
-
for (const agent of agents) {
|
|
280
|
-
if (!agent.supportsSkills()) {
|
|
281
|
-
for (const skill of skills) {
|
|
282
|
-
result.skipped.push({ skill, reason: `${agent.name} does not support skills` });
|
|
283
|
-
}
|
|
284
|
-
continue;
|
|
285
|
-
}
|
|
286
|
-
const skillsDir = agent.getSkillsDir(projectPath, options.global);
|
|
287
|
-
if (!skillsDir) {
|
|
288
|
-
for (const skill of skills) {
|
|
289
|
-
result.skipped.push({ skill, reason: `No skills directory for ${agent.name}` });
|
|
290
|
-
}
|
|
291
|
-
continue;
|
|
474
|
+
const agents = await this.getTargetAgents(projectPath, options);
|
|
475
|
+
if (agents.length === 0) {
|
|
476
|
+
return {
|
|
477
|
+
installed: [],
|
|
478
|
+
skipped: skills.map(skill => ({ skill, reason: 'No target agents found' })),
|
|
479
|
+
warnings: discovered.warnings,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
const result = { installed: [], skipped: [], warnings: discovered.warnings };
|
|
483
|
+
const installableAgents = [];
|
|
484
|
+
for (const agent of agents) {
|
|
485
|
+
if (!agent.supportsSkills()) {
|
|
486
|
+
for (const skill of skills) {
|
|
487
|
+
result.skipped.push({ skill, reason: `${agent.name} does not support skills` });
|
|
292
488
|
}
|
|
293
|
-
|
|
294
|
-
existing.push(agent);
|
|
295
|
-
dirToAgents.set(skillsDir, existing);
|
|
489
|
+
continue;
|
|
296
490
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
const shouldCopy = options.copy || resolved.type === 'github';
|
|
302
|
-
const installedPath = await this.installSkill(skill.path, skill.name, skillsDir, shouldCopy);
|
|
303
|
-
for (const agent of dirAgents) {
|
|
304
|
-
result.installed.push({ skill, agent: agent.id, path: installedPath });
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
catch (error) {
|
|
308
|
-
result.skipped.push({ skill, reason: error.message });
|
|
309
|
-
}
|
|
491
|
+
const skillsDir = agent.getSkillsDir(projectPath, options.global);
|
|
492
|
+
if (!skillsDir) {
|
|
493
|
+
for (const skill of skills) {
|
|
494
|
+
result.skipped.push({ skill, reason: `No skills directory for ${agent.name}` });
|
|
310
495
|
}
|
|
496
|
+
continue;
|
|
311
497
|
}
|
|
312
|
-
|
|
498
|
+
installableAgents.push(agent);
|
|
313
499
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
500
|
+
for (const skill of skills) {
|
|
501
|
+
for (const agent of installableAgents) {
|
|
502
|
+
try {
|
|
503
|
+
const installOptions = {
|
|
504
|
+
...(options.global !== undefined ? { global: options.global } : {}),
|
|
505
|
+
...(options.copy !== undefined ? { copy: options.copy } : {}),
|
|
506
|
+
};
|
|
507
|
+
const installed = await this.installSkillForAgent(skill.path, skill.name, agent, projectPath, installOptions);
|
|
508
|
+
result.installed.push({ skill, agent: agent.id, ...installed });
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
result.skipped.push({ skill, reason: error.message });
|
|
512
|
+
}
|
|
318
513
|
}
|
|
319
514
|
}
|
|
515
|
+
return result;
|
|
320
516
|
}
|
|
321
517
|
/**
|
|
322
518
|
* List all installed skills
|
|
323
519
|
*/
|
|
324
520
|
async listInstalled(projectPath, options = {}) {
|
|
325
521
|
const agents = await this.getTargetAgents(projectPath, options);
|
|
522
|
+
return this.listInstalledForAgents(projectPath, agents, options);
|
|
523
|
+
}
|
|
524
|
+
async listInstalledForAgents(projectPath, agents, options = {}) {
|
|
326
525
|
const installed = [];
|
|
327
526
|
for (const agent of agents) {
|
|
328
527
|
if (!agent.supportsSkills())
|
|
@@ -354,9 +553,18 @@ export class SkillsManager {
|
|
|
354
553
|
continue;
|
|
355
554
|
// Check if it's a symlink
|
|
356
555
|
let isSymlink = false;
|
|
556
|
+
let canonicalPath;
|
|
357
557
|
try {
|
|
358
558
|
const stat = await fs.lstat(entryPath);
|
|
359
559
|
isSymlink = stat.isSymbolicLink();
|
|
560
|
+
const canonicalBase = this.getCanonicalSkillsDir(projectPath, scope === 'global');
|
|
561
|
+
const resolvedEntryPath = await resolveRealPathOrSelf(entryPath);
|
|
562
|
+
if (this.isWithinPath(canonicalBase, resolvedEntryPath)) {
|
|
563
|
+
canonicalPath = resolvedEntryPath;
|
|
564
|
+
}
|
|
565
|
+
else if (this.isWithinPath(canonicalBase, entryPath)) {
|
|
566
|
+
canonicalPath = resolve(entryPath);
|
|
567
|
+
}
|
|
360
568
|
}
|
|
361
569
|
catch { }
|
|
362
570
|
installed.push({
|
|
@@ -365,7 +573,9 @@ export class SkillsManager {
|
|
|
365
573
|
path: entryPath,
|
|
366
574
|
agent: agent.id,
|
|
367
575
|
scope,
|
|
368
|
-
isSymlink
|
|
576
|
+
isSymlink,
|
|
577
|
+
mode: canonicalPath ? 'symlink' : 'copy',
|
|
578
|
+
...(canonicalPath ? { canonicalPath } : {}),
|
|
369
579
|
});
|
|
370
580
|
}
|
|
371
581
|
}
|
|
@@ -377,43 +587,66 @@ export class SkillsManager {
|
|
|
377
587
|
*/
|
|
378
588
|
async remove(skillNames, projectPath, options = {}) {
|
|
379
589
|
const agents = await this.getTargetAgents(projectPath, options);
|
|
590
|
+
const allAgents = this.agentManager.getAllAgents().filter(agent => agent.supportsSkills());
|
|
380
591
|
const removed = [];
|
|
381
592
|
const notFound = [];
|
|
593
|
+
const skipped = [];
|
|
382
594
|
const namesLower = new Set(skillNames.map(n => n.toLowerCase()));
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
595
|
+
const targetAgentIds = new Set(agents.map(agent => agent.id));
|
|
596
|
+
const installed = await this.listInstalledForAgents(projectPath, allAgents, options);
|
|
597
|
+
const scopedInstalled = installed.filter(entry => options.global ? entry.scope === 'global' : entry.scope === 'project');
|
|
598
|
+
const targetedEntries = scopedInstalled.filter(entry => targetAgentIds.has(entry.agent) &&
|
|
599
|
+
namesLower.has(entry.name.toLowerCase()));
|
|
600
|
+
const targetedKeys = new Set(targetedEntries.map(entry => `${entry.agent}:${entry.scope}:${entry.path}:${entry.name}`));
|
|
601
|
+
const remainingEntries = installed.filter(entry => !targetedKeys.has(`${entry.agent}:${entry.scope}:${entry.path}:${entry.name}`));
|
|
602
|
+
const removedPaths = new Set();
|
|
603
|
+
const removedCanonicalPaths = new Set();
|
|
604
|
+
for (const entry of targetedEntries) {
|
|
605
|
+
const removedEntry = `${entry.agent}:${entry.name}`;
|
|
606
|
+
if (entry.canonicalPath && entry.path === entry.canonicalPath) {
|
|
607
|
+
const stillReferenced = remainingEntries.some(other => other.name.toLowerCase() === entry.name.toLowerCase() &&
|
|
608
|
+
other.canonicalPath === entry.canonicalPath);
|
|
609
|
+
if (stillReferenced) {
|
|
610
|
+
skipped.push({
|
|
611
|
+
name: entry.name,
|
|
612
|
+
reason: `Shared canonical path still used by another agent: ${entry.canonicalPath}`,
|
|
613
|
+
});
|
|
614
|
+
continue;
|
|
615
|
+
}
|
|
392
616
|
}
|
|
393
|
-
|
|
394
|
-
|
|
617
|
+
if (!removedPaths.has(entry.path)) {
|
|
618
|
+
try {
|
|
619
|
+
await fs.rm(entry.path, { recursive: true, force: true });
|
|
620
|
+
removedPaths.add(entry.path);
|
|
621
|
+
}
|
|
622
|
+
catch {
|
|
623
|
+
skipped.push({
|
|
624
|
+
name: entry.name,
|
|
625
|
+
reason: `Could not remove skill path: ${entry.path}`,
|
|
626
|
+
});
|
|
395
627
|
continue;
|
|
396
|
-
const entries = await listFiles(dir);
|
|
397
|
-
for (const entry of entries) {
|
|
398
|
-
if (!namesLower.has(entry.toLowerCase()))
|
|
399
|
-
continue;
|
|
400
|
-
const entryPath = join(dir, entry);
|
|
401
|
-
try {
|
|
402
|
-
await fs.rm(entryPath, { recursive: true, force: true });
|
|
403
|
-
removed.push(`${agent.id}:${entry}`);
|
|
404
|
-
}
|
|
405
|
-
catch { }
|
|
406
628
|
}
|
|
407
629
|
}
|
|
630
|
+
if (entry.canonicalPath &&
|
|
631
|
+
entry.canonicalPath !== entry.path &&
|
|
632
|
+
!removedCanonicalPaths.has(entry.canonicalPath)) {
|
|
633
|
+
const stillReferenced = remainingEntries.some(other => other.name.toLowerCase() === entry.name.toLowerCase() &&
|
|
634
|
+
other.canonicalPath === entry.canonicalPath);
|
|
635
|
+
if (!stillReferenced) {
|
|
636
|
+
await fs.rm(entry.canonicalPath, { recursive: true, force: true }).catch(() => { });
|
|
637
|
+
removedCanonicalPaths.add(entry.canonicalPath);
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
removed.push(removedEntry);
|
|
408
641
|
}
|
|
409
642
|
// Check which names were not found anywhere
|
|
410
|
-
const
|
|
643
|
+
const foundNames = new Set(targetedEntries.map(entry => entry.name.toLowerCase()));
|
|
411
644
|
for (const name of skillNames) {
|
|
412
|
-
if (!
|
|
645
|
+
if (!foundNames.has(name.toLowerCase())) {
|
|
413
646
|
notFound.push(name);
|
|
414
647
|
}
|
|
415
648
|
}
|
|
416
|
-
return { removed, notFound };
|
|
649
|
+
return { removed, notFound, skipped };
|
|
417
650
|
}
|
|
418
651
|
}
|
|
419
652
|
//# sourceMappingURL=skillsManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillsManager.js","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skillsManager.js","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"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"}
|