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
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ /**
3
+ * SettingsManager - Manages .claude/settings.json file
4
+ *
5
+ * Handles:
6
+ * - Reading and writing Claude Code settings
7
+ * - Plugin registration and lifecycle
8
+ * - MCP server configuration
9
+ * - Wrapped craft tracking
10
+ */
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.settingsManager = exports.SettingsManager = void 0;
16
+ const fs_extra_1 = __importDefault(require("fs-extra"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const logger_1 = require("../utils/logger");
19
+ /**
20
+ * Service for managing Claude Code settings.json file
21
+ *
22
+ * Handles plugin registration, MCP server configuration, and settings validation
23
+ */
24
+ class SettingsManager {
25
+ installDir;
26
+ settingsPath;
27
+ /**
28
+ * Creates a new SettingsManager instance
29
+ *
30
+ * @param installDir - Installation directory (default: '.claude')
31
+ */
32
+ constructor(installDir = '.claude') {
33
+ this.installDir = installDir;
34
+ this.settingsPath = path_1.default.join(installDir, 'settings.json');
35
+ }
36
+ /**
37
+ * Read the settings file
38
+ *
39
+ * Returns default settings if file doesn't exist
40
+ *
41
+ * @returns The Claude settings object
42
+ */
43
+ async readSettings() {
44
+ try {
45
+ if (await fs_extra_1.default.pathExists(this.settingsPath)) {
46
+ const content = await fs_extra_1.default.readFile(this.settingsPath, 'utf-8');
47
+ const settings = JSON.parse(content);
48
+ return settings;
49
+ }
50
+ // Return default settings if file doesn't exist
51
+ return this.createDefaultSettings();
52
+ }
53
+ catch (error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ logger_1.logger.warn(`Failed to read settings file: ${message}`);
56
+ logger_1.logger.debug('Returning default settings');
57
+ return this.createDefaultSettings();
58
+ }
59
+ }
60
+ /**
61
+ * Write settings to file
62
+ *
63
+ * @param settings - The settings object to write
64
+ */
65
+ async writeSettings(settings) {
66
+ try {
67
+ // Ensure .claude directory exists
68
+ await fs_extra_1.default.ensureDir(this.installDir);
69
+ // Update timestamp
70
+ settings.updatedAt = new Date().toISOString();
71
+ // Write with pretty formatting
72
+ await fs_extra_1.default.writeFile(this.settingsPath, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
73
+ logger_1.logger.debug(`Updated settings file: ${this.settingsPath}`);
74
+ }
75
+ catch (error) {
76
+ const message = error instanceof Error ? error.message : String(error);
77
+ logger_1.logger.error(`Failed to write settings file: ${message}`);
78
+ throw error;
79
+ }
80
+ }
81
+ /**
82
+ * Register a plugin in settings
83
+ *
84
+ * @param config - Plugin configuration to register
85
+ */
86
+ async registerPlugin(config) {
87
+ const settings = await this.readSettings();
88
+ // Add or update plugin
89
+ settings.plugins[config.name] = {
90
+ ...config,
91
+ installedAt: config.installedAt || new Date().toISOString()
92
+ };
93
+ await this.writeSettings(settings);
94
+ logger_1.logger.info(`Registered plugin: ${config.name}@${config.version}`);
95
+ }
96
+ /**
97
+ * Unregister a plugin from settings
98
+ *
99
+ * @param pluginName - Name of the plugin to unregister
100
+ */
101
+ async unregisterPlugin(pluginName) {
102
+ const settings = await this.readSettings();
103
+ if (!settings.plugins[pluginName]) {
104
+ logger_1.logger.warn(`Plugin not found in settings: ${pluginName}`);
105
+ return;
106
+ }
107
+ delete settings.plugins[pluginName];
108
+ await this.writeSettings(settings);
109
+ logger_1.logger.info(`Unregistered plugin: ${pluginName}`);
110
+ }
111
+ /**
112
+ * Get plugin configuration
113
+ *
114
+ * @param pluginName - Name of the plugin
115
+ * @returns Plugin configuration or null if not found
116
+ */
117
+ async getPlugin(pluginName) {
118
+ const settings = await this.readSettings();
119
+ return settings.plugins[pluginName] || null;
120
+ }
121
+ /**
122
+ * List all registered plugins
123
+ *
124
+ * @returns Array of plugin configurations
125
+ */
126
+ async listPlugins() {
127
+ const settings = await this.readSettings();
128
+ return Object.values(settings.plugins);
129
+ }
130
+ /**
131
+ * Enable a plugin
132
+ *
133
+ * @param pluginName - Name of the plugin to enable
134
+ * @throws Error if plugin not found
135
+ */
136
+ async enablePlugin(pluginName) {
137
+ const settings = await this.readSettings();
138
+ if (!settings.plugins[pluginName]) {
139
+ throw new Error(`Plugin not found: ${pluginName}`);
140
+ }
141
+ settings.plugins[pluginName].enabled = true;
142
+ await this.writeSettings(settings);
143
+ logger_1.logger.info(`Enabled plugin: ${pluginName}`);
144
+ }
145
+ /**
146
+ * Disable a plugin
147
+ *
148
+ * @param pluginName - Name of the plugin to disable
149
+ * @throws Error if plugin not found
150
+ */
151
+ async disablePlugin(pluginName) {
152
+ const settings = await this.readSettings();
153
+ if (!settings.plugins[pluginName]) {
154
+ throw new Error(`Plugin not found: ${pluginName}`);
155
+ }
156
+ settings.plugins[pluginName].enabled = false;
157
+ await this.writeSettings(settings);
158
+ logger_1.logger.info(`Disabled plugin: ${pluginName}`);
159
+ }
160
+ /**
161
+ * Register an MCP server
162
+ *
163
+ * @param serverName - Name of the MCP server
164
+ * @param config - MCP server configuration
165
+ */
166
+ async registerMCPServer(serverName, config) {
167
+ const settings = await this.readSettings();
168
+ if (!settings.mcpServers) {
169
+ settings.mcpServers = {};
170
+ }
171
+ settings.mcpServers[serverName] = config;
172
+ await this.writeSettings(settings);
173
+ logger_1.logger.info(`Registered MCP server: ${serverName}`);
174
+ }
175
+ /**
176
+ * Unregister an MCP server
177
+ *
178
+ * @param serverName - Name of the MCP server to unregister
179
+ */
180
+ async unregisterMCPServer(serverName) {
181
+ const settings = await this.readSettings();
182
+ if (!settings.mcpServers || !settings.mcpServers[serverName]) {
183
+ logger_1.logger.warn(`MCP server not found: ${serverName}`);
184
+ return;
185
+ }
186
+ delete settings.mcpServers[serverName];
187
+ await this.writeSettings(settings);
188
+ logger_1.logger.info(`Unregistered MCP server: ${serverName}`);
189
+ }
190
+ /**
191
+ * Track a wrapped craft
192
+ *
193
+ * @param pluginName - Name of the plugin
194
+ * @param wrappedConfig - Wrapped craft configuration
195
+ * @throws Error if plugin not found
196
+ */
197
+ async registerWrappedCraft(pluginName, wrappedConfig) {
198
+ const settings = await this.readSettings();
199
+ if (!settings.plugins[pluginName]) {
200
+ throw new Error(`Plugin not found: ${pluginName}`);
201
+ }
202
+ settings.plugins[pluginName].wrappedCraft = {
203
+ ...wrappedConfig,
204
+ wrappedAt: new Date().toISOString()
205
+ };
206
+ await this.writeSettings(settings);
207
+ logger_1.logger.info(`Registered wrapped craft for plugin: ${pluginName}`);
208
+ }
209
+ /**
210
+ * Update plugin dependencies tracking
211
+ *
212
+ * @param pluginName - Name of the plugin
213
+ * @param dependencies - Array of dependency names
214
+ * @throws Error if plugin not found
215
+ */
216
+ async updatePluginDependencies(pluginName, dependencies) {
217
+ const settings = await this.readSettings();
218
+ if (!settings.plugins[pluginName]) {
219
+ throw new Error(`Plugin not found: ${pluginName}`);
220
+ }
221
+ settings.plugins[pluginName].dependencies = dependencies;
222
+ await this.writeSettings(settings);
223
+ }
224
+ /**
225
+ * Mark plugin as dependency of another plugin
226
+ *
227
+ * @param pluginName - Name of the plugin
228
+ * @param isDependency - Whether to mark as dependency (default: true)
229
+ * @throws Error if plugin not found
230
+ */
231
+ async markAsDependency(pluginName, isDependency = true) {
232
+ const settings = await this.readSettings();
233
+ if (!settings.plugins[pluginName]) {
234
+ throw new Error(`Plugin not found: ${pluginName}`);
235
+ }
236
+ settings.plugins[pluginName].isDependency = isDependency;
237
+ await this.writeSettings(settings);
238
+ }
239
+ /**
240
+ * Get all plugins that are dependencies (not directly installed)
241
+ *
242
+ * @returns Array of dependency plugin configurations
243
+ */
244
+ async getDependencyPlugins() {
245
+ const settings = await this.readSettings();
246
+ return Object.values(settings.plugins).filter(p => p.isDependency);
247
+ }
248
+ /**
249
+ * Get all directly installed plugins (not dependencies)
250
+ *
251
+ * @returns Array of directly installed plugin configurations
252
+ */
253
+ async getDirectPlugins() {
254
+ const settings = await this.readSettings();
255
+ return Object.values(settings.plugins).filter(p => !p.isDependency);
256
+ }
257
+ /**
258
+ * Check if settings file exists
259
+ *
260
+ * @returns True if settings file exists
261
+ */
262
+ async exists() {
263
+ return fs_extra_1.default.pathExists(this.settingsPath);
264
+ }
265
+ /**
266
+ * Create default settings structure
267
+ *
268
+ * @returns Default Claude settings object
269
+ * @private
270
+ */
271
+ createDefaultSettings() {
272
+ return {
273
+ version: '1.0.0',
274
+ installPath: this.installDir,
275
+ updatedAt: new Date().toISOString(),
276
+ plugins: {}
277
+ };
278
+ }
279
+ /**
280
+ * Validate settings structure
281
+ *
282
+ * @returns Validation result with valid flag and error messages
283
+ */
284
+ async validateSettings() {
285
+ const errors = [];
286
+ try {
287
+ const settings = await this.readSettings();
288
+ // Check version
289
+ if (!settings.version) {
290
+ errors.push('Missing version field');
291
+ }
292
+ // Check plugins
293
+ if (!settings.plugins || typeof settings.plugins !== 'object') {
294
+ errors.push('Invalid plugins structure');
295
+ }
296
+ else {
297
+ // Validate each plugin
298
+ for (const [name, config] of Object.entries(settings.plugins)) {
299
+ if (!config.name || !config.version || !config.type || !config.installPath) {
300
+ errors.push(`Invalid plugin config for: ${name}`);
301
+ }
302
+ }
303
+ }
304
+ // Check MCP servers if present
305
+ if (settings.mcpServers) {
306
+ for (const [name, server] of Object.entries(settings.mcpServers)) {
307
+ if (!server.type) {
308
+ errors.push(`Invalid MCP server config for: ${name}`);
309
+ }
310
+ if (server.type === 'stdio' && !server.command) {
311
+ errors.push(`Missing command for stdio MCP server: ${name}`);
312
+ }
313
+ if (server.type === 'sse' && !server.url) {
314
+ errors.push(`Missing URL for sse MCP server: ${name}`);
315
+ }
316
+ }
317
+ }
318
+ return {
319
+ valid: errors.length === 0,
320
+ errors
321
+ };
322
+ }
323
+ catch (error) {
324
+ const message = error instanceof Error ? error.message : String(error);
325
+ errors.push(`Failed to read settings: ${message}`);
326
+ return { valid: false, errors };
327
+ }
328
+ }
329
+ }
330
+ exports.SettingsManager = SettingsManager;
331
+ // Export singleton instance
332
+ exports.settingsManager = new SettingsManager();
333
+ //# sourceMappingURL=settings-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-manager.js","sourceRoot":"","sources":["../../src/services/settings-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Type definitions for .claude/settings.json
3
+ *
4
+ * This file manages Claude Code's plugin system configuration,
5
+ * including MCP server registration and plugin lifecycle.
6
+ */
7
+ /**
8
+ * MCP (Model Context Protocol) Server Configuration
9
+ * Used to register external tools and services with Claude
10
+ */
11
+ export interface MCPServerConfig {
12
+ /** Server type - stdio for local processes, sse for server-sent events */
13
+ type: 'stdio' | 'sse';
14
+ /** Command to execute (for stdio type) */
15
+ command?: string;
16
+ /** Command arguments */
17
+ args?: string[];
18
+ /** Environment variables */
19
+ env?: Record<string, string>;
20
+ /** Server URL (for sse type) */
21
+ url?: string;
22
+ }
23
+ /**
24
+ * Configuration for individual crafts wrapped as plugins
25
+ */
26
+ export interface WrappedCraftConfig {
27
+ /** Original craft type */
28
+ type: 'skill' | 'agent' | 'command' | 'hook';
29
+ /** Path to original craft relative to .claude/ */
30
+ originalPath: string;
31
+ /** Expose craft capabilities as tools */
32
+ exposeAsTools?: boolean;
33
+ /** Expose craft via MCP server */
34
+ exposeAsMCP?: boolean;
35
+ /** When the craft was wrapped */
36
+ wrappedAt?: string;
37
+ }
38
+ /**
39
+ * Plugin configuration in Claude settings
40
+ */
41
+ export interface PluginConfig {
42
+ /** Plugin name (author/name format) */
43
+ name: string;
44
+ /** Plugin version */
45
+ version: string;
46
+ /** Plugin type - native plugin or wrapped craft */
47
+ type: 'plugin' | 'wrapped';
48
+ /** Whether plugin is currently enabled */
49
+ enabled: boolean;
50
+ /** Installation path relative to .claude/ */
51
+ installPath: string;
52
+ /** Installation timestamp */
53
+ installedAt: string;
54
+ /** MCP server configuration (if plugin provides MCP tools) */
55
+ mcp?: MCPServerConfig;
56
+ /** Wrapped craft metadata (if type is 'wrapped') */
57
+ wrappedCraft?: WrappedCraftConfig;
58
+ /** Plugin dependencies (for tracking) */
59
+ dependencies?: string[];
60
+ /** Whether this plugin was installed as a dependency */
61
+ isDependency?: boolean;
62
+ }
63
+ /**
64
+ * Complete .claude/settings.json structure
65
+ */
66
+ export interface ClaudeSettings {
67
+ /** Settings file format version */
68
+ version: string;
69
+ /** Path to .claude directory */
70
+ installPath: string;
71
+ /** Last updated timestamp */
72
+ updatedAt: string;
73
+ /** Registered plugins */
74
+ plugins: Record<string, PluginConfig>;
75
+ /** MCP server registry (global servers not tied to specific plugins) */
76
+ mcpServers?: Record<string, MCPServerConfig>;
77
+ /** Plugin lifecycle hooks */
78
+ hooks?: {
79
+ /** Run after plugin installation */
80
+ postInstall?: string[];
81
+ /** Run before plugin removal */
82
+ preRemove?: string[];
83
+ };
84
+ }
85
+ /**
86
+ * Plugin manifest structure (.claude-plugin/plugin.json)
87
+ * Based on official Claude Code plugin specification
88
+ */
89
+ export interface PluginManifest {
90
+ /** Plugin name (required) - kebab-case, unique identifier */
91
+ name: string;
92
+ /** Plugin version - semantic versioning (e.g., "1.0.0") */
93
+ version?: string;
94
+ /** Plugin description */
95
+ description?: string;
96
+ /** Plugin author - can be string or object */
97
+ author?: string | {
98
+ name: string;
99
+ email?: string;
100
+ url?: string;
101
+ };
102
+ /** Homepage URL */
103
+ homepage?: string;
104
+ /** Repository URL */
105
+ repository?: string;
106
+ /** License */
107
+ license?: string;
108
+ /** Keywords for discovery/categorization */
109
+ keywords?: string[];
110
+ /** Commands directory path (default: "commands/") */
111
+ commands?: string | string[];
112
+ /** Agents directory path (default: "agents/") */
113
+ agents?: string | string[];
114
+ /** Hooks configuration path (default: "hooks/hooks.json") */
115
+ hooks?: string | object;
116
+ /** MCP servers configuration (default: ".mcp.json") */
117
+ mcpServers?: string | Record<string, MCPServerConfig>;
118
+ /** CraftDesk-specific: Components listing (not part of official spec) */
119
+ components?: {
120
+ skills?: string[];
121
+ agents?: string[];
122
+ commands?: string[];
123
+ hooks?: string[];
124
+ };
125
+ /** CraftDesk-specific: Plugin dependencies (not part of official spec) */
126
+ dependencies?: Record<string, string>;
127
+ /** CraftDesk-specific: Peer dependencies (not part of official spec) */
128
+ peerDependencies?: Record<string, string>;
129
+ /** CraftDesk-specific: Lifecycle scripts (not part of official spec) */
130
+ scripts?: {
131
+ postInstall?: string;
132
+ preRemove?: string;
133
+ };
134
+ /** CraftDesk-specific: Wrapped craft metadata (for plugins created from individual crafts) */
135
+ wrapped?: {
136
+ /** Original craft name */
137
+ craftName: string;
138
+ /** Original craft type */
139
+ craftType: string;
140
+ /** Timestamp when the craft was wrapped */
141
+ wrappedAt?: string;
142
+ /** Whether to expose as tools */
143
+ exposeAsTools?: boolean;
144
+ /** Whether to expose via MCP */
145
+ exposeAsMCP?: boolean;
146
+ };
147
+ /** Additional metadata - allows for future extensibility */
148
+ [key: string]: unknown;
149
+ }
150
+ /**
151
+ * Default Claude settings structure
152
+ * Used when initializing a new .claude/settings.json file
153
+ */
154
+ export declare const DEFAULT_CLAUDE_SETTINGS: ClaudeSettings;
155
+ //# sourceMappingURL=claude-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings.d.ts","sourceRoot":"","sources":["../../src/types/claude-settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for .claude/settings.json
4
+ *
5
+ * This file manages Claude Code's plugin system configuration,
6
+ * including MCP server registration and plugin lifecycle.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DEFAULT_CLAUDE_SETTINGS = void 0;
10
+ /**
11
+ * Default Claude settings structure
12
+ * Used when initializing a new .claude/settings.json file
13
+ */
14
+ exports.DEFAULT_CLAUDE_SETTINGS = {
15
+ version: '1.0.0',
16
+ installPath: '.claude',
17
+ updatedAt: new Date().toISOString(),
18
+ plugins: {}
19
+ };
20
+ //# sourceMappingURL=claude-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-settings.js","sourceRoot":"","sources":["../../src/types/claude-settings.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA8LH;;;GAGG;AACU,QAAA,uBAAuB,GAAmB;IACrD,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,SAAS;IACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;IACnC,OAAO,EAAE,EAAE;CACZ,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Types for format conversion system
3
+ */
4
+ /**
5
+ * Supported output formats for conversion
6
+ */
7
+ export type SupportedFormat = 'claude' | 'cursor' | 'cursor-legacy' | 'continue';
8
+ /**
9
+ * Options for format conversion
10
+ */
11
+ export interface ConversionOptions {
12
+ /** Target format to convert to */
13
+ format: SupportedFormat;
14
+ /** Output directory (optional, defaults based on format) */
15
+ outputDir?: string;
16
+ /** Whether to merge with existing files or overwrite */
17
+ mergeMode?: 'append' | 'overwrite' | 'skip';
18
+ /** Format-specific options */
19
+ formatOptions?: Record<string, unknown>;
20
+ }
21
+ /**
22
+ * Represents converted file content
23
+ */
24
+ export interface ConvertedContent {
25
+ /** Relative file path where content should be written */
26
+ filePath: string;
27
+ /** File content */
28
+ content: string;
29
+ /** File type */
30
+ type: 'rule' | 'prompt' | 'config';
31
+ }
32
+ /**
33
+ * Represents craft content to be converted
34
+ */
35
+ export interface CraftContent {
36
+ /** Craft name */
37
+ name: string;
38
+ /** Craft type */
39
+ type: 'skill' | 'agent' | 'command' | 'hook' | 'plugin' | 'collection';
40
+ /** Craft description */
41
+ description?: string;
42
+ /** Main content (SKILL.md, AGENT.md, etc.) */
43
+ mainContent: string;
44
+ /** Parsed sections from markdown */
45
+ sections: {
46
+ title?: string;
47
+ instructions?: string;
48
+ quickStart?: string;
49
+ workflows?: string;
50
+ patterns?: string;
51
+ examples?: string;
52
+ bestPractices?: string;
53
+ pitfalls?: string;
54
+ references?: string;
55
+ [key: string]: string | undefined;
56
+ };
57
+ /** Code examples extracted from content */
58
+ examples: Array<{
59
+ language?: string;
60
+ code: string;
61
+ description?: string;
62
+ }>;
63
+ /** Additional files in craft directory */
64
+ additionalFiles?: string[];
65
+ }
66
+ /**
67
+ * Result of a conversion operation
68
+ */
69
+ export interface ConversionResult {
70
+ /** Whether conversion succeeded */
71
+ success: boolean;
72
+ /** Converted files */
73
+ files: ConvertedContent[];
74
+ /** Errors that occurred */
75
+ errors: string[];
76
+ /** Warnings */
77
+ warnings: string[];
78
+ /** Source format */
79
+ sourceFormat: SupportedFormat;
80
+ /** Target format */
81
+ targetFormat: SupportedFormat;
82
+ }
83
+ /**
84
+ * Metadata about a converter
85
+ */
86
+ export interface ConverterMetadata {
87
+ /** Converter name */
88
+ name: string;
89
+ /** Target format */
90
+ targetFormat: SupportedFormat;
91
+ /** Description */
92
+ description: string;
93
+ /** Default output directory */
94
+ defaultOutputDir: string;
95
+ /** Supported source types */
96
+ supportedTypes: Array<'skill' | 'agent' | 'command' | 'hook' | 'plugin' | 'collection'>;
97
+ }
98
+ //# sourceMappingURL=converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/types/converter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,UAAU,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,MAAM,EAAE,eAAe,CAAC;IAExB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,SAAS,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAE5C,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IAEjB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAEhB,gBAAgB;IAChB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IAEb,iBAAiB;IACjB,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;IAEvE,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;KACnC,CAAC;IAEF,2CAA2C;IAC3C,QAAQ,EAAE,KAAK,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IAEH,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAEjB,sBAAsB;IACtB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAE1B,2BAA2B;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,eAAe;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,oBAAoB;IACpB,YAAY,EAAE,eAAe,CAAC;IAE9B,oBAAoB;IACpB,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,YAAY,EAAE,eAAe,CAAC;IAE9B,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,6BAA6B;IAC7B,cAAc,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,CAAC;CACzF"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Types for format conversion system
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/types/converter.ts"],"names":[],"mappings":";AAAA;;GAEG"}