@ebowwa/claude-code-mcp 1.0.0 → 1.0.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 (48) hide show
  1. package/dist/__tests__/advanced.test.d.ts +6 -0
  2. package/dist/__tests__/advanced.test.d.ts.map +1 -0
  3. package/dist/__tests__/advanced.test.js +354 -0
  4. package/dist/__tests__/advanced.test.js.map +1 -0
  5. package/dist/advanced.d.ts +109 -0
  6. package/dist/advanced.d.ts.map +1 -0
  7. package/dist/advanced.js +427 -0
  8. package/dist/advanced.js.map +1 -0
  9. package/dist/cli-wrapper.d.ts +202 -0
  10. package/dist/cli-wrapper.d.ts.map +1 -0
  11. package/dist/cli-wrapper.js +347 -0
  12. package/dist/cli-wrapper.js.map +1 -0
  13. package/dist/cli-wrapper.test.d.ts +12 -0
  14. package/dist/cli-wrapper.test.d.ts.map +1 -0
  15. package/dist/cli-wrapper.test.js +354 -0
  16. package/dist/cli-wrapper.test.js.map +1 -0
  17. package/dist/cli.d.ts +16 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +354 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/index.d.ts +10 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +561 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/integration.test.d.ts +12 -0
  26. package/dist/integration.test.d.ts.map +1 -0
  27. package/dist/integration.test.js +716 -0
  28. package/dist/integration.test.js.map +1 -0
  29. package/dist/queue.d.ts +87 -0
  30. package/dist/queue.d.ts.map +1 -0
  31. package/dist/queue.js +273 -0
  32. package/dist/queue.js.map +1 -0
  33. package/dist/teammates-integration.d.ts +128 -0
  34. package/dist/teammates-integration.d.ts.map +1 -0
  35. package/dist/teammates-integration.js +353 -0
  36. package/dist/teammates-integration.js.map +1 -0
  37. package/dist/test-config.d.ts +104 -0
  38. package/dist/test-config.d.ts.map +1 -0
  39. package/dist/test-config.js +439 -0
  40. package/dist/test-config.js.map +1 -0
  41. package/dist/tools.d.ts +97 -0
  42. package/dist/tools.d.ts.map +1 -0
  43. package/dist/tools.js +627 -0
  44. package/dist/tools.js.map +1 -0
  45. package/package.json +7 -1
  46. package/ARCHITECTURE.md +0 -1802
  47. package/DOCUMENTATION.md +0 -747
  48. package/TESTING.md +0 -318
package/dist/index.js ADDED
@@ -0,0 +1,561 @@
1
+ /**
2
+ * Claude Code MCP Server - Main Entry Point
3
+ * Advanced features: send_message, sync_context, stream_output, wait_for_completion
4
+ */
5
+ import { sendMessage, syncContext, streamOutput, waitForCompletion, getQueueStatus } from "./advanced.js";
6
+ export { sendMessage, syncContext, streamOutput, waitForCompletion, processPendingMessages, getQueueStatus } from "./advanced.js";
7
+ export { enqueue, dequeue, acknowledge, fail, getPendingMessages, getQueueStats, canRetry, getRetryDelay, peek, listQueuedSessions, clearQueue, cleanupDelivered, } from "./queue.js";
8
+ export { sendToTeammate, coordinateTeamWorkflow, shareContextWithTeam, getTeamContext, broadcastToTeam, aggregateTeamResults, DistributedTaskQueue, recordWorkflowTelemetry, } from "./teammates-integration.js";
9
+ // ============================================================================
10
+ // MCP SERVER ENTRY POINT
11
+ // ============================================================================
12
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
13
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
+ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from "@modelcontextprotocol/sdk/types.js";
15
+ import { spawn } from "child_process";
16
+ import { kill } from "process";
17
+ import { homedir } from "os";
18
+ import { join } from "path";
19
+ // ============================================================================
20
+ // SESSION STATE MANAGEMENT
21
+ // ============================================================================
22
+ const sessions = new Map();
23
+ const pidToSessionId = new Map();
24
+ const DEFAULT_CLAUDE_PATH = join(homedir(), ".local", "share", "bun", "global", "node_modules", "claude-code", "bin", "claude");
25
+ async function getClaudePath() {
26
+ if (process.env.CLAUDE_CODE_PATH) {
27
+ return process.env.CLAUDE_CODE_PATH;
28
+ }
29
+ // Try to find claude in PATH
30
+ return new Promise((resolve) => {
31
+ const pathResult = spawn("which", ["claude"], { stdio: "pipe" });
32
+ let stdout = "";
33
+ pathResult.stdout?.on("data", (data) => {
34
+ stdout += data.toString();
35
+ });
36
+ pathResult.on("close", (code) => {
37
+ if (code === 0 && stdout.trim()) {
38
+ resolve(stdout.trim());
39
+ }
40
+ else {
41
+ resolve(DEFAULT_CLAUDE_PATH);
42
+ }
43
+ });
44
+ pathResult.on("error", () => {
45
+ resolve(DEFAULT_CLAUDE_PATH);
46
+ });
47
+ });
48
+ }
49
+ function generateSessionId() {
50
+ return `claude-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
51
+ }
52
+ // ============================================================================
53
+ // PROCESS MANAGEMENT
54
+ // ============================================================================
55
+ async function killSessionTree(session) {
56
+ try {
57
+ console.error(`[claude-code-mcp] Killing session tree for ${session.id} (PID: ${session.pid})`);
58
+ if (process.platform !== "win32") {
59
+ try {
60
+ kill(-session.pid, "SIGTERM");
61
+ await new Promise(resolve => setTimeout(resolve, 500));
62
+ try {
63
+ kill(-session.pid, "SIGKILL");
64
+ }
65
+ catch {
66
+ // Already dead
67
+ }
68
+ }
69
+ catch (error) {
70
+ try {
71
+ kill(session.pid, "SIGTERM");
72
+ await new Promise(resolve => setTimeout(resolve, 500));
73
+ kill(session.pid, "SIGKILL");
74
+ }
75
+ catch {
76
+ // Already dead
77
+ }
78
+ }
79
+ }
80
+ else {
81
+ const taskkill = spawn("taskkill", ["/F", "/T", "/PID", session.pid.toString()], {
82
+ stdio: "pipe",
83
+ });
84
+ await new Promise((resolve, reject) => {
85
+ taskkill.on("exit", (code) => code === 0 ? resolve() : reject());
86
+ taskkill.on("error", reject);
87
+ });
88
+ }
89
+ sessions.delete(session.id);
90
+ pidToSessionId.delete(session.pid);
91
+ console.error(`[claude-code-mcp] Session ${session.id} killed successfully`);
92
+ return true;
93
+ }
94
+ catch (error) {
95
+ console.error(`[claude-code-mcp] Failed to kill session ${session.id}:`, error);
96
+ return false;
97
+ }
98
+ }
99
+ async function killAllSessions() {
100
+ console.error(`[claude-code-mcp] Killing all sessions (${sessions.size} active)`);
101
+ const killPromises = Array.from(sessions.values()).map(session => killSessionTree(session));
102
+ await Promise.allSettled(killPromises);
103
+ console.error(`[claude-code-mcp] All sessions killed`);
104
+ }
105
+ // ============================================================================
106
+ // SESSION LIFECYCLE
107
+ // ============================================================================
108
+ async function startSession(options = {}) {
109
+ const { directory = process.cwd(), apiKey, model, maxTokens, } = options;
110
+ const sessionId = generateSessionId();
111
+ const claudePath = await getClaudePath();
112
+ console.error(`[claude-code-mcp] Starting session ${sessionId} in ${directory} (claude: ${claudePath})`);
113
+ const env = {
114
+ ...process.env,
115
+ CLAUDE_SESSION_ID: sessionId,
116
+ };
117
+ if (apiKey)
118
+ env.ANTHROPIC_API_KEY = apiKey;
119
+ if (model)
120
+ env.CLAUDE_MODEL = model;
121
+ if (maxTokens)
122
+ env.CLAUDE_MAX_TOKENS = maxTokens.toString();
123
+ const claudeProcess = spawn(claudePath, [], {
124
+ cwd: directory,
125
+ env,
126
+ stdio: ["pipe", "pipe", "pipe"],
127
+ detached: true,
128
+ });
129
+ const session = {
130
+ id: sessionId,
131
+ pid: claudeProcess.pid,
132
+ process: claudeProcess,
133
+ workingDirectory: directory,
134
+ startTime: Date.now(),
135
+ status: "starting",
136
+ lastActivity: Date.now(),
137
+ };
138
+ sessions.set(sessionId, session);
139
+ pidToSessionId.set(claudeProcess.pid, sessionId);
140
+ claudeProcess.on("exit", (code, signal) => {
141
+ console.error(`[claude-code-mcp] Session ${sessionId} exited (code: ${code}, signal: ${signal})`);
142
+ sessions.delete(sessionId);
143
+ pidToSessionId.delete(claudeProcess.pid);
144
+ });
145
+ claudeProcess.on("error", (error) => {
146
+ console.error(`[claude-code-mcp] Session ${sessionId} error:`, error);
147
+ session.status = "error";
148
+ });
149
+ await waitForSessionReady(session);
150
+ return session;
151
+ }
152
+ async function waitForSessionReady(session, timeout = 10000) {
153
+ const startTime = Date.now();
154
+ return new Promise((resolve, reject) => {
155
+ const checkReady = () => {
156
+ if (Date.now() - startTime > timeout) {
157
+ reject(new Error(`Session ${session.id} did not become ready within ${timeout}ms`));
158
+ return;
159
+ }
160
+ if (session.status === "ready") {
161
+ resolve();
162
+ return;
163
+ }
164
+ if (session.status === "error") {
165
+ reject(new Error(`Session ${session.id} failed to start`));
166
+ return;
167
+ }
168
+ session.process.stdout?.once("data", (data) => {
169
+ const output = data.toString();
170
+ if (output.includes("Ready") || output.includes("Listening")) {
171
+ session.status = "ready";
172
+ resolve();
173
+ }
174
+ else {
175
+ setTimeout(checkReady, 100);
176
+ }
177
+ });
178
+ setTimeout(checkReady, 500);
179
+ };
180
+ checkReady();
181
+ });
182
+ }
183
+ function listSessions() {
184
+ return Array.from(sessions.values());
185
+ }
186
+ function getSession(sessionId) {
187
+ return sessions.get(sessionId);
188
+ }
189
+ async function killSession(sessionId) {
190
+ const session = sessions.get(sessionId);
191
+ if (!session)
192
+ return false;
193
+ return await killSessionTree(session);
194
+ }
195
+ // ============================================================================
196
+ // MCP SERVER SETUP
197
+ // ============================================================================
198
+ const server = new Server({
199
+ name: "claude-code-mcp",
200
+ version: "1.0.0",
201
+ }, {
202
+ capabilities: {
203
+ tools: {},
204
+ },
205
+ });
206
+ server.onerror = (error) => console.error("[MCP Error]", error);
207
+ const setupShutdownHandlers = () => {
208
+ const shutdown = async (signal) => {
209
+ console.error(`[claude-code-mcp] Received ${signal}, shutting down gracefully...`);
210
+ await killAllSessions();
211
+ await server.close();
212
+ process.exit(0);
213
+ };
214
+ process.on("SIGINT", () => shutdown("SIGINT"));
215
+ process.on("SIGTERM", () => shutdown("SIGTERM"));
216
+ };
217
+ // List available tools
218
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
219
+ return {
220
+ tools: [
221
+ {
222
+ name: "start_session",
223
+ description: "Start a new Claude Code session in the specified directory",
224
+ inputSchema: {
225
+ type: "object",
226
+ properties: {
227
+ directory: {
228
+ type: "string",
229
+ description: "Working directory for the session (default: current directory)",
230
+ },
231
+ apiKey: {
232
+ type: "string",
233
+ description: "Anthropic API key (optional, uses environment variable if not provided)",
234
+ },
235
+ model: {
236
+ type: "string",
237
+ description: "Claude model to use (e.g., claude-sonnet-4-5-20250929)",
238
+ },
239
+ maxTokens: {
240
+ type: "number",
241
+ description: "Maximum tokens for responses",
242
+ },
243
+ },
244
+ },
245
+ },
246
+ {
247
+ name: "list_sessions",
248
+ description: "List all active Claude Code sessions with their status and metadata",
249
+ inputSchema: {
250
+ type: "object",
251
+ properties: {},
252
+ },
253
+ },
254
+ {
255
+ name: "kill_session",
256
+ description: "Kill a Claude Code session by ID. Gracefully terminates the session and all child processes.",
257
+ inputSchema: {
258
+ type: "object",
259
+ properties: {
260
+ sessionId: {
261
+ type: "string",
262
+ description: "Session ID to kill",
263
+ },
264
+ },
265
+ required: ["sessionId"],
266
+ },
267
+ },
268
+ {
269
+ name: "send_message",
270
+ description: "Send a message to an active Claude Code session or queue for offline session",
271
+ inputSchema: {
272
+ type: "object",
273
+ properties: {
274
+ sessionId: {
275
+ type: "string",
276
+ description: "Session ID to send message to",
277
+ },
278
+ prompt: {
279
+ type: "string",
280
+ description: "Message/prompt to send",
281
+ },
282
+ timeout: {
283
+ type: "number",
284
+ description: "Response timeout in milliseconds (default: 60000)",
285
+ },
286
+ waitForResponse: {
287
+ type: "boolean",
288
+ description: "Wait for response (default: true)",
289
+ },
290
+ stream: {
291
+ type: "boolean",
292
+ description: "Enable streaming (default: false)",
293
+ },
294
+ priority: {
295
+ type: "number",
296
+ description: "Message priority for queue (higher first)",
297
+ },
298
+ },
299
+ required: ["sessionId", "prompt"],
300
+ },
301
+ },
302
+ {
303
+ name: "sync_context",
304
+ description: "Sync context/memory between sessions. Supports read, write, list, delete operations.",
305
+ inputSchema: {
306
+ type: "object",
307
+ properties: {
308
+ operation: {
309
+ type: "string",
310
+ enum: ["read", "write", "list", "delete"],
311
+ description: "Operation to perform",
312
+ },
313
+ key: {
314
+ type: "string",
315
+ description: "Memory key (path relative to project memory)",
316
+ },
317
+ value: {
318
+ type: "string",
319
+ description: "Content to write (for write operation)",
320
+ },
321
+ projectId: {
322
+ type: "string",
323
+ description: "Project ID (default: 'default')",
324
+ },
325
+ format: {
326
+ type: "string",
327
+ enum: ["json", "text", "markdown"],
328
+ description: "Storage format (default: 'text')",
329
+ },
330
+ merge: {
331
+ type: "boolean",
332
+ description: "Merge with existing content (default: false)",
333
+ },
334
+ },
335
+ required: ["operation"],
336
+ },
337
+ },
338
+ {
339
+ name: "stream_output",
340
+ description: "Stream output from a Claude Code session",
341
+ inputSchema: {
342
+ type: "object",
343
+ properties: {
344
+ sessionId: {
345
+ type: "string",
346
+ description: "Session ID to stream from",
347
+ },
348
+ follow: {
349
+ type: "boolean",
350
+ description: "Follow output continuously (default: false)",
351
+ },
352
+ lines: {
353
+ type: "number",
354
+ description: "Number of lines to stream (default: 100)",
355
+ },
356
+ },
357
+ required: ["sessionId"],
358
+ },
359
+ },
360
+ {
361
+ name: "wait_for_completion",
362
+ description: "Wait for a session to complete its current task",
363
+ inputSchema: {
364
+ type: "object",
365
+ properties: {
366
+ sessionId: {
367
+ type: "string",
368
+ description: "Session ID to wait for",
369
+ },
370
+ timeout: {
371
+ type: "number",
372
+ description: "Timeout in milliseconds (default: 300000)",
373
+ },
374
+ pollInterval: {
375
+ type: "number",
376
+ description: "Poll interval in milliseconds (default: 1000)",
377
+ },
378
+ },
379
+ required: ["sessionId"],
380
+ },
381
+ },
382
+ {
383
+ name: "get_queue_status",
384
+ description: "Get queue status for a session (pending, delivered, failed counts)",
385
+ inputSchema: {
386
+ type: "object",
387
+ properties: {
388
+ sessionId: {
389
+ type: "string",
390
+ description: "Session ID to check queue for",
391
+ },
392
+ },
393
+ required: ["sessionId"],
394
+ },
395
+ },
396
+ ],
397
+ };
398
+ });
399
+ // Handle tool calls
400
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
401
+ const { name, arguments: args } = request.params;
402
+ try {
403
+ switch (name) {
404
+ case "start_session": {
405
+ const session = await startSession({
406
+ directory: args?.directory,
407
+ apiKey: args?.apiKey,
408
+ model: args?.model,
409
+ maxTokens: args?.maxTokens,
410
+ });
411
+ return {
412
+ content: [
413
+ {
414
+ type: "text",
415
+ text: JSON.stringify({
416
+ sessionId: session.id,
417
+ pid: session.pid,
418
+ workingDirectory: session.workingDirectory,
419
+ status: session.status,
420
+ startTime: session.startTime,
421
+ }, null, 2),
422
+ },
423
+ ],
424
+ };
425
+ }
426
+ case "list_sessions": {
427
+ const activeSessions = listSessions();
428
+ return {
429
+ content: [
430
+ {
431
+ type: "text",
432
+ text: JSON.stringify({
433
+ count: activeSessions.length,
434
+ sessions: activeSessions.map((s) => ({
435
+ sessionId: s.id,
436
+ pid: s.pid,
437
+ workingDirectory: s.workingDirectory,
438
+ status: s.status,
439
+ startTime: s.startTime,
440
+ lastActivity: s.lastActivity,
441
+ })),
442
+ }, null, 2),
443
+ },
444
+ ],
445
+ };
446
+ }
447
+ case "kill_session": {
448
+ const sessionId = args?.sessionId;
449
+ const killed = await killSession(sessionId);
450
+ return {
451
+ content: [
452
+ {
453
+ type: "text",
454
+ text: killed
455
+ ? `Session ${sessionId} killed successfully`
456
+ : `Failed to kill session ${sessionId} or session not found`,
457
+ },
458
+ ],
459
+ };
460
+ }
461
+ case "send_message": {
462
+ const result = await sendMessage({
463
+ sessionId: args?.sessionId,
464
+ prompt: args?.prompt,
465
+ timeout: args?.timeout,
466
+ waitForResponse: args?.waitForResponse,
467
+ stream: args?.stream,
468
+ priority: args?.priority,
469
+ });
470
+ return {
471
+ content: [
472
+ {
473
+ type: "text",
474
+ text: JSON.stringify(result, null, 2),
475
+ },
476
+ ],
477
+ };
478
+ }
479
+ case "sync_context": {
480
+ const result = await syncContext({
481
+ operation: args?.operation,
482
+ key: args?.key,
483
+ value: args?.value,
484
+ projectId: args?.projectId,
485
+ format: args?.format,
486
+ merge: args?.merge,
487
+ });
488
+ return {
489
+ content: [
490
+ {
491
+ type: "text",
492
+ text: JSON.stringify(result, null, 2),
493
+ },
494
+ ],
495
+ };
496
+ }
497
+ case "stream_output": {
498
+ const result = await streamOutput({
499
+ sessionId: args?.sessionId,
500
+ follow: args?.follow,
501
+ lines: args?.lines,
502
+ });
503
+ return {
504
+ content: [
505
+ {
506
+ type: "text",
507
+ text: JSON.stringify(result, null, 2),
508
+ },
509
+ ],
510
+ };
511
+ }
512
+ case "wait_for_completion": {
513
+ const result = await waitForCompletion({
514
+ sessionId: args?.sessionId,
515
+ timeout: args?.timeout,
516
+ pollInterval: args?.pollInterval,
517
+ });
518
+ return {
519
+ content: [
520
+ {
521
+ type: "text",
522
+ text: JSON.stringify(result, null, 2),
523
+ },
524
+ ],
525
+ };
526
+ }
527
+ case "get_queue_status": {
528
+ const stats = await getQueueStatus(args?.sessionId);
529
+ return {
530
+ content: [
531
+ {
532
+ type: "text",
533
+ text: JSON.stringify(stats || { error: "No queue found for session" }, null, 2),
534
+ },
535
+ ],
536
+ };
537
+ }
538
+ default:
539
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
540
+ }
541
+ }
542
+ catch (error) {
543
+ throw new McpError(ErrorCode.InternalError, `Tool execution failed: ${error instanceof Error ? error.message : String(error)}`);
544
+ }
545
+ });
546
+ // ============================================================================
547
+ // MAIN ENTRY POINT
548
+ // ============================================================================
549
+ async function main() {
550
+ setupShutdownHandlers();
551
+ const transport = new StdioServerTransport();
552
+ await server.connect(transport);
553
+ console.error("Claude Code MCP server running on stdio");
554
+ console.error(`[claude-code-mcp] Server started at ${new Date().toISOString()}`);
555
+ process.stdin.resume();
556
+ }
557
+ main().catch((error) => {
558
+ console.error("Fatal error starting Claude Code MCP server:", error);
559
+ process.exit(1);
560
+ });
561
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAA0B,cAAc,EAAE,MAAM,eAAe,CAAC;AAElI,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAClI,OAAO,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,IAAI,EACJ,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,IAAI,EACJ,kBAAkB,EAClB,UAAU,EACV,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,GAKxB,MAAM,4BAA4B,CAAC;AAoBpC,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,sBAAsB,EACtB,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAuB5B,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAClD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEhI,KAAK,UAAU,aAAa;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IACtC,CAAC;IAED,6BAA6B;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,mBAAmB,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,KAAK,UAAU,eAAe,CAAC,OAAsB;IACnD,IAAI,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,8CAA8C,OAAO,CAAC,EAAE,UAAU,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;QAEhG,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC9B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC;oBACH,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAChC,CAAC;gBAAC,MAAM,CAAC;oBACP,eAAe;gBACjB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACvD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,eAAe;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE;gBAC/E,KAAK,EAAE,MAAM;aACd,CAAC,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEnC,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,QAAQ,CAAC,IAAI,UAAU,CAAC,CAAC;IAClF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5F,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,KAAK,UAAU,YAAY,CAAC,UAA+B,EAAE;IAC3D,MAAM,EACJ,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EACzB,MAAM,EACN,KAAK,EACL,SAAS,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IAEzC,OAAO,CAAC,KAAK,CAAC,sCAAsC,SAAS,OAAO,SAAS,aAAa,UAAU,GAAG,CAAC,CAAC;IAEzG,MAAM,GAAG,GAA2B;QAClC,GAAG,OAAO,CAAC,GAAG;QACd,iBAAiB,EAAE,SAAS;KAC7B,CAAC;IAEF,IAAI,MAAM;QAAE,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAC3C,IAAI,KAAK;QAAE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;IACpC,IAAI,SAAS;QAAE,GAAG,CAAC,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;IAE5D,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE;QAC1C,GAAG,EAAE,SAAS;QACd,GAAG;QACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,MAAM,OAAO,GAAkB;QAC7B,EAAE,EAAE,SAAS;QACb,GAAG,EAAE,aAAa,CAAC,GAAI;QACvB,OAAO,EAAE,aAAa;QACtB,gBAAgB,EAAE,SAAS;QAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;KACzB,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,GAAI,EAAE,SAAS,CAAC,CAAC;IAElD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,6BAA6B,SAAS,kBAAkB,IAAI,aAAa,MAAM,GAAG,CAAC,CAAC;QAClG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC,GAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAClC,OAAO,CAAC,KAAK,CAAC,6BAA6B,SAAS,SAAS,EAAE,KAAK,CAAC,CAAC;QACtE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,OAAsB,EAAE,UAAkB,KAAK;IAChF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,EAAE,gCAAgC,OAAO,IAAI,CAAC,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YAED,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7D,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;oBACzB,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEF,UAAU,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAEhE,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACjC,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACxC,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,+BAA+B,CAAC,CAAC;QACnF,MAAM,eAAe,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO;QACL,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,4DAA4D;gBACzE,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,gEAAgE;yBAC9E;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,yEAAyE;yBACvF;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wDAAwD;yBACtE;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,8BAA8B;yBAC5C;qBACF;iBACF;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,qEAAqE;gBAClF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACf;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,8FAA8F;gBAC3G,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,oBAAoB;yBAClC;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,8EAA8E;gBAC3F,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+BAA+B;yBAC7C;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wBAAwB;yBACtC;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,mDAAmD;yBACjE;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,mCAAmC;yBACjD;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,mCAAmC;yBACjD;wBACD,QAAQ,EAAE;4BACR,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2CAA2C;yBACzD;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;iBAClC;aACF;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,sFAAsF;gBACnG,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;4BACzC,WAAW,EAAE,sBAAsB;yBACpC;wBACD,GAAG,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,8CAA8C;yBAC5D;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wCAAwC;yBACtD;wBACD,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,iCAAiC;yBAC/C;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;4BAClC,WAAW,EAAE,kCAAkC;yBAChD;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,8CAA8C;yBAC5D;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,0CAA0C;gBACvD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2BAA2B;yBACzC;wBACD,MAAM,EAAE;4BACN,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,6CAA6C;yBAC3D;wBACD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,0CAA0C;yBACxD;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,iDAAiD;gBAC9D,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,wBAAwB;yBACtC;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,2CAA2C;yBACzD;wBACD,YAAY,EAAE;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+CAA+C;yBAC7D;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,oEAAoE;gBACjF,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE,+BAA+B;yBAC7C;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,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,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;oBACjC,SAAS,EAAE,IAAI,EAAE,SAAmB;oBACpC,MAAM,EAAE,IAAI,EAAE,MAAgB;oBAC9B,KAAK,EAAE,IAAI,EAAE,KAAe;oBAC5B,SAAS,EAAE,IAAI,EAAE,SAAmB;iBACrC,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,SAAS,EAAE,OAAO,CAAC,EAAE;gCACrB,GAAG,EAAE,OAAO,CAAC,GAAG;gCAChB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gCAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;gCACtB,SAAS,EAAE,OAAO,CAAC,SAAS;6BAC7B,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,GAAG,YAAY,EAAE,CAAC;gBAEtC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gCACE,KAAK,EAAE,cAAc,CAAC,MAAM;gCAC5B,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oCACnC,SAAS,EAAE,CAAC,CAAC,EAAE;oCACf,GAAG,EAAE,CAAC,CAAC,GAAG;oCACV,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;oCACpC,MAAM,EAAE,CAAC,CAAC,MAAM;oCAChB,SAAS,EAAE,CAAC,CAAC,SAAS;oCACtB,YAAY,EAAE,CAAC,CAAC,YAAY;iCAC7B,CAAC,CAAC;6BACJ,EACD,IAAI,EACJ,CAAC,CACF;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,SAAS,GAAG,IAAI,EAAE,SAAmB,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;gBAE5C,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,MAAM;gCACV,CAAC,CAAC,WAAW,SAAS,sBAAsB;gCAC5C,CAAC,CAAC,0BAA0B,SAAS,uBAAuB;yBAC/D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;oBAC/B,SAAS,EAAE,IAAI,EAAE,SAAmB;oBACpC,MAAM,EAAE,IAAI,EAAE,MAAgB;oBAC9B,OAAO,EAAE,IAAI,EAAE,OAAiB;oBAChC,eAAe,EAAE,IAAI,EAAE,eAA0B;oBACjD,MAAM,EAAE,IAAI,EAAE,MAAiB;oBAC/B,QAAQ,EAAE,IAAI,EAAE,QAAkB;iBACnC,CAAC,CAAC;gBAEH,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,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;oBAC/B,SAAS,EAAE,IAAI,EAAE,SAAiD;oBAClE,GAAG,EAAE,IAAI,EAAE,GAAa;oBACxB,KAAK,EAAE,IAAI,EAAE,KAAe;oBAC5B,SAAS,EAAE,IAAI,EAAE,SAAmB;oBACpC,MAAM,EAAE,IAAI,EAAE,MAAsC;oBACpD,KAAK,EAAE,IAAI,EAAE,KAAgB;iBAC9B,CAAC,CAAC;gBAEH,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,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;oBAChC,SAAS,EAAE,IAAI,EAAE,SAAmB;oBACpC,MAAM,EAAE,IAAI,EAAE,MAAiB;oBAC/B,KAAK,EAAE,IAAI,EAAE,KAAe;iBAC7B,CAAC,CAAC;gBAEH,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,KAAK,qBAAqB,CAAC,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;oBACrC,SAAS,EAAE,IAAI,EAAE,SAAmB;oBACpC,OAAO,EAAE,IAAI,EAAE,OAAiB;oBAChC,YAAY,EAAE,IAAI,EAAE,YAAsB;iBAC3C,CAAC,CAAC;gBAEH,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,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,SAAmB,CAAC,CAAC;gBAE9D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,4BAA4B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;yBAChF;qBACF;iBACF,CAAC;YACJ,CAAC;YAED;gBACE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,SAAS,CAAC,aAAa,EACvB,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,qBAAqB,EAAE,CAAC;IAExB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,uCAAuC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEjF,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACzB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Integration Tests with Mock Claude Binary
4
+ *
5
+ * Tests the full MCP server integration with:
6
+ * - Mock claude binary for predictable testing
7
+ * - Full tool call lifecycle
8
+ * - Session state management
9
+ * - Doppler integration simulation
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../src/integration.test.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}