bc-code-intelligence-mcp 1.4.0 โ†’ 1.4.2

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 (51) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +86 -43
  4. package/dist/index.js.map +1 -1
  5. package/dist/layers/base-layer.d.ts +26 -0
  6. package/dist/layers/base-layer.d.ts.map +1 -1
  7. package/dist/layers/base-layer.js +54 -0
  8. package/dist/layers/base-layer.js.map +1 -1
  9. package/dist/layers/embedded-layer.d.ts.map +1 -1
  10. package/dist/layers/embedded-layer.js.map +1 -1
  11. package/dist/services/multi-content-layer-service.d.ts.map +1 -1
  12. package/dist/services/multi-content-layer-service.js +36 -15
  13. package/dist/services/multi-content-layer-service.js.map +1 -1
  14. package/dist/tools/core-tools.d.ts +26 -0
  15. package/dist/tools/core-tools.d.ts.map +1 -0
  16. package/dist/{streamlined-tools.js โ†’ tools/core-tools.js} +30 -13
  17. package/dist/tools/core-tools.js.map +1 -0
  18. package/dist/tools/handoff-tools.d.ts +37 -0
  19. package/dist/tools/handoff-tools.d.ts.map +1 -0
  20. package/dist/tools/handoff-tools.js +265 -0
  21. package/dist/tools/handoff-tools.js.map +1 -0
  22. package/dist/tools/index.d.ts +61 -0
  23. package/dist/tools/index.d.ts.map +1 -0
  24. package/dist/tools/index.js +75 -0
  25. package/dist/tools/index.js.map +1 -0
  26. package/dist/tools/onboarding-tools.d.ts +35 -0
  27. package/dist/tools/onboarding-tools.d.ts.map +1 -0
  28. package/dist/tools/onboarding-tools.js +243 -0
  29. package/dist/tools/onboarding-tools.js.map +1 -0
  30. package/dist/tools/specialist-tools.d.ts.map +1 -1
  31. package/dist/tools/specialist-tools.js +6 -1
  32. package/dist/tools/specialist-tools.js.map +1 -1
  33. package/dist/types/bc-knowledge.d.ts +8 -8
  34. package/dist/types/config-types.d.ts +4 -4
  35. package/dist/types/config-types.d.ts.map +1 -1
  36. package/dist/types/config-types.js +1 -1
  37. package/dist/types/config-types.js.map +1 -1
  38. package/embedded-knowledge/domains/chris-config/knowledge-content-creation.md +437 -0
  39. package/embedded-knowledge/domains/chris-config/multi-team-layer-configuration.md +302 -0
  40. package/package.json +8 -11
  41. package/dist/services/agent-onboarding-service.d.ts +0 -45
  42. package/dist/services/agent-onboarding-service.d.ts.map +0 -1
  43. package/dist/services/agent-onboarding-service.js +0 -372
  44. package/dist/services/agent-onboarding-service.js.map +0 -1
  45. package/dist/services/specialist-handoff-service.d.ts +0 -85
  46. package/dist/services/specialist-handoff-service.d.ts.map +0 -1
  47. package/dist/services/specialist-handoff-service.js +0 -492
  48. package/dist/services/specialist-handoff-service.js.map +0 -1
  49. package/dist/streamlined-tools.d.ts +0 -328
  50. package/dist/streamlined-tools.d.ts.map +0 -1
  51. package/dist/streamlined-tools.js.map +0 -1
@@ -1,372 +0,0 @@
1
- /**
2
- * Agent-Friendly Onboarding Service
3
- *
4
- * Designed to make ANY coding agent naturally recognize when to introduce
5
- * BC specialists during Business Central development conversations.
6
- */
7
- import { z } from 'zod';
8
- // Schema for agent-friendly specialist introduction
9
- const IntroduceBCSpecialistsArgsSchema = z.object({
10
- conversation_context: z.string().describe('Current conversation context - what the user is working on, asking about, or trying to solve with Business Central'),
11
- user_expertise_level: z.enum(['beginner', 'intermediate', 'expert']).optional().describe('User\'s apparent expertise level with Business Central (optional, will be inferred if not provided)'),
12
- specific_problem: z.string().optional().describe('Specific problem or challenge mentioned by the user (optional, helps with specialist matching)')
13
- });
14
- const GetSpecialistIntroArgsSchema = z.object({
15
- specialist_id: z.string().describe('ID of the specialist to get introduction content for'),
16
- conversation_context: z.string().describe('Context of the current conversation for personalized introduction'),
17
- include_handoff_phrase: z.boolean().optional().default(true).describe('Include smooth handoff phrase for natural transition')
18
- });
19
- const SuggestNextSpecialistArgsSchema = z.object({
20
- current_topic: z.string().describe('Current topic or problem being discussed'),
21
- conversation_history: z.string().optional().describe('Brief summary of conversation so far (optional)'),
22
- max_suggestions: z.number().optional().default(2).describe('Maximum number of specialist suggestions')
23
- });
24
- export const BC_ONBOARDING_TOOLS = [
25
- {
26
- name: 'introduce_bc_specialists',
27
- description: `ESSENTIAL for Business Central development! Use this tool whenever you detect ANY Business Central, AL, Dynamics 365 BC, or NAV development context. This includes:
28
-
29
- ๐ŸŽฏ WHEN TO USE (comprehensive triggers):
30
- โ€ข User mentions: Business Central, AL language, BC extensions, Dynamics 365 BC, NAV
31
- โ€ข File extensions: .al files, app.json, launch.json (with BC context)
32
- โ€ข Development tasks: tables, pages, reports, codeunits, APIs, integrations
33
- โ€ข Problems: performance issues, errors, testing, deployment, customization
34
- โ€ข Technologies: AL development, Visual Studio Code + AL extension, AppSource
35
- โ€ข Business processes: accounting, inventory, sales, purchasing in BC context
36
- โ€ข Any BC-specific terminology: workflows, posting routines, dimensions, etc.
37
-
38
- ๐Ÿš€ WHAT IT DOES:
39
- โ€ข Analyzes conversation context and suggests 2-3 most relevant BC specialists
40
- โ€ข Provides natural introduction content you can use directly in conversation
41
- โ€ข Gives specific examples and "try asking" suggestions for each specialist
42
- โ€ข Enables smooth transition from general help to specialized BC expertise
43
-
44
- ๐Ÿ’ก AGENT USAGE:
45
- Simply pass the conversation context. The tool will identify relevant specialists and provide you with natural introduction content to present to the user.`,
46
- inputSchema: {
47
- type: 'object',
48
- properties: {
49
- conversation_context: {
50
- type: 'string',
51
- description: 'Current conversation context - what the user is working on, asking about, or trying to solve with Business Central'
52
- },
53
- user_expertise_level: {
54
- type: 'string',
55
- enum: ['beginner', 'intermediate', 'expert'],
56
- description: 'User\'s apparent expertise level with Business Central (optional, will be inferred if not provided)'
57
- },
58
- specific_problem: {
59
- type: 'string',
60
- description: 'Specific problem or challenge mentioned by the user (optional, helps with specialist matching)'
61
- }
62
- },
63
- required: ['conversation_context']
64
- }
65
- },
66
- {
67
- name: 'get_specialist_introduction',
68
- description: `Get ready-to-use introduction content for a specific BC specialist. Use when you want to introduce a particular specialist naturally in conversation or when transitioning from general help to specialized expertise.`,
69
- inputSchema: {
70
- type: 'object',
71
- properties: {
72
- specialist_id: {
73
- type: 'string',
74
- description: 'ID of the specialist to get introduction content for'
75
- },
76
- conversation_context: {
77
- type: 'string',
78
- description: 'Context of the current conversation for personalized introduction'
79
- },
80
- include_handoff_phrase: {
81
- type: 'boolean',
82
- description: 'Include smooth handoff phrase for natural transition',
83
- default: true
84
- }
85
- },
86
- required: ['specialist_id', 'conversation_context']
87
- }
88
- },
89
- {
90
- name: 'suggest_next_specialist',
91
- description: `Proactively suggest when to bring in a specialist during ongoing BC conversations. Use when the current conversation could benefit from specialized expertise or when transitioning between topics.`,
92
- inputSchema: {
93
- type: 'object',
94
- properties: {
95
- current_topic: {
96
- type: 'string',
97
- description: 'Current topic or problem being discussed'
98
- },
99
- conversation_history: {
100
- type: 'string',
101
- description: 'Brief summary of conversation so far (optional)'
102
- },
103
- max_suggestions: {
104
- type: 'number',
105
- description: 'Maximum number of specialist suggestions',
106
- default: 2
107
- }
108
- },
109
- required: ['current_topic']
110
- }
111
- }
112
- ];
113
- export class AgentOnboardingService {
114
- discoveryService;
115
- layerService;
116
- constructor(discoveryService, layerService) {
117
- this.discoveryService = discoveryService;
118
- this.layerService = layerService;
119
- }
120
- async handleToolCall(request) {
121
- try {
122
- switch (request.params.name) {
123
- case 'introduce_bc_specialists':
124
- return await this.introduceBCSpecialists(request);
125
- case 'get_specialist_introduction':
126
- return await this.getSpecialistIntroduction(request);
127
- case 'suggest_next_specialist':
128
- return await this.suggestNextSpecialist(request);
129
- default:
130
- throw new Error(`Unknown tool: ${request.params.name}`);
131
- }
132
- }
133
- catch (error) {
134
- return {
135
- content: [
136
- {
137
- type: 'text',
138
- text: `Error in onboarding service: ${error instanceof Error ? error.message : String(error)}`
139
- }
140
- ],
141
- isError: true
142
- };
143
- }
144
- }
145
- /**
146
- * Main tool: Introduce BC specialists based on conversation context
147
- */
148
- async introduceBCSpecialists(request) {
149
- const args = IntroduceBCSpecialistsArgsSchema.parse(request.params.arguments);
150
- // Get specialist suggestions based on context
151
- const suggestions = await this.discoveryService.suggestSpecialists({
152
- query: args.conversation_context + (args.specific_problem ? ` ${args.specific_problem}` : ''),
153
- user_preferences: args.user_expertise_level ? { expertise_level: args.user_expertise_level } : undefined
154
- }, 3);
155
- if (suggestions.length === 0) {
156
- return {
157
- content: [
158
- {
159
- type: 'text',
160
- text: `I can connect you with our Business Central specialists! Let me introduce Casey Copilot ๐Ÿค– - our AI-enhanced development coach who can help with general BC development guidance.`
161
- }
162
- ]
163
- };
164
- }
165
- // Build agent-friendly introduction content
166
- let response = `๐ŸŽฏ **BC Specialist Team Available!**\n\n`;
167
- response += `Based on "${args.conversation_context}", I can introduce you to specialized Business Central experts:\n\n`;
168
- for (let i = 0; i < suggestions.length; i++) {
169
- const suggestion = suggestions[i];
170
- const emoji = this.getSpecialistEmoji(suggestion.specialist.specialist_id);
171
- const confidence = Math.round(suggestion.confidence * 100);
172
- response += `**${emoji} ${suggestion.specialist.title}** (${confidence}% match)\n`;
173
- response += `${suggestion.specialist.role} who specializes in ${suggestion.specialist.domains?.join(', ') || 'BC development'}\n\n`;
174
- if (suggestion.reasons.length > 0) {
175
- response += `*Why this specialist: ${suggestion.reasons.join(', ')}*\n\n`;
176
- }
177
- // Add conversation starters
178
- response += `๐Ÿ’ฌ **Natural conversation starters:**\n`;
179
- response += `โ€ข "Let me connect you with ${suggestion.specialist.title.split(' - ')[0]}..."\n`;
180
- response += `โ€ข "${suggestion.specialist.title.split(' - ')[0]} specializes in exactly this type of challenge"\n`;
181
- response += `โ€ข "I think ${suggestion.specialist.title.split(' - ')[0]} can provide the specific BC expertise you need"\n\n`;
182
- // Add example questions
183
- const example = this.generateContextualExample(suggestion.specialist, args.conversation_context);
184
- response += `๐Ÿ’ก **User can try asking:** "${example}"\n\n`;
185
- response += `๐ŸŽฏ **To connect:** Use \`suggest_specialist ${suggestion.specialist.specialist_id}\`\n\n`;
186
- response += `---\n\n`;
187
- }
188
- response += `### ๐Ÿš€ How to Proceed as Agent:\n`;
189
- response += `1. **Choose** the most relevant specialist based on user's needs\n`;
190
- response += `2. **Introduce** them naturally: "Let me connect you with [specialist name]..."\n`;
191
- response += `3. **Transition** using: \`suggest_specialist [specialist-id]\`\n`;
192
- response += `4. **Follow up** by letting the specialist take the lead on BC-specific guidance\n`;
193
- return {
194
- content: [
195
- {
196
- type: 'text',
197
- text: response
198
- }
199
- ]
200
- };
201
- }
202
- /**
203
- * Get introduction content for specific specialist
204
- */
205
- async getSpecialistIntroduction(request) {
206
- const args = GetSpecialistIntroArgsSchema.parse(request.params.arguments);
207
- const specialists = await this.layerService.getAllSpecialists();
208
- const specialist = specialists.find(s => s.specialist_id === args.specialist_id);
209
- if (!specialist) {
210
- return {
211
- content: [
212
- {
213
- type: 'text',
214
- text: `Specialist ${args.specialist_id} not found. Use 'browse_specialists' to see available specialists.`
215
- }
216
- ],
217
- isError: true
218
- };
219
- }
220
- const emoji = this.getSpecialistEmoji(specialist.specialist_id);
221
- let response = '';
222
- if (args.include_handoff_phrase) {
223
- response += `Perfect! Let me connect you with ${specialist.title.split(' - ')[0]}...\n\n`;
224
- }
225
- response += `${emoji} **${specialist.title}**\n`;
226
- response += `${specialist.role}\n\n`;
227
- if (specialist.domains && specialist.domains.length > 0) {
228
- response += `**Specializes in:** ${specialist.domains.join(', ')}\n`;
229
- }
230
- if (specialist.when_to_use && specialist.when_to_use.length > 0) {
231
- response += `**Perfect for:** ${specialist.when_to_use.slice(0, 2).join(', ')}\n`;
232
- }
233
- response += `\n**Example question for your context:**\n`;
234
- response += `"${this.generateContextualExample(specialist, args.conversation_context)}"\n\n`;
235
- response += `๐ŸŽฏ **Ready to start:** Use \`suggest_specialist ${specialist.specialist_id}\``;
236
- return {
237
- content: [
238
- {
239
- type: 'text',
240
- text: response
241
- }
242
- ]
243
- };
244
- }
245
- /**
246
- * Suggest when to bring in specialists during conversation
247
- */
248
- async suggestNextSpecialist(request) {
249
- const args = SuggestNextSpecialistArgsSchema.parse(request.params.arguments);
250
- const suggestions = await this.discoveryService.suggestSpecialists({
251
- query: args.current_topic,
252
- conversation_history: args.conversation_history ? [args.conversation_history] : undefined
253
- }, args.max_suggestions);
254
- if (suggestions.length === 0) {
255
- return {
256
- content: [
257
- {
258
- type: 'text',
259
- text: `Continue with general BC guidance or use 'introduce_bc_specialists' to see the full team.`
260
- }
261
- ]
262
- };
263
- }
264
- let response = `๐Ÿค” **Consider bringing in a specialist:**\n\n`;
265
- suggestions.forEach((suggestion, index) => {
266
- const emoji = this.getSpecialistEmoji(suggestion.specialist.specialist_id);
267
- response += `${index + 1}. **${emoji} ${suggestion.specialist.title.split(' - ')[0]}** - ${suggestion.reasons.join(', ') || 'Good match for current topic'}\n`;
268
- });
269
- response += `\n๐Ÿ’ก **Agent tip:** When conversation gets into BC-specific details, specialist handoff often provides better value than general assistance.`;
270
- return {
271
- content: [
272
- {
273
- type: 'text',
274
- text: response
275
- }
276
- ]
277
- };
278
- }
279
- /**
280
- * Generate contextual example question
281
- */
282
- generateContextualExample(specialist, context) {
283
- const contextLower = context.toLowerCase();
284
- const specialistId = specialist.specialist_id;
285
- // Context-specific examples
286
- if (contextLower.includes('performance') || contextLower.includes('slow')) {
287
- if (specialistId === 'dean-debug')
288
- return `Help me identify why ${this.extractSubject(context)} is performing slowly`;
289
- }
290
- if (contextLower.includes('security') || contextLower.includes('permission')) {
291
- if (specialistId === 'seth-security')
292
- return `Review the security approach for ${this.extractSubject(context)}`;
293
- }
294
- if (contextLower.includes('test') || contextLower.includes('quality')) {
295
- if (specialistId === 'quinn-tester')
296
- return `Design a testing strategy for ${this.extractSubject(context)}`;
297
- }
298
- if (contextLower.includes('architecture') || contextLower.includes('design')) {
299
- if (specialistId === 'alex-architect')
300
- return `Review the architecture of ${this.extractSubject(context)}`;
301
- }
302
- // Fallback examples
303
- const fallbacks = {
304
- 'dean-debug': `Help me troubleshoot performance issues in my BC solution`,
305
- 'seth-security': `Review security best practices for my BC implementation`,
306
- 'quinn-tester': `Create a comprehensive testing strategy for my BC extensions`,
307
- 'alex-architect': `Design a scalable architecture for my BC solution`,
308
- 'sam-coder': `Show me efficient coding patterns for this BC scenario`,
309
- 'eva-errors': `Help me implement robust error handling`,
310
- 'uma-ux': `Improve the user experience of my BC pages`,
311
- 'jordan-bridge': `Design integrations for my BC solution`,
312
- 'logan-legacy': `Help me modernize this legacy BC code`,
313
- 'roger-reviewer': `Review the code quality of my BC implementation`,
314
- 'maya-mentor': `Teach me the best practices for this BC scenario`,
315
- 'taylor-docs': `Help me document this BC solution properly`,
316
- 'casey-copilot': `Guide me through this BC development challenge`,
317
- 'morgan-market': `Prepare my BC solution for AppSource`
318
- };
319
- return fallbacks[specialistId] || `Help me with my Business Central challenge`;
320
- }
321
- /**
322
- * Extract main subject from context for personalized examples
323
- */
324
- extractSubject(context) {
325
- const contextLower = context.toLowerCase();
326
- // Extract BC-specific subjects
327
- if (contextLower.includes('report'))
328
- return 'my BC reports';
329
- if (contextLower.includes('page'))
330
- return 'my BC pages';
331
- if (contextLower.includes('table'))
332
- return 'my BC tables';
333
- if (contextLower.includes('extension'))
334
- return 'my BC extension';
335
- if (contextLower.includes('integration'))
336
- return 'my BC integration';
337
- if (contextLower.includes('api'))
338
- return 'my BC API';
339
- if (contextLower.includes('workflow'))
340
- return 'my BC workflow';
341
- return 'my BC solution';
342
- }
343
- /**
344
- * Get emoji for specialist
345
- */
346
- getSpecialistEmoji(specialistId) {
347
- const emojiMap = {
348
- 'dean-debug': '๐Ÿ”',
349
- 'eva-errors': 'โš ๏ธ',
350
- 'alex-architect': '๐Ÿ—๏ธ',
351
- 'sam-coder': '๐Ÿ’ป',
352
- 'quinn-tester': '๐Ÿงช',
353
- 'seth-security': '๐Ÿ”’',
354
- 'uma-ux': '๐ŸŽจ',
355
- 'jordan-bridge': '๐ŸŒ‰',
356
- 'logan-legacy': '๐Ÿ›๏ธ',
357
- 'roger-reviewer': '๐Ÿ“',
358
- 'maya-mentor': '๐Ÿ‘ฉโ€๐Ÿซ',
359
- 'taylor-docs': '๐Ÿ“š',
360
- 'casey-copilot': '๐Ÿค–',
361
- 'morgan-market': '๐Ÿช'
362
- };
363
- return emojiMap[specialistId] || '๐Ÿ‘ค';
364
- }
365
- /**
366
- * Get tool definitions for MCP registration
367
- */
368
- getToolDefinitions() {
369
- return BC_ONBOARDING_TOOLS;
370
- }
371
- }
372
- //# sourceMappingURL=agent-onboarding-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-onboarding-service.js","sourceRoot":"","sources":["../../src/services/agent-onboarding-service.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- /**
2
- * Specialist Handoff Service
3
- *
4
- * Enables seamless transitions between specialists while preserving context,
5
- * conversation history, and ensuring natural collaboration flow.
6
- */
7
- import { CallToolRequest, CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
8
- import { SpecialistSessionManager } from './specialist-session-manager.js';
9
- import { SpecialistDiscoveryService } from './specialist-discovery.js';
10
- import { MultiContentLayerService } from './multi-content-layer-service.js';
11
- export type HandoffType = 'transfer' | 'consultation' | 'collaboration' | 'escalation';
12
- export interface HandoffContext {
13
- session_id: string;
14
- from_specialist: string;
15
- to_specialist: string;
16
- handoff_type: HandoffType;
17
- problem_summary: string;
18
- work_completed: string[];
19
- recommendations_made: string[];
20
- current_challenges: string[];
21
- user_context: {
22
- expertise_level?: 'beginner' | 'intermediate' | 'expert';
23
- bc_version?: string;
24
- project_type?: string;
25
- preferences?: string[];
26
- };
27
- conversation_summary: string;
28
- handoff_reason: string;
29
- continuation_points: string[];
30
- }
31
- export declare const HANDOFF_TOOLS: Tool[];
32
- export declare class SpecialistHandoffService {
33
- private sessionManager;
34
- private discoveryService;
35
- private layerService;
36
- private handoffHistory;
37
- private currentSessionId?;
38
- constructor(sessionManager: SpecialistSessionManager, discoveryService: SpecialistDiscoveryService, layerService: MultiContentLayerService);
39
- /**
40
- * Set current session ID for handoff operations
41
- */
42
- setCurrentSession(sessionId: string): void;
43
- /**
44
- * Get current session
45
- */
46
- private getCurrentSession;
47
- /**
48
- * Create an emergency session when handoff is attempted without existing session
49
- */
50
- private createEmergencySession;
51
- handleToolCall(request: CallToolRequest): Promise<CallToolResult>;
52
- /**
53
- * Execute handoff to another specialist with full context transfer
54
- */
55
- private handoffToSpecialist;
56
- /**
57
- * Bring in specialist for consultation without full handoff
58
- */
59
- private bringInSpecialist;
60
- /**
61
- * Get handoff summary for current session
62
- */
63
- private getHandoffSummary;
64
- /**
65
- * Create handoff message with full context
66
- */
67
- private createHandoffMessage;
68
- /**
69
- * Summarize conversation for handoff context
70
- */
71
- private summarizeConversation;
72
- /**
73
- * Get specialist name by ID
74
- */
75
- private getSpecialistName;
76
- /**
77
- * Get emoji for specialist
78
- */
79
- private getSpecialistEmoji;
80
- /**
81
- * Get tool definitions for MCP registration
82
- */
83
- getToolDefinitions(): Tool[];
84
- }
85
- //# sourceMappingURL=specialist-handoff-service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"specialist-handoff-service.d.ts","sourceRoot":"","sources":["../../src/services/specialist-handoff-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,YAAY,CAAC;AAGvF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,WAAW,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,YAAY,EAAE;QACZ,eAAe,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC;QACzD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AA2BD,eAAO,MAAM,aAAa,EAAE,IAAI,EAoH/B,CAAC;AAEF,qBAAa,wBAAwB;IAKjC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,YAAY;IANtB,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAGxB,cAAc,EAAE,wBAAwB,EACxC,gBAAgB,EAAE,0BAA0B,EAC5C,YAAY,EAAE,wBAAwB;IAGhD;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;YACW,iBAAiB;IAO/B;;OAEG;YACW,sBAAsB;IAc9B,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBvE;;OAEG;YACW,mBAAmB;IAgFjC;;OAEG;YACW,iBAAiB;IAoD/B;;OAEG;YACW,iBAAiB;IAqE/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+C5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,kBAAkB,IAAI,IAAI,EAAE;CAG7B"}