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.
Files changed (215) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +1609 -132
  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 +306 -8
  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/detect-agents.d.ts +14 -0
  12. package/dist/commands/detect-agents.d.ts.map +1 -0
  13. package/dist/commands/detect-agents.js +86 -0
  14. package/dist/commands/detect-agents.js.map +1 -0
  15. package/dist/commands/embed.d.ts +14 -0
  16. package/dist/commands/embed.d.ts.map +1 -0
  17. package/dist/commands/embed.js +147 -0
  18. package/dist/commands/embed.js.map +1 -0
  19. package/dist/commands/info.d.ts +8 -0
  20. package/dist/commands/info.d.ts.map +1 -0
  21. package/dist/commands/info.js +66 -0
  22. package/dist/commands/info.js.map +1 -0
  23. package/dist/commands/init.d.ts +5 -0
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +8 -2
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/install.d.ts +5 -0
  28. package/dist/commands/install.d.ts.map +1 -1
  29. package/dist/commands/install.js +24 -4
  30. package/dist/commands/install.js.map +1 -1
  31. package/dist/commands/list.d.ts +5 -0
  32. package/dist/commands/list.d.ts.map +1 -1
  33. package/dist/commands/list.js +75 -7
  34. package/dist/commands/list.js.map +1 -1
  35. package/dist/commands/login.d.ts +8 -0
  36. package/dist/commands/login.d.ts.map +1 -0
  37. package/dist/commands/login.js +158 -0
  38. package/dist/commands/login.js.map +1 -0
  39. package/dist/commands/logout.d.ts +8 -0
  40. package/dist/commands/logout.d.ts.map +1 -0
  41. package/dist/commands/logout.js +51 -0
  42. package/dist/commands/logout.js.map +1 -0
  43. package/dist/commands/outdated.d.ts +23 -0
  44. package/dist/commands/outdated.d.ts.map +1 -0
  45. package/dist/commands/outdated.js +268 -0
  46. package/dist/commands/outdated.js.map +1 -0
  47. package/dist/commands/publish.d.ts +8 -0
  48. package/dist/commands/publish.d.ts.map +1 -0
  49. package/dist/commands/publish.js +203 -0
  50. package/dist/commands/publish.js.map +1 -0
  51. package/dist/commands/remove.d.ts +5 -0
  52. package/dist/commands/remove.d.ts.map +1 -1
  53. package/dist/commands/remove.js +51 -10
  54. package/dist/commands/remove.js.map +1 -1
  55. package/dist/commands/search.d.ts +8 -0
  56. package/dist/commands/search.d.ts.map +1 -0
  57. package/dist/commands/search.js +60 -0
  58. package/dist/commands/search.js.map +1 -0
  59. package/dist/commands/setup-multi-agent.d.ts +17 -0
  60. package/dist/commands/setup-multi-agent.d.ts.map +1 -0
  61. package/dist/commands/setup-multi-agent.js +188 -0
  62. package/dist/commands/setup-multi-agent.js.map +1 -0
  63. package/dist/commands/sync.d.ts +14 -0
  64. package/dist/commands/sync.d.ts.map +1 -0
  65. package/dist/commands/sync.js +144 -0
  66. package/dist/commands/sync.js.map +1 -0
  67. package/dist/commands/unembed.d.ts +14 -0
  68. package/dist/commands/unembed.d.ts.map +1 -0
  69. package/dist/commands/unembed.js +96 -0
  70. package/dist/commands/unembed.js.map +1 -0
  71. package/dist/commands/update.d.ts +8 -0
  72. package/dist/commands/update.d.ts.map +1 -0
  73. package/dist/commands/update.js +372 -0
  74. package/dist/commands/update.js.map +1 -0
  75. package/dist/commands/verify.d.ts +14 -0
  76. package/dist/commands/verify.d.ts.map +1 -0
  77. package/dist/commands/verify.js +143 -0
  78. package/dist/commands/verify.js.map +1 -0
  79. package/dist/commands/whoami.d.ts +8 -0
  80. package/dist/commands/whoami.d.ts.map +1 -0
  81. package/dist/commands/whoami.js +58 -0
  82. package/dist/commands/whoami.js.map +1 -0
  83. package/dist/converters/base-converter.d.ts +89 -0
  84. package/dist/converters/base-converter.d.ts.map +1 -0
  85. package/dist/converters/base-converter.js +249 -0
  86. package/dist/converters/base-converter.js.map +1 -0
  87. package/dist/converters/continue-converter.d.ts +53 -0
  88. package/dist/converters/continue-converter.d.ts.map +1 -0
  89. package/dist/converters/continue-converter.js +243 -0
  90. package/dist/converters/continue-converter.js.map +1 -0
  91. package/dist/converters/cursor-converter.d.ts +70 -0
  92. package/dist/converters/cursor-converter.d.ts.map +1 -0
  93. package/dist/converters/cursor-converter.js +272 -0
  94. package/dist/converters/cursor-converter.js.map +1 -0
  95. package/dist/index.js +56 -3
  96. package/dist/index.js.map +1 -1
  97. package/dist/services/agent-detector.d.ts +57 -0
  98. package/dist/services/agent-detector.d.ts.map +1 -0
  99. package/dist/services/agent-detector.js +146 -0
  100. package/dist/services/agent-detector.js.map +1 -0
  101. package/dist/services/config-manager.d.ts +128 -10
  102. package/dist/services/config-manager.d.ts.map +1 -1
  103. package/dist/services/config-manager.js +190 -18
  104. package/dist/services/config-manager.js.map +1 -1
  105. package/dist/services/converter.d.ts +53 -0
  106. package/dist/services/converter.d.ts.map +1 -0
  107. package/dist/services/converter.js +185 -0
  108. package/dist/services/converter.js.map +1 -0
  109. package/dist/services/craft-wrapper.d.ts +108 -0
  110. package/dist/services/craft-wrapper.d.ts.map +1 -0
  111. package/dist/services/craft-wrapper.js +268 -0
  112. package/dist/services/craft-wrapper.js.map +1 -0
  113. package/dist/services/git-resolver.d.ts +9 -3
  114. package/dist/services/git-resolver.d.ts.map +1 -1
  115. package/dist/services/git-resolver.js +44 -20
  116. package/dist/services/git-resolver.js.map +1 -1
  117. package/dist/services/gitignore-manager.d.ts +74 -0
  118. package/dist/services/gitignore-manager.d.ts.map +1 -0
  119. package/dist/services/gitignore-manager.js +188 -0
  120. package/dist/services/gitignore-manager.js.map +1 -0
  121. package/dist/services/installer.d.ts +60 -1
  122. package/dist/services/installer.d.ts.map +1 -1
  123. package/dist/services/installer.js +295 -20
  124. package/dist/services/installer.js.map +1 -1
  125. package/dist/services/multi-agent-sync.d.ts +88 -0
  126. package/dist/services/multi-agent-sync.d.ts.map +1 -0
  127. package/dist/services/multi-agent-sync.js +316 -0
  128. package/dist/services/multi-agent-sync.js.map +1 -0
  129. package/dist/services/plugin-resolver.d.ts +80 -0
  130. package/dist/services/plugin-resolver.d.ts.map +1 -0
  131. package/dist/services/plugin-resolver.js +183 -0
  132. package/dist/services/plugin-resolver.js.map +1 -0
  133. package/dist/services/registry-client.d.ts +132 -5
  134. package/dist/services/registry-client.d.ts.map +1 -1
  135. package/dist/services/registry-client.js +239 -34
  136. package/dist/services/registry-client.js.map +1 -1
  137. package/dist/services/settings-manager.d.ts +151 -0
  138. package/dist/services/settings-manager.d.ts.map +1 -0
  139. package/dist/services/settings-manager.js +333 -0
  140. package/dist/services/settings-manager.js.map +1 -0
  141. package/dist/types/claude-settings.d.ts +155 -0
  142. package/dist/types/claude-settings.d.ts.map +1 -0
  143. package/dist/types/claude-settings.js +20 -0
  144. package/dist/types/claude-settings.js.map +1 -0
  145. package/dist/types/converter.d.ts +98 -0
  146. package/dist/types/converter.d.ts.map +1 -0
  147. package/dist/types/converter.js +6 -0
  148. package/dist/types/converter.js.map +1 -0
  149. package/dist/types/craftdesk-json.d.ts +76 -3
  150. package/dist/types/craftdesk-json.d.ts.map +1 -1
  151. package/dist/types/craftdesk-lock.d.ts +62 -1
  152. package/dist/types/craftdesk-lock.d.ts.map +1 -1
  153. package/dist/types/multi-agent.d.ts +85 -0
  154. package/dist/types/multi-agent.d.ts.map +1 -0
  155. package/dist/types/multi-agent.js +6 -0
  156. package/dist/types/multi-agent.js.map +1 -0
  157. package/dist/utils/crypto.d.ts +23 -0
  158. package/dist/utils/crypto.d.ts.map +1 -0
  159. package/dist/utils/crypto.js +52 -0
  160. package/dist/utils/crypto.js.map +1 -0
  161. package/dist/utils/file-system.d.ts +43 -0
  162. package/dist/utils/file-system.d.ts.map +1 -1
  163. package/dist/utils/file-system.js +45 -2
  164. package/dist/utils/file-system.js.map +1 -1
  165. package/dist/utils/logger.d.ts +75 -0
  166. package/dist/utils/logger.d.ts.map +1 -1
  167. package/dist/utils/logger.js +76 -1
  168. package/dist/utils/logger.js.map +1 -1
  169. package/dist/utils/version-utils.d.ts +63 -0
  170. package/dist/utils/version-utils.d.ts.map +1 -0
  171. package/dist/utils/version-utils.js +130 -0
  172. package/dist/utils/version-utils.js.map +1 -0
  173. package/package.json +36 -9
  174. package/.claude/settings.local.json +0 -19
  175. package/.github/workflows/ci.yml +0 -94
  176. package/API.md +0 -414
  177. package/TESTING.md +0 -263
  178. package/dist/commands/config.d.ts +0 -3
  179. package/dist/commands/config.d.ts.map +0 -1
  180. package/dist/commands/config.js +0 -56
  181. package/dist/commands/config.js.map +0 -1
  182. package/dist/types/config.d.ts +0 -17
  183. package/dist/types/config.d.ts.map +0 -1
  184. package/dist/types/config.js +0 -3
  185. package/dist/types/config.js.map +0 -1
  186. package/docs/DEPENDENCY_RESOLUTION.md +0 -237
  187. package/examples/craftdesk-all-sources.json +0 -79
  188. package/examples/craftdesk-git-monorepo.json +0 -41
  189. package/examples/craftdesk-multi-registry.json +0 -40
  190. package/examples/craftdesk-with-registries.json +0 -49
  191. package/examples/simple-craftdesk.json +0 -10
  192. package/src/commands/add.ts +0 -314
  193. package/src/commands/init.ts +0 -55
  194. package/src/commands/install.ts +0 -126
  195. package/src/commands/list.ts +0 -126
  196. package/src/commands/remove.ts +0 -82
  197. package/src/index.ts +0 -56
  198. package/src/services/config-manager.ts +0 -150
  199. package/src/services/git-resolver.ts +0 -373
  200. package/src/services/installer.ts +0 -314
  201. package/src/services/registry-client.ts +0 -163
  202. package/src/types/craftdesk-json.ts +0 -53
  203. package/src/types/craftdesk-lock.ts +0 -38
  204. package/src/utils/file-system.ts +0 -55
  205. package/src/utils/logger.ts +0 -82
  206. package/tests/fixtures/craftdesk-git.json +0 -17
  207. package/tests/fixtures/craftdesk.json +0 -15
  208. package/tests/helpers/test-utils.ts +0 -60
  209. package/tests/integration/init-command.test.ts +0 -70
  210. package/tests/integration/list-command.test.ts +0 -77
  211. package/tests/unit/config-manager.test.ts +0 -228
  212. package/tests/unit/git-resolver.test.ts +0 -303
  213. package/tests/unit/installer.test.ts +0 -105
  214. package/tsconfig.json +0 -20
  215. 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')
@@ -19,6 +29,7 @@ function createAddCommand() {
19
29
  .option('-O, --save-optional', 'Save as optionalDependency')
20
30
  .option('-E, --save-exact', 'Save exact version')
21
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 || {}
@@ -145,11 +186,13 @@ async function addCommand(craftArg, options) {
145
186
  depField = 'dependencies';
146
187
  }
147
188
  // Initialize field if it doesn't exist
189
+ // Initialize dependencies field if it doesn't exist
148
190
  if (!craftDeskJson[depField]) {
149
191
  craftDeskJson[depField] = {};
150
192
  }
151
- // Add to craftdesk.json
152
- craftDeskJson[depField][craftName] = depValue;
193
+ // Add to craftdesk.json (depField is guaranteed to exist after initialization)
194
+ const deps = craftDeskJson[depField];
195
+ deps[craftName] = depValue;
153
196
  // Save craftdesk.json
154
197
  await (0, file_system_1.writeCraftDeskJson)(craftDeskJson);
155
198
  const displayVersion = typeof depValue === 'string' ? depValue : (depValue.tag || depValue.branch || 'git');
@@ -158,6 +201,13 @@ async function addCommand(craftArg, options) {
158
201
  logger_1.logger.startSpinner(`Installing ${craftName}...`);
159
202
  await installer_1.installer.installCraft(craftName, lockEntry);
160
203
  logger_1.logger.succeedSpinner(`Installed ${displayInfo}`);
204
+ // Determine craft installation directory
205
+ const typeDir = lockEntry.type === 'skill' ? 'skills' :
206
+ lockEntry.type === 'agent' ? 'agents' :
207
+ lockEntry.type === 'command' ? 'commands' :
208
+ lockEntry.type === 'hook' ? 'hooks' :
209
+ lockEntry.type === 'plugin' ? 'plugins' : 'crafts';
210
+ const craftDir = path_1.default.join('.claude', typeDir, craftName);
161
211
  // Update craftdesk.lock
162
212
  let lockfile = await (0, file_system_1.readCraftDeskLock)();
163
213
  if (!lockfile) {
@@ -168,14 +218,39 @@ async function addCommand(craftArg, options) {
168
218
  crafts: {}
169
219
  };
170
220
  }
221
+ // Check for --as-plugin flag: wrap individual craft as plugin
222
+ if (options.asPlugin && lockEntry.type !== 'plugin') {
223
+ try {
224
+ await handleCraftWrapping(craftName, lockEntry, craftDir);
225
+ // Update lock entry to reflect it's wrapped
226
+ lockEntry.installedAs = 'wrapped';
227
+ lockEntry.wrappedBy = `${craftName}-plugin`;
228
+ logger_1.logger.success(`Wrapped ${craftName} as plugin successfully!`);
229
+ }
230
+ catch (error) {
231
+ const message = error instanceof Error ? error.message : String(error);
232
+ logger_1.logger.error(`Failed to wrap craft: ${message}`);
233
+ // Continue with normal installation
234
+ }
235
+ }
236
+ // Check if installed craft is a plugin - handle plugin dependencies
237
+ if (lockEntry.type === 'plugin' && await fs_extra_1.default.pathExists(craftDir)) {
238
+ const pluginDetected = await isPlugin(craftDir);
239
+ if (pluginDetected) {
240
+ logger_1.logger.info('Plugin detected - resolving dependencies...');
241
+ await handlePluginInstall(craftName, lockEntry, craftDir, lockfile);
242
+ }
243
+ }
171
244
  // Add or update the craft in the lockfile
172
245
  lockfile.crafts[craftName] = lockEntry;
246
+ lockfile.generatedAt = new Date().toISOString();
173
247
  await (0, file_system_1.writeCraftDeskLock)(lockfile);
174
248
  logger_1.logger.success('Craft added successfully!');
175
249
  }
176
250
  catch (error) {
177
251
  logger_1.logger.failSpinner();
178
- logger_1.logger.error(`Failed to add craft: ${error.message}`);
252
+ const message = error instanceof Error ? error.message : String(error);
253
+ logger_1.logger.error(`Failed to add craft: ${message}`);
179
254
  process.exit(1);
180
255
  }
181
256
  }
@@ -241,7 +316,7 @@ function normalizeGitHubUrl(url) {
241
316
  function parseGitUrl(urlString) {
242
317
  // Remove optional git+ prefix (npm-style format)
243
318
  let url = urlString.replace(/^git\+/, '');
244
- const result = {};
319
+ const result = { url: '' };
245
320
  // Extract direct file path (e.g., #file:rspec-agent.md)
246
321
  if (url.includes('#file:')) {
247
322
  const [baseUrl, filePart] = url.split('#file:');
@@ -281,4 +356,227 @@ function parseGitUrl(urlString) {
281
356
  }
282
357
  return result;
283
358
  }
359
+ /**
360
+ * Detect if a craft is a plugin by checking for .claude-plugin/plugin.json or PLUGIN.md
361
+ *
362
+ * @param craftDir - Path to the craft installation directory
363
+ * @returns Promise resolving to true if plugin detected, false otherwise
364
+ */
365
+ async function isPlugin(craftDir) {
366
+ try {
367
+ const hasPluginJson = await fs_extra_1.default.pathExists(path_1.default.join(craftDir, '.claude-plugin', 'plugin.json'));
368
+ const hasPluginMd = await fs_extra_1.default.pathExists(path_1.default.join(craftDir, 'PLUGIN.md'));
369
+ return hasPluginJson || hasPluginMd;
370
+ }
371
+ catch {
372
+ return false;
373
+ }
374
+ }
375
+ /**
376
+ * Handle plugin installation with dependency resolution
377
+ *
378
+ * @param craftName - Name of the craft/plugin being installed
379
+ * @param lockEntry - Lock entry containing version and dependency information
380
+ * @param craftDir - Path to the craft installation directory
381
+ * @param lockfile - Current lockfile object to update with resolved dependencies
382
+ * @returns Promise that resolves when plugin and dependencies are installed
383
+ */
384
+ async function handlePluginInstall(craftName, lockEntry, craftDir, lockfile) {
385
+ logger_1.logger.startSpinner('Resolving plugin dependencies...');
386
+ try {
387
+ // Resolve plugin dependencies
388
+ await plugin_resolver_1.pluginResolver.resolvePluginDependencies(craftDir, undefined);
389
+ const pluginTree = plugin_resolver_1.pluginResolver.buildPluginTree();
390
+ const flattenedDeps = plugin_resolver_1.pluginResolver.getFlattenedDependencies();
391
+ logger_1.logger.succeedSpinner(`Resolved ${Object.keys(flattenedDeps).length} total dependencies`);
392
+ // Add plugin tree to lockfile
393
+ if (!lockfile.pluginTree) {
394
+ lockfile.pluginTree = {};
395
+ }
396
+ lockfile.pluginTree[craftName] = pluginTree[craftName];
397
+ // Install plugin dependencies
398
+ for (const [depName, depInfo] of Object.entries(flattenedDeps)) {
399
+ if (depName === craftName)
400
+ continue; // Skip self
401
+ // Check if dependency is already in lockfile
402
+ if (lockfile.crafts[depName]) {
403
+ logger_1.logger.debug(`Dependency ${depName} already installed`);
404
+ continue;
405
+ }
406
+ logger_1.logger.info(`Installing plugin dependency: ${depName}...`);
407
+ try {
408
+ await installPluginDependency(depName, depInfo, lockfile);
409
+ }
410
+ catch (error) {
411
+ const message = error instanceof Error ? error.message : String(error);
412
+ logger_1.logger.error(`Failed to install ${depName}: ${message}`);
413
+ throw new Error(`Plugin dependency installation failed: ${depName}`);
414
+ }
415
+ }
416
+ // Reset plugin resolver for next use
417
+ plugin_resolver_1.pluginResolver.reset();
418
+ }
419
+ catch (error) {
420
+ logger_1.logger.failSpinner();
421
+ const message = error instanceof Error ? error.message : String(error);
422
+ logger_1.logger.warn(`Failed to resolve plugin dependencies: ${message}`);
423
+ logger_1.logger.info('Plugin installed but dependencies may need manual installation');
424
+ }
425
+ }
426
+ /**
427
+ * Install a single plugin dependency
428
+ *
429
+ * @param depName - Name of the dependency to install
430
+ * @param depInfo - Dependency specification (version string, git object, or registry object)
431
+ * @param lockfile - Current lockfile object to update with the new dependency
432
+ * @returns Promise that resolves when dependency is installed
433
+ */
434
+ async function installPluginDependency(depName, depInfo, lockfile) {
435
+ let depLockEntry;
436
+ // Handle different dependency formats
437
+ if (typeof depInfo === 'string') {
438
+ // Simple version string like "^1.5.0" - fetch from registry
439
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(depName, depInfo);
440
+ if (!craftInfo) {
441
+ throw new Error(`Craft '${depName}' not found in registry`);
442
+ }
443
+ if (!craftInfo.download_url) {
444
+ throw new Error(`Registry did not provide download URL for ${depName}@${craftInfo.version}`);
445
+ }
446
+ // Calculate checksum if not provided by API
447
+ let integrity = craftInfo.integrity;
448
+ if (!integrity) {
449
+ logger_1.logger.debug(`Computing checksum for ${depName}...`);
450
+ const tempDir = path_1.default.join(os_1.default.tmpdir(), 'craftdesk-verify');
451
+ const tempFile = path_1.default.join(tempDir, `${craftInfo.name}-${craftInfo.version}.zip`);
452
+ try {
453
+ await fs_extra_1.default.ensureDir(tempDir);
454
+ await registry_client_1.registryClient.downloadCraft(craftInfo.download_url, tempFile);
455
+ integrity = await (0, crypto_1.calculateFileChecksum)(tempFile);
456
+ }
457
+ finally {
458
+ await fs_extra_1.default.remove(tempFile).catch(() => { });
459
+ await fs_extra_1.default.remove(tempDir).catch(() => { });
460
+ }
461
+ }
462
+ depLockEntry = {
463
+ version: craftInfo.version,
464
+ resolved: craftInfo.download_url,
465
+ integrity: integrity,
466
+ type: craftInfo.type,
467
+ author: craftInfo.author,
468
+ dependencies: craftInfo.dependencies || {},
469
+ installedAs: 'dependency'
470
+ };
471
+ logger_1.logger.success(`Resolved ${depName}@${craftInfo.version}`);
472
+ }
473
+ else if (depInfo.git) {
474
+ // Git dependency
475
+ const gitInfo = {
476
+ url: depInfo.git,
477
+ branch: depInfo.branch,
478
+ tag: depInfo.tag,
479
+ commit: depInfo.commit,
480
+ path: depInfo.path,
481
+ file: depInfo.file,
482
+ name: depName
483
+ };
484
+ const resolvedGit = await git_resolver_1.gitResolver.resolveGitDependency(gitInfo);
485
+ const craftJson = resolvedGit.craftDeskJson;
486
+ const craftType = craftJson?.type || 'skill';
487
+ depLockEntry = {
488
+ version: craftJson?.version || gitInfo.tag || gitInfo.branch || 'HEAD',
489
+ resolved: gitInfo.url,
490
+ integrity: resolvedGit.resolvedCommit || 'git',
491
+ type: craftType,
492
+ author: craftJson?.author || 'git',
493
+ git: gitInfo.url,
494
+ ...(gitInfo.branch && { branch: gitInfo.branch }),
495
+ ...(gitInfo.tag && { tag: gitInfo.tag }),
496
+ ...(resolvedGit.resolvedCommit && { commit: resolvedGit.resolvedCommit }),
497
+ ...(gitInfo.path && { path: gitInfo.path }),
498
+ ...(gitInfo.file && { file: gitInfo.file }),
499
+ dependencies: {},
500
+ installedAs: 'dependency'
501
+ };
502
+ logger_1.logger.success(`Resolved ${depName} from git`);
503
+ }
504
+ else if (depInfo.registry) {
505
+ // Custom registry
506
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(depName, depInfo.version, depInfo.registry);
507
+ if (!craftInfo) {
508
+ throw new Error(`Craft '${depName}' not found in custom registry`);
509
+ }
510
+ if (!craftInfo.download_url) {
511
+ throw new Error(`Registry did not provide download URL for ${depName}@${craftInfo.version}`);
512
+ }
513
+ // Calculate checksum if not provided
514
+ let integrity = craftInfo.integrity;
515
+ if (!integrity) {
516
+ logger_1.logger.debug(`Computing checksum for ${depName}...`);
517
+ const tempDir = path_1.default.join(os_1.default.tmpdir(), 'craftdesk-verify');
518
+ const tempFile = path_1.default.join(tempDir, `${craftInfo.name}-${craftInfo.version}.zip`);
519
+ try {
520
+ await fs_extra_1.default.ensureDir(tempDir);
521
+ await registry_client_1.registryClient.downloadCraft(craftInfo.download_url, tempFile);
522
+ integrity = await (0, crypto_1.calculateFileChecksum)(tempFile);
523
+ }
524
+ finally {
525
+ await fs_extra_1.default.remove(tempFile).catch(() => { });
526
+ await fs_extra_1.default.remove(tempDir).catch(() => { });
527
+ }
528
+ }
529
+ depLockEntry = {
530
+ version: craftInfo.version,
531
+ resolved: craftInfo.download_url,
532
+ integrity: integrity,
533
+ type: craftInfo.type,
534
+ author: craftInfo.author,
535
+ dependencies: craftInfo.dependencies || {},
536
+ installedAs: 'dependency'
537
+ };
538
+ logger_1.logger.success(`Resolved ${depName}@${craftInfo.version} from custom registry`);
539
+ }
540
+ else {
541
+ throw new Error(`Unknown dependency format for ${depName}`);
542
+ }
543
+ // Add to lockfile
544
+ lockfile.crafts[depName] = depLockEntry;
545
+ // Install the craft
546
+ await installer_1.installer.installCraft(depName, depLockEntry);
547
+ // If this dependency is also a plugin, recursively resolve its dependencies
548
+ const depDir = path_1.default.join(installer_1.installer.getInstallPath(), installer_1.installer.getTypeDirectory(depLockEntry.type), depName);
549
+ const isDepPlugin = await isPlugin(depDir);
550
+ if (isDepPlugin) {
551
+ logger_1.logger.debug(`Dependency ${depName} is a plugin, resolving its dependencies...`);
552
+ await handlePluginInstall(depName, depLockEntry, depDir, lockfile);
553
+ }
554
+ }
555
+ /**
556
+ * Handle --as-plugin flag: wrap craft as plugin
557
+ *
558
+ * @param craftName - Name of the craft to wrap
559
+ * @param lockEntry - Lock entry containing craft metadata
560
+ * @param craftDir - Path to the craft installation directory
561
+ * @returns Promise resolving to the wrapped plugin directory path
562
+ */
563
+ async function handleCraftWrapping(craftName, lockEntry, craftDir) {
564
+ logger_1.logger.startSpinner(`Wrapping ${craftName} as plugin...`);
565
+ try {
566
+ const wrappedDir = await craft_wrapper_1.craftWrapper.wrapCraft({
567
+ craftName,
568
+ craftType: lockEntry.type,
569
+ craftPath: craftDir,
570
+ version: lockEntry.version,
571
+ author: lockEntry.author || 'unknown'
572
+ });
573
+ logger_1.logger.succeedSpinner(`Wrapped as plugin: ${craftName}-plugin`);
574
+ return wrappedDir;
575
+ }
576
+ catch (error) {
577
+ logger_1.logger.failSpinner();
578
+ const message = error instanceof Error ? error.message : String(error);
579
+ throw new Error(`Failed to wrap craft as plugin: ${message}`);
580
+ }
581
+ }
284
582
  //# 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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"}