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.
- package/CHANGELOG.md +88 -0
- package/README.md +1609 -132
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +306 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/convert.d.ts +8 -0
- package/dist/commands/convert.d.ts.map +1 -0
- package/dist/commands/convert.js +146 -0
- package/dist/commands/convert.js.map +1 -0
- package/dist/commands/detect-agents.d.ts +14 -0
- package/dist/commands/detect-agents.d.ts.map +1 -0
- package/dist/commands/detect-agents.js +86 -0
- package/dist/commands/detect-agents.js.map +1 -0
- package/dist/commands/embed.d.ts +14 -0
- package/dist/commands/embed.d.ts.map +1 -0
- package/dist/commands/embed.js +147 -0
- package/dist/commands/embed.js.map +1 -0
- package/dist/commands/info.d.ts +8 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +66 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +8 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +24 -4
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +75 -7
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +158 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +51 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/outdated.d.ts +23 -0
- package/dist/commands/outdated.d.ts.map +1 -0
- package/dist/commands/outdated.js +268 -0
- package/dist/commands/outdated.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +203 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/remove.d.ts +5 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +51 -10
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup-multi-agent.d.ts +17 -0
- package/dist/commands/setup-multi-agent.d.ts.map +1 -0
- package/dist/commands/setup-multi-agent.js +188 -0
- package/dist/commands/setup-multi-agent.js.map +1 -0
- package/dist/commands/sync.d.ts +14 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +144 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/unembed.d.ts +14 -0
- package/dist/commands/unembed.d.ts.map +1 -0
- package/dist/commands/unembed.js +96 -0
- package/dist/commands/unembed.js.map +1 -0
- package/dist/commands/update.d.ts +8 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +372 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +14 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +143 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +58 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/converters/base-converter.d.ts +89 -0
- package/dist/converters/base-converter.d.ts.map +1 -0
- package/dist/converters/base-converter.js +249 -0
- package/dist/converters/base-converter.js.map +1 -0
- package/dist/converters/continue-converter.d.ts +53 -0
- package/dist/converters/continue-converter.d.ts.map +1 -0
- package/dist/converters/continue-converter.js +243 -0
- package/dist/converters/continue-converter.js.map +1 -0
- package/dist/converters/cursor-converter.d.ts +70 -0
- package/dist/converters/cursor-converter.d.ts.map +1 -0
- package/dist/converters/cursor-converter.js +272 -0
- package/dist/converters/cursor-converter.js.map +1 -0
- package/dist/index.js +56 -3
- package/dist/index.js.map +1 -1
- package/dist/services/agent-detector.d.ts +57 -0
- package/dist/services/agent-detector.d.ts.map +1 -0
- package/dist/services/agent-detector.js +146 -0
- package/dist/services/agent-detector.js.map +1 -0
- package/dist/services/config-manager.d.ts +128 -10
- package/dist/services/config-manager.d.ts.map +1 -1
- package/dist/services/config-manager.js +190 -18
- package/dist/services/config-manager.js.map +1 -1
- package/dist/services/converter.d.ts +53 -0
- package/dist/services/converter.d.ts.map +1 -0
- package/dist/services/converter.js +185 -0
- package/dist/services/converter.js.map +1 -0
- package/dist/services/craft-wrapper.d.ts +108 -0
- package/dist/services/craft-wrapper.d.ts.map +1 -0
- package/dist/services/craft-wrapper.js +268 -0
- package/dist/services/craft-wrapper.js.map +1 -0
- package/dist/services/git-resolver.d.ts +9 -3
- package/dist/services/git-resolver.d.ts.map +1 -1
- package/dist/services/git-resolver.js +44 -20
- package/dist/services/git-resolver.js.map +1 -1
- package/dist/services/gitignore-manager.d.ts +74 -0
- package/dist/services/gitignore-manager.d.ts.map +1 -0
- package/dist/services/gitignore-manager.js +188 -0
- package/dist/services/gitignore-manager.js.map +1 -0
- package/dist/services/installer.d.ts +60 -1
- package/dist/services/installer.d.ts.map +1 -1
- package/dist/services/installer.js +295 -20
- package/dist/services/installer.js.map +1 -1
- package/dist/services/multi-agent-sync.d.ts +88 -0
- package/dist/services/multi-agent-sync.d.ts.map +1 -0
- package/dist/services/multi-agent-sync.js +316 -0
- package/dist/services/multi-agent-sync.js.map +1 -0
- package/dist/services/plugin-resolver.d.ts +80 -0
- package/dist/services/plugin-resolver.d.ts.map +1 -0
- package/dist/services/plugin-resolver.js +183 -0
- package/dist/services/plugin-resolver.js.map +1 -0
- package/dist/services/registry-client.d.ts +132 -5
- package/dist/services/registry-client.d.ts.map +1 -1
- package/dist/services/registry-client.js +239 -34
- package/dist/services/registry-client.js.map +1 -1
- package/dist/services/settings-manager.d.ts +151 -0
- package/dist/services/settings-manager.d.ts.map +1 -0
- package/dist/services/settings-manager.js +333 -0
- package/dist/services/settings-manager.js.map +1 -0
- package/dist/types/claude-settings.d.ts +155 -0
- package/dist/types/claude-settings.d.ts.map +1 -0
- package/dist/types/claude-settings.js +20 -0
- package/dist/types/claude-settings.js.map +1 -0
- package/dist/types/converter.d.ts +98 -0
- package/dist/types/converter.d.ts.map +1 -0
- package/dist/types/converter.js +6 -0
- package/dist/types/converter.js.map +1 -0
- package/dist/types/craftdesk-json.d.ts +76 -3
- package/dist/types/craftdesk-json.d.ts.map +1 -1
- package/dist/types/craftdesk-lock.d.ts +62 -1
- package/dist/types/craftdesk-lock.d.ts.map +1 -1
- package/dist/types/multi-agent.d.ts +85 -0
- package/dist/types/multi-agent.d.ts.map +1 -0
- package/dist/types/multi-agent.js +6 -0
- package/dist/types/multi-agent.js.map +1 -0
- package/dist/utils/crypto.d.ts +23 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +52 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/file-system.d.ts +43 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +45 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/logger.d.ts +75 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +76 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/version-utils.d.ts +63 -0
- package/dist/utils/version-utils.d.ts.map +1 -0
- package/dist/utils/version-utils.js +130 -0
- package/dist/utils/version-utils.js.map +1 -0
- package/package.json +36 -9
- package/.claude/settings.local.json +0 -19
- package/.github/workflows/ci.yml +0 -94
- package/API.md +0 -414
- package/TESTING.md +0 -263
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -56
- package/dist/commands/config.js.map +0 -1
- package/dist/types/config.d.ts +0 -17
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -3
- package/dist/types/config.js.map +0 -1
- package/docs/DEPENDENCY_RESOLUTION.md +0 -237
- package/examples/craftdesk-all-sources.json +0 -79
- package/examples/craftdesk-git-monorepo.json +0 -41
- package/examples/craftdesk-multi-registry.json +0 -40
- package/examples/craftdesk-with-registries.json +0 -49
- package/examples/simple-craftdesk.json +0 -10
- package/src/commands/add.ts +0 -314
- package/src/commands/init.ts +0 -55
- package/src/commands/install.ts +0 -126
- package/src/commands/list.ts +0 -126
- package/src/commands/remove.ts +0 -82
- package/src/index.ts +0 -56
- package/src/services/config-manager.ts +0 -150
- package/src/services/git-resolver.ts +0 -373
- package/src/services/installer.ts +0 -314
- package/src/services/registry-client.ts +0 -163
- package/src/types/craftdesk-json.ts +0 -53
- package/src/types/craftdesk-lock.ts +0 -38
- package/src/utils/file-system.ts +0 -55
- package/src/utils/logger.ts +0 -82
- package/tests/fixtures/craftdesk-git.json +0 -17
- package/tests/fixtures/craftdesk.json +0 -15
- package/tests/helpers/test-utils.ts +0 -60
- package/tests/integration/init-command.test.ts +0 -70
- package/tests/integration/list-command.test.ts +0 -77
- package/tests/unit/config-manager.test.ts +0 -228
- package/tests/unit/git-resolver.test.ts +0 -303
- package/tests/unit/installer.test.ts +0 -105
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -29
|
@@ -7,9 +7,15 @@ exports.installer = exports.Installer = void 0;
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
9
|
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
const adm_zip_1 = __importDefault(require("adm-zip"));
|
|
11
|
+
const child_process_1 = require("child_process");
|
|
10
12
|
const logger_1 = require("../utils/logger");
|
|
11
13
|
const config_manager_1 = require("./config-manager");
|
|
14
|
+
const settings_manager_1 = require("./settings-manager");
|
|
15
|
+
const multi_agent_sync_1 = require("./multi-agent-sync");
|
|
16
|
+
const gitignore_manager_1 = require("./gitignore-manager");
|
|
12
17
|
const file_system_1 = require("../utils/file-system");
|
|
18
|
+
const crypto_1 = require("../utils/crypto");
|
|
13
19
|
/**
|
|
14
20
|
* Handles installation of crafts from various sources
|
|
15
21
|
*
|
|
@@ -72,11 +78,21 @@ class Installer {
|
|
|
72
78
|
installed++;
|
|
73
79
|
}
|
|
74
80
|
catch (error) {
|
|
75
|
-
|
|
81
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
82
|
+
logger_1.logger.failSpinner(`Failed to install ${name}: ${message}`);
|
|
76
83
|
throw error;
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
86
|
logger_1.logger.succeedSpinner(`Installed ${installed} crafts`);
|
|
87
|
+
// Update .gitignore to ignore managed skills but allow embedded ones
|
|
88
|
+
try {
|
|
89
|
+
await gitignore_manager_1.gitIgnoreManager.autoUpdate();
|
|
90
|
+
logger_1.logger.debug('Updated .claude/skills/.gitignore');
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Don't fail installation if .gitignore update fails
|
|
94
|
+
logger_1.logger.warn('Failed to update .gitignore');
|
|
95
|
+
}
|
|
80
96
|
}
|
|
81
97
|
/**
|
|
82
98
|
* Installs a single craft from registry or git source
|
|
@@ -123,11 +139,25 @@ class Installer {
|
|
|
123
139
|
await this.installFromGit(craftDir, entry);
|
|
124
140
|
}
|
|
125
141
|
else {
|
|
126
|
-
// Download craft archive
|
|
127
|
-
const archivePath = path_1.default.join(craftDir, 'archive.
|
|
142
|
+
// Download craft archive (ZIP format from CraftDesk registry)
|
|
143
|
+
const archivePath = path_1.default.join(craftDir, 'archive.zip');
|
|
128
144
|
await this.downloadFile(entry.resolved, archivePath);
|
|
129
|
-
// Verify integrity
|
|
130
|
-
|
|
145
|
+
// Verify integrity using SHA-256 checksum
|
|
146
|
+
if (entry.integrity) {
|
|
147
|
+
logger_1.logger.debug(`Verifying checksum for ${name}...`);
|
|
148
|
+
const isValid = await (0, crypto_1.verifyFileChecksum)(archivePath, entry.integrity);
|
|
149
|
+
if (!isValid) {
|
|
150
|
+
await fs_extra_1.default.remove(archivePath);
|
|
151
|
+
throw new Error(`Checksum verification failed for ${name}@${entry.version}. ` +
|
|
152
|
+
`Expected: ${(0, crypto_1.formatChecksum)(entry.integrity)}... ` +
|
|
153
|
+
`This may indicate a corrupted download or a security issue. ` +
|
|
154
|
+
`Try running 'craftdesk install --no-lockfile' to re-resolve dependencies.`);
|
|
155
|
+
}
|
|
156
|
+
logger_1.logger.debug(`Checksum verified: ${(0, crypto_1.formatChecksum)(entry.integrity)}...`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
logger_1.logger.warn(`No checksum available for ${name}@${entry.version} - skipping verification`);
|
|
160
|
+
}
|
|
131
161
|
// Extract archive
|
|
132
162
|
await this.extractArchive(archivePath, craftDir);
|
|
133
163
|
// Clean up archive
|
|
@@ -135,26 +165,67 @@ class Installer {
|
|
|
135
165
|
}
|
|
136
166
|
// Create metadata file
|
|
137
167
|
await this.createMetadata(craftDir, name, entry);
|
|
168
|
+
// Register plugin in settings if this is a plugin type
|
|
169
|
+
if (entry.type === 'plugin') {
|
|
170
|
+
await this.registerPlugin(name, entry, craftDir);
|
|
171
|
+
}
|
|
172
|
+
// Sync to other agents if multi-agent sync is enabled and auto-sync is on
|
|
173
|
+
await this.syncCraftIfEnabled(name, craftDir, entry.type);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Sync craft to other agent directories if multi-agent auto-sync is enabled
|
|
177
|
+
*
|
|
178
|
+
* @param name - Craft name
|
|
179
|
+
* @param craftDir - Path to craft directory
|
|
180
|
+
* @param type - Craft type
|
|
181
|
+
* @private
|
|
182
|
+
*/
|
|
183
|
+
async syncCraftIfEnabled(name, craftDir, type) {
|
|
184
|
+
const config = await config_manager_1.configManager.getCraftDeskJson();
|
|
185
|
+
// Only sync skills for now (other types could be added later)
|
|
186
|
+
if (type !== 'skill') {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
// Check if multi-agent sync is enabled and auto-sync is on
|
|
190
|
+
if (!config?.multiAgent?.enabled || !config?.multiAgent?.autoSync) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
logger_1.logger.debug(`Auto-syncing ${name} to other agents...`);
|
|
194
|
+
try {
|
|
195
|
+
await multi_agent_sync_1.multiAgentSync.syncCraft(name, craftDir);
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
// Don't fail installation if sync fails, just log a warning
|
|
199
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
200
|
+
logger_1.logger.warn(`Failed to auto-sync ${name}: ${message}`);
|
|
201
|
+
}
|
|
138
202
|
}
|
|
139
203
|
async installFromGit(craftDir, entry) {
|
|
140
204
|
const tempDir = path_1.default.join(craftDir, '.tmp-git');
|
|
205
|
+
if (!entry.git) {
|
|
206
|
+
throw new Error('Git URL is required for git-based installation');
|
|
207
|
+
}
|
|
141
208
|
try {
|
|
142
209
|
// Clone the repository
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
let cloneCmd = `git clone --depth 1`;
|
|
210
|
+
// Build clone command args — use array form to prevent shell injection
|
|
211
|
+
const cloneArgs = ['clone', '--depth', '1'];
|
|
146
212
|
if (entry.branch) {
|
|
147
|
-
|
|
213
|
+
cloneArgs.push('-b', entry.branch);
|
|
148
214
|
}
|
|
149
215
|
else if (entry.tag) {
|
|
150
|
-
|
|
216
|
+
cloneArgs.push('-b', entry.tag);
|
|
151
217
|
}
|
|
152
|
-
|
|
153
|
-
logger_1.logger.debug(`Cloning git repository: ${
|
|
154
|
-
|
|
218
|
+
cloneArgs.push(entry.git, tempDir);
|
|
219
|
+
logger_1.logger.debug(`Cloning git repository: git ${cloneArgs.join(' ')}`);
|
|
220
|
+
(0, child_process_1.execFileSync)('git', cloneArgs, { stdio: 'pipe' });
|
|
155
221
|
// If specific commit, checkout that commit
|
|
156
222
|
if (entry.commit) {
|
|
157
|
-
|
|
223
|
+
// Check if repo is shallow before trying to unshallow
|
|
224
|
+
const isShallow = await fs_extra_1.default.pathExists(path_1.default.join(tempDir, '.git', 'shallow'));
|
|
225
|
+
if (isShallow) {
|
|
226
|
+
(0, child_process_1.execFileSync)('git', ['fetch', '--unshallow'], { cwd: tempDir, stdio: 'pipe' });
|
|
227
|
+
}
|
|
228
|
+
(0, child_process_1.execFileSync)('git', ['checkout', entry.commit], { cwd: tempDir, stdio: 'pipe' });
|
|
158
229
|
}
|
|
159
230
|
// Handle direct file reference
|
|
160
231
|
if (entry.file) {
|
|
@@ -184,6 +255,12 @@ class Installer {
|
|
|
184
255
|
await fs_extra_1.default.remove(tempDir);
|
|
185
256
|
}
|
|
186
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Get the type-specific directory for a craft type
|
|
260
|
+
*
|
|
261
|
+
* @param type - The craft type (skill, agent, command, hook, plugin, collection)
|
|
262
|
+
* @returns Directory name for the craft type
|
|
263
|
+
*/
|
|
187
264
|
getTypeDirectory(type) {
|
|
188
265
|
switch (type) {
|
|
189
266
|
case 'skill':
|
|
@@ -194,10 +271,22 @@ class Installer {
|
|
|
194
271
|
return 'commands';
|
|
195
272
|
case 'hook':
|
|
196
273
|
return 'hooks';
|
|
274
|
+
case 'plugin':
|
|
275
|
+
return 'plugins';
|
|
276
|
+
case 'collection':
|
|
277
|
+
return 'collections';
|
|
197
278
|
default:
|
|
198
279
|
return 'crafts';
|
|
199
280
|
}
|
|
200
281
|
}
|
|
282
|
+
/**
|
|
283
|
+
* Get the install path (e.g., '.claude')
|
|
284
|
+
*
|
|
285
|
+
* @returns The installation directory path
|
|
286
|
+
*/
|
|
287
|
+
getInstallPath() {
|
|
288
|
+
return this.installPath;
|
|
289
|
+
}
|
|
201
290
|
async downloadFile(url, outputPath) {
|
|
202
291
|
const response = await (0, axios_1.default)({
|
|
203
292
|
method: 'GET',
|
|
@@ -212,11 +301,16 @@ class Installer {
|
|
|
212
301
|
});
|
|
213
302
|
}
|
|
214
303
|
async extractArchive(archivePath, outputDir) {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
304
|
+
try {
|
|
305
|
+
// CraftDesk web API returns ZIP archives
|
|
306
|
+
const zip = new adm_zip_1.default(archivePath);
|
|
307
|
+
zip.extractAllTo(outputDir, /* overwrite */ true);
|
|
308
|
+
logger_1.logger.debug(`Extracted ZIP archive to ${outputDir}`);
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
312
|
+
throw new Error(`Failed to extract archive: ${message}`);
|
|
313
|
+
}
|
|
220
314
|
}
|
|
221
315
|
async createMetadata(craftDir, name, entry) {
|
|
222
316
|
const metadata = {
|
|
@@ -230,11 +324,186 @@ class Installer {
|
|
|
230
324
|
};
|
|
231
325
|
await fs_extra_1.default.writeFile(path_1.default.join(craftDir, '.craftdesk-metadata.json'), JSON.stringify(metadata, null, 2), 'utf-8');
|
|
232
326
|
}
|
|
327
|
+
/**
|
|
328
|
+
* Register a plugin in .claude/settings.json
|
|
329
|
+
*
|
|
330
|
+
* @param name - The plugin name
|
|
331
|
+
* @param entry - The lock file entry for this plugin
|
|
332
|
+
* @param craftDir - The directory where the plugin is installed
|
|
333
|
+
* @returns Promise that resolves when registration is complete
|
|
334
|
+
*/
|
|
335
|
+
async registerPlugin(name, entry, craftDir) {
|
|
336
|
+
try {
|
|
337
|
+
// Try to read plugin.json manifest
|
|
338
|
+
const manifest = await this.readPluginManifest(craftDir);
|
|
339
|
+
// Scan directory for actual components
|
|
340
|
+
const scannedComponents = await this.scanPluginComponents(craftDir);
|
|
341
|
+
// Merge manifest components (declared) with scanned components (actual)
|
|
342
|
+
// Manifest takes precedence if both exist (manifest is source of truth)
|
|
343
|
+
const components = {};
|
|
344
|
+
// Start with scanned components
|
|
345
|
+
if (scannedComponents.skills)
|
|
346
|
+
components.skills = scannedComponents.skills;
|
|
347
|
+
if (scannedComponents.agents)
|
|
348
|
+
components.agents = scannedComponents.agents;
|
|
349
|
+
if (scannedComponents.commands)
|
|
350
|
+
components.commands = scannedComponents.commands;
|
|
351
|
+
if (scannedComponents.hooks)
|
|
352
|
+
components.hooks = scannedComponents.hooks;
|
|
353
|
+
// Override with manifest if provided (manifest is source of truth)
|
|
354
|
+
if (manifest?.components) {
|
|
355
|
+
if (manifest.components.skills)
|
|
356
|
+
components.skills = manifest.components.skills;
|
|
357
|
+
if (manifest.components.agents)
|
|
358
|
+
components.agents = manifest.components.agents;
|
|
359
|
+
if (manifest.components.commands)
|
|
360
|
+
components.commands = manifest.components.commands;
|
|
361
|
+
if (manifest.components.hooks)
|
|
362
|
+
components.hooks = manifest.components.hooks;
|
|
363
|
+
}
|
|
364
|
+
// Build plugin config for settings
|
|
365
|
+
const pluginConfig = {
|
|
366
|
+
name,
|
|
367
|
+
version: entry.version,
|
|
368
|
+
type: 'plugin',
|
|
369
|
+
enabled: true,
|
|
370
|
+
installPath: path_1.default.relative(this.installPath, craftDir),
|
|
371
|
+
installedAt: new Date().toISOString(),
|
|
372
|
+
dependencies: entry.dependencies ? Object.keys(entry.dependencies) : [],
|
|
373
|
+
isDependency: entry.installedAs === 'dependency',
|
|
374
|
+
// Copy metadata from plugin.json manifest
|
|
375
|
+
...(manifest?.description && { description: manifest.description }),
|
|
376
|
+
...(manifest?.author && { author: manifest.author }),
|
|
377
|
+
...(manifest?.license && { license: manifest.license }),
|
|
378
|
+
...(manifest?.homepage && { homepage: manifest.homepage }),
|
|
379
|
+
...(manifest?.repository && { repository: manifest.repository }),
|
|
380
|
+
...(manifest?.keywords && { keywords: manifest.keywords }),
|
|
381
|
+
// Use merged components (scanned + manifest)
|
|
382
|
+
...(Object.keys(components).length > 0 && { components }),
|
|
383
|
+
// CraftDesk-specific fields
|
|
384
|
+
...(manifest?.scripts && { scripts: manifest.scripts })
|
|
385
|
+
};
|
|
386
|
+
await settings_manager_1.settingsManager.registerPlugin(pluginConfig);
|
|
387
|
+
logger_1.logger.debug(`Registered plugin ${name} in settings.json`);
|
|
388
|
+
// Register MCP servers if provided in manifest (official Claude Code field)
|
|
389
|
+
if (manifest?.mcpServers) {
|
|
390
|
+
if (typeof manifest.mcpServers === 'object' && !Array.isArray(manifest.mcpServers)) {
|
|
391
|
+
// Inline MCP server configuration
|
|
392
|
+
for (const [serverName, serverConfig] of Object.entries(manifest.mcpServers)) {
|
|
393
|
+
await settings_manager_1.settingsManager.registerMCPServer(serverName, serverConfig);
|
|
394
|
+
logger_1.logger.debug(`Registered MCP server: ${serverName}`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
else if (typeof manifest.mcpServers === 'string') {
|
|
398
|
+
// Path to .mcp.json file - would need to read and parse it
|
|
399
|
+
const mcpPath = path_1.default.join(craftDir, manifest.mcpServers);
|
|
400
|
+
if (await fs_extra_1.default.pathExists(mcpPath)) {
|
|
401
|
+
try {
|
|
402
|
+
const mcpConfig = await fs_extra_1.default.readJson(mcpPath);
|
|
403
|
+
for (const [serverName, serverConfig] of Object.entries(mcpConfig)) {
|
|
404
|
+
await settings_manager_1.settingsManager.registerMCPServer(serverName, serverConfig);
|
|
405
|
+
logger_1.logger.debug(`Registered MCP server from ${manifest.mcpServers}: ${serverName}`);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
410
|
+
logger_1.logger.warn(`Failed to read MCP config from ${manifest.mcpServers}: ${message}`);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
catch (error) {
|
|
417
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
418
|
+
logger_1.logger.warn(`Failed to register plugin ${name}: ${message}`);
|
|
419
|
+
// Non-fatal - plugin is still installed, just not registered in settings
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Read plugin.json manifest from plugin directory
|
|
424
|
+
* Plugin manifest is located at .claude-plugin/plugin.json
|
|
425
|
+
*
|
|
426
|
+
* @param pluginDir - Path to the plugin directory containing .claude-plugin/plugin.json
|
|
427
|
+
* @returns The parsed plugin manifest or null if not found or invalid
|
|
428
|
+
*/
|
|
429
|
+
async readPluginManifest(pluginDir) {
|
|
430
|
+
const manifestPath = path_1.default.join(pluginDir, '.claude-plugin', 'plugin.json');
|
|
431
|
+
try {
|
|
432
|
+
if (await fs_extra_1.default.pathExists(manifestPath)) {
|
|
433
|
+
const content = await fs_extra_1.default.readFile(manifestPath, 'utf-8');
|
|
434
|
+
return JSON.parse(content);
|
|
435
|
+
}
|
|
436
|
+
return null;
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
440
|
+
logger_1.logger.debug(`Failed to read plugin manifest: ${message}`);
|
|
441
|
+
return null;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Scan plugin directory to discover components
|
|
446
|
+
* This ensures we find all skills/agents/commands/hooks even if not listed in plugin.json
|
|
447
|
+
*
|
|
448
|
+
* @param pluginDir - Path to the plugin directory to scan for components
|
|
449
|
+
* @returns Object containing arrays of discovered skills, agents, commands, and hooks
|
|
450
|
+
*/
|
|
451
|
+
async scanPluginComponents(pluginDir) {
|
|
452
|
+
const components = {};
|
|
453
|
+
const componentTypes = ['skills', 'agents', 'commands', 'hooks'];
|
|
454
|
+
for (const type of componentTypes) {
|
|
455
|
+
const typeDir = path_1.default.join(pluginDir, type);
|
|
456
|
+
if (await fs_extra_1.default.pathExists(typeDir)) {
|
|
457
|
+
try {
|
|
458
|
+
const entries = await fs_extra_1.default.readdir(typeDir, { withFileTypes: true });
|
|
459
|
+
let items;
|
|
460
|
+
// Commands and hooks are files (*.md), not directories
|
|
461
|
+
if (type === 'commands' || type === 'hooks') {
|
|
462
|
+
items = entries
|
|
463
|
+
.filter(entry => entry.isFile() && entry.name.endsWith('.md'))
|
|
464
|
+
.map(entry => entry.name);
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
// Skills and agents are directories
|
|
468
|
+
items = entries
|
|
469
|
+
.filter(entry => entry.isDirectory())
|
|
470
|
+
.map(entry => entry.name);
|
|
471
|
+
}
|
|
472
|
+
if (items.length > 0) {
|
|
473
|
+
components[type] = items;
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
catch (error) {
|
|
477
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
478
|
+
logger_1.logger.debug(`Failed to scan ${type} directory: ${message}`);
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return components;
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Remove an installed craft from the project
|
|
486
|
+
* Unregisters plugins from settings and removes the craft directory
|
|
487
|
+
*
|
|
488
|
+
* @param name - Name of the craft to remove
|
|
489
|
+
* @param type - Type of craft (plugin, skill, agent, command, hook)
|
|
490
|
+
*/
|
|
233
491
|
async removeCraft(name, type) {
|
|
234
492
|
const installDir = path_1.default.join(process.cwd(), this.installPath);
|
|
235
493
|
const typeDir = this.getTypeDirectory(type);
|
|
236
494
|
const craftDir = path_1.default.join(installDir, typeDir, name);
|
|
237
495
|
if (await fs_extra_1.default.pathExists(craftDir)) {
|
|
496
|
+
// Unregister plugin from settings if this is a plugin
|
|
497
|
+
if (type === 'plugin') {
|
|
498
|
+
try {
|
|
499
|
+
await settings_manager_1.settingsManager.unregisterPlugin(name);
|
|
500
|
+
logger_1.logger.debug(`Unregistered plugin ${name} from settings`);
|
|
501
|
+
}
|
|
502
|
+
catch (error) {
|
|
503
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
504
|
+
logger_1.logger.warn(`Failed to unregister plugin: ${message}`);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
238
507
|
await fs_extra_1.default.remove(craftDir);
|
|
239
508
|
logger_1.logger.success(`Removed ${name}`);
|
|
240
509
|
}
|
|
@@ -242,13 +511,19 @@ class Installer {
|
|
|
242
511
|
logger_1.logger.warn(`${name} is not installed`);
|
|
243
512
|
}
|
|
244
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* List all installed crafts in the project
|
|
516
|
+
* Scans the installation directory for all craft types and reads their metadata
|
|
517
|
+
*
|
|
518
|
+
* @returns Array of installed crafts with name, version, and type information
|
|
519
|
+
*/
|
|
245
520
|
async listInstalled() {
|
|
246
521
|
const installDir = path_1.default.join(process.cwd(), this.installPath);
|
|
247
522
|
const installed = [];
|
|
248
523
|
if (!await fs_extra_1.default.pathExists(installDir)) {
|
|
249
524
|
return installed;
|
|
250
525
|
}
|
|
251
|
-
const typeDirs = ['skills', 'agents', 'commands', 'hooks', 'plugins'];
|
|
526
|
+
const typeDirs = ['skills', 'agents', 'commands', 'hooks', 'plugins', 'collections'];
|
|
252
527
|
for (const typeDir of typeDirs) {
|
|
253
528
|
const dir = path_1.default.join(installDir, typeDir);
|
|
254
529
|
if (!await fs_extra_1.default.pathExists(dir))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Sync - Sync crafts across multiple AI agents
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - Installing crafts to multiple agent directories
|
|
6
|
+
* - Verifying sync status with checksums
|
|
7
|
+
* - Detecting and fixing drift between copies
|
|
8
|
+
*/
|
|
9
|
+
import type { SyncStatus, SyncResult } from '../types/multi-agent';
|
|
10
|
+
/**
|
|
11
|
+
* Service for syncing crafts across multiple AI agent directories
|
|
12
|
+
*/
|
|
13
|
+
export declare class MultiAgentSync {
|
|
14
|
+
/**
|
|
15
|
+
* Install craft to all configured agent directories
|
|
16
|
+
*
|
|
17
|
+
* @param craftName - Name of the craft to sync
|
|
18
|
+
* @param sourceDir - Source directory containing the craft files
|
|
19
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
20
|
+
* @returns Sync result with success/failure details
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const sync = new MultiAgentSync();
|
|
25
|
+
* const result = await sync.syncCraft('ruby-expert', '/tmp/ruby-expert-source');
|
|
26
|
+
*
|
|
27
|
+
* console.log(`Synced to: ${result.synced.join(', ')}`);
|
|
28
|
+
* if (result.failed.length > 0) {
|
|
29
|
+
* console.error(`Failed: ${result.failed.map(f => f.path).join(', ')}`);
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
syncCraft(craftName: string, sourceDir: string, cwd?: string): Promise<SyncResult>;
|
|
34
|
+
/**
|
|
35
|
+
* Verify sync status for a craft
|
|
36
|
+
*
|
|
37
|
+
* Checks if all copies match the canonical version using checksums
|
|
38
|
+
*
|
|
39
|
+
* @param craftName - Name of the craft to verify
|
|
40
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
41
|
+
* @returns Sync status with details about each location
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const sync = new MultiAgentSync();
|
|
46
|
+
* const status = await sync.verifySync('ruby-expert');
|
|
47
|
+
*
|
|
48
|
+
* if (!status.inSync) {
|
|
49
|
+
* console.log(`Out of sync: ${status.outOfSync.map(l => l.path).join(', ')}`);
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
verifySync(craftName: string, cwd?: string): Promise<SyncStatus>;
|
|
54
|
+
/**
|
|
55
|
+
* Sync all installed crafts to configured targets
|
|
56
|
+
*
|
|
57
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
58
|
+
* @returns Array of sync results for each craft
|
|
59
|
+
*/
|
|
60
|
+
syncAllCrafts(cwd?: string): Promise<SyncResult[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Verify sync status for all installed crafts
|
|
63
|
+
*
|
|
64
|
+
* @param cwd - Current working directory (defaults to process.cwd())
|
|
65
|
+
* @returns Array of sync statuses for each craft
|
|
66
|
+
*/
|
|
67
|
+
verifyAllCrafts(cwd?: string): Promise<SyncStatus[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Calculate checksum for entire directory
|
|
70
|
+
*
|
|
71
|
+
* Creates a consistent hash of all files in a directory (excluding metadata)
|
|
72
|
+
*
|
|
73
|
+
* @param dirPath - Directory to checksum
|
|
74
|
+
* @returns SHA256 checksum hex string
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
calculateDirChecksum(dirPath: string): Promise<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Recursively get all files in a directory
|
|
80
|
+
*
|
|
81
|
+
* @param dirPath - Directory to scan
|
|
82
|
+
* @returns Array of absolute file paths
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
private getAllFiles;
|
|
86
|
+
}
|
|
87
|
+
export declare const multiAgentSync: MultiAgentSync;
|
|
88
|
+
//# sourceMappingURL=multi-agent-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-agent-sync.d.ts","sourceRoot":"","sources":["../../src/services/multi-agent-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAEjF;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;;;;;;;;;;;;;;OAkBG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,UAAU,CAAC;IA6EtB;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IA6ErF;;;;;OAKG;IACG,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAyCvE;;;;;OAKG;IACG,eAAe,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6BzE;;;;;;;;OAQG;IACG,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA2B5D;;;;;;OAMG;YACW,WAAW;CAsB1B;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|