craftdesk 0.3.0 → 0.4.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 +57 -0
- package/README.md +943 -46
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +302 -6
- 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/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 +72 -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 +198 -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/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +369 -0
- package/dist/commands/update.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 +34 -3
- package/dist/index.js.map +1 -1
- 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 +189 -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 +29 -10
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/installer.d.ts +51 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +245 -14
- package/dist/services/installer.js.map +1 -1
- 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 +182 -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 +63 -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/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
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CraftWrapper - Wraps individual crafts as plugins
|
|
4
|
+
*
|
|
5
|
+
* Handles:
|
|
6
|
+
* - Creating plugin structure for individual skills/agents/commands/hooks
|
|
7
|
+
* - Generating .claude-plugin/plugin.json manifest
|
|
8
|
+
* - Generating PLUGIN.md documentation
|
|
9
|
+
* - Copying craft files into plugin structure
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.craftWrapper = exports.CraftWrapper = void 0;
|
|
16
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const logger_1 = require("../utils/logger");
|
|
19
|
+
const file_system_1 = require("../utils/file-system");
|
|
20
|
+
/**
|
|
21
|
+
* Service for wrapping individual crafts as Claude Code plugins
|
|
22
|
+
*
|
|
23
|
+
* Handles creating plugin structure, generating manifests, and managing wrapped crafts
|
|
24
|
+
*/
|
|
25
|
+
class CraftWrapper {
|
|
26
|
+
/**
|
|
27
|
+
* Wrap an individual craft as a plugin
|
|
28
|
+
*
|
|
29
|
+
* @param options - Wrapping configuration
|
|
30
|
+
* @param installDir - Installation directory (.claude)
|
|
31
|
+
* @returns Path to created plugin
|
|
32
|
+
*/
|
|
33
|
+
async wrapCraft(options, installDir = '.claude') {
|
|
34
|
+
const { craftName, craftType, craftPath, version, author, description, exposeAsTools, exposeAsMCP } = options;
|
|
35
|
+
// Create plugin directory
|
|
36
|
+
const pluginName = `${craftName}-plugin`;
|
|
37
|
+
const pluginDir = path_1.default.join(installDir, 'plugins', pluginName);
|
|
38
|
+
await (0, file_system_1.ensureDir)(pluginDir);
|
|
39
|
+
// Create plugin structure based on craft type
|
|
40
|
+
const typeDir = this.getTypeDirectory(craftType);
|
|
41
|
+
const craftDestDir = path_1.default.join(pluginDir, typeDir, craftName);
|
|
42
|
+
await (0, file_system_1.ensureDir)(craftDestDir);
|
|
43
|
+
// Copy craft files
|
|
44
|
+
await this.copyCraftFiles(craftPath, craftDestDir);
|
|
45
|
+
// Create .claude-plugin directory and plugin.json manifest
|
|
46
|
+
const claudePluginDir = path_1.default.join(pluginDir, '.claude-plugin');
|
|
47
|
+
await (0, file_system_1.ensureDir)(claudePluginDir);
|
|
48
|
+
const manifest = this.createPluginManifest({
|
|
49
|
+
name: pluginName,
|
|
50
|
+
version,
|
|
51
|
+
author,
|
|
52
|
+
description: description || `Plugin wrapper for ${craftName} ${craftType}`,
|
|
53
|
+
craftName,
|
|
54
|
+
craftType,
|
|
55
|
+
exposeAsTools,
|
|
56
|
+
exposeAsMCP
|
|
57
|
+
});
|
|
58
|
+
await fs_extra_1.default.writeFile(path_1.default.join(claudePluginDir, 'plugin.json'), JSON.stringify(manifest, null, 2), 'utf-8');
|
|
59
|
+
// Create PLUGIN.md documentation
|
|
60
|
+
const pluginDoc = this.generatePluginDoc({
|
|
61
|
+
pluginName,
|
|
62
|
+
craftName,
|
|
63
|
+
craftType,
|
|
64
|
+
description: description || `Plugin wrapper for ${craftName}`,
|
|
65
|
+
version
|
|
66
|
+
});
|
|
67
|
+
await fs_extra_1.default.writeFile(path_1.default.join(pluginDir, 'PLUGIN.md'), pluginDoc, 'utf-8');
|
|
68
|
+
logger_1.logger.info(`Wrapped ${craftType} '${craftName}' as plugin: ${pluginName}`);
|
|
69
|
+
return pluginDir;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Copy craft files to plugin directory
|
|
73
|
+
*
|
|
74
|
+
* @param sourcePath - Source craft directory
|
|
75
|
+
* @param destPath - Destination plugin directory
|
|
76
|
+
* @private
|
|
77
|
+
*/
|
|
78
|
+
async copyCraftFiles(sourcePath, destPath) {
|
|
79
|
+
try {
|
|
80
|
+
// Copy all files from source craft directory
|
|
81
|
+
await fs_extra_1.default.copy(sourcePath, destPath, {
|
|
82
|
+
overwrite: true,
|
|
83
|
+
filter: (src) => {
|
|
84
|
+
// Skip metadata files
|
|
85
|
+
const basename = path_1.default.basename(src);
|
|
86
|
+
return basename !== '.craftdesk-metadata.json';
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
logger_1.logger.debug(`Copied craft files from ${sourcePath} to ${destPath}`);
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
+
throw new Error(`Failed to copy craft files: ${message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create plugin manifest
|
|
98
|
+
*
|
|
99
|
+
* @param options - Manifest creation options
|
|
100
|
+
* @param options.name - Plugin name
|
|
101
|
+
* @param options.version - Plugin version
|
|
102
|
+
* @param options.author - Plugin author
|
|
103
|
+
* @param options.description - Plugin description
|
|
104
|
+
* @param options.craftName - Original craft name
|
|
105
|
+
* @param options.craftType - Type of craft being wrapped
|
|
106
|
+
* @param options.exposeAsTools - Whether to expose as tools
|
|
107
|
+
* @param options.exposeAsMCP - Whether to expose via MCP
|
|
108
|
+
* @returns The created plugin manifest
|
|
109
|
+
* @private
|
|
110
|
+
*/
|
|
111
|
+
createPluginManifest(options) {
|
|
112
|
+
const { name, version, author, description, craftName, craftType, exposeAsTools, exposeAsMCP } = options;
|
|
113
|
+
const components = {};
|
|
114
|
+
// Add craft to appropriate component list
|
|
115
|
+
switch (craftType) {
|
|
116
|
+
case 'skill':
|
|
117
|
+
components.skills = [craftName];
|
|
118
|
+
break;
|
|
119
|
+
case 'agent':
|
|
120
|
+
components.agents = [craftName];
|
|
121
|
+
break;
|
|
122
|
+
case 'command':
|
|
123
|
+
components.commands = [craftName];
|
|
124
|
+
break;
|
|
125
|
+
case 'hook':
|
|
126
|
+
components.hooks = [craftName];
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
// Create official Claude Code compliant manifest
|
|
130
|
+
const manifest = {
|
|
131
|
+
name, // Required field
|
|
132
|
+
version,
|
|
133
|
+
description,
|
|
134
|
+
...(author && { author }),
|
|
135
|
+
// CraftDesk-specific: component listing (not part of official spec)
|
|
136
|
+
components,
|
|
137
|
+
// CraftDesk-specific: Metadata for wrapped craft
|
|
138
|
+
wrapped: {
|
|
139
|
+
craftName,
|
|
140
|
+
craftType,
|
|
141
|
+
wrappedAt: new Date().toISOString(),
|
|
142
|
+
exposeAsTools,
|
|
143
|
+
exposeAsMCP
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
return manifest;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate PLUGIN.md documentation
|
|
150
|
+
*
|
|
151
|
+
* @param options - Documentation generation options
|
|
152
|
+
* @param options.pluginName - Name of the plugin
|
|
153
|
+
* @param options.craftName - Name of the wrapped craft
|
|
154
|
+
* @param options.craftType - Type of craft being wrapped
|
|
155
|
+
* @param options.description - Plugin description
|
|
156
|
+
* @param options.version - Plugin version
|
|
157
|
+
* @returns Generated markdown documentation
|
|
158
|
+
* @private
|
|
159
|
+
*/
|
|
160
|
+
generatePluginDoc(options) {
|
|
161
|
+
const { pluginName, craftName, craftType, description, version } = options;
|
|
162
|
+
return `# ${pluginName}
|
|
163
|
+
|
|
164
|
+
**Version**: ${version}
|
|
165
|
+
**Type**: Plugin (Wrapped ${craftType})
|
|
166
|
+
|
|
167
|
+
## Description
|
|
168
|
+
|
|
169
|
+
${description}
|
|
170
|
+
|
|
171
|
+
## Contents
|
|
172
|
+
|
|
173
|
+
This plugin wraps the \`${craftName}\` ${craftType} as a standalone plugin.
|
|
174
|
+
|
|
175
|
+
### Components
|
|
176
|
+
|
|
177
|
+
- **${craftType.charAt(0).toUpperCase() + craftType.slice(1)}**: \`${craftName}\`
|
|
178
|
+
|
|
179
|
+
## Installation
|
|
180
|
+
|
|
181
|
+
This plugin was automatically generated by CraftDesk CLI when wrapping an individual ${craftType}.
|
|
182
|
+
|
|
183
|
+
## Usage
|
|
184
|
+
|
|
185
|
+
The wrapped ${craftType} is available as part of this plugin and can be used like any other ${craftType} in Claude Code.
|
|
186
|
+
|
|
187
|
+
### ${craftType === 'skill' ? 'Skill' : craftType === 'agent' ? 'Agent' : craftType === 'command' ? 'Command' : 'Hook'} Reference
|
|
188
|
+
|
|
189
|
+
See the original ${craftType} documentation in the \`${this.getTypeDirectory(craftType)}/${craftName}/\` directory.
|
|
190
|
+
|
|
191
|
+
## Metadata
|
|
192
|
+
|
|
193
|
+
- **Plugin Name**: ${pluginName}
|
|
194
|
+
- **Original ${craftType.charAt(0).toUpperCase() + craftType.slice(1)}**: ${craftName}
|
|
195
|
+
- **Wrapped At**: ${new Date().toISOString()}
|
|
196
|
+
- **CraftDesk Version**: 0.3.0
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
*This is an auto-generated plugin wrapper created by CraftDesk CLI.*
|
|
201
|
+
`;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get type directory name
|
|
205
|
+
*
|
|
206
|
+
* @param type - The craft type
|
|
207
|
+
* @returns Directory name for the craft type
|
|
208
|
+
* @private
|
|
209
|
+
*/
|
|
210
|
+
getTypeDirectory(type) {
|
|
211
|
+
switch (type) {
|
|
212
|
+
case 'skill':
|
|
213
|
+
return 'skills';
|
|
214
|
+
case 'agent':
|
|
215
|
+
return 'agents';
|
|
216
|
+
case 'command':
|
|
217
|
+
return 'commands';
|
|
218
|
+
case 'hook':
|
|
219
|
+
return 'hooks';
|
|
220
|
+
default:
|
|
221
|
+
return 'crafts';
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check if a craft is already wrapped
|
|
226
|
+
*
|
|
227
|
+
* @param craftName - Name of the craft to check
|
|
228
|
+
* @param installDir - Installation directory (default: '.claude')
|
|
229
|
+
* @returns True if craft is already wrapped as a plugin
|
|
230
|
+
*/
|
|
231
|
+
async isWrapped(craftName, installDir = '.claude') {
|
|
232
|
+
const pluginName = `${craftName}-plugin`;
|
|
233
|
+
const pluginDir = path_1.default.join(installDir, 'plugins', pluginName);
|
|
234
|
+
return fs_extra_1.default.pathExists(pluginDir);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Unwrap a plugin (convert back to standalone craft)
|
|
238
|
+
*
|
|
239
|
+
* @param pluginName - Name of the plugin to unwrap
|
|
240
|
+
* @param installDir - Installation directory (default: '.claude')
|
|
241
|
+
* @throws Error if plugin manifest not found or plugin is not wrapped
|
|
242
|
+
*/
|
|
243
|
+
async unwrapPlugin(pluginName, installDir = '.claude') {
|
|
244
|
+
const pluginDir = path_1.default.join(installDir, 'plugins', pluginName);
|
|
245
|
+
// Read plugin manifest to get wrapped craft info
|
|
246
|
+
const manifestPath = path_1.default.join(pluginDir, '.claude-plugin', 'plugin.json');
|
|
247
|
+
if (!await fs_extra_1.default.pathExists(manifestPath)) {
|
|
248
|
+
throw new Error(`Plugin manifest not found: ${pluginName}`);
|
|
249
|
+
}
|
|
250
|
+
const manifest = JSON.parse(await fs_extra_1.default.readFile(manifestPath, 'utf-8'));
|
|
251
|
+
if (!manifest.wrapped) {
|
|
252
|
+
throw new Error(`Plugin ${pluginName} is not a wrapped craft`);
|
|
253
|
+
}
|
|
254
|
+
const { craftName, craftType } = manifest.wrapped;
|
|
255
|
+
// Copy craft back to original location
|
|
256
|
+
const typeDir = this.getTypeDirectory(craftType);
|
|
257
|
+
const craftSourceDir = path_1.default.join(pluginDir, typeDir, craftName);
|
|
258
|
+
const craftDestDir = path_1.default.join(installDir, typeDir, craftName);
|
|
259
|
+
await fs_extra_1.default.copy(craftSourceDir, craftDestDir, { overwrite: true });
|
|
260
|
+
// Remove plugin directory
|
|
261
|
+
await fs_extra_1.default.remove(pluginDir);
|
|
262
|
+
logger_1.logger.info(`Unwrapped plugin ${pluginName} back to ${craftType}: ${craftName}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
exports.CraftWrapper = CraftWrapper;
|
|
266
|
+
// Export singleton instance
|
|
267
|
+
exports.craftWrapper = new CraftWrapper();
|
|
268
|
+
//# sourceMappingURL=craft-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"craft-wrapper.js","sourceRoot":"","sources":["../../src/services/craft-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CraftDeskJson, DependencyConfig } from '../types/craftdesk-json';
|
|
2
|
+
import type { LockEntry } from '../types/craftdesk-lock';
|
|
2
3
|
/**
|
|
3
4
|
* Information about a git dependency
|
|
4
5
|
*/
|
|
@@ -97,7 +98,7 @@ export declare class GitResolver {
|
|
|
97
98
|
* Infers the craft type from the repository structure
|
|
98
99
|
*
|
|
99
100
|
* Type inference strategy:
|
|
100
|
-
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md
|
|
101
|
+
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md, COLLECTION.md
|
|
101
102
|
* 2. Check directory name for type indicators
|
|
102
103
|
* 3. Default to 'skill' if no indicators found
|
|
103
104
|
*
|
|
@@ -131,8 +132,13 @@ export declare class GitResolver {
|
|
|
131
132
|
* ```
|
|
132
133
|
*/
|
|
133
134
|
resolveAllDependencies(dependencies: Record<string, string | DependencyConfig>): Promise<{
|
|
134
|
-
resolved: Record<string,
|
|
135
|
-
lockfile:
|
|
135
|
+
resolved: Record<string, LockEntry>;
|
|
136
|
+
lockfile: {
|
|
137
|
+
version: string;
|
|
138
|
+
lockfileVersion: number;
|
|
139
|
+
generatedAt: string;
|
|
140
|
+
crafts: Record<string, LockEntry>;
|
|
141
|
+
};
|
|
136
142
|
}>;
|
|
137
143
|
}
|
|
138
144
|
export declare const gitResolver: GitResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-resolver.d.ts","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"git-resolver.d.ts","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;;IAMxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqHlF;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,0BAA0B;IAelC;;;;;;;;;;;;OAYG;YACW,cAAc;IA2B5B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,OAAO,CAAC;QAC7F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpC,QAAQ,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;SAAE,CAAC;KAChH,CAAC;CA0FH;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -187,6 +187,8 @@ class GitResolver {
|
|
|
187
187
|
inferCraftTypeFromFilename(filename) {
|
|
188
188
|
const lower = filename.toLowerCase();
|
|
189
189
|
// Check filename for type indicators
|
|
190
|
+
if (lower.includes('collection'))
|
|
191
|
+
return 'collection';
|
|
190
192
|
if (lower.includes('agent'))
|
|
191
193
|
return 'agent';
|
|
192
194
|
if (lower.includes('command'))
|
|
@@ -204,7 +206,7 @@ class GitResolver {
|
|
|
204
206
|
* Infers the craft type from the repository structure
|
|
205
207
|
*
|
|
206
208
|
* Type inference strategy:
|
|
207
|
-
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md
|
|
209
|
+
* 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md, COLLECTION.md
|
|
208
210
|
* 2. Check directory name for type indicators
|
|
209
211
|
* 3. Default to 'skill' if no indicators found
|
|
210
212
|
*
|
|
@@ -217,7 +219,9 @@ class GitResolver {
|
|
|
217
219
|
const checkPath = subPath ? path_1.default.join(repoPath, subPath) : repoPath;
|
|
218
220
|
// Check for type-indicating files
|
|
219
221
|
const files = await fs_extra_1.default.readdir(checkPath);
|
|
220
|
-
// Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md, PLUGIN.md
|
|
222
|
+
// Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md, PLUGIN.md, COLLECTION.md
|
|
223
|
+
if (files.includes('COLLECTION.md'))
|
|
224
|
+
return 'collection';
|
|
221
225
|
if (files.includes('SKILL.md'))
|
|
222
226
|
return 'skill';
|
|
223
227
|
if (files.includes('AGENT.md'))
|
|
@@ -230,6 +234,8 @@ class GitResolver {
|
|
|
230
234
|
return 'plugin';
|
|
231
235
|
// Check directory name hints
|
|
232
236
|
const dirName = subPath ? path_1.default.basename(subPath) : path_1.default.basename(repoPath);
|
|
237
|
+
if (dirName.includes('collection'))
|
|
238
|
+
return 'collection';
|
|
233
239
|
if (dirName.includes('skill'))
|
|
234
240
|
return 'skill';
|
|
235
241
|
if (dirName.includes('agent'))
|
|
@@ -290,20 +296,27 @@ class GitResolver {
|
|
|
290
296
|
path: dep.path,
|
|
291
297
|
file: dep.file
|
|
292
298
|
});
|
|
293
|
-
|
|
299
|
+
const lockEntry = {
|
|
294
300
|
version: gitInfo.craftDeskJson?.version || '0.0.0',
|
|
295
301
|
resolved: gitInfo.url,
|
|
296
302
|
integrity: gitInfo.resolvedCommit || 'git',
|
|
297
303
|
type: gitInfo.craftDeskJson?.type || 'skill',
|
|
298
|
-
author: gitInfo.craftDeskJson?.author
|
|
304
|
+
author: gitInfo.craftDeskJson?.author,
|
|
299
305
|
git: gitInfo.url,
|
|
300
306
|
...(gitInfo.branch && { branch: gitInfo.branch }),
|
|
301
307
|
...(gitInfo.tag && { tag: gitInfo.tag }),
|
|
302
308
|
...(gitInfo.commit && { commit: gitInfo.resolvedCommit }),
|
|
303
309
|
...(gitInfo.path && { path: gitInfo.path }),
|
|
304
|
-
...(gitInfo.file && { file: gitInfo.file })
|
|
305
|
-
dependencies: gitInfo.craftDeskJson?.dependencies || {}
|
|
310
|
+
...(gitInfo.file && { file: gitInfo.file })
|
|
306
311
|
};
|
|
312
|
+
// Only add dependencies if they exist
|
|
313
|
+
if (gitInfo.craftDeskJson?.dependencies && Object.keys(gitInfo.craftDeskJson.dependencies).length > 0) {
|
|
314
|
+
lockEntry.dependencies = Object.fromEntries(Object.entries(gitInfo.craftDeskJson.dependencies).map(([k, v]) => {
|
|
315
|
+
const versionStr = typeof v === 'string' ? v : v.version || '*';
|
|
316
|
+
return [k, versionStr];
|
|
317
|
+
}));
|
|
318
|
+
}
|
|
319
|
+
resolved[name] = lockEntry;
|
|
307
320
|
// Add transitive dependencies to the resolution queue
|
|
308
321
|
// This enables recursive dependency resolution
|
|
309
322
|
if (gitInfo.craftDeskJson?.dependencies) {
|
|
@@ -316,12 +329,17 @@ class GitResolver {
|
|
|
316
329
|
}
|
|
317
330
|
}
|
|
318
331
|
else {
|
|
319
|
-
// Registry dependency -
|
|
332
|
+
// Registry dependency - create placeholder entry for resolution by registry client
|
|
320
333
|
// The actual version resolution happens via the registry API
|
|
334
|
+
const version = typeof dep === 'string' ? dep : (dep.version || '*');
|
|
335
|
+
const registry = typeof dep === 'object' ? dep.registry : undefined;
|
|
336
|
+
// Create a minimal LockEntry that will be filled in by registry resolution
|
|
321
337
|
resolved[name] = {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
338
|
+
version,
|
|
339
|
+
resolved: registry || 'registry',
|
|
340
|
+
integrity: 'pending',
|
|
341
|
+
type: 'skill', // Default, will be updated by registry
|
|
342
|
+
...(registry && { registry })
|
|
325
343
|
};
|
|
326
344
|
}
|
|
327
345
|
}
|
|
@@ -330,6 +348,7 @@ class GitResolver {
|
|
|
330
348
|
lockfile: {
|
|
331
349
|
version: '1.0.0',
|
|
332
350
|
lockfileVersion: 1,
|
|
351
|
+
generatedAt: new Date().toISOString(),
|
|
333
352
|
crafts: resolved
|
|
334
353
|
}
|
|
335
354
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAC1B,iDAAyC;AACzC,4CAAyC;
|
|
1
|
+
{"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -83,11 +83,61 @@ export declare class Installer {
|
|
|
83
83
|
*/
|
|
84
84
|
installCraft(name: string, entry: LockEntry): Promise<void>;
|
|
85
85
|
private installFromGit;
|
|
86
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Get the type-specific directory for a craft type
|
|
88
|
+
*
|
|
89
|
+
* @param type - The craft type (skill, agent, command, hook, plugin, collection)
|
|
90
|
+
* @returns Directory name for the craft type
|
|
91
|
+
*/
|
|
92
|
+
getTypeDirectory(type: string): string;
|
|
93
|
+
/**
|
|
94
|
+
* Get the install path (e.g., '.claude')
|
|
95
|
+
*
|
|
96
|
+
* @returns The installation directory path
|
|
97
|
+
*/
|
|
98
|
+
getInstallPath(): string;
|
|
87
99
|
private downloadFile;
|
|
88
100
|
private extractArchive;
|
|
89
101
|
private createMetadata;
|
|
102
|
+
/**
|
|
103
|
+
* Register a plugin in .claude/settings.json
|
|
104
|
+
*
|
|
105
|
+
* @param name - The plugin name
|
|
106
|
+
* @param entry - The lock file entry for this plugin
|
|
107
|
+
* @param craftDir - The directory where the plugin is installed
|
|
108
|
+
* @returns Promise that resolves when registration is complete
|
|
109
|
+
*/
|
|
110
|
+
private registerPlugin;
|
|
111
|
+
/**
|
|
112
|
+
* Read plugin.json manifest from plugin directory
|
|
113
|
+
* Plugin manifest is located at .claude-plugin/plugin.json
|
|
114
|
+
*
|
|
115
|
+
* @param pluginDir - Path to the plugin directory containing .claude-plugin/plugin.json
|
|
116
|
+
* @returns The parsed plugin manifest or null if not found or invalid
|
|
117
|
+
*/
|
|
118
|
+
private readPluginManifest;
|
|
119
|
+
/**
|
|
120
|
+
* Scan plugin directory to discover components
|
|
121
|
+
* This ensures we find all skills/agents/commands/hooks even if not listed in plugin.json
|
|
122
|
+
*
|
|
123
|
+
* @param pluginDir - Path to the plugin directory to scan for components
|
|
124
|
+
* @returns Object containing arrays of discovered skills, agents, commands, and hooks
|
|
125
|
+
*/
|
|
126
|
+
private scanPluginComponents;
|
|
127
|
+
/**
|
|
128
|
+
* Remove an installed craft from the project
|
|
129
|
+
* Unregisters plugins from settings and removes the craft directory
|
|
130
|
+
*
|
|
131
|
+
* @param name - Name of the craft to remove
|
|
132
|
+
* @param type - Type of craft (plugin, skill, agent, command, hook)
|
|
133
|
+
*/
|
|
90
134
|
removeCraft(name: string, type: string): Promise<void>;
|
|
135
|
+
/**
|
|
136
|
+
* List all installed crafts in the project
|
|
137
|
+
* Scans the installation directory for all craft types and reads their metadata
|
|
138
|
+
*
|
|
139
|
+
* @returns Array of installed crafts with name, version, and type information
|
|
140
|
+
*/
|
|
91
141
|
listInstalled(): Promise<Array<{
|
|
92
142
|
name: string;
|
|
93
143
|
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":"AAQA,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;IAsBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDnD,cAAc;IA+D5B;;;;;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"}
|