craftdesk 0.2.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.
Files changed (175) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +968 -92
  3. package/dist/commands/add.d.ts +5 -0
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +303 -7
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/convert.d.ts +8 -0
  8. package/dist/commands/convert.d.ts.map +1 -0
  9. package/dist/commands/convert.js +146 -0
  10. package/dist/commands/convert.js.map +1 -0
  11. package/dist/commands/info.d.ts +8 -0
  12. package/dist/commands/info.d.ts.map +1 -0
  13. package/dist/commands/info.js +66 -0
  14. package/dist/commands/info.js.map +1 -0
  15. package/dist/commands/init.d.ts +5 -0
  16. package/dist/commands/init.d.ts.map +1 -1
  17. package/dist/commands/init.js +9 -3
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/install.d.ts +5 -0
  20. package/dist/commands/install.d.ts.map +1 -1
  21. package/dist/commands/install.js +24 -4
  22. package/dist/commands/install.js.map +1 -1
  23. package/dist/commands/list.d.ts +5 -0
  24. package/dist/commands/list.d.ts.map +1 -1
  25. package/dist/commands/list.js +72 -7
  26. package/dist/commands/list.js.map +1 -1
  27. package/dist/commands/login.d.ts +8 -0
  28. package/dist/commands/login.d.ts.map +1 -0
  29. package/dist/commands/login.js +158 -0
  30. package/dist/commands/login.js.map +1 -0
  31. package/dist/commands/logout.d.ts +8 -0
  32. package/dist/commands/logout.d.ts.map +1 -0
  33. package/dist/commands/logout.js +51 -0
  34. package/dist/commands/logout.js.map +1 -0
  35. package/dist/commands/outdated.d.ts +23 -0
  36. package/dist/commands/outdated.d.ts.map +1 -0
  37. package/dist/commands/outdated.js +268 -0
  38. package/dist/commands/outdated.js.map +1 -0
  39. package/dist/commands/publish.d.ts +8 -0
  40. package/dist/commands/publish.d.ts.map +1 -0
  41. package/dist/commands/publish.js +198 -0
  42. package/dist/commands/publish.js.map +1 -0
  43. package/dist/commands/remove.d.ts +5 -0
  44. package/dist/commands/remove.d.ts.map +1 -1
  45. package/dist/commands/remove.js +52 -11
  46. package/dist/commands/remove.js.map +1 -1
  47. package/dist/commands/search.d.ts +8 -0
  48. package/dist/commands/search.d.ts.map +1 -0
  49. package/dist/commands/search.js +60 -0
  50. package/dist/commands/search.js.map +1 -0
  51. package/dist/commands/update.d.ts +8 -0
  52. package/dist/commands/update.d.ts.map +1 -0
  53. package/dist/commands/update.js +369 -0
  54. package/dist/commands/update.js.map +1 -0
  55. package/dist/commands/whoami.d.ts +8 -0
  56. package/dist/commands/whoami.d.ts.map +1 -0
  57. package/dist/commands/whoami.js +58 -0
  58. package/dist/commands/whoami.js.map +1 -0
  59. package/dist/converters/base-converter.d.ts +89 -0
  60. package/dist/converters/base-converter.d.ts.map +1 -0
  61. package/dist/converters/base-converter.js +249 -0
  62. package/dist/converters/base-converter.js.map +1 -0
  63. package/dist/converters/continue-converter.d.ts +53 -0
  64. package/dist/converters/continue-converter.d.ts.map +1 -0
  65. package/dist/converters/continue-converter.js +243 -0
  66. package/dist/converters/continue-converter.js.map +1 -0
  67. package/dist/converters/cursor-converter.d.ts +70 -0
  68. package/dist/converters/cursor-converter.d.ts.map +1 -0
  69. package/dist/converters/cursor-converter.js +272 -0
  70. package/dist/converters/cursor-converter.js.map +1 -0
  71. package/dist/index.js +35 -4
  72. package/dist/index.js.map +1 -1
  73. package/dist/services/config-manager.d.ts +128 -10
  74. package/dist/services/config-manager.d.ts.map +1 -1
  75. package/dist/services/config-manager.js +189 -18
  76. package/dist/services/config-manager.js.map +1 -1
  77. package/dist/services/converter.d.ts +53 -0
  78. package/dist/services/converter.d.ts.map +1 -0
  79. package/dist/services/converter.js +185 -0
  80. package/dist/services/converter.js.map +1 -0
  81. package/dist/services/craft-wrapper.d.ts +108 -0
  82. package/dist/services/craft-wrapper.d.ts.map +1 -0
  83. package/dist/services/craft-wrapper.js +268 -0
  84. package/dist/services/craft-wrapper.js.map +1 -0
  85. package/dist/services/git-resolver.d.ts +9 -3
  86. package/dist/services/git-resolver.d.ts.map +1 -1
  87. package/dist/services/git-resolver.js +35 -10
  88. package/dist/services/git-resolver.js.map +1 -1
  89. package/dist/services/installer.d.ts +51 -1
  90. package/dist/services/installer.d.ts.map +1 -1
  91. package/dist/services/installer.js +245 -14
  92. package/dist/services/installer.js.map +1 -1
  93. package/dist/services/plugin-resolver.d.ts +80 -0
  94. package/dist/services/plugin-resolver.d.ts.map +1 -0
  95. package/dist/services/plugin-resolver.js +182 -0
  96. package/dist/services/plugin-resolver.js.map +1 -0
  97. package/dist/services/registry-client.d.ts +132 -5
  98. package/dist/services/registry-client.d.ts.map +1 -1
  99. package/dist/services/registry-client.js +239 -34
  100. package/dist/services/registry-client.js.map +1 -1
  101. package/dist/services/settings-manager.d.ts +151 -0
  102. package/dist/services/settings-manager.d.ts.map +1 -0
  103. package/dist/services/settings-manager.js +333 -0
  104. package/dist/services/settings-manager.js.map +1 -0
  105. package/dist/types/claude-settings.d.ts +155 -0
  106. package/dist/types/claude-settings.d.ts.map +1 -0
  107. package/dist/types/claude-settings.js +20 -0
  108. package/dist/types/claude-settings.js.map +1 -0
  109. package/dist/types/converter.d.ts +98 -0
  110. package/dist/types/converter.d.ts.map +1 -0
  111. package/dist/types/converter.js +6 -0
  112. package/dist/types/converter.js.map +1 -0
  113. package/dist/types/craftdesk-json.d.ts +63 -3
  114. package/dist/types/craftdesk-json.d.ts.map +1 -1
  115. package/dist/types/craftdesk-lock.d.ts +62 -1
  116. package/dist/types/craftdesk-lock.d.ts.map +1 -1
  117. package/dist/utils/crypto.d.ts +23 -0
  118. package/dist/utils/crypto.d.ts.map +1 -0
  119. package/dist/utils/crypto.js +52 -0
  120. package/dist/utils/crypto.js.map +1 -0
  121. package/dist/utils/file-system.d.ts +43 -0
  122. package/dist/utils/file-system.d.ts.map +1 -1
  123. package/dist/utils/file-system.js +45 -2
  124. package/dist/utils/file-system.js.map +1 -1
  125. package/dist/utils/logger.d.ts +75 -0
  126. package/dist/utils/logger.d.ts.map +1 -1
  127. package/dist/utils/logger.js +76 -1
  128. package/dist/utils/logger.js.map +1 -1
  129. package/dist/utils/version-utils.d.ts +63 -0
  130. package/dist/utils/version-utils.d.ts.map +1 -0
  131. package/dist/utils/version-utils.js +130 -0
  132. package/dist/utils/version-utils.js.map +1 -0
  133. package/package.json +36 -9
  134. package/.claude/settings.local.json +0 -17
  135. package/.github/workflows/ci.yml +0 -94
  136. package/API.md +0 -414
  137. package/TESTING.md +0 -263
  138. package/dist/commands/config.d.ts +0 -3
  139. package/dist/commands/config.d.ts.map +0 -1
  140. package/dist/commands/config.js +0 -56
  141. package/dist/commands/config.js.map +0 -1
  142. package/dist/types/config.d.ts +0 -17
  143. package/dist/types/config.d.ts.map +0 -1
  144. package/dist/types/config.js +0 -3
  145. package/dist/types/config.js.map +0 -1
  146. package/docs/DEPENDENCY_RESOLUTION.md +0 -237
  147. package/examples/craftdesk-all-sources.json +0 -79
  148. package/examples/craftdesk-git-monorepo.json +0 -41
  149. package/examples/craftdesk-multi-registry.json +0 -40
  150. package/examples/craftdesk-with-registries.json +0 -49
  151. package/examples/simple-craftdesk.json +0 -10
  152. package/src/commands/add.ts +0 -314
  153. package/src/commands/init.ts +0 -55
  154. package/src/commands/install.ts +0 -126
  155. package/src/commands/list.ts +0 -126
  156. package/src/commands/remove.ts +0 -82
  157. package/src/index.ts +0 -56
  158. package/src/services/config-manager.ts +0 -150
  159. package/src/services/git-resolver.ts +0 -370
  160. package/src/services/installer.ts +0 -314
  161. package/src/services/registry-client.ts +0 -163
  162. package/src/types/craftdesk-json.ts +0 -53
  163. package/src/types/craftdesk-lock.ts +0 -38
  164. package/src/utils/file-system.ts +0 -55
  165. package/src/utils/logger.ts +0 -82
  166. package/tests/fixtures/craftdesk-git.json +0 -17
  167. package/tests/fixtures/craftdesk.json +0 -15
  168. package/tests/helpers/test-utils.ts +0 -60
  169. package/tests/integration/init-command.test.ts +0 -70
  170. package/tests/integration/list-command.test.ts +0 -77
  171. package/tests/unit/config-manager.test.ts +0 -228
  172. package/tests/unit/git-resolver.test.ts +0 -303
  173. package/tests/unit/installer.test.ts +0 -105
  174. package/tsconfig.json +0 -20
  175. package/vitest.config.ts +0 -29
@@ -1,3 +1,8 @@
1
1
  import { Command } from 'commander';
2
+ /**
3
+ * Creates the 'add' command for adding and installing a new dependency
4
+ *
5
+ * @returns Commander command instance configured for adding crafts
6
+ */
2
7
  export declare function createAddCommand(): Command;
3
8
  //# sourceMappingURL=add.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,gBAAgB,IAAI,OAAO,CAW1C"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAY1C"}
@@ -11,6 +11,16 @@ const logger_1 = require("../utils/logger");
11
11
  const registry_client_1 = require("../services/registry-client");
12
12
  const installer_1 = require("../services/installer");
13
13
  const git_resolver_1 = require("../services/git-resolver");
14
+ const crypto_1 = require("../utils/crypto");
15
+ const plugin_resolver_1 = require("../services/plugin-resolver");
16
+ const craft_wrapper_1 = require("../services/craft-wrapper");
17
+ const fs_extra_1 = __importDefault(require("fs-extra"));
18
+ const os_1 = __importDefault(require("os"));
19
+ /**
20
+ * Creates the 'add' command for adding and installing a new dependency
21
+ *
22
+ * @returns Commander command instance configured for adding crafts
23
+ */
14
24
  function createAddCommand() {
15
25
  return new commander_1.Command('add')
16
26
  .description('Add a new dependency and install it')
@@ -18,7 +28,8 @@ function createAddCommand() {
18
28
  .option('-D, --save-dev', 'Save as devDependency')
19
29
  .option('-O, --save-optional', 'Save as optionalDependency')
20
30
  .option('-E, --save-exact', 'Save exact version')
21
- .option('-t, --type <type>', 'Specify craft type (skill, agent, command, hook)')
31
+ .option('-t, --type <type>', 'Specify craft type (skill, agent, command, hook, plugin)')
32
+ .option('--as-plugin', 'Wrap individual craft as a plugin')
22
33
  .action(async (craftArg, options) => {
23
34
  await addCommand(craftArg, options);
24
35
  });
@@ -86,7 +97,9 @@ async function addCommand(craftArg, options) {
86
97
  // Use resolved information for the lock entry
87
98
  const craftJson = resolvedGit.craftDeskJson;
88
99
  // Determine type: explicit option > craftdesk.json > inferred > default
89
- const craftType = options.type || craftJson?.type || 'skill';
100
+ const craftType = options.type ||
101
+ craftJson?.type ||
102
+ 'skill';
90
103
  lockEntry = {
91
104
  version: craftJson?.version || gitInfo.tag || gitInfo.branch || 'HEAD',
92
105
  resolved: gitInfo.url,
@@ -99,7 +112,7 @@ async function addCommand(craftArg, options) {
99
112
  ...(resolvedGit.resolvedCommit && { commit: resolvedGit.resolvedCommit }),
100
113
  ...(gitInfo.path && { path: gitInfo.path }),
101
114
  ...(gitInfo.file && { file: gitInfo.file }),
102
- dependencies: craftJson?.dependencies || {}
115
+ dependencies: {}
103
116
  };
104
117
  craftName = craftJson?.name || gitInfo.name || path_1.default.basename(gitInfo.url, '.git');
105
118
  displayInfo = `${craftName}@${craftJson?.version || 'git'} from ${gitInfo.url}`;
@@ -123,10 +136,38 @@ async function addCommand(craftArg, options) {
123
136
  logger_1.logger.succeedSpinner(`Found ${craftInfo.name}@${craftInfo.version}`);
124
137
  const version = options.saveExact ? craftInfo.version : versionConstraint;
125
138
  depValue = version;
139
+ // Require download_url from API - no localhost fallback for security
140
+ if (!craftInfo.download_url) {
141
+ logger_1.logger.failSpinner();
142
+ logger_1.logger.error(`Registry did not provide download URL for ${craftInfo.author}/${craftInfo.name}@${craftInfo.version}`);
143
+ logger_1.logger.error('The registry may be misconfigured or the craft version is incomplete.');
144
+ process.exit(1);
145
+ }
146
+ const downloadUrl = craftInfo.download_url;
147
+ // Calculate checksum if not provided by API
148
+ let integrity = craftInfo.integrity;
149
+ if (!integrity) {
150
+ logger_1.logger.startSpinner('Computing checksum for security verification...');
151
+ const tempDir = path_1.default.join(os_1.default.tmpdir(), 'craftdesk-verify');
152
+ const tempFile = path_1.default.join(tempDir, `${craftInfo.name}-${craftInfo.version}.zip`);
153
+ try {
154
+ await fs_extra_1.default.ensureDir(tempDir);
155
+ // Download to temp location
156
+ await registry_client_1.registryClient.downloadCraft(downloadUrl, tempFile);
157
+ // Calculate checksum
158
+ integrity = await (0, crypto_1.calculateFileChecksum)(tempFile);
159
+ logger_1.logger.succeedSpinner(`Checksum computed: ${integrity.substring(0, 12)}...`);
160
+ }
161
+ finally {
162
+ // Clean up temp file and directory
163
+ await fs_extra_1.default.remove(tempFile).catch(() => { }); // Ignore errors if file doesn't exist
164
+ await fs_extra_1.default.remove(tempDir).catch(() => { }); // Ignore errors if directory doesn't exist
165
+ }
166
+ }
126
167
  lockEntry = {
127
168
  version: craftInfo.version,
128
- resolved: craftInfo.download_url || `http://localhost:3000/api/v1/crafts/${craftInfo.author}/${craftInfo.name}/versions/${craftInfo.version}/download`,
129
- integrity: craftInfo.integrity || 'sha256-placeholder',
169
+ resolved: downloadUrl,
170
+ integrity: integrity,
130
171
  type: craftInfo.type,
131
172
  author: craftInfo.author,
132
173
  dependencies: craftInfo.dependencies || {}
@@ -158,6 +199,13 @@ async function addCommand(craftArg, options) {
158
199
  logger_1.logger.startSpinner(`Installing ${craftName}...`);
159
200
  await installer_1.installer.installCraft(craftName, lockEntry);
160
201
  logger_1.logger.succeedSpinner(`Installed ${displayInfo}`);
202
+ // Determine craft installation directory
203
+ const typeDir = lockEntry.type === 'skill' ? 'skills' :
204
+ lockEntry.type === 'agent' ? 'agents' :
205
+ lockEntry.type === 'command' ? 'commands' :
206
+ lockEntry.type === 'hook' ? 'hooks' :
207
+ lockEntry.type === 'plugin' ? 'plugins' : 'crafts';
208
+ const craftDir = path_1.default.join('.claude', typeDir, craftName);
161
209
  // Update craftdesk.lock
162
210
  let lockfile = await (0, file_system_1.readCraftDeskLock)();
163
211
  if (!lockfile) {
@@ -168,14 +216,39 @@ async function addCommand(craftArg, options) {
168
216
  crafts: {}
169
217
  };
170
218
  }
219
+ // Check for --as-plugin flag: wrap individual craft as plugin
220
+ if (options.asPlugin && lockEntry.type !== 'plugin') {
221
+ try {
222
+ await handleCraftWrapping(craftName, lockEntry, craftDir);
223
+ // Update lock entry to reflect it's wrapped
224
+ lockEntry.installedAs = 'wrapped';
225
+ lockEntry.wrappedBy = `${craftName}-plugin`;
226
+ logger_1.logger.success(`Wrapped ${craftName} as plugin successfully!`);
227
+ }
228
+ catch (error) {
229
+ const message = error instanceof Error ? error.message : String(error);
230
+ logger_1.logger.error(`Failed to wrap craft: ${message}`);
231
+ // Continue with normal installation
232
+ }
233
+ }
234
+ // Check if installed craft is a plugin - handle plugin dependencies
235
+ if (lockEntry.type === 'plugin' && await fs_extra_1.default.pathExists(craftDir)) {
236
+ const pluginDetected = await isPlugin(craftDir);
237
+ if (pluginDetected) {
238
+ logger_1.logger.info('Plugin detected - resolving dependencies...');
239
+ await handlePluginInstall(craftName, lockEntry, craftDir, lockfile);
240
+ }
241
+ }
171
242
  // Add or update the craft in the lockfile
172
243
  lockfile.crafts[craftName] = lockEntry;
244
+ lockfile.generatedAt = new Date().toISOString();
173
245
  await (0, file_system_1.writeCraftDeskLock)(lockfile);
174
246
  logger_1.logger.success('Craft added successfully!');
175
247
  }
176
248
  catch (error) {
177
249
  logger_1.logger.failSpinner();
178
- logger_1.logger.error(`Failed to add craft: ${error.message}`);
250
+ const message = error instanceof Error ? error.message : String(error);
251
+ logger_1.logger.error(`Failed to add craft: ${message}`);
179
252
  process.exit(1);
180
253
  }
181
254
  }
@@ -241,7 +314,7 @@ function normalizeGitHubUrl(url) {
241
314
  function parseGitUrl(urlString) {
242
315
  // Remove optional git+ prefix (npm-style format)
243
316
  let url = urlString.replace(/^git\+/, '');
244
- const result = {};
317
+ const result = { url: '' };
245
318
  // Extract direct file path (e.g., #file:rspec-agent.md)
246
319
  if (url.includes('#file:')) {
247
320
  const [baseUrl, filePart] = url.split('#file:');
@@ -281,4 +354,227 @@ function parseGitUrl(urlString) {
281
354
  }
282
355
  return result;
283
356
  }
357
+ /**
358
+ * Detect if a craft is a plugin by checking for .claude-plugin/plugin.json or PLUGIN.md
359
+ *
360
+ * @param craftDir - Path to the craft installation directory
361
+ * @returns Promise resolving to true if plugin detected, false otherwise
362
+ */
363
+ async function isPlugin(craftDir) {
364
+ try {
365
+ const hasPluginJson = await fs_extra_1.default.pathExists(path_1.default.join(craftDir, '.claude-plugin', 'plugin.json'));
366
+ const hasPluginMd = await fs_extra_1.default.pathExists(path_1.default.join(craftDir, 'PLUGIN.md'));
367
+ return hasPluginJson || hasPluginMd;
368
+ }
369
+ catch {
370
+ return false;
371
+ }
372
+ }
373
+ /**
374
+ * Handle plugin installation with dependency resolution
375
+ *
376
+ * @param craftName - Name of the craft/plugin being installed
377
+ * @param lockEntry - Lock entry containing version and dependency information
378
+ * @param craftDir - Path to the craft installation directory
379
+ * @param lockfile - Current lockfile object to update with resolved dependencies
380
+ * @returns Promise that resolves when plugin and dependencies are installed
381
+ */
382
+ async function handlePluginInstall(craftName, lockEntry, craftDir, lockfile) {
383
+ logger_1.logger.startSpinner('Resolving plugin dependencies...');
384
+ try {
385
+ // Resolve plugin dependencies
386
+ await plugin_resolver_1.pluginResolver.resolvePluginDependencies(craftDir, undefined);
387
+ const pluginTree = plugin_resolver_1.pluginResolver.buildPluginTree();
388
+ const flattenedDeps = plugin_resolver_1.pluginResolver.getFlattenedDependencies();
389
+ logger_1.logger.succeedSpinner(`Resolved ${Object.keys(flattenedDeps).length} total dependencies`);
390
+ // Add plugin tree to lockfile
391
+ if (!lockfile.pluginTree) {
392
+ lockfile.pluginTree = {};
393
+ }
394
+ lockfile.pluginTree[craftName] = pluginTree[craftName];
395
+ // Install plugin dependencies
396
+ for (const [depName, depInfo] of Object.entries(flattenedDeps)) {
397
+ if (depName === craftName)
398
+ continue; // Skip self
399
+ // Check if dependency is already in lockfile
400
+ if (lockfile.crafts[depName]) {
401
+ logger_1.logger.debug(`Dependency ${depName} already installed`);
402
+ continue;
403
+ }
404
+ logger_1.logger.info(`Installing plugin dependency: ${depName}...`);
405
+ try {
406
+ await installPluginDependency(depName, depInfo, lockfile);
407
+ }
408
+ catch (error) {
409
+ const message = error instanceof Error ? error.message : String(error);
410
+ logger_1.logger.error(`Failed to install ${depName}: ${message}`);
411
+ throw new Error(`Plugin dependency installation failed: ${depName}`);
412
+ }
413
+ }
414
+ // Reset plugin resolver for next use
415
+ plugin_resolver_1.pluginResolver.reset();
416
+ }
417
+ catch (error) {
418
+ logger_1.logger.failSpinner();
419
+ const message = error instanceof Error ? error.message : String(error);
420
+ logger_1.logger.warn(`Failed to resolve plugin dependencies: ${message}`);
421
+ logger_1.logger.info('Plugin installed but dependencies may need manual installation');
422
+ }
423
+ }
424
+ /**
425
+ * Install a single plugin dependency
426
+ *
427
+ * @param depName - Name of the dependency to install
428
+ * @param depInfo - Dependency specification (version string, git object, or registry object)
429
+ * @param lockfile - Current lockfile object to update with the new dependency
430
+ * @returns Promise that resolves when dependency is installed
431
+ */
432
+ async function installPluginDependency(depName, depInfo, lockfile) {
433
+ let depLockEntry;
434
+ // Handle different dependency formats
435
+ if (typeof depInfo === 'string') {
436
+ // Simple version string like "^1.5.0" - fetch from registry
437
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(depName, depInfo);
438
+ if (!craftInfo) {
439
+ throw new Error(`Craft '${depName}' not found in registry`);
440
+ }
441
+ if (!craftInfo.download_url) {
442
+ throw new Error(`Registry did not provide download URL for ${depName}@${craftInfo.version}`);
443
+ }
444
+ // Calculate checksum if not provided by API
445
+ let integrity = craftInfo.integrity;
446
+ if (!integrity) {
447
+ logger_1.logger.debug(`Computing checksum for ${depName}...`);
448
+ const tempDir = path_1.default.join(os_1.default.tmpdir(), 'craftdesk-verify');
449
+ const tempFile = path_1.default.join(tempDir, `${craftInfo.name}-${craftInfo.version}.zip`);
450
+ try {
451
+ await fs_extra_1.default.ensureDir(tempDir);
452
+ await registry_client_1.registryClient.downloadCraft(craftInfo.download_url, tempFile);
453
+ integrity = await (0, crypto_1.calculateFileChecksum)(tempFile);
454
+ }
455
+ finally {
456
+ await fs_extra_1.default.remove(tempFile).catch(() => { });
457
+ await fs_extra_1.default.remove(tempDir).catch(() => { });
458
+ }
459
+ }
460
+ depLockEntry = {
461
+ version: craftInfo.version,
462
+ resolved: craftInfo.download_url,
463
+ integrity: integrity,
464
+ type: craftInfo.type,
465
+ author: craftInfo.author,
466
+ dependencies: craftInfo.dependencies || {},
467
+ installedAs: 'dependency'
468
+ };
469
+ logger_1.logger.success(`Resolved ${depName}@${craftInfo.version}`);
470
+ }
471
+ else if (depInfo.git) {
472
+ // Git dependency
473
+ const gitInfo = {
474
+ url: depInfo.git,
475
+ branch: depInfo.branch,
476
+ tag: depInfo.tag,
477
+ commit: depInfo.commit,
478
+ path: depInfo.path,
479
+ file: depInfo.file,
480
+ name: depName
481
+ };
482
+ const resolvedGit = await git_resolver_1.gitResolver.resolveGitDependency(gitInfo);
483
+ const craftJson = resolvedGit.craftDeskJson;
484
+ const craftType = craftJson?.type || 'skill';
485
+ depLockEntry = {
486
+ version: craftJson?.version || gitInfo.tag || gitInfo.branch || 'HEAD',
487
+ resolved: gitInfo.url,
488
+ integrity: resolvedGit.resolvedCommit || 'git',
489
+ type: craftType,
490
+ author: craftJson?.author || 'git',
491
+ git: gitInfo.url,
492
+ ...(gitInfo.branch && { branch: gitInfo.branch }),
493
+ ...(gitInfo.tag && { tag: gitInfo.tag }),
494
+ ...(resolvedGit.resolvedCommit && { commit: resolvedGit.resolvedCommit }),
495
+ ...(gitInfo.path && { path: gitInfo.path }),
496
+ ...(gitInfo.file && { file: gitInfo.file }),
497
+ dependencies: {},
498
+ installedAs: 'dependency'
499
+ };
500
+ logger_1.logger.success(`Resolved ${depName} from git`);
501
+ }
502
+ else if (depInfo.registry) {
503
+ // Custom registry
504
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(depName, depInfo.version, depInfo.registry);
505
+ if (!craftInfo) {
506
+ throw new Error(`Craft '${depName}' not found in custom registry`);
507
+ }
508
+ if (!craftInfo.download_url) {
509
+ throw new Error(`Registry did not provide download URL for ${depName}@${craftInfo.version}`);
510
+ }
511
+ // Calculate checksum if not provided
512
+ let integrity = craftInfo.integrity;
513
+ if (!integrity) {
514
+ logger_1.logger.debug(`Computing checksum for ${depName}...`);
515
+ const tempDir = path_1.default.join(os_1.default.tmpdir(), 'craftdesk-verify');
516
+ const tempFile = path_1.default.join(tempDir, `${craftInfo.name}-${craftInfo.version}.zip`);
517
+ try {
518
+ await fs_extra_1.default.ensureDir(tempDir);
519
+ await registry_client_1.registryClient.downloadCraft(craftInfo.download_url, tempFile);
520
+ integrity = await (0, crypto_1.calculateFileChecksum)(tempFile);
521
+ }
522
+ finally {
523
+ await fs_extra_1.default.remove(tempFile).catch(() => { });
524
+ await fs_extra_1.default.remove(tempDir).catch(() => { });
525
+ }
526
+ }
527
+ depLockEntry = {
528
+ version: craftInfo.version,
529
+ resolved: craftInfo.download_url,
530
+ integrity: integrity,
531
+ type: craftInfo.type,
532
+ author: craftInfo.author,
533
+ dependencies: craftInfo.dependencies || {},
534
+ installedAs: 'dependency'
535
+ };
536
+ logger_1.logger.success(`Resolved ${depName}@${craftInfo.version} from custom registry`);
537
+ }
538
+ else {
539
+ throw new Error(`Unknown dependency format for ${depName}`);
540
+ }
541
+ // Add to lockfile
542
+ lockfile.crafts[depName] = depLockEntry;
543
+ // Install the craft
544
+ await installer_1.installer.installCraft(depName, depLockEntry);
545
+ // If this dependency is also a plugin, recursively resolve its dependencies
546
+ const depDir = path_1.default.join(installer_1.installer.getInstallPath(), installer_1.installer.getTypeDirectory(depLockEntry.type), depName);
547
+ const isDepPlugin = await isPlugin(depDir);
548
+ if (isDepPlugin) {
549
+ logger_1.logger.debug(`Dependency ${depName} is a plugin, resolving its dependencies...`);
550
+ await handlePluginInstall(depName, depLockEntry, depDir, lockfile);
551
+ }
552
+ }
553
+ /**
554
+ * Handle --as-plugin flag: wrap craft as plugin
555
+ *
556
+ * @param craftName - Name of the craft to wrap
557
+ * @param lockEntry - Lock entry containing craft metadata
558
+ * @param craftDir - Path to the craft installation directory
559
+ * @returns Promise resolving to the wrapped plugin directory path
560
+ */
561
+ async function handleCraftWrapping(craftName, lockEntry, craftDir) {
562
+ logger_1.logger.startSpinner(`Wrapping ${craftName} as plugin...`);
563
+ try {
564
+ const wrappedDir = await craft_wrapper_1.craftWrapper.wrapCraft({
565
+ craftName,
566
+ craftType: lockEntry.type,
567
+ craftPath: craftDir,
568
+ version: lockEntry.version,
569
+ author: lockEntry.author || 'unknown'
570
+ });
571
+ logger_1.logger.succeedSpinner(`Wrapped as plugin: ${craftName}-plugin`);
572
+ return wrappedDir;
573
+ }
574
+ catch (error) {
575
+ logger_1.logger.failSpinner();
576
+ const message = error instanceof Error ? error.message : String(error);
577
+ throw new Error(`Failed to wrap craft as plugin: ${message}`);
578
+ }
579
+ }
284
580
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Create the convert command for format conversion
4
+ *
5
+ * @returns The configured convert command
6
+ */
7
+ export declare function createConvertCommand(): Command;
8
+ //# sourceMappingURL=convert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAqK9C"}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createConvertCommand = createConvertCommand;
7
+ const commander_1 = require("commander");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const logger_1 = require("../utils/logger");
11
+ const converter_1 = require("../services/converter");
12
+ /**
13
+ * Create the convert command for format conversion
14
+ *
15
+ * @returns The configured convert command
16
+ */
17
+ function createConvertCommand() {
18
+ const command = new commander_1.Command('convert');
19
+ command
20
+ .description('Convert crafts to other AI editor formats')
21
+ .argument('[craft-path]', 'Path to craft directory to convert (default: current directory)')
22
+ .option('-t, --to <format>', 'Target format: cursor, cursor-legacy, continue')
23
+ .option('-o, --output <dir>', 'Output directory (default: format-specific default)')
24
+ .option('-a, --all', 'Convert all installed crafts from .claude/ directory')
25
+ .option('--claude-dir <dir>', 'Claude directory path (default: .claude)', '.claude')
26
+ .option('-m, --merge-mode <mode>', 'How to handle existing files: overwrite, append, skip', 'overwrite')
27
+ .option('--list-formats', 'List supported output formats')
28
+ .action(async (craftPath, options) => {
29
+ try {
30
+ const converterService = new converter_1.ConverterService();
31
+ // List formats
32
+ if (options.listFormats) {
33
+ logger_1.logger.info('Supported output formats:');
34
+ const formats = converterService.getSupportedFormats();
35
+ formats.forEach(({ format, description }) => {
36
+ logger_1.logger.info(` ${format.padEnd(20)} - ${description}`);
37
+ });
38
+ return;
39
+ }
40
+ // Validate required options
41
+ if (!options.to) {
42
+ logger_1.logger.error('Error: --to <format> is required');
43
+ logger_1.logger.info('Use --list-formats to see available formats');
44
+ process.exit(1);
45
+ }
46
+ // Validate format
47
+ const supportedFormats = converterService.getSupportedFormats().map(f => f.format);
48
+ if (!supportedFormats.includes(options.to)) {
49
+ logger_1.logger.error(`Error: Unsupported format '${options.to}'`);
50
+ logger_1.logger.info(`Supported formats: ${supportedFormats.join(', ')}`);
51
+ process.exit(1);
52
+ }
53
+ // Build conversion options
54
+ const conversionOptions = {
55
+ format: options.to,
56
+ outputDir: options.output,
57
+ mergeMode: options.mergeMode
58
+ };
59
+ // Convert all installed crafts
60
+ if (options.all) {
61
+ logger_1.logger.info(`Converting all installed crafts to ${options.to} format...`);
62
+ const claudeDir = path_1.default.resolve(process.cwd(), options.claudeDir || '.claude');
63
+ if (!await fs_extra_1.default.pathExists(claudeDir)) {
64
+ logger_1.logger.error(`Error: Claude directory not found: ${claudeDir}`);
65
+ logger_1.logger.info('Make sure you have crafts installed in .claude/ directory');
66
+ process.exit(1);
67
+ }
68
+ const results = await converterService.convertAllInstalled(claudeDir, conversionOptions, options.output);
69
+ // Display results
70
+ const successful = results.filter(r => r.result.success).length;
71
+ const failed = results.filter(r => !r.result.success).length;
72
+ logger_1.logger.info(`\nConversion complete:`);
73
+ logger_1.logger.info(` ✓ ${successful} crafts converted successfully`);
74
+ if (failed > 0) {
75
+ logger_1.logger.error(` ✗ ${failed} crafts failed`);
76
+ }
77
+ // Show details for failed conversions
78
+ results.forEach(({ craft, result }) => {
79
+ if (!result.success) {
80
+ logger_1.logger.error(`\n${craft}:`);
81
+ result.errors.forEach(error => logger_1.logger.error(` - ${error}`));
82
+ }
83
+ else if (result.warnings.length > 0) {
84
+ logger_1.logger.warn(`\n${craft} (warnings):`);
85
+ result.warnings.forEach(warning => logger_1.logger.warn(` - ${warning}`));
86
+ }
87
+ });
88
+ // Show output location
89
+ if (successful > 0) {
90
+ const outputDir = options.output || results[0]?.result.files[0] ?
91
+ path_1.default.dirname(results[0].result.files[0].filePath) :
92
+ 'default location';
93
+ logger_1.logger.info(`\nConverted files written to: ${outputDir}`);
94
+ }
95
+ if (failed > 0) {
96
+ process.exit(1);
97
+ }
98
+ return;
99
+ }
100
+ // Convert single craft
101
+ const targetPath = craftPath ? path_1.default.resolve(process.cwd(), craftPath) : process.cwd();
102
+ if (!await fs_extra_1.default.pathExists(targetPath)) {
103
+ logger_1.logger.error(`Error: Path not found: ${targetPath}`);
104
+ process.exit(1);
105
+ }
106
+ const stat = await fs_extra_1.default.stat(targetPath);
107
+ if (!stat.isDirectory()) {
108
+ logger_1.logger.error(`Error: Path must be a directory: ${targetPath}`);
109
+ process.exit(1);
110
+ }
111
+ logger_1.logger.info(`Converting craft to ${options.to} format...`);
112
+ const result = await converterService.convertAndWrite(targetPath, conversionOptions, options.output);
113
+ // Display result
114
+ if (result.success) {
115
+ logger_1.logger.success('✓ Conversion successful');
116
+ logger_1.logger.info(`\nGenerated ${result.files.length} file(s):`);
117
+ result.files.forEach(file => {
118
+ const outputPath = options.output ?
119
+ path_1.default.join(options.output, file.filePath) :
120
+ file.filePath;
121
+ logger_1.logger.info(` - ${outputPath} (${file.type})`);
122
+ });
123
+ if (result.warnings.length > 0) {
124
+ logger_1.logger.warn('\nWarnings:');
125
+ result.warnings.forEach(warning => logger_1.logger.warn(` - ${warning}`));
126
+ }
127
+ }
128
+ else {
129
+ logger_1.logger.error('✗ Conversion failed');
130
+ logger_1.logger.error('\nErrors:');
131
+ result.errors.forEach(error => logger_1.logger.error(` - ${error}`));
132
+ if (result.warnings.length > 0) {
133
+ logger_1.logger.warn('\nWarnings:');
134
+ result.warnings.forEach(warning => logger_1.logger.warn(` - ${warning}`));
135
+ }
136
+ process.exit(1);
137
+ }
138
+ }
139
+ catch (error) {
140
+ logger_1.logger.error(`Error during conversion: ${error instanceof Error ? error.message : String(error)}`);
141
+ process.exit(1);
142
+ }
143
+ });
144
+ return command;
145
+ }
146
+ //# sourceMappingURL=convert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/commands/convert.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Creates the 'info' command for displaying detailed craft information
4
+ *
5
+ * @returns Commander command instance configured for showing craft info
6
+ */
7
+ export declare function createInfoCommand(): Command;
8
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C"}