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.
Files changed (175) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +943 -46
  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 +302 -6
  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 +8 -2
  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 +51 -10
  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 +34 -3
  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 +29 -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 -19
  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 -373
  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 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Creates the search command for finding crafts in the registry by keyword.
4
+ *
5
+ * @returns The configured Commander command instance
6
+ */
7
+ export declare function createSearchCommand(): Command;
8
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSearchCommand = createSearchCommand;
4
+ const commander_1 = require("commander");
5
+ const registry_client_1 = require("../services/registry-client");
6
+ const logger_1 = require("../utils/logger");
7
+ /**
8
+ * Creates the search command for finding crafts in the registry by keyword.
9
+ *
10
+ * @returns The configured Commander command instance
11
+ */
12
+ function createSearchCommand() {
13
+ return new commander_1.Command('search')
14
+ .description('Search for crafts in the registry')
15
+ .argument('<query>', 'Search query')
16
+ .option('-t, --type <type>', 'Filter by type (skill, agent, command, hook, plugin)')
17
+ .option('-l, --limit <limit>', 'Maximum number of results', '20')
18
+ .option('--json', 'Output as JSON')
19
+ .action(async (query, options) => {
20
+ await searchCommand(query, options);
21
+ });
22
+ }
23
+ async function searchCommand(query, options) {
24
+ try {
25
+ logger_1.logger.startSpinner(`Searching for "${query}"...`);
26
+ const results = await registry_client_1.registryClient.searchCrafts(query, options.type || undefined);
27
+ if (!results || results.length === 0) {
28
+ logger_1.logger.failSpinner(`No crafts found matching "${query}"`);
29
+ return;
30
+ }
31
+ logger_1.logger.succeedSpinner(`Found ${results.length} craft(s)`);
32
+ // Apply limit
33
+ const limit = parseInt(options.limit || '20', 10);
34
+ const displayResults = results.slice(0, limit);
35
+ if (options.json) {
36
+ console.log(JSON.stringify(displayResults, null, 2));
37
+ }
38
+ else {
39
+ console.log('');
40
+ for (const craft of displayResults) {
41
+ console.log(` ${craft.author}/${craft.name}@${craft.version} (${craft.type})`);
42
+ if (craft.description) {
43
+ console.log(` ${craft.description}`);
44
+ }
45
+ console.log('');
46
+ }
47
+ if (results.length > limit) {
48
+ logger_1.logger.info(`Showing ${limit} of ${results.length} results. Use --limit to see more.`);
49
+ }
50
+ logger_1.logger.info(`\nTo install a craft, run: craftdesk add <author>/<name>`);
51
+ }
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ logger_1.logger.failSpinner();
56
+ logger_1.logger.error(`Search failed: ${message}`);
57
+ process.exit(1);
58
+ }
59
+ }
60
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":";;AAeA,kDAUC;AAzBD,yCAAoC;AACpC,iEAA6D;AAC7D,4CAAyC;AAQzC;;;;GAIG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,mCAAmC,CAAC;SAChD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;SACnC,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,IAAI,CAAC;SAChE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA6B,EAAE,EAAE;QAC7D,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,OAA6B;IACvE,IAAI,CAAC;QACH,eAAM,CAAC,YAAY,CAAC,kBAAkB,KAAK,MAAM,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,gCAAc,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAEpF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,eAAM,CAAC,WAAW,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,eAAM,CAAC,cAAc,CAAC,SAAS,OAAO,CAAC,MAAM,WAAW,CAAC,CAAC;QAE1D,cAAc;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;gBAChF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAC3B,eAAM,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,OAAO,CAAC,MAAM,oCAAoC,CAAC,CAAC;YACzF,CAAC;YAED,eAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,eAAM,CAAC,WAAW,EAAE,CAAC;QACrB,eAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Creates the update command for updating installed crafts to newer versions.
4
+ *
5
+ * @returns The configured Commander command instance
6
+ */
7
+ export declare function createUpdateCommand(): Command;
8
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAW7C"}
@@ -0,0 +1,369 @@
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.createUpdateCommand = createUpdateCommand;
7
+ const commander_1 = require("commander");
8
+ const child_process_1 = require("child_process");
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_extra_1 = __importDefault(require("fs-extra"));
11
+ const file_system_1 = require("../utils/file-system");
12
+ const logger_1 = require("../utils/logger");
13
+ const registry_client_1 = require("../services/registry-client");
14
+ const installer_1 = require("../services/installer");
15
+ const config_manager_1 = require("../services/config-manager");
16
+ const version_utils_1 = require("../utils/version-utils");
17
+ /**
18
+ * Creates the update command for updating installed crafts to newer versions.
19
+ *
20
+ * @returns The configured Commander command instance
21
+ */
22
+ function createUpdateCommand() {
23
+ return new commander_1.Command('update')
24
+ .description('Update installed crafts to newer versions')
25
+ .argument('[craft]', 'Specific craft to update (optional)')
26
+ .option('--dry-run', 'Preview updates without applying')
27
+ .option('--git-only', 'Only update git-based dependencies')
28
+ .option('--registry-only', 'Only update registry dependencies')
29
+ .option('--latest', 'Ignore version constraints, update to latest')
30
+ .action(async (craft, options) => {
31
+ await updateCommand(craft, options);
32
+ });
33
+ }
34
+ async function updateCommand(craftName, options) {
35
+ try {
36
+ // Read craftdesk.json for project info
37
+ const craftDeskJson = await (0, file_system_1.readCraftDeskJson)();
38
+ if (!craftDeskJson) {
39
+ logger_1.logger.error('No craftdesk.json found in current directory');
40
+ process.exit(1);
41
+ }
42
+ // Read lockfile to get installed versions
43
+ const lockfile = await (0, file_system_1.readCraftDeskLock)();
44
+ if (!lockfile || !lockfile.crafts || Object.keys(lockfile.crafts).length === 0) {
45
+ logger_1.logger.warn('No crafts installed. Run "craftdesk install" first.');
46
+ process.exit(0);
47
+ }
48
+ logger_1.logger.info('Checking for updates...\n');
49
+ // Find available updates
50
+ const updates = await findAvailableUpdates(lockfile, options);
51
+ // Filter to specific craft if provided
52
+ const toUpdate = craftName
53
+ ? updates.filter(u => u.name === craftName || u.name.endsWith(`/${craftName}`))
54
+ : updates;
55
+ if (craftName && toUpdate.length === 0) {
56
+ const inLockfile = Object.keys(lockfile.crafts).find(n => n === craftName || n.endsWith(`/${craftName}`));
57
+ if (inLockfile) {
58
+ logger_1.logger.success(`${craftName} is already up to date!`);
59
+ }
60
+ else {
61
+ logger_1.logger.error(`Craft '${craftName}' is not installed.`);
62
+ process.exit(1);
63
+ }
64
+ return;
65
+ }
66
+ if (toUpdate.length === 0) {
67
+ logger_1.logger.success('All crafts are up to date!');
68
+ return;
69
+ }
70
+ // Display update preview
71
+ displayUpdatePreview(toUpdate);
72
+ if (options.dryRun) {
73
+ logger_1.logger.info('\nRun without --dry-run to apply updates.');
74
+ return;
75
+ }
76
+ // Perform updates
77
+ logger_1.logger.info('\nUpdating crafts...\n');
78
+ let successCount = 0;
79
+ let errorCount = 0;
80
+ for (const update of toUpdate) {
81
+ try {
82
+ logger_1.logger.startSpinner(`Updating ${update.name}...`);
83
+ // Get new lock entry
84
+ const newEntry = await fetchNewLockEntry(update, options.latest);
85
+ if (!newEntry) {
86
+ logger_1.logger.failSpinner(`Failed to fetch update info for ${update.name}`);
87
+ errorCount++;
88
+ continue;
89
+ }
90
+ // Remove old installation
91
+ const installPath = config_manager_1.configManager.getInstallPath();
92
+ const typeDir = installer_1.installer.getTypeDirectory(update.lockEntry.type);
93
+ const craftDir = path_1.default.join(process.cwd(), installPath, typeDir, update.name);
94
+ if (await fs_extra_1.default.pathExists(craftDir)) {
95
+ await fs_extra_1.default.remove(craftDir);
96
+ }
97
+ // Install new version
98
+ await installer_1.installer.installCraft(update.name, newEntry);
99
+ // Update lockfile entry
100
+ lockfile.crafts[update.name] = newEntry;
101
+ // Update craftdesk.json dependency if needed
102
+ if (craftDeskJson.dependencies && craftDeskJson.dependencies[update.name]) {
103
+ const currentDep = craftDeskJson.dependencies[update.name];
104
+ // Only update if using exact version or if --latest flag
105
+ const isString = typeof currentDep === 'string';
106
+ const usesCaretRange = isString && currentDep.startsWith('^');
107
+ if (options.latest || !usesCaretRange) {
108
+ if (isString) {
109
+ craftDeskJson.dependencies[update.name] = newEntry.version;
110
+ }
111
+ else {
112
+ // It's a DependencyConfig - update version field
113
+ const depConfig = craftDeskJson.dependencies[update.name];
114
+ depConfig.version = newEntry.version;
115
+ }
116
+ }
117
+ }
118
+ logger_1.logger.succeedSpinner(`Updated ${update.name}: ${(0, version_utils_1.colorize)(update.current, 'red')} → ${(0, version_utils_1.colorize)(newEntry.version, 'green')}`);
119
+ successCount++;
120
+ }
121
+ catch (error) {
122
+ const message = error instanceof Error ? error.message : String(error);
123
+ logger_1.logger.failSpinner(`Failed to update ${update.name}: ${message}`);
124
+ errorCount++;
125
+ }
126
+ }
127
+ // Update lockfile metadata
128
+ lockfile.generatedAt = new Date().toISOString();
129
+ if (lockfile.metadata) {
130
+ lockfile.metadata.totalCrafts = Object.keys(lockfile.crafts).length;
131
+ }
132
+ // Write updated files
133
+ await (0, file_system_1.writeCraftDeskLock)(lockfile);
134
+ await (0, file_system_1.writeCraftDeskJson)(craftDeskJson);
135
+ // Summary
136
+ console.log('');
137
+ if (successCount > 0) {
138
+ logger_1.logger.success(`Updated ${successCount} craft(s)`);
139
+ }
140
+ if (errorCount > 0) {
141
+ logger_1.logger.warn(`${errorCount} craft(s) failed to update`);
142
+ }
143
+ }
144
+ catch (error) {
145
+ const message = error instanceof Error ? error.message : String(error);
146
+ logger_1.logger.error(`Failed to update: ${message}`);
147
+ process.exit(1);
148
+ }
149
+ }
150
+ async function findAvailableUpdates(lockfile, options) {
151
+ const updates = [];
152
+ for (const [name, entry] of Object.entries(lockfile.crafts)) {
153
+ const lockEntry = entry;
154
+ // Skip based on options
155
+ if (options.gitOnly && !lockEntry.git)
156
+ continue;
157
+ if (options.registryOnly && lockEntry.git)
158
+ continue;
159
+ try {
160
+ let updateInfo = null;
161
+ if (lockEntry.git) {
162
+ // Git-based dependency
163
+ updateInfo = await checkGitUpdate(name, lockEntry);
164
+ }
165
+ else {
166
+ // Registry-based dependency
167
+ updateInfo = await checkRegistryUpdate(name, lockEntry);
168
+ }
169
+ if (updateInfo && updateInfo.current !== updateInfo.latest) {
170
+ updates.push(updateInfo);
171
+ }
172
+ }
173
+ catch (error) {
174
+ const message = error instanceof Error ? error.message : String(error);
175
+ logger_1.logger.debug(`Failed to check ${name}: ${message}`);
176
+ }
177
+ }
178
+ return updates;
179
+ }
180
+ async function checkRegistryUpdate(name, entry) {
181
+ try {
182
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(name);
183
+ if (!craftInfo) {
184
+ logger_1.logger.debug(`Could not fetch registry info for ${name}`);
185
+ return null;
186
+ }
187
+ const latestVersion = craftInfo.version || 'unknown';
188
+ const currentVersion = entry.version;
189
+ if (latestVersion === 'unknown' || latestVersion === currentVersion) {
190
+ return null;
191
+ }
192
+ return {
193
+ name,
194
+ current: currentVersion,
195
+ latest: latestVersion,
196
+ type: entry.type,
197
+ source: 'registry',
198
+ lockEntry: entry
199
+ };
200
+ }
201
+ catch (error) {
202
+ const message = error instanceof Error ? error.message : String(error);
203
+ logger_1.logger.debug(`Registry check failed for ${name}: ${message}`);
204
+ return null;
205
+ }
206
+ }
207
+ async function checkGitUpdate(name, entry) {
208
+ if (!entry.git)
209
+ return null;
210
+ try {
211
+ const gitUrl = entry.git;
212
+ const currentCommit = entry.commit || entry.integrity;
213
+ const currentTag = entry.tag;
214
+ const currentBranch = entry.branch || 'main';
215
+ let latestDisplay = '';
216
+ let hasUpdate = false;
217
+ if (currentTag) {
218
+ // Check for newer tags
219
+ const tags = getRemoteTags(gitUrl);
220
+ if (tags.length > 0) {
221
+ const sortedTags = (0, version_utils_1.sortTagsBySemver)(tags);
222
+ latestDisplay = sortedTags[0] || currentTag;
223
+ hasUpdate = latestDisplay !== currentTag && (0, version_utils_1.isNewerVersion)(currentTag, latestDisplay);
224
+ }
225
+ else {
226
+ return null;
227
+ }
228
+ }
229
+ else {
230
+ // Check for newer commits on branch
231
+ const latestCommit = getRemoteHeadCommit(gitUrl, currentBranch);
232
+ if (latestCommit && currentCommit) {
233
+ const shortCurrent = currentCommit.substring(0, 7);
234
+ const shortLatest = latestCommit.substring(0, 7);
235
+ latestDisplay = shortLatest;
236
+ hasUpdate = shortCurrent !== shortLatest && latestCommit !== currentCommit;
237
+ }
238
+ else {
239
+ return null;
240
+ }
241
+ }
242
+ if (!hasUpdate)
243
+ return null;
244
+ const currentDisplay = currentTag || currentCommit?.substring(0, 7) || 'unknown';
245
+ return {
246
+ name,
247
+ current: currentDisplay,
248
+ latest: latestDisplay,
249
+ type: entry.type,
250
+ source: 'git',
251
+ lockEntry: entry
252
+ };
253
+ }
254
+ catch (error) {
255
+ const message = error instanceof Error ? error.message : String(error);
256
+ logger_1.logger.debug(`Git check failed for ${name}: ${message}`);
257
+ return null;
258
+ }
259
+ }
260
+ async function fetchNewLockEntry(update, _latest) {
261
+ if (update.source === 'registry') {
262
+ // Fetch from registry
263
+ const craftInfo = await registry_client_1.registryClient.getCraftInfo(update.name, update.latest);
264
+ if (!craftInfo)
265
+ return null;
266
+ return {
267
+ version: craftInfo.version,
268
+ resolved: craftInfo.download_url || update.lockEntry.resolved,
269
+ integrity: craftInfo.integrity || update.lockEntry.integrity,
270
+ type: craftInfo.type,
271
+ author: craftInfo.author,
272
+ registry: update.lockEntry.registry,
273
+ dependencies: craftInfo.dependencies || update.lockEntry.dependencies
274
+ };
275
+ }
276
+ else {
277
+ // Git source - update tag/commit
278
+ const newEntry = { ...update.lockEntry };
279
+ if (update.lockEntry.tag) {
280
+ // Update to new tag
281
+ newEntry.tag = update.latest;
282
+ newEntry.version = update.latest.replace(/^v/, '');
283
+ // Get commit hash for new tag
284
+ const commit = getRemoteTagCommit(update.lockEntry.git, update.latest);
285
+ if (commit) {
286
+ newEntry.commit = commit;
287
+ newEntry.integrity = commit;
288
+ }
289
+ }
290
+ else {
291
+ // Update to new commit
292
+ const branch = update.lockEntry.branch || 'main';
293
+ const latestCommit = getRemoteHeadCommit(update.lockEntry.git, branch);
294
+ if (latestCommit) {
295
+ newEntry.commit = latestCommit;
296
+ newEntry.integrity = latestCommit;
297
+ newEntry.version = `0.0.0-${latestCommit.substring(0, 7)}`;
298
+ }
299
+ }
300
+ return newEntry;
301
+ }
302
+ }
303
+ function displayUpdatePreview(updates) {
304
+ const nameWidth = Math.max(30, ...updates.map(u => u.name.length + 2));
305
+ const colWidth = 14;
306
+ console.log('');
307
+ console.log((0, version_utils_1.padRight)('Craft', nameWidth) +
308
+ (0, version_utils_1.padRight)('Current', colWidth) +
309
+ (0, version_utils_1.padRight)('Latest', colWidth) +
310
+ 'Source');
311
+ console.log('-'.repeat(nameWidth + colWidth * 2 + 10));
312
+ for (const update of updates) {
313
+ const _updateType = (0, version_utils_1.getUpdateType)(update.current, update.latest);
314
+ const sourceCol = update.source === 'git' ? 'git' : 'registry';
315
+ console.log((0, version_utils_1.padRight)(update.name, nameWidth) +
316
+ (0, version_utils_1.colorize)((0, version_utils_1.padRight)(update.current, colWidth), 'red') +
317
+ (0, version_utils_1.colorize)((0, version_utils_1.padRight)(update.latest, colWidth), 'green') +
318
+ sourceCol);
319
+ }
320
+ console.log('');
321
+ logger_1.logger.info(`${updates.length} craft(s) can be updated.`);
322
+ }
323
+ function getRemoteTags(gitUrl) {
324
+ try {
325
+ const output = (0, child_process_1.execSync)(`git ls-remote --tags ${gitUrl} 2>/dev/null`, {
326
+ encoding: 'utf8',
327
+ timeout: 15000
328
+ });
329
+ const tags = [];
330
+ const lines = output.split('\n');
331
+ for (const line of lines) {
332
+ const match = line.match(/refs\/tags\/([^^]+)$/);
333
+ if (match && match[1]) {
334
+ tags.push(match[1]);
335
+ }
336
+ }
337
+ return tags;
338
+ }
339
+ catch {
340
+ return [];
341
+ }
342
+ }
343
+ function getRemoteHeadCommit(gitUrl, branch) {
344
+ try {
345
+ const output = (0, child_process_1.execSync)(`git ls-remote ${gitUrl} refs/heads/${branch} 2>/dev/null`, {
346
+ encoding: 'utf8',
347
+ timeout: 15000
348
+ });
349
+ const match = output.match(/^([a-f0-9]+)/);
350
+ return match ? match[1] : null;
351
+ }
352
+ catch {
353
+ return null;
354
+ }
355
+ }
356
+ function getRemoteTagCommit(gitUrl, tag) {
357
+ try {
358
+ const output = (0, child_process_1.execSync)(`git ls-remote ${gitUrl} refs/tags/${tag} 2>/dev/null`, {
359
+ encoding: 'utf8',
360
+ timeout: 15000
361
+ });
362
+ const match = output.match(/^([a-f0-9]+)/);
363
+ return match ? match[1] : null;
364
+ }
365
+ catch {
366
+ return null;
367
+ }
368
+ }
369
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Creates the whoami command for displaying the currently authenticated user.
4
+ *
5
+ * @returns The configured Commander command instance
6
+ */
7
+ export declare function createWhoamiCommand(): Command;
8
+ //# sourceMappingURL=whoami.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWhoamiCommand = createWhoamiCommand;
4
+ const commander_1 = require("commander");
5
+ const config_manager_1 = require("../services/config-manager");
6
+ const registry_client_1 = require("../services/registry-client");
7
+ const logger_1 = require("../utils/logger");
8
+ /**
9
+ * Creates the whoami command for displaying the currently authenticated user.
10
+ *
11
+ * @returns The configured Commander command instance
12
+ */
13
+ function createWhoamiCommand() {
14
+ return new commander_1.Command('whoami')
15
+ .description('Display the currently logged in user')
16
+ .option('--registry <url>', 'Registry URL to check')
17
+ .action(async (options) => {
18
+ await whoamiCommand(options);
19
+ });
20
+ }
21
+ async function whoamiCommand(options) {
22
+ try {
23
+ // 1. Get registry URL
24
+ const registryUrl = options.registry || await config_manager_1.configManager.getDefaultRegistry();
25
+ if (!registryUrl) {
26
+ logger_1.logger.error('No registry configured.');
27
+ logger_1.logger.info('Either specify --registry <url> or add a default registry to craftdesk.json');
28
+ process.exit(1);
29
+ }
30
+ // 2. Get token from config
31
+ const token = await config_manager_1.configManager.getAuthToken(registryUrl);
32
+ if (!token) {
33
+ logger_1.logger.info('Not logged in');
34
+ logger_1.logger.info(`Run "craftdesk login --registry ${registryUrl}" to authenticate`);
35
+ process.exit(1);
36
+ }
37
+ // 3. Verify token and get user info
38
+ const userInfo = await registry_client_1.registryClient.verifyToken(registryUrl, token);
39
+ // 4. Display user info
40
+ logger_1.logger.log(userInfo.username);
41
+ if (userInfo.organization) {
42
+ logger_1.logger.info(`Organization: ${userInfo.organization}`);
43
+ }
44
+ logger_1.logger.info(`Registry: ${registryUrl}`);
45
+ }
46
+ catch (error) {
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ if (message.includes('Invalid') || message.includes('expired')) {
49
+ logger_1.logger.error('Token is invalid or expired');
50
+ logger_1.logger.info('Run "craftdesk login" to re-authenticate');
51
+ }
52
+ else {
53
+ logger_1.logger.error(message);
54
+ }
55
+ process.exit(1);
56
+ }
57
+ }
58
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;AAcA,kDAOC;AArBD,yCAAoC;AACpC,+DAA2D;AAC3D,iEAA6D;AAC7D,4CAAyC;AAMzC;;;;GAIG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,mBAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;QACvC,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAsB;IACjD,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,8BAAa,CAAC,kBAAkB,EAAE,CAAC;QAEjF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACxC,eAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,2BAA2B;QAC3B,MAAM,KAAK,GAAG,MAAM,8BAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,eAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7B,eAAM,CAAC,IAAI,CAAC,mCAAmC,WAAW,mBAAmB,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oCAAoC;QACpC,MAAM,QAAQ,GAAG,MAAM,gCAAc,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEtE,uBAAuB;QACvB,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1B,eAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC;IAE1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/D,eAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YAC5C,eAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}