@yama662607/agent-config-sync 0.2.0 → 0.3.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.
@@ -3,11 +3,14 @@ const require = createRequire(import.meta.url);
3
3
  // @ts-ignore - enquirer uses CommonJS exports
4
4
  const AutoComplete = require('enquirer/lib/prompts/autocomplete.js');
5
5
  import { listSkills } from '../catalog.js';
6
+ /** Special return value indicating user wants to go back */
7
+ export const SKILL_BACK = '__SKILL_BACK__';
6
8
  /**
7
9
  * Prompt user to select skills from catalog.
8
- * @returns Selected skill IDs
10
+ * @param allowBack - Whether to show "Back" option (default: false)
11
+ * @returns Selected skill IDs, or [SKILL_BACK] if user chose to go back
9
12
  */
10
- export async function promptSkills() {
13
+ export async function promptSkills(allowBack = false) {
11
14
  const skills = await listSkills();
12
15
  if (skills.length === 0) {
13
16
  console.log('No skill entries in catalog.\n');
@@ -22,9 +25,20 @@ export async function promptSkills() {
22
25
  value: skill.id,
23
26
  hint: skill.description.slice(0, 50)
24
27
  }));
28
+ // Add back option if allowed
29
+ if (allowBack) {
30
+ choices.unshift({
31
+ name: SKILL_BACK,
32
+ message: '← Back to MCP selection',
33
+ value: SKILL_BACK,
34
+ hint: 'Return to previous step'
35
+ });
36
+ }
25
37
  const prompt = new AutoComplete({
26
38
  name: 'skills',
27
- message: 'Select skills (type to search)',
39
+ message: allowBack
40
+ ? 'Select skills (type to search, or select ← Back to return)'
41
+ : 'Select skills (type to search)',
28
42
  multiple: true,
29
43
  choices: choices,
30
44
  limit: 10,
@@ -39,6 +53,9 @@ export async function promptSkills() {
39
53
  // Simple fuzzy search - matches if input is substring of name or message
40
54
  const lowerInput = input.toLowerCase();
41
55
  return choices.filter(choice => {
56
+ // Always show back option when filtering
57
+ if (choice.name === SKILL_BACK)
58
+ return true;
42
59
  const name = (choice.name || '').toLowerCase();
43
60
  const message = (choice.message || '').toLowerCase();
44
61
  return name.includes(lowerInput) || message.includes(lowerInput);
@@ -47,6 +64,10 @@ export async function promptSkills() {
47
64
  });
48
65
  try {
49
66
  const result = await prompt.run();
67
+ // If back was selected, return special value
68
+ if (result && result.includes(SKILL_BACK)) {
69
+ return [SKILL_BACK];
70
+ }
50
71
  return result || [];
51
72
  }
52
73
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,8CAA8C;AAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,KAAK,CAAC,EAAE;QACd,OAAO,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE;QACtC,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KACrC,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,gCAAgC;QACzC,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,EAAE;QACT,iEAAiE;QACjE,OAAO,EAAE;YACP,IAAI,EAAE;gBACJ,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,IAAI;aACR;SACF;QACD,OAAO,EAAE,CAAC,KAAa,EAAE,OAAc,EAAE,EAAE;YACzC,yEAAyE;YACzE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Catalog TUI
3
+ *
4
+ * Interactive catalog browser with list view, details, and actions.
5
+ */
6
+ import type { TuiState, ScreenAction } from './tui-base.js';
7
+ /**
8
+ * Catalog TUI Screen
9
+ */
10
+ export declare class CatalogTuiScreen {
11
+ name: "catalog";
12
+ render(state: TuiState): Promise<TuiState | null>;
13
+ private renderHeader;
14
+ private selectTab;
15
+ private renderTab;
16
+ private renderMcpCatalog;
17
+ private renderSkillCatalog;
18
+ private renderRegistry;
19
+ private showMcpDetails;
20
+ private showSkillDetails;
21
+ private addMcpToCatalog;
22
+ private importSkill;
23
+ private addMcpToProject;
24
+ private addSkillToProject;
25
+ private deleteMcpFromCatalog;
26
+ private deleteSkillFromCatalog;
27
+ private pressEnter;
28
+ handleAction(state: TuiState, action: ScreenAction): Promise<TuiState>;
29
+ }
@@ -0,0 +1,395 @@
1
+ /**
2
+ * Catalog TUI
3
+ *
4
+ * Interactive catalog browser with list view, details, and actions.
5
+ */
6
+ import { createRequire } from 'node:module';
7
+ const require = createRequire(import.meta.url);
8
+ // @ts-ignore - enquirer uses CommonJS exports
9
+ const { Select } = require('enquirer');
10
+ import { listMcps, listSkills } from '../catalog.js';
11
+ /**
12
+ * Catalog TUI Screen
13
+ */
14
+ export class CatalogTuiScreen {
15
+ name = 'catalog';
16
+ async render(state) {
17
+ console.clear();
18
+ this.renderHeader();
19
+ // Let user select tab first
20
+ const tab = await this.selectTab();
21
+ if (!tab)
22
+ return null; // Exit
23
+ // Main loop for this tab
24
+ while (true) {
25
+ const action = await this.renderTab(tab, state);
26
+ if (action === 'exit')
27
+ return null;
28
+ if (action === 'back')
29
+ break;
30
+ // Handle other actions...
31
+ }
32
+ return state;
33
+ }
34
+ renderHeader() {
35
+ console.log('╔═══════════════════════════════════════════════════════════════════╗');
36
+ console.log('║ 📚 Catalog Browser ║');
37
+ console.log('╚═══════════════════════════════════════════════════════════════════╝');
38
+ console.log();
39
+ }
40
+ async selectTab() {
41
+ const prompt = new Select({
42
+ name: 'tab',
43
+ message: 'Select catalog section:',
44
+ choices: [
45
+ { name: 'mcp', message: '📦 MCP Servers' },
46
+ { name: 'skill', message: '📚 Skills' },
47
+ { name: 'registry', message: '🔍 Skill Registry' },
48
+ { name: 'exit', message: '🚪 Exit' },
49
+ ],
50
+ actions: {
51
+ ctrl: { n: 'down', p: 'up' }
52
+ }
53
+ });
54
+ try {
55
+ const result = await prompt.run();
56
+ if (result === 'exit')
57
+ return null;
58
+ return result;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ async renderTab(tab, state) {
65
+ console.log(`\n─── ${tab.toUpperCase()} CATALOG ───\n`);
66
+ switch (tab) {
67
+ case 'mcp':
68
+ return await this.renderMcpCatalog(state);
69
+ case 'skill':
70
+ return await this.renderSkillCatalog(state);
71
+ case 'registry':
72
+ return await this.renderRegistry(state);
73
+ }
74
+ }
75
+ async renderMcpCatalog(state) {
76
+ const mcps = await listMcps();
77
+ if (mcps.length === 0) {
78
+ console.log('No MCP entries in catalog.');
79
+ console.log('\nTip: Use "acsync catalog mcp add <package>" to add entries.');
80
+ await this.pressEnter();
81
+ return 'back';
82
+ }
83
+ // Create choices with actions
84
+ const choices = mcps.map(mcp => ({
85
+ name: mcp.id,
86
+ message: `📦 ${mcp.displayName || mcp.id}`,
87
+ value: mcp.id,
88
+ hint: mcp.description?.slice(0, 40)
89
+ }));
90
+ choices.push({ name: 'add', message: '➕ Add new MCP to catalog', value: '__add__', hint: '' }, { name: 'back', message: '← Back to tabs', value: '__back__', hint: '' }, { name: 'exit', message: '🚪 Exit', value: '__exit__', hint: '' });
91
+ const prompt = new Select({
92
+ name: 'mcp',
93
+ message: 'Select MCP (or action):',
94
+ choices,
95
+ actions: {
96
+ ctrl: { n: 'down', p: 'up' }
97
+ },
98
+ footer: 'Use ↑↓ to navigate, Enter to select'
99
+ });
100
+ try {
101
+ const selected = await prompt.run();
102
+ if (selected === '__exit__')
103
+ return 'exit';
104
+ if (selected === '__back__')
105
+ return 'back';
106
+ if (selected === '__add__') {
107
+ await this.addMcpToCatalog();
108
+ return 'back'; // Return to refresh
109
+ }
110
+ // Show MCP details and actions
111
+ return await this.showMcpDetails(selected, mcps.find(m => m.id === selected), state);
112
+ }
113
+ catch {
114
+ return 'exit';
115
+ }
116
+ }
117
+ async renderSkillCatalog(state) {
118
+ const skills = await listSkills();
119
+ if (skills.length === 0) {
120
+ console.log('No skill entries in catalog.');
121
+ console.log('\nTip: Use "acsync catalog skill import <path>" to add skills.');
122
+ await this.pressEnter();
123
+ return 'back';
124
+ }
125
+ const choices = skills.map(skill => ({
126
+ name: skill.id,
127
+ message: `📚 ${skill.displayName || skill.id}`,
128
+ value: skill.id,
129
+ hint: skill.description?.slice(0, 40)
130
+ }));
131
+ choices.push({ name: 'import', message: '📥 Import local skill', value: '__import__', hint: '' }, { name: 'back', message: '← Back to tabs', value: '__back__', hint: '' }, { name: 'exit', message: '🚪 Exit', value: '__exit__', hint: '' });
132
+ const prompt = new Select({
133
+ name: 'skill',
134
+ message: 'Select skill (or action):',
135
+ choices,
136
+ actions: {
137
+ ctrl: { n: 'down', p: 'up' }
138
+ }
139
+ });
140
+ try {
141
+ const selected = await prompt.run();
142
+ if (selected === '__exit__')
143
+ return 'exit';
144
+ if (selected === '__back__')
145
+ return 'back';
146
+ if (selected === '__import__') {
147
+ await this.importSkill();
148
+ return 'back';
149
+ }
150
+ // Show skill details and actions
151
+ return await this.showSkillDetails(selected, skills.find(s => s.id === selected), state);
152
+ }
153
+ catch {
154
+ return 'exit';
155
+ }
156
+ }
157
+ async renderRegistry(state) {
158
+ const { prompt } = await import('enquirer');
159
+ console.log('Search skills.directory registry...\n');
160
+ try {
161
+ const response = await prompt({
162
+ type: 'input',
163
+ name: 'query',
164
+ message: 'Enter search query (or press Enter to go back):'
165
+ });
166
+ if (!response.query)
167
+ return 'back';
168
+ // Search registry (delegate to existing CLI)
169
+ const { catalogSkillSearch } = await import('../cli-catalog.js');
170
+ await catalogSkillSearch(response.query);
171
+ await this.pressEnter();
172
+ return 'back';
173
+ }
174
+ catch {
175
+ return 'back';
176
+ }
177
+ }
178
+ async showMcpDetails(id, mcp, state) {
179
+ console.clear();
180
+ this.renderHeader();
181
+ console.log(`\n📦 ${mcp.displayName || id}`);
182
+ console.log('─'.repeat(60));
183
+ console.log(`ID: ${mcp.id}`);
184
+ console.log(`Description: ${mcp.description || 'No description'}`);
185
+ if (mcp.recipe) {
186
+ console.log('\nConfiguration:');
187
+ if (mcp.recipe.url) {
188
+ console.log(` Transport: HTTP/SSE`);
189
+ console.log(` URL: ${mcp.recipe.url}`);
190
+ }
191
+ else if (mcp.recipe.command) {
192
+ console.log(` Transport: stdio`);
193
+ console.log(` Command: ${mcp.recipe.command}`);
194
+ if (mcp.recipe.args)
195
+ console.log(` Args: ${JSON.stringify(mcp.recipe.args)}`);
196
+ }
197
+ }
198
+ console.log('\n' + '─'.repeat(60));
199
+ const prompt = new Select({
200
+ name: 'action',
201
+ message: 'What would you like to do?',
202
+ choices: [
203
+ { name: 'add', message: '➕ Add to project' },
204
+ { name: 'delete', message: '🗑️ Delete from catalog' },
205
+ { name: 'back', message: '← Back to list' },
206
+ { name: 'exit', message: '🚪 Exit' },
207
+ ],
208
+ actions: {
209
+ ctrl: { n: 'down', p: 'up' }
210
+ }
211
+ });
212
+ try {
213
+ const action = await prompt.run();
214
+ if (action === 'exit')
215
+ return 'exit';
216
+ if (action === 'back')
217
+ return 'back';
218
+ if (action === 'add') {
219
+ await this.addMcpToProject(mcp, state);
220
+ }
221
+ if (action === 'delete') {
222
+ await this.deleteMcpFromCatalog(id);
223
+ }
224
+ return 'back'; // Return to list
225
+ }
226
+ catch {
227
+ return 'exit';
228
+ }
229
+ }
230
+ async showSkillDetails(id, skill, state) {
231
+ console.clear();
232
+ this.renderHeader();
233
+ console.log(`\n📚 ${skill.displayName || id}`);
234
+ console.log('─'.repeat(60));
235
+ console.log(`ID: ${skill.id}`);
236
+ console.log(`Description: ${skill.description || 'No description'}`);
237
+ console.log('\n' + '─'.repeat(60));
238
+ const prompt = new Select({
239
+ name: 'action',
240
+ message: 'What would you like to do?',
241
+ choices: [
242
+ { name: 'add', message: '➕ Add to project' },
243
+ { name: 'delete', message: '🗑️ Delete from catalog' },
244
+ { name: 'back', message: '← Back to list' },
245
+ { name: 'exit', message: '🚪 Exit' },
246
+ ],
247
+ actions: {
248
+ ctrl: { n: 'down', p: 'up' }
249
+ }
250
+ });
251
+ try {
252
+ const action = await prompt.run();
253
+ if (action === 'exit')
254
+ return 'exit';
255
+ if (action === 'back')
256
+ return 'back';
257
+ if (action === 'add') {
258
+ await this.addSkillToProject(skill, state);
259
+ }
260
+ if (action === 'delete') {
261
+ await this.deleteSkillFromCatalog(id);
262
+ }
263
+ return 'back';
264
+ }
265
+ catch {
266
+ return 'exit';
267
+ }
268
+ }
269
+ async addMcpToCatalog() {
270
+ const { prompt } = await import('enquirer');
271
+ try {
272
+ const response = await prompt({
273
+ type: 'input',
274
+ name: 'packageId',
275
+ message: 'Enter npm package ID (e.g., @modelcontextprotocol/server-github):'
276
+ });
277
+ if (!response.packageId)
278
+ return;
279
+ const { catalogMcpAdd } = await import('../cli-catalog.js');
280
+ await catalogMcpAdd({ packageId: response.packageId });
281
+ console.log('\n✅ Added to catalog!');
282
+ }
283
+ catch (error) {
284
+ console.error(`\n❌ Error: ${error.message}`);
285
+ }
286
+ await this.pressEnter();
287
+ }
288
+ async importSkill() {
289
+ const { prompt } = await import('enquirer');
290
+ try {
291
+ const response = await prompt({
292
+ type: 'input',
293
+ name: 'path',
294
+ message: 'Enter skill directory path:'
295
+ });
296
+ if (!response.path)
297
+ return;
298
+ const { catalogSkillImport } = await import('../cli-catalog.js');
299
+ await catalogSkillImport({ path: response.path });
300
+ console.log('\n✅ Imported to catalog!');
301
+ }
302
+ catch (error) {
303
+ console.error(`\n❌ Error: ${error.message}`);
304
+ }
305
+ await this.pressEnter();
306
+ }
307
+ async addMcpToProject(mcp, state) {
308
+ // Select targets
309
+ const { promptTargets } = await import('../prompts/index.js');
310
+ const targets = await promptTargets([state.target]);
311
+ // Add MCP
312
+ const { mcpAdd } = await import('../cli-mcp.js');
313
+ try {
314
+ await mcpAdd({
315
+ packageId: mcp.id,
316
+ targets,
317
+ noRegister: true // Already in catalog
318
+ });
319
+ console.log('\n✅ Added to project!');
320
+ }
321
+ catch (error) {
322
+ console.error(`\n❌ Error: ${error.message}`);
323
+ }
324
+ await this.pressEnter();
325
+ }
326
+ async addSkillToProject(skill, state) {
327
+ // Select targets
328
+ const { promptTargets } = await import('../prompts/index.js');
329
+ const targets = await promptTargets([state.target]);
330
+ // Add skill
331
+ const { skillAdd } = await import('../cli-skill.js');
332
+ try {
333
+ await skillAdd({
334
+ skillId: skill.id,
335
+ targets,
336
+ noRegister: true // Already in catalog
337
+ });
338
+ console.log('\n✅ Added to project!');
339
+ }
340
+ catch (error) {
341
+ console.error(`\n❌ Error: ${error.message}`);
342
+ }
343
+ await this.pressEnter();
344
+ }
345
+ async deleteMcpFromCatalog(id) {
346
+ const { prompt } = await import('enquirer');
347
+ try {
348
+ const confirm = await prompt({
349
+ type: 'confirm',
350
+ name: 'confirmed',
351
+ message: `Delete "${id}" from catalog?`,
352
+ initial: false
353
+ });
354
+ if (!confirm)
355
+ return;
356
+ const { catalogMcpRemove } = await import('../cli-catalog.js');
357
+ await catalogMcpRemove(id);
358
+ console.log('\n✅ Deleted from catalog!');
359
+ }
360
+ catch (error) {
361
+ console.error(`\n❌ Error: ${error.message}`);
362
+ }
363
+ await this.pressEnter();
364
+ }
365
+ async deleteSkillFromCatalog(id) {
366
+ const { prompt } = await import('enquirer');
367
+ try {
368
+ const confirm = await prompt({
369
+ type: 'confirm',
370
+ name: 'confirmed',
371
+ message: `Delete "${id}" from catalog?`,
372
+ initial: false
373
+ });
374
+ if (!confirm)
375
+ return;
376
+ const { catalogSkillRemove } = await import('../cli-catalog.js');
377
+ await catalogSkillRemove(id);
378
+ console.log('\n✅ Deleted from catalog!');
379
+ }
380
+ catch (error) {
381
+ console.error(`\n❌ Error: ${error.message}`);
382
+ }
383
+ await this.pressEnter();
384
+ }
385
+ pressEnter() {
386
+ return new Promise(resolve => {
387
+ process.stdin.once('data', () => resolve());
388
+ });
389
+ }
390
+ handleAction(state, action) {
391
+ // Implement action handling
392
+ return Promise.resolve(state);
393
+ }
394
+ }
395
+ //# sourceMappingURL=catalog-tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-tui.js","sourceRoot":"","sources":["../../src/tui/catalog-tui.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,8CAA8C;AAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMrD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,IAAI,GAAG,SAAkB,CAAC;IAE1B,KAAK,CAAC,MAAM,CAAC,KAAe;QAC1B,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,4BAA4B;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,OAAO;QAE9B,yBAAyB;QACzB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACnC,IAAI,MAAM,KAAK,MAAM;gBAAE,MAAM;YAC7B,0BAA0B;QAC5B,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,YAAY;QAClB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,yBAAyB;YAClC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC1C,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE;gBACvC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE;gBAClD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;aACrC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACnC,OAAO,MAAoB,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,GAAe,EAAE,KAAe;QACtD,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAExD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,KAAK;gBACR,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,OAAO;gBACV,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC9C,KAAK,UAAU;gBACb,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAe;QAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,8BAA8B;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,GAAG,CAAC,EAAE;YACZ,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,EAAE,EAAE;YAC1C,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACpC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,IAAI,CACV,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAChF,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EACxE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAClE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,yBAAyB;YAClC,OAAO;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7B;YACD,MAAM,EAAE,qCAAqC;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAEpC,IAAI,QAAQ,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC3C,IAAI,QAAQ,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC3C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,CAAC,oBAAoB;YACrC,CAAC;YAED,+BAA+B;YAC/B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAE,EAAE,KAAK,CAAC,CAAC;QACxF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,KAAe;QAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,EAAE;YACd,OAAO,EAAE,MAAM,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,EAAE;YAC9C,KAAK,EAAE,KAAK,CAAC,EAAE;YACf,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACtC,CAAC,CAAC,CAAC;QAEJ,OAAO,CAAC,IAAI,CACV,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,EACnF,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EACxE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAClE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,2BAA2B;YACpC,OAAO;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAEpC,IAAI,QAAQ,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC3C,IAAI,QAAQ,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC;YAC3C,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC9B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,iCAAiC;YACjC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAE,EAAE,KAAK,CAAC,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAe;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;gBAC5B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,iDAAiD;aAC3D,CAAsB,CAAC;YAExB,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAAE,OAAO,MAAM,CAAC;YAEnC,6CAA6C;YAC7C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEzC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,GAAoB,EAAE,KAAe;QAC5E,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC,CAAC;QAEnE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChD,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE;gBAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE;gBACvD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;aACrC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAElC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,MAAM,CAAC,CAAC,iBAAiB;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAAU,EAAE,KAAwB,EAAE,KAAe;QAClF,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAAC,CAAC;QAErE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE;gBAC5C,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,0BAA0B,EAAE;gBACvD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE;gBAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;aACrC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;YAElC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;YACrC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;gBAC5B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,mEAAmE;aAC7E,CAA0B,CAAC;YAE5B,IAAI,CAAC,QAAQ,CAAC,SAAS;gBAAE,OAAO;YAEhC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC5D,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;gBAC5B,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,6BAA6B;aACvC,CAAqB,CAAC;YAEvB,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAAE,OAAO;YAE3B,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,GAAoB,EAAE,KAAe;QACjE,iBAAiB;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpD,UAAU;QACV,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC;gBACX,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,qBAAqB;aACvC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAwB,EAAE,KAAe;QACvE,iBAAiB;QACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpD,YAAY;QACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC;gBACb,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,qBAAqB;aACvC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,EAAU;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,WAAW,EAAE,iBAAiB;gBACvC,OAAO,EAAE,KAAK;aACf,CAA2B,CAAC;YAE7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC/D,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,EAAU;QAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;gBAC3B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,WAAW,EAAE,iBAAiB;gBACvC,OAAO,EAAE,KAAK;aACf,CAA2B,CAAC;YAE7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjE,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,UAAU;QAChB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,KAAe,EAAE,MAAoB;QAChD,4BAA4B;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TUI Module Entry Point
3
+ */
4
+ export { TuiApp } from './tui-base.js';
5
+ export { CatalogTuiScreen } from './catalog-tui.js';
6
+ export { McpTuiScreen } from './mcp-tui.js';
7
+ export { SkillTuiScreen } from './skill-tui.js';
8
+ export type { TuiState, ScreenAction, ScreenName } from './tui-base.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * TUI Module Entry Point
3
+ */
4
+ export { TuiApp } from './tui-base.js';
5
+ export { CatalogTuiScreen } from './catalog-tui.js';
6
+ export { McpTuiScreen } from './mcp-tui.js';
7
+ export { SkillTuiScreen } from './skill-tui.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * MCP Project TUI
3
+ *
4
+ * Manage MCP servers for the current project with visual status display.
5
+ */
6
+ import type { TuiState, ScreenAction } from './tui-base.js';
7
+ /**
8
+ * MCP TUI Screen
9
+ */
10
+ export declare class McpTuiScreen {
11
+ name: "mcp";
12
+ render(state: TuiState): Promise<TuiState | null>;
13
+ private renderHeader;
14
+ private getDefaultConfigPath;
15
+ private renderMain;
16
+ private renderStatusTable;
17
+ private handleSwitchTarget;
18
+ private handleAdd;
19
+ private addToProject;
20
+ private addFromNpm;
21
+ private addCustom;
22
+ private handleServerAction;
23
+ private toggleServer;
24
+ private removeServer;
25
+ private pressEnter;
26
+ handleAction(state: TuiState, action: ScreenAction): Promise<TuiState>;
27
+ }