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
@@ -187,12 +187,16 @@ class GitResolver {
187
187
  inferCraftTypeFromFilename(filename) {
188
188
  const lower = filename.toLowerCase();
189
189
  // Check filename for type indicators
190
+ if (lower.includes('collection'))
191
+ return 'collection';
190
192
  if (lower.includes('agent'))
191
193
  return 'agent';
192
194
  if (lower.includes('command'))
193
195
  return 'command';
194
196
  if (lower.includes('hook'))
195
197
  return 'hook';
198
+ if (lower.includes('plugin'))
199
+ return 'plugin';
196
200
  if (lower.includes('skill'))
197
201
  return 'skill';
198
202
  // Default to skill
@@ -202,7 +206,7 @@ class GitResolver {
202
206
  * Infers the craft type from the repository structure
203
207
  *
204
208
  * Type inference strategy:
205
- * 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md
209
+ * 1. Check for marker files: SKILL.md, AGENT.md, COMMAND.md, HOOK.md, COLLECTION.md
206
210
  * 2. Check directory name for type indicators
207
211
  * 3. Default to 'skill' if no indicators found
208
212
  *
@@ -215,7 +219,9 @@ class GitResolver {
215
219
  const checkPath = subPath ? path_1.default.join(repoPath, subPath) : repoPath;
216
220
  // Check for type-indicating files
217
221
  const files = await fs_extra_1.default.readdir(checkPath);
218
- // Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md
222
+ // Look for SKILL.md, AGENT.md, COMMAND.md, HOOK.md, PLUGIN.md, COLLECTION.md
223
+ if (files.includes('COLLECTION.md'))
224
+ return 'collection';
219
225
  if (files.includes('SKILL.md'))
220
226
  return 'skill';
221
227
  if (files.includes('AGENT.md'))
@@ -224,8 +230,12 @@ class GitResolver {
224
230
  return 'command';
225
231
  if (files.includes('HOOK.md'))
226
232
  return 'hook';
233
+ if (files.includes('PLUGIN.md'))
234
+ return 'plugin';
227
235
  // Check directory name hints
228
236
  const dirName = subPath ? path_1.default.basename(subPath) : path_1.default.basename(repoPath);
237
+ if (dirName.includes('collection'))
238
+ return 'collection';
229
239
  if (dirName.includes('skill'))
230
240
  return 'skill';
231
241
  if (dirName.includes('agent'))
@@ -234,6 +244,8 @@ class GitResolver {
234
244
  return 'command';
235
245
  if (dirName.includes('hook'))
236
246
  return 'hook';
247
+ if (dirName.includes('plugin'))
248
+ return 'plugin';
237
249
  // Default to skill
238
250
  return 'skill';
239
251
  }
@@ -284,20 +296,27 @@ class GitResolver {
284
296
  path: dep.path,
285
297
  file: dep.file
286
298
  });
287
- resolved[name] = {
299
+ const lockEntry = {
288
300
  version: gitInfo.craftDeskJson?.version || '0.0.0',
289
301
  resolved: gitInfo.url,
290
302
  integrity: gitInfo.resolvedCommit || 'git',
291
303
  type: gitInfo.craftDeskJson?.type || 'skill',
292
- author: gitInfo.craftDeskJson?.author || 'git',
304
+ author: gitInfo.craftDeskJson?.author,
293
305
  git: gitInfo.url,
294
306
  ...(gitInfo.branch && { branch: gitInfo.branch }),
295
307
  ...(gitInfo.tag && { tag: gitInfo.tag }),
296
308
  ...(gitInfo.commit && { commit: gitInfo.resolvedCommit }),
297
309
  ...(gitInfo.path && { path: gitInfo.path }),
298
- ...(gitInfo.file && { file: gitInfo.file }),
299
- dependencies: gitInfo.craftDeskJson?.dependencies || {}
310
+ ...(gitInfo.file && { file: gitInfo.file })
300
311
  };
312
+ // Only add dependencies if they exist
313
+ if (gitInfo.craftDeskJson?.dependencies && Object.keys(gitInfo.craftDeskJson.dependencies).length > 0) {
314
+ lockEntry.dependencies = Object.fromEntries(Object.entries(gitInfo.craftDeskJson.dependencies).map(([k, v]) => {
315
+ const versionStr = typeof v === 'string' ? v : v.version || '*';
316
+ return [k, versionStr];
317
+ }));
318
+ }
319
+ resolved[name] = lockEntry;
301
320
  // Add transitive dependencies to the resolution queue
302
321
  // This enables recursive dependency resolution
303
322
  if (gitInfo.craftDeskJson?.dependencies) {
@@ -310,12 +329,17 @@ class GitResolver {
310
329
  }
311
330
  }
312
331
  else {
313
- // Registry dependency - mark for resolution by registry client
332
+ // Registry dependency - create placeholder entry for resolution by registry client
314
333
  // The actual version resolution happens via the registry API
334
+ const version = typeof dep === 'string' ? dep : (dep.version || '*');
335
+ const registry = typeof dep === 'object' ? dep.registry : undefined;
336
+ // Create a minimal LockEntry that will be filled in by registry resolution
315
337
  resolved[name] = {
316
- needsResolution: true,
317
- version: typeof dep === 'string' ? dep : dep.version,
318
- registry: typeof dep === 'object' ? dep.registry : undefined
338
+ version,
339
+ resolved: registry || 'registry',
340
+ integrity: 'pending',
341
+ type: 'skill', // Default, will be updated by registry
342
+ ...(registry && { registry })
319
343
  };
320
344
  }
321
345
  }
@@ -324,6 +348,7 @@ class GitResolver {
324
348
  lockfile: {
325
349
  version: '1.0.0',
326
350
  lockfileVersion: 1,
351
+ generatedAt: new Date().toISOString(),
327
352
  crafts: resolved
328
353
  }
329
354
  };
@@ -1 +1 @@
1
- {"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-resolver.js","sourceRoot":"","sources":["../../src/services/git-resolver.ts"],"names":[],"mappings":"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"}
@@ -83,11 +83,61 @@ export declare class Installer {
83
83
  */
84
84
  installCraft(name: string, entry: LockEntry): Promise<void>;
85
85
  private installFromGit;
86
- private getTypeDirectory;
86
+ /**
87
+ * Get the type-specific directory for a craft type
88
+ *
89
+ * @param type - The craft type (skill, agent, command, hook, plugin, collection)
90
+ * @returns Directory name for the craft type
91
+ */
92
+ getTypeDirectory(type: string): string;
93
+ /**
94
+ * Get the install path (e.g., '.claude')
95
+ *
96
+ * @returns The installation directory path
97
+ */
98
+ getInstallPath(): string;
87
99
  private downloadFile;
88
100
  private extractArchive;
89
101
  private createMetadata;
102
+ /**
103
+ * Register a plugin in .claude/settings.json
104
+ *
105
+ * @param name - The plugin name
106
+ * @param entry - The lock file entry for this plugin
107
+ * @param craftDir - The directory where the plugin is installed
108
+ * @returns Promise that resolves when registration is complete
109
+ */
110
+ private registerPlugin;
111
+ /**
112
+ * Read plugin.json manifest from plugin directory
113
+ * Plugin manifest is located at .claude-plugin/plugin.json
114
+ *
115
+ * @param pluginDir - Path to the plugin directory containing .claude-plugin/plugin.json
116
+ * @returns The parsed plugin manifest or null if not found or invalid
117
+ */
118
+ private readPluginManifest;
119
+ /**
120
+ * Scan plugin directory to discover components
121
+ * This ensures we find all skills/agents/commands/hooks even if not listed in plugin.json
122
+ *
123
+ * @param pluginDir - Path to the plugin directory to scan for components
124
+ * @returns Object containing arrays of discovered skills, agents, commands, and hooks
125
+ */
126
+ private scanPluginComponents;
127
+ /**
128
+ * Remove an installed craft from the project
129
+ * Unregisters plugins from settings and removes the craft directory
130
+ *
131
+ * @param name - Name of the craft to remove
132
+ * @param type - Type of craft (plugin, skill, agent, command, hook)
133
+ */
90
134
  removeCraft(name: string, type: string): Promise<void>;
135
+ /**
136
+ * List all installed crafts in the project
137
+ * Scans the installation directory for all craft types and reads their metadata
138
+ *
139
+ * @returns Array of installed crafts with name, version, and type information
140
+ */
91
141
  listInstalled(): Promise<Array<{
92
142
  name: string;
93
143
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;;IAM5B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAgCnD,cAAc;IA2D5B,OAAO,CAAC,gBAAgB;YAeV,YAAY;YAgBZ,cAAc;YAcd,cAAc;IAkBtB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA8BvF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAAS;;IAM5B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDnD,cAAc;IA+D5B;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAmBtC;;;;OAIG;IACH,cAAc,IAAI,MAAM;YAIV,YAAY;YAgBZ,cAAc;YAYd,cAAc;IAkB5B;;;;;;;OAOG;YACW,cAAc;IAyF5B;;;;;;OAMG;YACW,kBAAkB;IAgBhC;;;;;;OAMG;YACW,oBAAoB;IAgDlC;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB5D;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CA8BvF;AAED,eAAO,MAAM,SAAS,WAAkB,CAAC"}
@@ -7,9 +7,13 @@ 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");
12
15
  const file_system_1 = require("../utils/file-system");
16
+ const crypto_1 = require("../utils/crypto");
13
17
  /**
14
18
  * Handles installation of crafts from various sources
15
19
  *
@@ -72,7 +76,8 @@ class Installer {
72
76
  installed++;
73
77
  }
74
78
  catch (error) {
75
- logger_1.logger.failSpinner(`Failed to install ${name}: ${error.message}`);
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ logger_1.logger.failSpinner(`Failed to install ${name}: ${message}`);
76
81
  throw error;
77
82
  }
78
83
  }
@@ -123,11 +128,25 @@ class Installer {
123
128
  await this.installFromGit(craftDir, entry);
124
129
  }
125
130
  else {
126
- // Download craft archive
127
- const archivePath = path_1.default.join(craftDir, 'archive.tar.gz');
131
+ // Download craft archive (ZIP format from CraftDesk registry)
132
+ const archivePath = path_1.default.join(craftDir, 'archive.zip');
128
133
  await this.downloadFile(entry.resolved, archivePath);
129
- // Verify integrity (TODO: implement SHA-256 check)
130
- // await this.verifyIntegrity(archivePath, entry.integrity);
134
+ // Verify integrity using SHA-256 checksum
135
+ if (entry.integrity) {
136
+ logger_1.logger.debug(`Verifying checksum for ${name}...`);
137
+ const isValid = await (0, crypto_1.verifyFileChecksum)(archivePath, entry.integrity);
138
+ if (!isValid) {
139
+ await fs_extra_1.default.remove(archivePath);
140
+ throw new Error(`Checksum verification failed for ${name}@${entry.version}. ` +
141
+ `Expected: ${(0, crypto_1.formatChecksum)(entry.integrity)}... ` +
142
+ `This may indicate a corrupted download or a security issue. ` +
143
+ `Try running 'craftdesk install --no-lockfile' to re-resolve dependencies.`);
144
+ }
145
+ logger_1.logger.debug(`Checksum verified: ${(0, crypto_1.formatChecksum)(entry.integrity)}...`);
146
+ }
147
+ else {
148
+ logger_1.logger.warn(`No checksum available for ${name}@${entry.version} - skipping verification`);
149
+ }
131
150
  // Extract archive
132
151
  await this.extractArchive(archivePath, craftDir);
133
152
  // Clean up archive
@@ -135,12 +154,15 @@ class Installer {
135
154
  }
136
155
  // Create metadata file
137
156
  await this.createMetadata(craftDir, name, entry);
157
+ // Register plugin in settings if this is a plugin type
158
+ if (entry.type === 'plugin') {
159
+ await this.registerPlugin(name, entry, craftDir);
160
+ }
138
161
  }
139
162
  async installFromGit(craftDir, entry) {
140
163
  const tempDir = path_1.default.join(craftDir, '.tmp-git');
141
164
  try {
142
165
  // Clone the repository
143
- const { execSync } = require('child_process');
144
166
  // Build clone command with appropriate ref
145
167
  let cloneCmd = `git clone --depth 1`;
146
168
  if (entry.branch) {
@@ -151,10 +173,15 @@ class Installer {
151
173
  }
152
174
  cloneCmd += ` ${entry.git} ${tempDir}`;
153
175
  logger_1.logger.debug(`Cloning git repository: ${cloneCmd}`);
154
- execSync(cloneCmd, { stdio: 'pipe' });
176
+ (0, child_process_1.execSync)(cloneCmd, { stdio: 'pipe' });
155
177
  // If specific commit, checkout that commit
156
178
  if (entry.commit) {
157
- execSync(`cd ${tempDir} && git fetch --unshallow && git checkout ${entry.commit}`, { stdio: 'pipe' });
179
+ // Check if repo is shallow before trying to unshallow
180
+ const isShallow = await fs_extra_1.default.pathExists(path_1.default.join(tempDir, '.git', 'shallow'));
181
+ if (isShallow) {
182
+ (0, child_process_1.execSync)(`cd ${tempDir} && git fetch --unshallow`, { stdio: 'pipe' });
183
+ }
184
+ (0, child_process_1.execSync)(`cd ${tempDir} && git checkout ${entry.commit}`, { stdio: 'pipe' });
158
185
  }
159
186
  // Handle direct file reference
160
187
  if (entry.file) {
@@ -184,6 +211,12 @@ class Installer {
184
211
  await fs_extra_1.default.remove(tempDir);
185
212
  }
186
213
  }
214
+ /**
215
+ * Get the type-specific directory for a craft type
216
+ *
217
+ * @param type - The craft type (skill, agent, command, hook, plugin, collection)
218
+ * @returns Directory name for the craft type
219
+ */
187
220
  getTypeDirectory(type) {
188
221
  switch (type) {
189
222
  case 'skill':
@@ -194,10 +227,22 @@ class Installer {
194
227
  return 'commands';
195
228
  case 'hook':
196
229
  return 'hooks';
230
+ case 'plugin':
231
+ return 'plugins';
232
+ case 'collection':
233
+ return 'collections';
197
234
  default:
198
235
  return 'crafts';
199
236
  }
200
237
  }
238
+ /**
239
+ * Get the install path (e.g., '.claude')
240
+ *
241
+ * @returns The installation directory path
242
+ */
243
+ getInstallPath() {
244
+ return this.installPath;
245
+ }
201
246
  async downloadFile(url, outputPath) {
202
247
  const response = await (0, axios_1.default)({
203
248
  method: 'GET',
@@ -212,11 +257,16 @@ class Installer {
212
257
  });
213
258
  }
214
259
  async extractArchive(archivePath, outputDir) {
215
- // For now, just copy some placeholder files
216
- // In production, this would extract a tar.gz or zip archive
217
- const type = path_1.default.basename(outputDir).includes('skill') ? 'SKILL' : 'AGENT';
218
- const mainFile = `${type}.md`;
219
- await fs_extra_1.default.writeFile(path_1.default.join(outputDir, mainFile), `# ${path_1.default.basename(outputDir)}\n\nThis is a placeholder for the ${type.toLowerCase()} content.\n`, 'utf-8');
260
+ try {
261
+ // CraftDesk web API returns ZIP archives
262
+ const zip = new adm_zip_1.default(archivePath);
263
+ zip.extractAllTo(outputDir, /* overwrite */ true);
264
+ logger_1.logger.debug(`Extracted ZIP archive to ${outputDir}`);
265
+ }
266
+ catch (error) {
267
+ const message = error instanceof Error ? error.message : String(error);
268
+ throw new Error(`Failed to extract archive: ${message}`);
269
+ }
220
270
  }
221
271
  async createMetadata(craftDir, name, entry) {
222
272
  const metadata = {
@@ -230,11 +280,186 @@ class Installer {
230
280
  };
231
281
  await fs_extra_1.default.writeFile(path_1.default.join(craftDir, '.craftdesk-metadata.json'), JSON.stringify(metadata, null, 2), 'utf-8');
232
282
  }
283
+ /**
284
+ * Register a plugin in .claude/settings.json
285
+ *
286
+ * @param name - The plugin name
287
+ * @param entry - The lock file entry for this plugin
288
+ * @param craftDir - The directory where the plugin is installed
289
+ * @returns Promise that resolves when registration is complete
290
+ */
291
+ async registerPlugin(name, entry, craftDir) {
292
+ try {
293
+ // Try to read plugin.json manifest
294
+ const manifest = await this.readPluginManifest(craftDir);
295
+ // Scan directory for actual components
296
+ const scannedComponents = await this.scanPluginComponents(craftDir);
297
+ // Merge manifest components (declared) with scanned components (actual)
298
+ // Manifest takes precedence if both exist (manifest is source of truth)
299
+ const components = {};
300
+ // Start with scanned components
301
+ if (scannedComponents.skills)
302
+ components.skills = scannedComponents.skills;
303
+ if (scannedComponents.agents)
304
+ components.agents = scannedComponents.agents;
305
+ if (scannedComponents.commands)
306
+ components.commands = scannedComponents.commands;
307
+ if (scannedComponents.hooks)
308
+ components.hooks = scannedComponents.hooks;
309
+ // Override with manifest if provided (manifest is source of truth)
310
+ if (manifest?.components) {
311
+ if (manifest.components.skills)
312
+ components.skills = manifest.components.skills;
313
+ if (manifest.components.agents)
314
+ components.agents = manifest.components.agents;
315
+ if (manifest.components.commands)
316
+ components.commands = manifest.components.commands;
317
+ if (manifest.components.hooks)
318
+ components.hooks = manifest.components.hooks;
319
+ }
320
+ // Build plugin config for settings
321
+ const pluginConfig = {
322
+ name,
323
+ version: entry.version,
324
+ type: 'plugin',
325
+ enabled: true,
326
+ installPath: path_1.default.relative(this.installPath, craftDir),
327
+ installedAt: new Date().toISOString(),
328
+ dependencies: entry.dependencies ? Object.keys(entry.dependencies) : [],
329
+ isDependency: entry.installedAs === 'dependency',
330
+ // Copy metadata from plugin.json manifest
331
+ ...(manifest?.description && { description: manifest.description }),
332
+ ...(manifest?.author && { author: manifest.author }),
333
+ ...(manifest?.license && { license: manifest.license }),
334
+ ...(manifest?.homepage && { homepage: manifest.homepage }),
335
+ ...(manifest?.repository && { repository: manifest.repository }),
336
+ ...(manifest?.keywords && { keywords: manifest.keywords }),
337
+ // Use merged components (scanned + manifest)
338
+ ...(Object.keys(components).length > 0 && { components }),
339
+ // CraftDesk-specific fields
340
+ ...(manifest?.scripts && { scripts: manifest.scripts })
341
+ };
342
+ await settings_manager_1.settingsManager.registerPlugin(pluginConfig);
343
+ logger_1.logger.debug(`Registered plugin ${name} in settings.json`);
344
+ // Register MCP servers if provided in manifest (official Claude Code field)
345
+ if (manifest?.mcpServers) {
346
+ if (typeof manifest.mcpServers === 'object' && !Array.isArray(manifest.mcpServers)) {
347
+ // Inline MCP server configuration
348
+ for (const [serverName, serverConfig] of Object.entries(manifest.mcpServers)) {
349
+ await settings_manager_1.settingsManager.registerMCPServer(serverName, serverConfig);
350
+ logger_1.logger.debug(`Registered MCP server: ${serverName}`);
351
+ }
352
+ }
353
+ else if (typeof manifest.mcpServers === 'string') {
354
+ // Path to .mcp.json file - would need to read and parse it
355
+ const mcpPath = path_1.default.join(craftDir, manifest.mcpServers);
356
+ if (await fs_extra_1.default.pathExists(mcpPath)) {
357
+ try {
358
+ const mcpConfig = await fs_extra_1.default.readJson(mcpPath);
359
+ for (const [serverName, serverConfig] of Object.entries(mcpConfig)) {
360
+ await settings_manager_1.settingsManager.registerMCPServer(serverName, serverConfig);
361
+ logger_1.logger.debug(`Registered MCP server from ${manifest.mcpServers}: ${serverName}`);
362
+ }
363
+ }
364
+ catch (error) {
365
+ const message = error instanceof Error ? error.message : String(error);
366
+ logger_1.logger.warn(`Failed to read MCP config from ${manifest.mcpServers}: ${message}`);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ }
372
+ catch (error) {
373
+ const message = error instanceof Error ? error.message : String(error);
374
+ logger_1.logger.warn(`Failed to register plugin ${name}: ${message}`);
375
+ // Non-fatal - plugin is still installed, just not registered in settings
376
+ }
377
+ }
378
+ /**
379
+ * Read plugin.json manifest from plugin directory
380
+ * Plugin manifest is located at .claude-plugin/plugin.json
381
+ *
382
+ * @param pluginDir - Path to the plugin directory containing .claude-plugin/plugin.json
383
+ * @returns The parsed plugin manifest or null if not found or invalid
384
+ */
385
+ async readPluginManifest(pluginDir) {
386
+ const manifestPath = path_1.default.join(pluginDir, '.claude-plugin', 'plugin.json');
387
+ try {
388
+ if (await fs_extra_1.default.pathExists(manifestPath)) {
389
+ const content = await fs_extra_1.default.readFile(manifestPath, 'utf-8');
390
+ return JSON.parse(content);
391
+ }
392
+ return null;
393
+ }
394
+ catch (error) {
395
+ const message = error instanceof Error ? error.message : String(error);
396
+ logger_1.logger.debug(`Failed to read plugin manifest: ${message}`);
397
+ return null;
398
+ }
399
+ }
400
+ /**
401
+ * Scan plugin directory to discover components
402
+ * This ensures we find all skills/agents/commands/hooks even if not listed in plugin.json
403
+ *
404
+ * @param pluginDir - Path to the plugin directory to scan for components
405
+ * @returns Object containing arrays of discovered skills, agents, commands, and hooks
406
+ */
407
+ async scanPluginComponents(pluginDir) {
408
+ const components = {};
409
+ const componentTypes = ['skills', 'agents', 'commands', 'hooks'];
410
+ for (const type of componentTypes) {
411
+ const typeDir = path_1.default.join(pluginDir, type);
412
+ if (await fs_extra_1.default.pathExists(typeDir)) {
413
+ try {
414
+ const entries = await fs_extra_1.default.readdir(typeDir, { withFileTypes: true });
415
+ let items;
416
+ // Commands and hooks are files (*.md), not directories
417
+ if (type === 'commands' || type === 'hooks') {
418
+ items = entries
419
+ .filter(entry => entry.isFile() && entry.name.endsWith('.md'))
420
+ .map(entry => entry.name);
421
+ }
422
+ else {
423
+ // Skills and agents are directories
424
+ items = entries
425
+ .filter(entry => entry.isDirectory())
426
+ .map(entry => entry.name);
427
+ }
428
+ if (items.length > 0) {
429
+ components[type] = items;
430
+ }
431
+ }
432
+ catch (error) {
433
+ const message = error instanceof Error ? error.message : String(error);
434
+ logger_1.logger.debug(`Failed to scan ${type} directory: ${message}`);
435
+ }
436
+ }
437
+ }
438
+ return components;
439
+ }
440
+ /**
441
+ * Remove an installed craft from the project
442
+ * Unregisters plugins from settings and removes the craft directory
443
+ *
444
+ * @param name - Name of the craft to remove
445
+ * @param type - Type of craft (plugin, skill, agent, command, hook)
446
+ */
233
447
  async removeCraft(name, type) {
234
448
  const installDir = path_1.default.join(process.cwd(), this.installPath);
235
449
  const typeDir = this.getTypeDirectory(type);
236
450
  const craftDir = path_1.default.join(installDir, typeDir, name);
237
451
  if (await fs_extra_1.default.pathExists(craftDir)) {
452
+ // Unregister plugin from settings if this is a plugin
453
+ if (type === 'plugin') {
454
+ try {
455
+ await settings_manager_1.settingsManager.unregisterPlugin(name);
456
+ logger_1.logger.debug(`Unregistered plugin ${name} from settings`);
457
+ }
458
+ catch (error) {
459
+ const message = error instanceof Error ? error.message : String(error);
460
+ logger_1.logger.warn(`Failed to unregister plugin: ${message}`);
461
+ }
462
+ }
238
463
  await fs_extra_1.default.remove(craftDir);
239
464
  logger_1.logger.success(`Removed ${name}`);
240
465
  }
@@ -242,13 +467,19 @@ class Installer {
242
467
  logger_1.logger.warn(`${name} is not installed`);
243
468
  }
244
469
  }
470
+ /**
471
+ * List all installed crafts in the project
472
+ * Scans the installation directory for all craft types and reads their metadata
473
+ *
474
+ * @returns Array of installed crafts with name, version, and type information
475
+ */
245
476
  async listInstalled() {
246
477
  const installDir = path_1.default.join(process.cwd(), this.installPath);
247
478
  const installed = [];
248
479
  if (!await fs_extra_1.default.pathExists(installDir)) {
249
480
  return installed;
250
481
  }
251
- const typeDirs = ['skills', 'agents', 'commands', 'hooks'];
482
+ const typeDirs = ['skills', 'agents', 'commands', 'hooks', 'plugins', 'collections'];
252
483
  for (const typeDir of typeDirs) {
253
484
  const dir = path_1.default.join(installDir, typeDir);
254
485
  if (!await fs_extra_1.default.pathExists(dir))
@@ -1 +1 @@
1
- {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAC1B,kDAA0B;AAC1B,4CAAyC;AACzC,qDAAiD;AAEjD,sDAAiD;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,SAAS;IACZ,WAAW,CAAS;IAE5B;QACE,IAAI,CAAC,WAAW,GAAG,8BAAa,CAAC,cAAc,EAAE,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,mBAAmB,CAAC,QAAuB;QAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,IAAA,uBAAS,EAAC,UAAU,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,eAAM,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACrC,SAAS,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,eAAM,CAAC,WAAW,CAAC,qBAAqB,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,eAAM,CAAC,cAAc,CAAC,aAAa,SAAS,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAgB;QAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9D,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,mBAAmB;QACnB,MAAM,IAAA,uBAAS,EAAC,QAAQ,CAAC,CAAC;QAE1B,oCAAoC;QACpC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,yBAAyB;YACzB,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAErD,mDAAmD;YACnD,4DAA4D;YAE5D,kBAAkB;YAClB,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEjD,mBAAmB;YACnB,MAAM,kBAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,KAAgB;QAC7D,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,uBAAuB;YACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;YAE9C,2CAA2C;YAC3C,IAAI,QAAQ,GAAG,qBAAqB,CAAC;YAErC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACrB,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;YACjC,CAAC;YAED,QAAQ,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;YAEvC,eAAM,CAAC,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;YACpD,QAAQ,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAEtC,2CAA2C;YAC3C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,QAAQ,CAAC,MAAM,OAAO,6CAA6C,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,+BAA+B;YAC/B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEhE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpC,MAAM,kBAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAEzE,mCAAmC;gBACnC,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC3C,MAAM,kBAAE,CAAC,IAAI,CACX,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAC3B,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACzB,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QAEH,CAAC;gBAAS,CAAC;YACT,0BAA0B;YAC1B,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,UAAU,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;YACjB;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,UAAkB;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;YAC3B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,kBAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,SAAiB;QACjE,4CAA4C;QAC5C,4DAA4D;QAE5D,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5E,MAAM,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;QAE9B,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAC9B,KAAK,cAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,qCAAqC,IAAI,CAAC,WAAW,EAAE,aAAa,EACjG,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAY,EAAE,KAAgB;QAC3E,MAAM,QAAQ,GAAG;YACf,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;QAEF,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,EAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAY;QAC1C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,eAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,SAAS,GAA2D,EAAE,CAAC;QAE7E,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAExC,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;gBAC3E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACjD,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAzRD,8BAyRC;AAEY,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/services/installer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wDAA0B;AAC1B,kDAA0B;AAC1B,sDAA6B;AAC7B,iDAAyC;AACzC,4CAAyC;AACzC,qDAAiD;AACjD,yDAAqD;AAErD,sDAAiD;AACjD,4CAAqE;AAGrE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,SAAS;IACZ,WAAW,CAAS;IAE5B;QACE,IAAI,CAAC,WAAW,GAAG,8BAAa,CAAC,cAAc,EAAE,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,mBAAmB,CAAC,QAAuB;QAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,IAAA,uBAAS,EAAC,UAAU,CAAC,CAAC;QAE5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,eAAM,CAAC,aAAa,CAAC,cAAc,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACrC,SAAS,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,eAAM,CAAC,WAAW,CAAC,qBAAqB,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;gBAC5D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,eAAM,CAAC,cAAc,CAAC,aAAa,SAAS,SAAS,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,KAAgB;QAC/C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE9D,+CAA+C;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,mBAAmB;QACnB,MAAM,IAAA,uBAAS,EAAC,QAAQ,CAAC,CAAC;QAE1B,oCAAoC;QACpC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAErD,0CAA0C;YAC1C,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACpB,eAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAkB,EAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAEvE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,kBAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC7B,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,IAAI,KAAK,CAAC,OAAO,IAAI;wBAC7D,aAAa,IAAA,uBAAc,EAAC,KAAK,CAAC,SAAS,CAAC,MAAM;wBAClD,8DAA8D;wBAC9D,2EAA2E,CAC5E,CAAC;gBACJ,CAAC;gBAED,eAAM,CAAC,KAAK,CAAC,sBAAsB,IAAA,uBAAc,EAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,IAAI,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;YAC5F,CAAC;YAED,kBAAkB;YAClB,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEjD,mBAAmB;YACnB,MAAM,kBAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEjD,uDAAuD;QACvD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,KAAgB;QAC7D,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,uBAAuB;YAEvB,2CAA2C;YAC3C,IAAI,QAAQ,GAAG,qBAAqB,CAAC;YAErC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACrB,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC;YACjC,CAAC;YAED,QAAQ,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;YAEvC,eAAM,CAAC,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;YACpD,IAAA,wBAAQ,EAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAEtC,2CAA2C;YAC3C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,sDAAsD;gBACtD,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC7E,IAAI,SAAS,EAAE,CAAC;oBACd,IAAA,wBAAQ,EAAC,MAAM,OAAO,2BAA2B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxE,CAAC;gBACD,IAAA,wBAAQ,EAAC,MAAM,OAAO,oBAAoB,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,+BAA+B;YAC/B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEhE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACpC,MAAM,kBAAE,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,kEAAkE;gBAClE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAEzE,mCAAmC;gBACnC,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC3C,MAAM,kBAAE,CAAC,IAAI,CACX,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAC3B,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACzB,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QAEH,CAAC;gBAAS,CAAC;YACT,0BAA0B;YAC1B,MAAM,kBAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,IAAY;QAC3B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;YAClB,KAAK,OAAO;gBACV,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS;gBACZ,OAAO,UAAU,CAAC;YACpB,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,SAAS,CAAC;YACnB,KAAK,YAAY;gBACf,OAAO,aAAa,CAAC;YACvB;gBACE,OAAO,QAAQ,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,UAAkB;QACxD,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAK,EAAC;YAC3B,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,kBAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,WAAmB,EAAE,SAAiB;QACjE,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,GAAG,GAAG,IAAI,iBAAM,CAAC,WAAW,CAAC,CAAC;YACpC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;YAClD,eAAM,CAAC,KAAK,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,IAAY,EAAE,KAAgB;QAC3E,MAAM,QAAQ,GAAG;YACf,IAAI;YACJ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;QAEF,MAAM,kBAAE,CAAC,SAAS,CAChB,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,EAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EACjC,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,KAAgB,EAAE,QAAgB;QAC3E,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAEzD,uCAAuC;YACvC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAEpE,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,UAAU,GAKZ,EAAE,CAAC;YAEP,gCAAgC;YAChC,IAAI,iBAAiB,CAAC,MAAM;gBAAE,UAAU,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC3E,IAAI,iBAAiB,CAAC,MAAM;gBAAE,UAAU,CAAC,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC3E,IAAI,iBAAiB,CAAC,QAAQ;gBAAE,UAAU,CAAC,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YACjF,IAAI,iBAAiB,CAAC,KAAK;gBAAE,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;YAExE,mEAAmE;YACnE,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;gBACzB,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM;oBAAE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM;oBAAE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC/E,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ;oBAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACrF,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK;oBAAE,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YAC9E,CAAC;YAED,mCAAmC;YACnC,MAAM,YAAY,GAAG;gBACnB,IAAI;gBACJ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,QAAiB;gBACvB,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,cAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;gBACtD,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACvE,YAAY,EAAE,KAAK,CAAC,WAAW,KAAK,YAAY;gBAChD,0CAA0C;gBAC1C,GAAG,CAAC,QAAQ,EAAE,WAAW,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACnE,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpD,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACvD,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC1D,GAAG,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAChE,GAAG,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC1D,6CAA6C;gBAC7C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;gBACzD,4BAA4B;gBAC5B,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;aACxD,CAAC;YAEF,MAAM,kCAAe,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACnD,eAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,mBAAmB,CAAC,CAAC;YAE3D,4EAA4E;YAC5E,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;gBACzB,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACnF,kCAAkC;oBAClC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC7E,MAAM,kCAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;wBAClE,eAAM,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,QAAQ,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACnD,2DAA2D;oBAC3D,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACzD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;4BAC7C,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gCACnE,MAAM,kCAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAA+B,CAAC,CAAC;gCACrF,eAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;4BACnF,CAAC;wBACH,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BACvE,eAAM,CAAC,IAAI,CAAC,kCAAkC,QAAQ,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;wBACnF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,eAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;YAC7D,yEAAyE;QAC3E,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QAChD,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAmB,CAAC;YAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,eAAM,CAAC,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAMlD,MAAM,UAAU,GAKZ,EAAE,CAAC;QAEP,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAE3C,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnE,IAAI,KAAe,CAAC;oBAEpB,uDAAuD;oBACvD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5C,KAAK,GAAG,OAAO;6BACZ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;6BAC7D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACN,oCAAoC;wBACpC,KAAK,GAAG,OAAO;6BACZ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;6BACpC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC;oBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC3B,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,eAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,eAAe,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAY;QAC1C,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtD,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,sDAAsD;YACtD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,IAAI,CAAC;oBACH,MAAM,kCAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAC7C,eAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,gBAAgB,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,eAAM,CAAC,IAAI,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,eAAM,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,SAAS,GAA2D,EAAE,CAAC;QAE7E,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAErF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAExC,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;gBAC3E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBACjD,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;qBACpB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AA5gBD,8BA4gBC;AAEY,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}