decoupled-cli 2.3.2 → 2.4.1

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.
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.mcpCommand = void 0;
40
+ const commander_1 = require("commander");
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const os = __importStar(require("os"));
46
+ const config_1 = require("../lib/config");
47
+ // Get IDE MCP config path based on IDE and OS.
48
+ function getIdeConfigPath(ide) {
49
+ const platform = process.platform;
50
+ if (ide === 'claude-code') {
51
+ switch (platform) {
52
+ case 'darwin': // macOS
53
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
54
+ case 'win32': // Windows
55
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'Claude', 'claude_desktop_config.json');
56
+ default: // Linux
57
+ return path.join(os.homedir(), '.config', 'Claude', 'claude_desktop_config.json');
58
+ }
59
+ }
60
+ else { // cursor
61
+ switch (platform) {
62
+ case 'darwin': // macOS
63
+ return path.join(os.homedir(), 'Library', 'Application Support', 'Cursor', 'User', 'globalStorage', 'mcp-config.json');
64
+ case 'win32': // Windows
65
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'Cursor', 'User', 'globalStorage', 'mcp-config.json');
66
+ default: // Linux
67
+ return path.join(os.homedir(), '.config', 'Cursor', 'User', 'globalStorage', 'mcp-config.json');
68
+ }
69
+ }
70
+ }
71
+ // Ensure config directory exists.
72
+ function ensureConfigDir(configPath) {
73
+ const dir = path.dirname(configPath);
74
+ if (!fs.existsSync(dir)) {
75
+ fs.mkdirSync(dir, { recursive: true });
76
+ }
77
+ }
78
+ // Read existing IDE config or create empty one.
79
+ function readIdeConfig(configPath) {
80
+ if (fs.existsSync(configPath)) {
81
+ try {
82
+ const content = fs.readFileSync(configPath, 'utf-8');
83
+ return JSON.parse(content);
84
+ }
85
+ catch (error) {
86
+ console.warn(chalk_1.default.yellow('⚠️ Existing config is invalid. Creating backup...'));
87
+ fs.copyFileSync(configPath, `${configPath}.backup`);
88
+ return { mcpServers: {} };
89
+ }
90
+ }
91
+ return { mcpServers: {} };
92
+ }
93
+ // Write IDE config.
94
+ function writeIdeConfig(configPath, config) {
95
+ ensureConfigDir(configPath);
96
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
97
+ }
98
+ exports.mcpCommand = new commander_1.Command('mcp')
99
+ .description('Model Context Protocol (MCP) management for AI assistants');
100
+ exports.mcpCommand
101
+ .command('configure')
102
+ .description('Configure decoupled.io MCP server for Claude Code or Cursor')
103
+ .option('--profile <name>', 'Use specific profile', 'default')
104
+ .option('--url <url>', 'Override API base URL')
105
+ .option('--ide <ide>', 'Target IDE: claude-code or cursor')
106
+ .option('--show-only', 'Show config without writing to IDE')
107
+ .action(async (options) => {
108
+ try {
109
+ console.log(chalk_1.default.bold('\n🤖 Configuring decoupled.io MCP Server\n'));
110
+ // Check if user is logged in.
111
+ const config = config_1.configManager.getConfig();
112
+ const profileName = options.profile || config.currentProfile;
113
+ const profile = config.profiles[profileName];
114
+ if (!profile) {
115
+ console.error(chalk_1.default.red(`❌ Profile '${profileName}' not found`));
116
+ console.log(chalk_1.default.yellow('\nPlease log in first:'));
117
+ console.log(chalk_1.default.gray(' npx decoupled-cli auth login\n'));
118
+ process.exit(1);
119
+ }
120
+ const token = await config_1.configManager.getToken(profileName);
121
+ if (!token) {
122
+ console.error(chalk_1.default.red('❌ No authentication token found'));
123
+ console.log(chalk_1.default.yellow('\nPlease log in first:'));
124
+ console.log(chalk_1.default.gray(' npx decoupled-cli auth login\n'));
125
+ process.exit(1);
126
+ }
127
+ // Get base URL (prefer option, then profile, then default).
128
+ const baseUrl = options.url || profile.baseUrl || 'https://dashboard.decoupled.io';
129
+ console.log(chalk_1.default.blue('📋 Current Configuration:'));
130
+ console.log(chalk_1.default.gray(` Profile: ${profileName}`));
131
+ console.log(chalk_1.default.gray(` Base URL: ${baseUrl}`));
132
+ console.log(chalk_1.default.gray(` Token: ${token.substring(0, 15)}...\n`));
133
+ // Build MCP server config.
134
+ const mcpServerConfig = {
135
+ url: `${baseUrl}/api/mcp/sse`,
136
+ transport: 'sse',
137
+ headers: {
138
+ Authorization: `Bearer ${token}`,
139
+ },
140
+ };
141
+ // If show-only, just display and exit (before interactive prompt).
142
+ if (options.showOnly) {
143
+ console.log(chalk_1.default.cyan('📄 MCP Server Configuration:\n'));
144
+ console.log(JSON.stringify({
145
+ mcpServers: {
146
+ 'decoupled-platform': mcpServerConfig,
147
+ },
148
+ }, null, 2));
149
+ console.log('\n' + chalk_1.default.gray('Add this to your IDE MCP config file'));
150
+ console.log(chalk_1.default.gray('Claude Code: ~/Library/Application Support/Claude/claude_desktop_config.json'));
151
+ console.log(chalk_1.default.gray('Cursor: ~/Library/Application Support/Cursor/User/globalStorage/mcp-config.json\n'));
152
+ return;
153
+ }
154
+ // Ask which IDE to configure if not specified.
155
+ let ide = options.ide;
156
+ if (!ide) {
157
+ const { selectedIde } = await inquirer_1.default.prompt([
158
+ {
159
+ type: 'list',
160
+ name: 'selectedIde',
161
+ message: 'Which IDE do you want to configure?',
162
+ choices: [
163
+ { name: 'Claude Code (AI IDE from Anthropic)', value: 'claude-code' },
164
+ { name: 'Cursor (AI Code Editor)', value: 'cursor' },
165
+ ],
166
+ },
167
+ ]);
168
+ ide = selectedIde;
169
+ }
170
+ const ideName = ide === 'claude-code' ? 'Claude Code' : 'Cursor';
171
+ // Get IDE config path.
172
+ const ideConfigPath = getIdeConfigPath(ide);
173
+ console.log(chalk_1.default.blue(`🔍 ${ideName} config location:`));
174
+ console.log(chalk_1.default.gray(` ${ideConfigPath}\n`));
175
+ // Check if IDE config exists.
176
+ if (!fs.existsSync(ideConfigPath)) {
177
+ console.log(chalk_1.default.yellow(`⚠️ ${ideName} config not found.`));
178
+ const { proceed } = await inquirer_1.default.prompt([
179
+ {
180
+ type: 'confirm',
181
+ name: 'proceed',
182
+ message: `Create new ${ideName} config?`,
183
+ default: true,
184
+ },
185
+ ]);
186
+ if (!proceed) {
187
+ console.log(chalk_1.default.gray(`\nTo configure manually, add this to your ${ideName} config:`));
188
+ console.log(JSON.stringify({
189
+ mcpServers: {
190
+ 'decoupled-platform': mcpServerConfig,
191
+ },
192
+ }, null, 2));
193
+ console.log('');
194
+ return;
195
+ }
196
+ }
197
+ // Read existing config.
198
+ const ideConfig = readIdeConfig(ideConfigPath);
199
+ // Check if decoupled-platform already exists.
200
+ if (ideConfig.mcpServers?.['decoupled-platform']) {
201
+ console.log(chalk_1.default.yellow(`⚠️ decoupled-platform MCP server already configured in ${ideName}.\n`));
202
+ const { overwrite } = await inquirer_1.default.prompt([
203
+ {
204
+ type: 'confirm',
205
+ name: 'overwrite',
206
+ message: 'Overwrite existing configuration?',
207
+ default: false,
208
+ },
209
+ ]);
210
+ if (!overwrite) {
211
+ console.log(chalk_1.default.gray('Configuration unchanged.'));
212
+ return;
213
+ }
214
+ }
215
+ // Add or update decoupled-platform config.
216
+ ideConfig.mcpServers = ideConfig.mcpServers || {};
217
+ ideConfig.mcpServers['decoupled-platform'] = mcpServerConfig;
218
+ // Write config.
219
+ writeIdeConfig(ideConfigPath, ideConfig);
220
+ console.log(chalk_1.default.green(`✅ MCP server configured successfully for ${ideName}!\n`));
221
+ console.log(chalk_1.default.cyan('📝 Configuration added:'));
222
+ console.log(chalk_1.default.gray(` Server: decoupled-platform`));
223
+ console.log(chalk_1.default.gray(` URL: ${baseUrl}/api/mcp/sse`));
224
+ console.log(chalk_1.default.gray(` Transport: SSE\n`));
225
+ console.log(chalk_1.default.yellow('🔄 Next Steps:'));
226
+ if (ide === 'claude-code') {
227
+ console.log(chalk_1.default.gray(` 1. Restart Claude Code for changes to take effect`));
228
+ console.log(chalk_1.default.gray(` 2. Open MCP panel (look for plug icon or MCP menu)`));
229
+ console.log(chalk_1.default.gray(` 3. Verify "decoupled-platform" server is connected`));
230
+ console.log(chalk_1.default.gray(` 4. Try: "Show me all my Drupal spaces"\n`));
231
+ }
232
+ else {
233
+ console.log(chalk_1.default.gray(` 1. Restart Cursor for changes to take effect`));
234
+ console.log(chalk_1.default.gray(` 2. Open MCP panel (Cmd+Shift+P > "MCP: Show Servers")`));
235
+ console.log(chalk_1.default.gray(` 3. Verify "decoupled-platform" server is connected`));
236
+ console.log(chalk_1.default.gray(` 4. Try: "Show me all my Drupal spaces"\n`));
237
+ }
238
+ console.log(chalk_1.default.blue(`💡 Restart ${ideName}:`));
239
+ if (ide === 'claude-code') {
240
+ switch (process.platform) {
241
+ case 'darwin':
242
+ console.log(chalk_1.default.gray(' Quit and reopen Claude Code'));
243
+ break;
244
+ case 'win32':
245
+ console.log(chalk_1.default.gray(' Close and reopen from Start menu'));
246
+ break;
247
+ default:
248
+ console.log(chalk_1.default.gray(' Quit and reopen Claude Code'));
249
+ break;
250
+ }
251
+ }
252
+ else {
253
+ switch (process.platform) {
254
+ case 'darwin':
255
+ console.log(chalk_1.default.gray(' Cmd+Q to quit, then reopen Cursor'));
256
+ break;
257
+ case 'win32':
258
+ console.log(chalk_1.default.gray(' Alt+F4 to close, then reopen from Start menu'));
259
+ break;
260
+ default:
261
+ console.log(chalk_1.default.gray(' Quit and reopen Cursor'));
262
+ break;
263
+ }
264
+ }
265
+ console.log('');
266
+ }
267
+ catch (error) {
268
+ console.error(chalk_1.default.red('❌ Configuration failed:'), error instanceof Error ? error.message : String(error));
269
+ process.exit(1);
270
+ }
271
+ });
272
+ exports.mcpCommand
273
+ .command('status')
274
+ .description('Show current MCP configuration status')
275
+ .option('--ide <ide>', 'Check specific IDE: claude-code or cursor')
276
+ .action(async (options) => {
277
+ try {
278
+ console.log(chalk_1.default.bold('\n🤖 MCP Configuration Status\n'));
279
+ // Check if user is logged in.
280
+ const config = config_1.configManager.getConfig();
281
+ const profile = config_1.configManager.getCurrentProfile();
282
+ if (!profile) {
283
+ console.log(chalk_1.default.red('❌ Not logged in'));
284
+ console.log(chalk_1.default.gray(' Run: npx decoupled-cli auth login\n'));
285
+ return;
286
+ }
287
+ const token = await config_1.configManager.getToken(config.currentProfile);
288
+ console.log(chalk_1.default.blue('📋 Authentication:'));
289
+ console.log(chalk_1.default.gray(` Profile: ${config.currentProfile}`));
290
+ console.log(chalk_1.default.gray(` Token: ${token ? chalk_1.default.green('✅ Available') : chalk_1.default.red('❌ Missing')}`));
291
+ console.log(chalk_1.default.gray(` Base URL: ${profile.baseUrl}\n`));
292
+ // Check both IDEs or specific one.
293
+ const idesToCheck = options.ide ? [options.ide] : ['claude-code', 'cursor'];
294
+ for (const ide of idesToCheck) {
295
+ const ideName = ide === 'claude-code' ? 'Claude Code' : 'Cursor';
296
+ const ideConfigPath = getIdeConfigPath(ide);
297
+ console.log(chalk_1.default.blue(`📁 ${ideName}:`));
298
+ console.log(chalk_1.default.gray(` Config: ${ideConfigPath}`));
299
+ if (!fs.existsSync(ideConfigPath)) {
300
+ console.log(chalk_1.default.gray(` Status: ${chalk_1.default.yellow('⚠️ Not found')}`));
301
+ console.log(chalk_1.default.gray(` Run: npx decoupled-cli mcp configure --ide ${ide}\n`));
302
+ continue;
303
+ }
304
+ const ideConfig = readIdeConfig(ideConfigPath);
305
+ const hasMcpServers = ideConfig.mcpServers && Object.keys(ideConfig.mcpServers).length > 0;
306
+ const hasDecoupled = ideConfig.mcpServers?.['decoupled-platform'];
307
+ console.log(chalk_1.default.gray(` Status: ${chalk_1.default.green('✅ Found')}`));
308
+ console.log(chalk_1.default.gray(` MCP Servers: ${hasMcpServers ? Object.keys(ideConfig.mcpServers).length : 0}`));
309
+ console.log(chalk_1.default.gray(` decoupled-platform: ${hasDecoupled ? chalk_1.default.green('✅ Configured') : chalk_1.default.yellow('⚠️ Not configured')}\n`));
310
+ if (hasDecoupled) {
311
+ console.log(chalk_1.default.cyan('✨ MCP Server Details:'));
312
+ console.log(chalk_1.default.gray(` URL: ${ideConfig.mcpServers['decoupled-platform'].url}`));
313
+ console.log(chalk_1.default.gray(` Transport: ${ideConfig.mcpServers['decoupled-platform'].transport}`));
314
+ console.log(chalk_1.default.gray(` Token: ${ideConfig.mcpServers['decoupled-platform'].headers?.Authorization ? 'Configured' : 'Missing'}\n`));
315
+ }
316
+ else {
317
+ console.log(chalk_1.default.yellow('💡 To configure MCP:'));
318
+ console.log(chalk_1.default.gray(` npx decoupled-cli mcp configure --ide ${ide}\n`));
319
+ }
320
+ }
321
+ }
322
+ catch (error) {
323
+ console.error(chalk_1.default.red('❌ Status check failed:'), error instanceof Error ? error.message : String(error));
324
+ process.exit(1);
325
+ }
326
+ });
327
+ exports.mcpCommand
328
+ .command('remove')
329
+ .description('Remove decoupled.io MCP server from IDE config')
330
+ .option('--ide <ide>', 'Target IDE: claude-code or cursor')
331
+ .action(async (options) => {
332
+ try {
333
+ // Ask which IDE if not specified.
334
+ let ide = options.ide;
335
+ if (!ide) {
336
+ const { selectedIde } = await inquirer_1.default.prompt([
337
+ {
338
+ type: 'list',
339
+ name: 'selectedIde',
340
+ message: 'Which IDE do you want to remove MCP config from?',
341
+ choices: [
342
+ { name: 'Claude Code', value: 'claude-code' },
343
+ { name: 'Cursor', value: 'cursor' },
344
+ ],
345
+ },
346
+ ]);
347
+ ide = selectedIde;
348
+ }
349
+ const ideName = ide === 'claude-code' ? 'Claude Code' : 'Cursor';
350
+ const ideConfigPath = getIdeConfigPath(ide);
351
+ if (!fs.existsSync(ideConfigPath)) {
352
+ console.log(chalk_1.default.yellow(`⚠️ ${ideName} config not found. Nothing to remove.\n`));
353
+ return;
354
+ }
355
+ const ideConfig = readIdeConfig(ideConfigPath);
356
+ if (!ideConfig.mcpServers?.['decoupled-platform']) {
357
+ console.log(chalk_1.default.yellow(`⚠️ decoupled-platform not configured in ${ideName}. Nothing to remove.\n`));
358
+ return;
359
+ }
360
+ const { confirm } = await inquirer_1.default.prompt([
361
+ {
362
+ type: 'confirm',
363
+ name: 'confirm',
364
+ message: `Remove decoupled-platform from ${ideName} config?`,
365
+ default: false,
366
+ },
367
+ ]);
368
+ if (!confirm) {
369
+ console.log(chalk_1.default.gray('Operation cancelled.'));
370
+ return;
371
+ }
372
+ // Remove decoupled-platform.
373
+ delete ideConfig.mcpServers['decoupled-platform'];
374
+ // Write config.
375
+ writeIdeConfig(ideConfigPath, ideConfig);
376
+ console.log(chalk_1.default.green(`✅ MCP server removed from ${ideName} config\n`));
377
+ console.log(chalk_1.default.yellow(`🔄 Restart ${ideName} for changes to take effect\n`));
378
+ }
379
+ catch (error) {
380
+ console.error(chalk_1.default.red('❌ Remove failed:'), error instanceof Error ? error.message : String(error));
381
+ process.exit(1);
382
+ }
383
+ });
384
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,wDAAgC;AAChC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,0CAA8C;AAE9C,+CAA+C;AAC/C,SAAS,gBAAgB,CAAC,GAA6B;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAElC,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QAC1B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,EAAE,QAAQ;gBACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAC3G,KAAK,OAAO,EAAE,UAAU;gBACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;YAC/F,SAAS,QAAQ;gBACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;SACI,CAAC,CAAC,SAAS;QACd,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,EAAE,QAAQ;gBACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;YACzH,KAAK,OAAO,EAAE,UAAU;gBACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;YAC7G,SAAS,QAAQ;gBACf,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,SAAS,aAAa,CAAC,UAAkB;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;YACjF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,UAAU,SAAS,CAAC,CAAC;YACpD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;AAC5B,CAAC;AAED,oBAAoB;AACpB,SAAS,cAAc,CAAC,UAAkB,EAAE,MAAW;IACrD,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5B,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAEY,QAAA,UAAU,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,2DAA2D,CAAC,CAAC;AAE5E,kBAAU;KACP,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,SAAS,CAAC;KAC7D,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAEtE,8BAA8B;QAC9B,MAAM,MAAM,GAAG,sBAAa,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,WAAW,aAAa,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,sBAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4DAA4D;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,IAAI,gCAAgC,CAAC;QAEnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEpE,2BAA2B;QAC3B,MAAM,eAAe,GAAG;YACtB,GAAG,EAAE,GAAG,OAAO,cAAc;YAC7B,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC;QAEF,mEAAmE;QACnE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,UAAU,EAAE;oBACV,oBAAoB,EAAE,eAAe;iBACtC;aACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC,CAAC;YACxG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC,CAAC;YAC7G,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,IAAI,GAAG,GAA6B,OAAO,CAAC,GAAG,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC5C;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,qCAAqC;oBAC9C,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,qCAAqC,EAAE,KAAK,EAAE,aAAa,EAAE;wBACrE,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACrD;iBACF;aACF,CAAC,CAAC;YACH,GAAG,GAAG,WAAW,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEjE,uBAAuB;QACvB,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,CAAC,CAAC;QAEjD,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,OAAO,oBAAoB,CAAC,CAAC,CAAC;YAE9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBACxC;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,cAAc,OAAO,UAAU;oBACxC,OAAO,EAAE,IAAI;iBACd;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,OAAO,UAAU,CAAC,CAAC,CAAC;gBACxF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,UAAU,EAAE;wBACV,oBAAoB,EAAE,eAAe;qBACtC;iBACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAE/C,8CAA8C;QAC9C,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,2DAA2D,OAAO,KAAK,CAAC,CAAC,CAAC;YAEnG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,mCAAmC;oBAC5C,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC;QAClD,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,GAAG,eAAe,CAAC;QAE7D,gBAAgB;QAChB,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4CAA4C,OAAO,KAAK,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,OAAO,cAAc,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACzE,CAAC;aACI,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,OAAO,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACzB,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,OAAO;oBACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBAC/D,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;oBAC1D,MAAM;YACV,CAAC;QACH,CAAC;aACI,CAAC;YACJ,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACzB,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,OAAO;oBACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;oBAC3E,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;oBACrD,MAAM;YACV,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAElB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,kBAAU;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,2CAA2C,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAE3D,8BAA8B;QAC9B,MAAM,MAAM,GAAG,sBAAa,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,sBAAa,CAAC,iBAAiB,EAAE,CAAC;QAElD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,sBAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;QAE7D,mCAAmC;QACnC,MAAM,WAAW,GAAoC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE7G,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjE,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,aAAa,EAAE,CAAC,CAAC,CAAC;YAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,eAAK,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iDAAiD,GAAG,IAAI,CAAC,CAAC,CAAC;gBAClF,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3F,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,CAAC;YAElE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3G,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,YAAY,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;YAEvI,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBACjG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YACzI,CAAC;iBACI,CAAC;gBACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4CAA4C,GAAG,IAAI,CAAC,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IAEH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,kBAAU;KACP,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,kCAAkC;QAClC,IAAI,GAAG,GAA6B,OAAO,CAAC,GAAG,CAAC;QAChD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;gBAC5C;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,kDAAkD;oBAC3D,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;wBAC7C,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACpC;iBACF;aACF,CAAC,CAAC;YACH,GAAG,GAAG,WAAW,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjE,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,OAAO,yCAAyC,CAAC,CAAC,CAAC;YACnF,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAE/C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4CAA4C,OAAO,wBAAwB,CAAC,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACxC;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,kCAAkC,OAAO,UAAU;gBAC5D,OAAO,EAAE,KAAK;aACf;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,OAAO,SAAS,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAElD,gBAAgB;QAChB,cAAc,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,OAAO,WAAW,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,OAAO,+BAA+B,CAAC,CAAC,CAAC;IAElF,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -14,8 +14,8 @@ const usage_1 = require("./commands/usage");
14
14
  const org_1 = require("./commands/org");
15
15
  const health_1 = require("./commands/health");
16
16
  const config_1 = require("./commands/config");
17
- const download_1 = require("./commands/download");
18
17
  const content_1 = require("./commands/content");
18
+ const mcp_1 = require("./commands/mcp");
19
19
  // Read version from package.json
20
20
  const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../package.json'), 'utf-8'));
21
21
  const program = new commander_1.Command();
@@ -36,8 +36,8 @@ program.addCommand(usage_1.usageCommand);
36
36
  program.addCommand(org_1.orgCommand);
37
37
  program.addCommand(health_1.healthCommand);
38
38
  program.addCommand(config_1.configCommand);
39
- program.addCommand(download_1.downloadCommand);
40
39
  program.addCommand(content_1.contentCommand);
40
+ program.addCommand(mcp_1.mcpCommand);
41
41
  // Handle unknown commands
42
42
  program.on('command:*', () => {
43
43
  console.error(chalk_1.default.red(`Invalid command: ${program.args.join(' ')}`));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,2BAAkC;AAClC,+BAA4B;AAC5B,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,wCAA4C;AAC5C,8CAAkD;AAClD,8CAAkD;AAClD,kDAAsD;AACtD,gDAAoD;AAEpD,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAE1D,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,0BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AAEnC,0BAA0B;AAC1B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,oCAAoC;AACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,2BAAkC;AAClC,+BAA4B;AAC5B,0CAA8C;AAC9C,8CAAkD;AAClD,4CAAgD;AAChD,wCAA4C;AAC5C,8CAAkD;AAClD,8CAAkD;AAClD,gDAAoD;AACpD,wCAA4C;AAE5C,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAC1D,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,eAAe,CAAC;KACrB,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;KAClD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,SAAS,EAAE,+BAA+B,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,YAAY,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAE1D,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,kBAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,wBAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAE/B,0BAA0B;AAC1B,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,oCAAoC;AACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "decoupled-cli",
3
- "version": "2.3.2",
4
- "description": "Command-line interface for Decoupled Drupal API management",
3
+ "version": "2.4.1",
4
+ "description": "Command-line interface for managing Decoupled Drupal spaces, deploying content, and automating workflows. Features AI-powered quick-start, content import, and CI/CD integration.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
7
7
  "decoupled-cli": "bin/decoupled-cli"
@@ -15,13 +15,25 @@
15
15
  "prepublishOnly": "npm run build"
16
16
  },
17
17
  "keywords": [
18
- "drupalcloud",
18
+ "decoupled",
19
+ "drupal",
20
+ "headless",
21
+ "cms",
19
22
  "cli",
20
23
  "api",
21
- "drupal",
22
- "cloud"
24
+ "graphql",
25
+ "jsonapi",
26
+ "cloud",
27
+ "automation",
28
+ "ci-cd",
29
+ "content-management",
30
+ "ai-powered",
31
+ "mcp",
32
+ "model-context-protocol",
33
+ "claude-code",
34
+ "cursor"
23
35
  ],
24
- "author": "Decoupled Drupal",
36
+ "author": "Decoupled.io",
25
37
  "license": "MIT",
26
38
  "dependencies": {
27
39
  "@types/node-fetch": "^2.6.13",