@su-record/vibe 2.4.36 → 2.4.37

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/README.md +26 -13
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +11 -8
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/llm.js +9 -9
  6. package/dist/lib/gemini-api.d.ts +2 -2
  7. package/dist/lib/gemini-api.d.ts.map +1 -1
  8. package/dist/lib/gemini-api.js +9 -5
  9. package/dist/lib/gemini-api.js.map +1 -1
  10. package/dist/lib/gpt-api.d.ts +2 -2
  11. package/dist/lib/gpt-api.d.ts.map +1 -1
  12. package/dist/lib/gpt-api.js +12 -6
  13. package/dist/lib/gpt-api.js.map +1 -1
  14. package/dist/lib/utils.d.ts +15 -0
  15. package/dist/lib/utils.d.ts.map +1 -1
  16. package/dist/lib/utils.js +27 -0
  17. package/dist/lib/utils.js.map +1 -1
  18. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
  19. package/dist/orchestrator/backgroundAgent.js +37 -1
  20. package/dist/orchestrator/backgroundAgent.js.map +1 -1
  21. package/dist/orchestrator/index.d.ts +112 -1
  22. package/dist/orchestrator/index.d.ts.map +1 -1
  23. package/dist/orchestrator/index.js +216 -0
  24. package/dist/orchestrator/index.js.map +1 -1
  25. package/dist/orchestrator/orchestrator.d.ts +115 -1
  26. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  27. package/dist/orchestrator/orchestrator.js +358 -1
  28. package/dist/orchestrator/orchestrator.js.map +1 -1
  29. package/dist/orchestrator/types.d.ts +42 -0
  30. package/dist/orchestrator/types.d.ts.map +1 -1
  31. package/dist/orchestrator/types.js +10 -1
  32. package/dist/orchestrator/types.js.map +1 -1
  33. package/hooks/hooks.json +29 -29
  34. package/hooks/scripts/code-check.js +22 -0
  35. package/hooks/scripts/code-review.js +22 -0
  36. package/hooks/scripts/complexity.js +22 -0
  37. package/hooks/scripts/compound.js +23 -0
  38. package/hooks/scripts/context-save.js +33 -0
  39. package/hooks/scripts/llm-orchestrate.js +64 -0
  40. package/hooks/scripts/recall.js +22 -0
  41. package/hooks/scripts/session-start.js +30 -0
  42. package/hooks/scripts/utils.js +34 -0
  43. package/package.json +1 -1
  44. package/dist/lib/gemini-mcp.d.ts +0 -10
  45. package/dist/lib/gemini-mcp.d.ts.map +0 -1
  46. package/dist/lib/gemini-mcp.js +0 -353
  47. package/dist/lib/gemini-mcp.js.map +0 -1
  48. package/dist/lib/gpt-mcp.d.ts +0 -10
  49. package/dist/lib/gpt-mcp.d.ts.map +0 -1
  50. package/dist/lib/gpt-mcp.js +0 -352
  51. package/dist/lib/gpt-mcp.js.map +0 -1
@@ -1,352 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * vibe-gpt MCP Server
4
- * GPT API를 MCP 도구로 제공하여 Claude Code에서 서브에이전트로 활용
5
- *
6
- * 사용법:
7
- * claude mcp add vibe-gpt node /path/to/vibe/dist/lib/gpt-mcp.js -s user
8
- */
9
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
10
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
11
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
12
- // GPT API 모듈 로드
13
- import * as gptApi from './gpt-api.js';
14
- import * as gptStorage from './gpt-storage.js';
15
- // MCP 서버 생성
16
- const server = new Server({
17
- name: 'vibe-gpt',
18
- version: '1.0.0',
19
- }, {
20
- capabilities: {
21
- tools: {},
22
- },
23
- });
24
- // 도구 목록 정의
25
- server.setRequestHandler(ListToolsRequestSchema, async () => {
26
- return {
27
- tools: [
28
- {
29
- name: 'gpt_chat',
30
- description: 'GPT-5.2 모델에 질문하기. 아키텍처 분석, 디버깅, 복잡한 문제 해결에 활용. 서브에이전트로 사용 가능.',
31
- inputSchema: {
32
- type: 'object',
33
- properties: {
34
- prompt: {
35
- type: 'string',
36
- description: '질문 또는 요청 내용',
37
- },
38
- model: {
39
- type: 'string',
40
- description: '사용할 모델 (gpt-5.2, gpt-5.2-codex, gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5.1-codex-max)',
41
- default: 'gpt-5.2',
42
- },
43
- systemPrompt: {
44
- type: 'string',
45
- description: '시스템 프롬프트 (선택)',
46
- },
47
- maxTokens: {
48
- type: 'number',
49
- description: '최대 토큰 수',
50
- default: 4096,
51
- },
52
- temperature: {
53
- type: 'number',
54
- description: '온도 (0-1)',
55
- default: 0.7,
56
- },
57
- },
58
- required: ['prompt'],
59
- },
60
- },
61
- {
62
- name: 'gpt_analyze_architecture',
63
- description: '아키텍처 분석 요청. GPT-5.2가 코드 구조와 설계를 분석하고 개선점을 제안.',
64
- inputSchema: {
65
- type: 'object',
66
- properties: {
67
- code: {
68
- type: 'string',
69
- description: '분석할 코드 또는 아키텍처 설명',
70
- },
71
- context: {
72
- type: 'string',
73
- description: '프로젝트 컨텍스트 (선택)',
74
- },
75
- },
76
- required: ['code'],
77
- },
78
- },
79
- {
80
- name: 'gpt_debug',
81
- description: '디버깅 요청. GPT-5.2 Codex가 버그를 찾고 수정 방법을 제안.',
82
- inputSchema: {
83
- type: 'object',
84
- properties: {
85
- code: {
86
- type: 'string',
87
- description: '디버깅할 코드',
88
- },
89
- error: {
90
- type: 'string',
91
- description: '에러 메시지 또는 증상 (선택)',
92
- },
93
- language: {
94
- type: 'string',
95
- description: '프로그래밍 언어 (선택)',
96
- },
97
- },
98
- required: ['code'],
99
- },
100
- },
101
- {
102
- name: 'gpt_quick_ask',
103
- description: '빠른 질문. 간단한 질문에 최적화 (GPT-5.1 Codex Mini 사용).',
104
- inputSchema: {
105
- type: 'object',
106
- properties: {
107
- prompt: {
108
- type: 'string',
109
- description: '질문 내용',
110
- },
111
- },
112
- required: ['prompt'],
113
- },
114
- },
115
- {
116
- name: 'gpt_auth_status',
117
- description: 'GPT OAuth 인증 상태 확인',
118
- inputSchema: {
119
- type: 'object',
120
- properties: {},
121
- },
122
- },
123
- {
124
- name: 'gpt_list_models',
125
- description: '사용 가능한 GPT 모델 목록',
126
- inputSchema: {
127
- type: 'object',
128
- properties: {},
129
- },
130
- },
131
- ],
132
- };
133
- });
134
- // 도구 실행 핸들러
135
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
136
- const { name, arguments: args } = request.params;
137
- try {
138
- switch (name) {
139
- case 'gpt_chat': {
140
- const { prompt, model, systemPrompt, maxTokens, temperature } = args;
141
- const result = await gptApi.chat({
142
- model: model || 'gpt-5.2',
143
- messages: [{ role: 'user', content: prompt }],
144
- systemPrompt: systemPrompt || '',
145
- maxTokens: maxTokens || 4096,
146
- temperature: temperature || 0.7,
147
- });
148
- return {
149
- content: [
150
- {
151
- type: 'text',
152
- text: JSON.stringify({
153
- response: result.content,
154
- model: result.model,
155
- }, null, 2),
156
- },
157
- ],
158
- };
159
- }
160
- case 'gpt_analyze_architecture': {
161
- const { code, context } = args;
162
- const sysPrompt = `You are a senior software architect. Analyze the given code or architecture and provide detailed insights.
163
-
164
- ${context ? `Project context: ${context}` : ''}
165
-
166
- Respond in Korean and provide:
167
- 1. 아키텍처 요약
168
- 2. 강점
169
- 3. 잠재적 문제점
170
- 4. 개선 제안
171
- 5. 확장성 평가`;
172
- const result = await gptApi.chat({
173
- model: 'gpt-5.2',
174
- messages: [{ role: 'user', content: code }],
175
- systemPrompt: sysPrompt,
176
- maxTokens: 8192,
177
- temperature: 0.5,
178
- });
179
- return {
180
- content: [
181
- {
182
- type: 'text',
183
- text: result.content,
184
- },
185
- ],
186
- };
187
- }
188
- case 'gpt_debug': {
189
- const { code, error, language } = args;
190
- const sysPrompt = `You are an expert debugger. Analyze the given ${language || 'code'} and identify bugs.
191
-
192
- ${error ? `Error/Symptom: ${error}` : ''}
193
-
194
- Respond in Korean and provide:
195
- 1. 버그 식별
196
- 2. 원인 분석
197
- 3. 수정된 코드
198
- 4. 예방 방법`;
199
- const result = await gptApi.chat({
200
- model: 'gpt-5.2-codex',
201
- messages: [{ role: 'user', content: code }],
202
- systemPrompt: sysPrompt,
203
- maxTokens: 4096,
204
- temperature: 0.3,
205
- });
206
- return {
207
- content: [
208
- {
209
- type: 'text',
210
- text: result.content,
211
- },
212
- ],
213
- };
214
- }
215
- case 'gpt_quick_ask': {
216
- const { prompt } = args;
217
- const response = await gptApi.quickAsk(prompt);
218
- return {
219
- content: [
220
- {
221
- type: 'text',
222
- text: response,
223
- },
224
- ],
225
- };
226
- }
227
- case 'gpt_auth_status': {
228
- try {
229
- const account = gptStorage.getActiveAccount();
230
- if (account) {
231
- const isExpired = gptStorage.isTokenExpired(account);
232
- return {
233
- content: [
234
- {
235
- type: 'text',
236
- text: JSON.stringify({
237
- authenticated: true,
238
- email: account.email,
239
- tokenValid: !isExpired,
240
- expires: new Date(account.expires).toISOString(),
241
- }, null, 2),
242
- },
243
- ],
244
- };
245
- }
246
- else {
247
- return {
248
- content: [
249
- {
250
- type: 'text',
251
- text: JSON.stringify({
252
- authenticated: false,
253
- message: 'vibe gpt --auth 명령으로 인증하세요.',
254
- }, null, 2),
255
- },
256
- ],
257
- };
258
- }
259
- }
260
- catch (error) {
261
- return {
262
- content: [
263
- {
264
- type: 'text',
265
- text: JSON.stringify({
266
- authenticated: false,
267
- error: error.message,
268
- }, null, 2),
269
- },
270
- ],
271
- };
272
- }
273
- }
274
- case 'gpt_list_models': {
275
- const models = gptApi.getAvailableModels();
276
- return {
277
- content: [
278
- {
279
- type: 'text',
280
- text: JSON.stringify(models, null, 2),
281
- },
282
- ],
283
- };
284
- }
285
- default:
286
- return {
287
- content: [
288
- {
289
- type: 'text',
290
- text: `Unknown tool: ${name}`,
291
- },
292
- ],
293
- isError: true,
294
- };
295
- }
296
- }
297
- catch (error) {
298
- const errorMessage = error.message;
299
- // 429 Rate Limit 또는 구독 에러 시 Claude fallback 안내
300
- if (errorMessage.includes('429') || errorMessage.includes('plan_type') || errorMessage.includes('usage_not_included')) {
301
- return {
302
- content: [
303
- {
304
- type: 'text',
305
- text: JSON.stringify({
306
- status: 'fallback',
307
- reason: 'subscription_required',
308
- message: 'GPT API 접근 불가. ChatGPT Plus/Pro 구독이 필요합니다. Claude가 직접 처리해주세요.',
309
- original_error: errorMessage,
310
- }, null, 2),
311
- },
312
- ],
313
- isError: false, // fallback은 에러가 아님
314
- };
315
- }
316
- // 인증 에러 시 fallback 안내
317
- if (errorMessage.includes('401') || errorMessage.includes('403') || errorMessage.includes('인증')) {
318
- return {
319
- content: [
320
- {
321
- type: 'text',
322
- text: JSON.stringify({
323
- status: 'fallback',
324
- reason: 'auth_error',
325
- message: 'GPT 인증 만료. Claude가 직접 처리해주세요. (vibe gpt --auth로 재인증 가능)',
326
- original_error: errorMessage,
327
- }, null, 2),
328
- },
329
- ],
330
- isError: false,
331
- };
332
- }
333
- // 기타 에러
334
- return {
335
- content: [
336
- {
337
- type: 'text',
338
- text: `Error: ${errorMessage}`,
339
- },
340
- ],
341
- isError: true,
342
- };
343
- }
344
- });
345
- // 서버 시작
346
- async function main() {
347
- const transport = new StdioServerTransport();
348
- await server.connect(transport);
349
- console.error('vibe-gpt MCP server running');
350
- }
351
- main().catch(console.error);
352
- //# sourceMappingURL=gpt-mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gpt-mcp.js","sourceRoot":"","sources":["../../src/lib/gpt-mcp.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,gBAAgB;AAChB,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,YAAY;AACZ,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,WAAW;AACX,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,+DAA+D;gBAC5E,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,aAAa;yBAC3B;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,uFAAuF;4BACpG,OAAO,EAAE,SAAS;yBACnB;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,eAAe;yBAC7B;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,SAAS;4BACtB,OAAO,EAAE,IAAI;yBACd;wBACD,WAAW,EAAE;4BACX,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,UAAU;4BACvB,OAAO,EAAE,GAAG;yBACb;qBACF;oBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACrB;aACF;YACD;gBACE,IAAI,EAAE,0BAA0B;gBAChC,WAAW,EAAE,+CAA+C;gBAC5D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;yBACjC;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gBAAgB;yBAC9B;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,0CAA0C;gBACvD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,IAAI,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,SAAS;yBACvB;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mBAAmB;yBACjC;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,eAAe;yBAC7B;qBACF;oBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;iBACnB;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,6CAA6C;gBAC1D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,OAAO;yBACrB;qBACF;oBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;iBACrB;aACF;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,oBAAoB;gBACjC,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD;gBACE,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,kBAAkB;gBAC/B,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AA0BH,YAAY;AACZ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAA2B,CAAC;gBAC5F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;oBAC/B,KAAK,EAAE,KAAK,IAAI,SAAS;oBACzB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;oBAC7C,YAAY,EAAE,YAAY,IAAI,EAAE;oBAChC,SAAS,EAAE,SAAS,IAAI,IAAI;oBAC5B,WAAW,EAAE,WAAW,IAAI,GAAG;iBAChC,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,QAAQ,EAAE,MAAM,CAAC,OAAO;gCACxB,KAAK,EAAE,MAAM,CAAC,KAAK;6BACpB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAA8B,CAAC;gBACzD,MAAM,SAAS,GAAG;;EAExB,OAAO,CAAC,CAAC,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;UAOpC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;oBAC/B,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBAC3C,YAAY,EAAE,SAAS;oBACvB,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,GAAG;iBACjB,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM,CAAC,OAAO;yBACrB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAA4B,CAAC;gBAC/D,MAAM,SAAS,GAAG,iDAAiD,QAAQ,IAAI,MAAM;;EAE3F,KAAK,CAAC,CAAC,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;SAM/B,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;oBAC/B,KAAK,EAAE,eAAe;oBACtB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;oBAC3C,YAAY,EAAE,SAAS;oBACvB,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,GAAG;iBACjB,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM,CAAC,OAAO;yBACrB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,MAAM,EAAE,GAAG,IAA+B,CAAC;gBACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;yBACf;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC;oBAC9C,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;wBACrD,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wCACnB,aAAa,EAAE,IAAI;wCACnB,KAAK,EAAE,OAAO,CAAC,KAAK;wCACpB,UAAU,EAAE,CAAC,SAAS;wCACtB,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;qCACjD,EAAE,IAAI,EAAE,CAAC,CAAC;iCACZ;6BACF;yBACF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wCACnB,aAAa,EAAE,KAAK;wCACpB,OAAO,EAAE,6BAA6B;qCACvC,EAAE,IAAI,EAAE,CAAC,CAAC;iCACZ;6BACF;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oCACnB,aAAa,EAAE,KAAK;oCACpB,KAAK,EAAG,KAAe,CAAC,OAAO;iCAChC,EAAE,IAAI,EAAE,CAAC,CAAC;6BACZ;yBACF;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;gBACvB,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC3C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAED;gBACE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iBAAiB,IAAI,EAAE;yBAC9B;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;QACN,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAI,KAAe,CAAC,OAAO,CAAC;QAE9C,+CAA+C;QAC/C,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACtH,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,UAAU;4BAClB,MAAM,EAAE,uBAAuB;4BAC/B,OAAO,EAAE,+DAA+D;4BACxE,cAAc,EAAE,YAAY;yBAC7B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;gBACD,OAAO,EAAE,KAAK,EAAE,mBAAmB;aACpC,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChG,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,MAAM,EAAE,UAAU;4BAClB,MAAM,EAAE,YAAY;4BACpB,OAAO,EAAE,yDAAyD;4BAClE,cAAc,EAAE,YAAY;yBAC7B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;gBACD,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAED,QAAQ;QACR,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,YAAY,EAAE;iBAC/B;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ;AACR,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}