craftdesk 0.3.0 → 0.5.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 +88 -0
- package/README.md +1609 -132
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +306 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/convert.d.ts +8 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +146 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/detect-agents.d.ts +14 -0
- package/dist/commands/detect-agents.d.ts.map +1 -0
- package/dist/commands/detect-agents.js +86 -0
- package/dist/commands/detect-agents.js.map +1 -0
- package/dist/commands/embed.d.ts +14 -0
- package/dist/commands/embed.d.ts.map +1 -0
- package/dist/commands/embed.js +147 -0
- package/dist/commands/embed.js.map +1 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +66 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +75 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +158 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +51 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/outdated.d.ts +23 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +268 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +203 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +51 -10
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup-multi-agent.d.ts +17 -0
- package/dist/commands/setup-multi-agent.d.ts.map +1 -0
- package/dist/commands/setup-multi-agent.js +188 -0
- package/dist/commands/setup-multi-agent.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +144 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/unembed.d.ts +14 -0
- package/dist/commands/unembed.d.ts.map +1 -0
- package/dist/commands/unembed.js +96 -0
- package/dist/commands/unembed.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +372 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +143 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/converters/base-converter.d.ts +89 -0
- package/dist/converters/base-converter.d.ts.map +1 -0
- package/dist/converters/base-converter.js +249 -0
- package/dist/converters/base-converter.js.map +1 -0
- package/dist/converters/continue-converter.d.ts +53 -0
- package/dist/converters/continue-converter.d.ts.map +1 -0
- package/dist/converters/continue-converter.js +243 -0
- package/dist/converters/continue-converter.js.map +1 -0
- package/dist/converters/cursor-converter.d.ts +70 -0
- package/dist/converters/cursor-converter.d.ts.map +1 -0
- package/dist/converters/cursor-converter.js +272 -0
- package/dist/converters/cursor-converter.js.map +1 -0
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/services/agent-detector.d.ts +57 -0
- package/dist/services/agent-detector.d.ts.map +1 -0
- package/dist/services/agent-detector.js +146 -0
- package/dist/services/agent-detector.js.map +1 -0
- package/dist/services/config-manager.d.ts +128 -10
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +190 -18
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/converter.d.ts +53 -0
- package/dist/services/converter.d.ts.map +1 -0
- package/dist/services/converter.js +185 -0
- package/dist/services/converter.js.map +1 -0
- package/dist/services/craft-wrapper.d.ts +108 -0
- package/dist/services/craft-wrapper.d.ts.map +1 -0
- package/dist/services/craft-wrapper.js +268 -0
- package/dist/services/craft-wrapper.js.map +1 -0
- package/dist/services/git-resolver.d.ts +9 -3
- package/dist/services/git-resolver.d.ts.map +1 -1
- package/dist/services/git-resolver.js +44 -20
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/gitignore-manager.d.ts +74 -0
- package/dist/services/gitignore-manager.d.ts.map +1 -0
- package/dist/services/gitignore-manager.js +188 -0
- package/dist/services/gitignore-manager.js.map +1 -0
- package/dist/services/installer.d.ts +60 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +295 -20
- package/dist/services/installer.js.map +1 -1
- package/dist/services/multi-agent-sync.d.ts +88 -0
- package/dist/services/multi-agent-sync.d.ts.map +1 -0
- package/dist/services/multi-agent-sync.js +316 -0
- package/dist/services/multi-agent-sync.js.map +1 -0
- package/dist/services/plugin-resolver.d.ts +80 -0
- package/dist/services/plugin-resolver.d.ts.map +1 -0
- package/dist/services/plugin-resolver.js +183 -0
- package/dist/services/plugin-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +132 -5
- package/dist/services/registry-client.d.ts.map +1 -1
- package/dist/services/registry-client.js +239 -34
- package/dist/services/registry-client.js.map +1 -1
- package/dist/services/settings-manager.d.ts +151 -0
- package/dist/services/settings-manager.d.ts.map +1 -0
- package/dist/services/settings-manager.js +333 -0
- package/dist/services/settings-manager.js.map +1 -0
- package/dist/types/claude-settings.d.ts +155 -0
- package/dist/types/claude-settings.d.ts.map +1 -0
- package/dist/types/claude-settings.js +20 -0
- package/dist/types/claude-settings.js.map +1 -0
- package/dist/types/converter.d.ts +98 -0
- package/dist/types/converter.d.ts.map +1 -0
- package/dist/types/converter.js +6 -0
- package/dist/types/converter.js.map +1 -0
- package/dist/types/craftdesk-json.d.ts +76 -3
- package/dist/types/craftdesk-json.d.ts.map +1 -1
- package/dist/types/craftdesk-lock.d.ts +62 -1
- package/dist/types/craftdesk-lock.d.ts.map +1 -1
- package/dist/types/multi-agent.d.ts +85 -0
- package/dist/types/multi-agent.d.ts.map +1 -0
- package/dist/types/multi-agent.js +6 -0
- package/dist/types/multi-agent.js.map +1 -0
- package/dist/utils/crypto.d.ts +23 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +52 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/file-system.d.ts +43 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +45 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +76 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/version-utils.d.ts +63 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +130 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +36 -9
- package/.claude/settings.local.json +0 -19
- package/.github/workflows/ci.yml +0 -94
- package/API.md +0 -414
- package/TESTING.md +0 -263
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -56
- package/dist/commands/config.js.map +0 -1
- package/dist/types/config.d.ts +0 -17
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -3
- package/dist/types/config.js.map +0 -1
- package/docs/DEPENDENCY_RESOLUTION.md +0 -237
- package/examples/craftdesk-all-sources.json +0 -79
- package/examples/craftdesk-git-monorepo.json +0 -41
- package/examples/craftdesk-multi-registry.json +0 -40
- package/examples/craftdesk-with-registries.json +0 -49
- package/examples/simple-craftdesk.json +0 -10
- package/src/commands/add.ts +0 -314
- package/src/commands/init.ts +0 -55
- package/src/commands/install.ts +0 -126
- package/src/commands/list.ts +0 -126
- package/src/commands/remove.ts +0 -82
- package/src/index.ts +0 -56
- package/src/services/config-manager.ts +0 -150
- package/src/services/git-resolver.ts +0 -373
- package/src/services/installer.ts +0 -314
- package/src/services/registry-client.ts +0 -163
- package/src/types/craftdesk-json.ts +0 -53
- package/src/types/craftdesk-lock.ts +0 -38
- package/src/utils/file-system.ts +0 -55
- package/src/utils/logger.ts +0 -82
- package/tests/fixtures/craftdesk-git.json +0 -17
- package/tests/fixtures/craftdesk.json +0 -15
- package/tests/helpers/test-utils.ts +0 -60
- package/tests/integration/init-command.test.ts +0 -70
- package/tests/integration/list-command.test.ts +0 -77
- package/tests/unit/config-manager.test.ts +0 -228
- package/tests/unit/git-resolver.test.ts +0 -303
- package/tests/unit/installer.test.ts +0 -105
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -29
|
@@ -75,21 +75,22 @@ class GitResolver {
|
|
|
75
75
|
await fs_extra_1.default.ensureDir(repoTempDir);
|
|
76
76
|
// Clone the repository
|
|
77
77
|
logger_1.logger.debug(`Cloning ${gitInfo.url} to analyze dependencies...`);
|
|
78
|
-
|
|
78
|
+
const cloneArgs = ['clone', '--depth', '1'];
|
|
79
79
|
if (gitInfo.branch) {
|
|
80
|
-
|
|
80
|
+
cloneArgs.push('-b', gitInfo.branch);
|
|
81
81
|
}
|
|
82
82
|
else if (gitInfo.tag) {
|
|
83
|
-
|
|
83
|
+
cloneArgs.push('-b', gitInfo.tag);
|
|
84
84
|
}
|
|
85
|
-
|
|
86
|
-
(0, child_process_1.
|
|
85
|
+
cloneArgs.push(gitInfo.url, repoTempDir);
|
|
86
|
+
(0, child_process_1.execFileSync)('git', cloneArgs, { stdio: 'pipe' });
|
|
87
87
|
// If specific commit, checkout that commit
|
|
88
88
|
if (gitInfo.commit) {
|
|
89
|
-
(0, child_process_1.
|
|
89
|
+
(0, child_process_1.execFileSync)('git', ['fetch', '--unshallow'], { cwd: repoTempDir, stdio: 'pipe' });
|
|
90
|
+
(0, child_process_1.execFileSync)('git', ['checkout', gitInfo.commit], { cwd: repoTempDir, stdio: 'pipe' });
|
|
90
91
|
}
|
|
91
92
|
// Get the actual commit hash for lockfile
|
|
92
|
-
const resolvedCommit = (0, child_process_1.
|
|
93
|
+
const resolvedCommit = (0, child_process_1.execFileSync)('git', ['rev-parse', 'HEAD'], { cwd: repoTempDir, encoding: 'utf8' }).trim();
|
|
93
94
|
gitInfo.resolvedCommit = resolvedCommit;
|
|
94
95
|
// Handle direct file reference
|
|
95
96
|
if (gitInfo.file) {
|
|
@@ -148,8 +149,9 @@ class GitResolver {
|
|
|
148
149
|
: path_1.default.join(repoTempDir, 'craftdesk.json');
|
|
149
150
|
if (await fs_extra_1.default.pathExists(craftPath)) {
|
|
150
151
|
const content = await fs_extra_1.default.readFile(craftPath, 'utf-8');
|
|
151
|
-
|
|
152
|
-
|
|
152
|
+
const craftJson = JSON.parse(content);
|
|
153
|
+
gitInfo.craftDeskJson = craftJson;
|
|
154
|
+
logger_1.logger.debug(`Found craftdesk.json in git repository: ${craftJson.name}@${craftJson.version}`);
|
|
153
155
|
}
|
|
154
156
|
else {
|
|
155
157
|
// No craftdesk.json found - create a minimal one
|
|
@@ -187,6 +189,8 @@ class GitResolver {
|
|
|
187
189
|
inferCraftTypeFromFilename(filename) {
|
|
188
190
|
const lower = filename.toLowerCase();
|
|
189
191
|
// Check filename for type indicators
|
|
192
|
+
if (lower.includes('collection'))
|
|
193
|
+
return 'collection';
|
|
190
194
|
if (lower.includes('agent'))
|
|
191
195
|
return 'agent';
|
|
192
196
|
if (lower.includes('command'))
|
|
@@ -204,7 +208,7 @@ class GitResolver {
|
|
|
204
208
|
* Infers the craft type from the repository structure
|
|
205
209
|
*
|
|
206
210
|
* Type inference strategy:
|
|
207
|
-
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md
|
|
211
|
+
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md, COLLECTION.md
|
|
208
212
|
* 2. Check directory name for type indicators
|
|
209
213
|
* 3. Default to 'skill' if no indicators found
|
|
210
214
|
*
|
|
@@ -217,7 +221,9 @@ class GitResolver {
|
|
|
217
221
|
const checkPath = subPath ? path_1.default.join(repoPath, subPath) : repoPath;
|
|
218
222
|
// Check for type-indicating files
|
|
219
223
|
const files = await fs_extra_1.default.readdir(checkPath);
|
|
220
|
-
// Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md, PLUGIN.md
|
|
224
|
+
// Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md, PLUGIN.md, COLLECTION.md
|
|
225
|
+
if (files.includes('COLLECTION.md'))
|
|
226
|
+
return 'collection';
|
|
221
227
|
if (files.includes('SKILL.md'))
|
|
222
228
|
return 'skill';
|
|
223
229
|
if (files.includes('AGENT.md'))
|
|
@@ -230,6 +236,8 @@ class GitResolver {
|
|
|
230
236
|
return 'plugin';
|
|
231
237
|
// Check directory name hints
|
|
232
238
|
const dirName = subPath ? path_1.default.basename(subPath) : path_1.default.basename(repoPath);
|
|
239
|
+
if (dirName.includes('collection'))
|
|
240
|
+
return 'collection';
|
|
233
241
|
if (dirName.includes('skill'))
|
|
234
242
|
return 'skill';
|
|
235
243
|
if (dirName.includes('agent'))
|
|
@@ -274,7 +282,10 @@ class GitResolver {
|
|
|
274
282
|
const visited = new Set();
|
|
275
283
|
// Process queue until all dependencies are resolved
|
|
276
284
|
while (toResolve.length > 0) {
|
|
277
|
-
const
|
|
285
|
+
const item = toResolve.shift();
|
|
286
|
+
if (!item)
|
|
287
|
+
break; // Should never happen due to length check, but satisfies TypeScript
|
|
288
|
+
const [name, dep] = item;
|
|
278
289
|
// Skip if already resolved (handles duplicates and circular deps)
|
|
279
290
|
if (visited.has(name))
|
|
280
291
|
continue;
|
|
@@ -290,20 +301,27 @@ class GitResolver {
|
|
|
290
301
|
path: dep.path,
|
|
291
302
|
file: dep.file
|
|
292
303
|
});
|
|
293
|
-
|
|
304
|
+
const lockEntry = {
|
|
294
305
|
version: gitInfo.craftDeskJson?.version || '0.0.0',
|
|
295
306
|
resolved: gitInfo.url,
|
|
296
307
|
integrity: gitInfo.resolvedCommit || 'git',
|
|
297
308
|
type: gitInfo.craftDeskJson?.type || 'skill',
|
|
298
|
-
author: gitInfo.craftDeskJson?.author
|
|
309
|
+
author: gitInfo.craftDeskJson?.author,
|
|
299
310
|
git: gitInfo.url,
|
|
300
311
|
...(gitInfo.branch && { branch: gitInfo.branch }),
|
|
301
312
|
...(gitInfo.tag && { tag: gitInfo.tag }),
|
|
302
313
|
...(gitInfo.commit && { commit: gitInfo.resolvedCommit }),
|
|
303
314
|
...(gitInfo.path && { path: gitInfo.path }),
|
|
304
|
-
...(gitInfo.file && { file: gitInfo.file })
|
|
305
|
-
dependencies: gitInfo.craftDeskJson?.dependencies || {}
|
|
315
|
+
...(gitInfo.file && { file: gitInfo.file })
|
|
306
316
|
};
|
|
317
|
+
// Only add dependencies if they exist
|
|
318
|
+
if (gitInfo.craftDeskJson?.dependencies && Object.keys(gitInfo.craftDeskJson.dependencies).length > 0) {
|
|
319
|
+
lockEntry.dependencies = Object.fromEntries(Object.entries(gitInfo.craftDeskJson.dependencies).map(([k, v]) => {
|
|
320
|
+
const versionStr = typeof v === 'string' ? v : v.version || '*';
|
|
321
|
+
return [k, versionStr];
|
|
322
|
+
}));
|
|
323
|
+
}
|
|
324
|
+
resolved[name] = lockEntry;
|
|
307
325
|
// Add transitive dependencies to the resolution queue
|
|
308
326
|
// This enables recursive dependency resolution
|
|
309
327
|
if (gitInfo.craftDeskJson?.dependencies) {
|
|
@@ -316,12 +334,17 @@ class GitResolver {
|
|
|
316
334
|
}
|
|
317
335
|
}
|
|
318
336
|
else {
|
|
319
|
-
// Registry dependency -
|
|
337
|
+
// Registry dependency - create placeholder entry for resolution by registry client
|
|
320
338
|
// The actual version resolution happens via the registry API
|
|
339
|
+
const version = typeof dep === 'string' ? dep : (dep.version || '*');
|
|
340
|
+
const registry = typeof dep === 'object' ? dep.registry : undefined;
|
|
341
|
+
// Create a minimal LockEntry that will be filled in by registry resolution
|
|
321
342
|
resolved[name] = {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
343
|
+
version,
|
|
344
|
+
resolved: registry || 'registry',
|
|
345
|
+
integrity: 'pending',
|
|
346
|
+
type: 'skill', // Default, will be updated by registry
|
|
347
|
+
...(registry && { registry })
|
|
325
348
|
};
|
|
326
349
|
}
|
|
327
350
|
}
|
|
@@ -330,6 +353,7 @@ class GitResolver {
|
|
|
330
353
|
lockfile: {
|
|
331
354
|
version: '1.0.0',
|
|
332
355
|
lockfileVersion: 1,
|
|
356
|
+
generatedAt: new Date().toISOString(),
|
|
333
357
|
crafts: resolved
|
|
334
358
|
}
|
|
335
359
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitIgnore Manager - Auto-generate .gitignore for managed vs embedded skills
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Generating .claude/skills/.gitignore to ignore managed dependencies
|
|
6
|
+
* - Allowing embedded (local) skills to be committed
|
|
7
|
+
* - Updating .gitignore when skills are added/removed
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Service for managing .gitignore in skills directory
|
|
11
|
+
*/
|
|
12
|
+
export declare class GitIgnoreManager {
|
|
13
|
+
/**
|
|
14
|
+
* Update .gitignore in skills directory to ignore managed skills
|
|
15
|
+
*
|
|
16
|
+
* @param skillsDir - Directory containing skills (e.g., '.claude/skills')
|
|
17
|
+
* @param managedSkills - Array of managed skill names (from lockfile)
|
|
18
|
+
* @param embeddedSkills - Array of embedded skill names (from craftdesk.json)
|
|
19
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const manager = new GitIgnoreManager();
|
|
24
|
+
* await manager.updateGitIgnore(
|
|
25
|
+
* '.claude/skills',
|
|
26
|
+
* ['ruby-expert', 'postgres-expert'], // Managed
|
|
27
|
+
* ['my-project-skill'] // Embedded
|
|
28
|
+
* );
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
updateGitIgnore(skillsDir: string, managedSkills: string[], embeddedSkills: string[], cwd?: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Generate .gitignore file content
|
|
34
|
+
*
|
|
35
|
+
* @param managedSkills - Array of managed skill names
|
|
36
|
+
* @param embeddedSkills - Array of embedded skill names
|
|
37
|
+
* @param orphanedSkills - Array of orphaned skill names
|
|
38
|
+
* @returns Generated .gitignore content
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private generateGitIgnoreContent;
|
|
42
|
+
/**
|
|
43
|
+
* Get managed skills from lockfile
|
|
44
|
+
*
|
|
45
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
46
|
+
* @returns Array of managed skill names
|
|
47
|
+
*/
|
|
48
|
+
getManagedSkills(cwd?: string): Promise<string[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Get embedded skills from craftdesk.json
|
|
51
|
+
*
|
|
52
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
53
|
+
* @returns Array of embedded skill names
|
|
54
|
+
*/
|
|
55
|
+
getEmbeddedSkills(cwd?: string): Promise<string[]>;
|
|
56
|
+
/**
|
|
57
|
+
* Detect orphaned skills (in directory but not in lockfile or embedded list)
|
|
58
|
+
*
|
|
59
|
+
* @param skillsDir - Directory containing skills (e.g., '.claude/skills')
|
|
60
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
61
|
+
* @returns Array of orphaned skill names
|
|
62
|
+
*/
|
|
63
|
+
detectOrphanedSkills(skillsDir: string, cwd?: string): Promise<string[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Update .gitignore after install/add/remove operations
|
|
66
|
+
*
|
|
67
|
+
* Convenience method that automatically fetches managed and embedded skills
|
|
68
|
+
*
|
|
69
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
70
|
+
*/
|
|
71
|
+
autoUpdate(cwd?: string): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
export declare const gitIgnoreManager: GitIgnoreManager;
|
|
74
|
+
//# sourceMappingURL=gitignore-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-manager.d.ts","sourceRoot":"","sources":["../../src/services/gitignore-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;;;;;;;;;OAiBG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE,EACvB,cAAc,EAAE,MAAM,EAAE,EACxB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAkBhB;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAiDhC;;;;;OAKG;IACG,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBtE;;;;;OAKG;IACG,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBvE;;;;;;OAMG;IACG,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBpB;;;;;;OAMG;IACG,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7D;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GitIgnore Manager - Auto-generate .gitignore for managed vs embedded skills
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Generating .claude/skills/.gitignore to ignore managed dependencies
|
|
7
|
+
* - Allowing embedded (local) skills to be committed
|
|
8
|
+
* - Updating .gitignore when skills are added/removed
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.gitIgnoreManager = exports.GitIgnoreManager = void 0;
|
|
15
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const logger_1 = require("../utils/logger");
|
|
18
|
+
const config_manager_1 = require("./config-manager");
|
|
19
|
+
/**
|
|
20
|
+
* Service for managing .gitignore in skills directory
|
|
21
|
+
*/
|
|
22
|
+
class GitIgnoreManager {
|
|
23
|
+
/**
|
|
24
|
+
* Update .gitignore in skills directory to ignore managed skills
|
|
25
|
+
*
|
|
26
|
+
* @param skillsDir - Directory containing skills (e.g., '.claude/skills')
|
|
27
|
+
* @param managedSkills - Array of managed skill names (from lockfile)
|
|
28
|
+
* @param embeddedSkills - Array of embedded skill names (from craftdesk.json)
|
|
29
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const manager = new GitIgnoreManager();
|
|
34
|
+
* await manager.updateGitIgnore(
|
|
35
|
+
* '.claude/skills',
|
|
36
|
+
* ['ruby-expert', 'postgres-expert'], // Managed
|
|
37
|
+
* ['my-project-skill'] // Embedded
|
|
38
|
+
* );
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
async updateGitIgnore(skillsDir, managedSkills, embeddedSkills, cwd = process.cwd()) {
|
|
42
|
+
const gitignorePath = path_1.default.join(cwd, skillsDir, '.gitignore');
|
|
43
|
+
// Detect orphaned skills
|
|
44
|
+
const orphaned = await this.detectOrphanedSkills(skillsDir, cwd);
|
|
45
|
+
// Generate gitignore content
|
|
46
|
+
const content = this.generateGitIgnoreContent(managedSkills, embeddedSkills, orphaned);
|
|
47
|
+
// Ensure directory exists
|
|
48
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(gitignorePath));
|
|
49
|
+
// Write .gitignore
|
|
50
|
+
await fs_extra_1.default.writeFile(gitignorePath, content, 'utf-8');
|
|
51
|
+
logger_1.logger.debug(`Updated ${skillsDir}/.gitignore with ${managedSkills.length} managed and ${embeddedSkills.length} embedded skills`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generate .gitignore file content
|
|
55
|
+
*
|
|
56
|
+
* @param managedSkills - Array of managed skill names
|
|
57
|
+
* @param embeddedSkills - Array of embedded skill names
|
|
58
|
+
* @param orphanedSkills - Array of orphaned skill names
|
|
59
|
+
* @returns Generated .gitignore content
|
|
60
|
+
* @private
|
|
61
|
+
*/
|
|
62
|
+
generateGitIgnoreContent(managedSkills, embeddedSkills, orphanedSkills = []) {
|
|
63
|
+
const lines = [];
|
|
64
|
+
// Header
|
|
65
|
+
lines.push('# Auto-generated by CraftDesk - DO NOT EDIT');
|
|
66
|
+
lines.push('# This file is managed automatically based on craftdesk.json and craftdesk.lock');
|
|
67
|
+
lines.push('');
|
|
68
|
+
if (managedSkills.length > 0) {
|
|
69
|
+
lines.push('# Managed dependencies (from craftdesk.lock)');
|
|
70
|
+
lines.push('# These are installed via `craftdesk install` and should not be committed');
|
|
71
|
+
for (const skill of managedSkills.sort()) {
|
|
72
|
+
lines.push(`${skill}/`);
|
|
73
|
+
}
|
|
74
|
+
lines.push('');
|
|
75
|
+
}
|
|
76
|
+
if (embeddedSkills.length > 0) {
|
|
77
|
+
lines.push('# Embedded/local skills (committed to git)');
|
|
78
|
+
lines.push('# These are project-specific and should be committed');
|
|
79
|
+
for (const skill of embeddedSkills.sort()) {
|
|
80
|
+
lines.push(`# NOT ignored: ${skill}/`);
|
|
81
|
+
}
|
|
82
|
+
lines.push('');
|
|
83
|
+
}
|
|
84
|
+
if (orphanedSkills.length > 0) {
|
|
85
|
+
lines.push('# Untracked (not in craftdesk.json or craftdesk.lock)');
|
|
86
|
+
lines.push('# Add these to dependencies or embedded list, or delete them');
|
|
87
|
+
for (const skill of orphanedSkills.sort()) {
|
|
88
|
+
lines.push(`# ${skill}/`);
|
|
89
|
+
}
|
|
90
|
+
lines.push('');
|
|
91
|
+
}
|
|
92
|
+
if (managedSkills.length === 0 && embeddedSkills.length === 0 && orphanedSkills.length === 0) {
|
|
93
|
+
lines.push('# No managed or embedded skills yet');
|
|
94
|
+
lines.push('# Run `craftdesk add <skill>` to add managed dependencies');
|
|
95
|
+
lines.push('# Run `craftdesk embed <skill>` to register embedded skills');
|
|
96
|
+
lines.push('');
|
|
97
|
+
}
|
|
98
|
+
return lines.join('\n');
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get managed skills from lockfile
|
|
102
|
+
*
|
|
103
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
104
|
+
* @returns Array of managed skill names
|
|
105
|
+
*/
|
|
106
|
+
async getManagedSkills(cwd = process.cwd()) {
|
|
107
|
+
const lockfilePath = path_1.default.join(cwd, 'craftdesk.lock');
|
|
108
|
+
if (!await fs_extra_1.default.pathExists(lockfilePath)) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
const lockfileContent = await fs_extra_1.default.readFile(lockfilePath, 'utf-8');
|
|
113
|
+
const lockfile = JSON.parse(lockfileContent);
|
|
114
|
+
// Get all craft names from lockfile where type is 'skill'
|
|
115
|
+
return Object.entries(lockfile.crafts || {})
|
|
116
|
+
.filter(([, entry]) => entry.type === 'skill')
|
|
117
|
+
.map(([name]) => name);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
logger_1.logger.warn(`Failed to read lockfile: ${error}`);
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get embedded skills from craftdesk.json
|
|
126
|
+
*
|
|
127
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
128
|
+
* @returns Array of embedded skill names
|
|
129
|
+
*/
|
|
130
|
+
async getEmbeddedSkills(cwd = process.cwd()) {
|
|
131
|
+
const configPath = path_1.default.join(cwd, 'craftdesk.json');
|
|
132
|
+
if (!await fs_extra_1.default.pathExists(configPath)) {
|
|
133
|
+
return [];
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const configContent = await fs_extra_1.default.readFile(configPath, 'utf-8');
|
|
137
|
+
const config = JSON.parse(configContent);
|
|
138
|
+
return config?.embedded || [];
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
logger_1.logger.warn(`Failed to read craftdesk.json: ${error}`);
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Detect orphaned skills (in directory but not in lockfile or embedded list)
|
|
147
|
+
*
|
|
148
|
+
* @param skillsDir - Directory containing skills (e.g., '.claude/skills')
|
|
149
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
150
|
+
* @returns Array of orphaned skill names
|
|
151
|
+
*/
|
|
152
|
+
async detectOrphanedSkills(skillsDir, cwd = process.cwd()) {
|
|
153
|
+
const fullSkillsDir = path_1.default.join(cwd, skillsDir);
|
|
154
|
+
if (!await fs_extra_1.default.pathExists(fullSkillsDir)) {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
// Get all directories in skills folder
|
|
158
|
+
const entries = await fs_extra_1.default.readdir(fullSkillsDir, { withFileTypes: true });
|
|
159
|
+
const allSkills = entries
|
|
160
|
+
.filter(entry => entry.isDirectory() && !entry.name.startsWith('.'))
|
|
161
|
+
.map(entry => entry.name);
|
|
162
|
+
// Get managed and embedded skills
|
|
163
|
+
const managed = await this.getManagedSkills(cwd);
|
|
164
|
+
const embedded = await this.getEmbeddedSkills(cwd);
|
|
165
|
+
const knownSkills = new Set([...managed, ...embedded]);
|
|
166
|
+
// Find orphans
|
|
167
|
+
return allSkills.filter(skill => !knownSkills.has(skill));
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Update .gitignore after install/add/remove operations
|
|
171
|
+
*
|
|
172
|
+
* Convenience method that automatically fetches managed and embedded skills
|
|
173
|
+
*
|
|
174
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
175
|
+
*/
|
|
176
|
+
async autoUpdate(cwd = process.cwd()) {
|
|
177
|
+
const config = await config_manager_1.configManager.getCraftDeskJson();
|
|
178
|
+
const installPath = config_manager_1.configManager.getInstallPath();
|
|
179
|
+
const skillsDir = path_1.default.join(installPath, 'skills');
|
|
180
|
+
const managed = await this.getManagedSkills(cwd);
|
|
181
|
+
const embedded = config?.embedded || [];
|
|
182
|
+
await this.updateGitIgnore(skillsDir, managed, embedded, cwd);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.GitIgnoreManager = GitIgnoreManager;
|
|
186
|
+
// Export singleton instance
|
|
187
|
+
exports.gitIgnoreManager = new GitIgnoreManager();
|
|
188
|
+
//# sourceMappingURL=gitignore-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitignore-manager.js","sourceRoot":"","sources":["../../src/services/gitignore-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,12 +82,71 @@ export declare class Installer {
|
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
84
|
installCraft(name: string, entry: LockEntry): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Sync craft to other agent directories if multi-agent auto-sync is enabled
|
|
87
|
+
*
|
|
88
|
+
* @param name - Craft name
|
|
89
|
+
* @param craftDir - Path to craft directory
|
|
90
|
+
* @param type - Craft type
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
93
|
+
private syncCraftIfEnabled;
|
|
85
94
|
private installFromGit;
|
|
86
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Get the type-specific directory for a craft type
|
|
97
|
+
*
|
|
98
|
+
* @param type - The craft type (skill, agent, command, hook, plugin, collection)
|
|
99
|
+
* @returns Directory name for the craft type
|
|
100
|
+
*/
|
|
101
|
+
getTypeDirectory(type: string): string;
|
|
102
|
+
/**
|
|
103
|
+
* Get the install path (e.g., '.claude')
|
|
104
|
+
*
|
|
105
|
+
* @returns The installation directory path
|
|
106
|
+
*/
|
|
107
|
+
getInstallPath(): string;
|
|
87
108
|
private downloadFile;
|
|
88
109
|
private extractArchive;
|
|
89
110
|
private createMetadata;
|
|
111
|
+
/**
|
|
112
|
+
* Register a plugin in .claude/settings.json
|
|
113
|
+
*
|
|
114
|
+
* @param name - The plugin name
|
|
115
|
+
* @param entry - The lock file entry for this plugin
|
|
116
|
+
* @param craftDir - The directory where the plugin is installed
|
|
117
|
+
* @returns Promise that resolves when registration is complete
|
|
118
|
+
*/
|
|
119
|
+
private registerPlugin;
|
|
120
|
+
/**
|
|
121
|
+
* Read plugin.json manifest from plugin directory
|
|
122
|
+
* Plugin manifest is located at .claude-plugin/plugin.json
|
|
123
|
+
*
|
|
124
|
+
* @param pluginDir - Path to the plugin directory containing .claude-plugin/plugin.json
|
|
125
|
+
* @returns The parsed plugin manifest or null if not found or invalid
|
|
126
|
+
*/
|
|
127
|
+
private readPluginManifest;
|
|
128
|
+
/**
|
|
129
|
+
* Scan plugin directory to discover components
|
|
130
|
+
* This ensures we find all skills/agents/commands/hooks even if not listed in plugin.json
|
|
131
|
+
*
|
|
132
|
+
* @param pluginDir - Path to the plugin directory to scan for components
|
|
133
|
+
* @returns Object containing arrays of discovered skills, agents, commands, and hooks
|
|
134
|
+
*/
|
|
135
|
+
private scanPluginComponents;
|
|
136
|
+
/**
|
|
137
|
+
* Remove an installed craft from the project
|
|
138
|
+
* Unregisters plugins from settings and removes the craft directory
|
|
139
|
+
*
|
|
140
|
+
* @param name - Name of the craft to remove
|
|
141
|
+
* @param type - Type of craft (plugin, skill, agent, command, hook)
|
|
142
|
+
*/
|
|
90
143
|
removeCraft(name: string, type: string): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* List all installed crafts in the project
|
|
146
|
+
* Scans the installation directory for all craft types and reads their metadata
|
|
147
|
+
*
|
|
148
|
+
* @returns Array of installed crafts with name, version, and type information
|
|
149
|
+
*/
|
|
91
150
|
listInstalled(): Promise<Array<{
|
|
92
151
|
name: string;
|
|
93
152
|
version: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;;IAM5B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDjE;;;;;;;OAOG;YACW,kBAAkB;YA4BlB,cAAc;IAmE5B;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmBtC;;;;OAIG;IACH,cAAc,IAAI,MAAM;YAIV,YAAY;YAgBZ,cAAc;YAYd,cAAc;IAkB5B;;;;;;;OAOG;YACW,cAAc;IAyF5B;;;;;;OAMG;YACW,kBAAkB;IAgBhC;;;;;;OAMG;YACW,oBAAoB;IAgDlC;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5D;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA8BvF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|