@cogitator-ai/mcp 0.1.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.
@@ -0,0 +1,276 @@
1
+ /**
2
+ * MCP Client
3
+ *
4
+ * Connects to external MCP servers and provides access to their tools,
5
+ * resources, and prompts.
6
+ */
7
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
8
+ import { createStdioTransport, createHttpTransport } from './transports';
9
+ import { mcpToCogitator } from '../adapter/tool-adapter';
10
+ /**
11
+ * MCP Client for connecting to external MCP servers
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Connect to a filesystem MCP server
16
+ * const client = await MCPClient.connect({
17
+ * transport: 'stdio',
18
+ * command: 'npx',
19
+ * args: ['-y', '@anthropic/mcp-server-filesystem', '/allowed/path'],
20
+ * });
21
+ *
22
+ * // Get available tools as Cogitator tools
23
+ * const tools = await client.getTools();
24
+ *
25
+ * // Use them with an agent
26
+ * const agent = new Agent({
27
+ * tools: [...tools],
28
+ * ...
29
+ * });
30
+ *
31
+ * // Don't forget to disconnect
32
+ * await client.close();
33
+ * ```
34
+ */
35
+ export class MCPClient {
36
+ client;
37
+ transport;
38
+ connected = false;
39
+ serverCapabilities = {};
40
+ constructor(client, transport) {
41
+ this.client = client;
42
+ this.transport = transport;
43
+ }
44
+ /**
45
+ * Connect to an MCP server
46
+ */
47
+ static async connect(config) {
48
+ const client = new Client({
49
+ name: config.clientName ?? 'cogitator-mcp-client',
50
+ version: config.clientVersion ?? '1.0.0',
51
+ });
52
+ const transport = MCPClient.createTransport(config);
53
+ const mcpClient = new MCPClient(client, transport);
54
+ await mcpClient.initialize(config.timeout);
55
+ return mcpClient;
56
+ }
57
+ /**
58
+ * Create transport based on configuration
59
+ */
60
+ static createTransport(config) {
61
+ switch (config.transport) {
62
+ case 'stdio':
63
+ if (!config.command) {
64
+ throw new Error('Command is required for stdio transport');
65
+ }
66
+ return createStdioTransport({
67
+ command: config.command,
68
+ args: config.args,
69
+ env: config.env,
70
+ });
71
+ case 'http':
72
+ case 'sse':
73
+ if (!config.url) {
74
+ throw new Error('URL is required for HTTP transport');
75
+ }
76
+ return createHttpTransport({
77
+ url: config.url,
78
+ });
79
+ default:
80
+ throw new Error(`Unknown transport type: ${config.transport}`);
81
+ }
82
+ }
83
+ /**
84
+ * Initialize connection and capabilities
85
+ */
86
+ async initialize(timeout) {
87
+ const timeoutPromise = timeout
88
+ ? new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), timeout))
89
+ : null;
90
+ const connectPromise = this.client.connect(this.transport);
91
+ if (timeoutPromise) {
92
+ await Promise.race([connectPromise, timeoutPromise]);
93
+ }
94
+ else {
95
+ await connectPromise;
96
+ }
97
+ this.connected = true;
98
+ const serverInfo = this.client.getServerCapabilities();
99
+ this.serverCapabilities = {
100
+ tools: !!serverInfo?.tools,
101
+ resources: !!serverInfo?.resources,
102
+ prompts: !!serverInfo?.prompts,
103
+ };
104
+ }
105
+ /**
106
+ * Check if connected to server
107
+ */
108
+ isConnected() {
109
+ return this.connected;
110
+ }
111
+ /**
112
+ * Get server capabilities
113
+ */
114
+ getCapabilities() {
115
+ return { ...this.serverCapabilities };
116
+ }
117
+ /**
118
+ * List available tools from the MCP server
119
+ */
120
+ async listToolDefinitions() {
121
+ if (!this.serverCapabilities.tools) {
122
+ return [];
123
+ }
124
+ const result = await this.client.listTools();
125
+ return result.tools.map((tool) => ({
126
+ name: tool.name,
127
+ description: tool.description ?? '',
128
+ inputSchema: tool.inputSchema,
129
+ }));
130
+ }
131
+ /**
132
+ * Get MCP tools as Cogitator Tool instances
133
+ *
134
+ * These tools can be directly used with Cogitator agents.
135
+ */
136
+ async getTools() {
137
+ const definitions = await this.listToolDefinitions();
138
+ return definitions.map((def) => mcpToCogitator(def, this));
139
+ }
140
+ /**
141
+ * Call a tool on the MCP server
142
+ */
143
+ async callTool(name, args) {
144
+ const result = await this.client.callTool({
145
+ name,
146
+ arguments: args,
147
+ });
148
+ const content = result.content;
149
+ if (content && Array.isArray(content) && content.length > 0) {
150
+ const firstContent = content[0];
151
+ if (firstContent.type === 'text') {
152
+ try {
153
+ return JSON.parse(firstContent.text);
154
+ }
155
+ catch {
156
+ return firstContent.text;
157
+ }
158
+ }
159
+ return firstContent;
160
+ }
161
+ return result;
162
+ }
163
+ /**
164
+ * List available resources from the MCP server
165
+ */
166
+ async listResources() {
167
+ if (!this.serverCapabilities.resources) {
168
+ return [];
169
+ }
170
+ const result = await this.client.listResources();
171
+ return result.resources.map((resource) => ({
172
+ uri: resource.uri,
173
+ name: resource.name,
174
+ description: resource.description,
175
+ mimeType: resource.mimeType,
176
+ }));
177
+ }
178
+ /**
179
+ * Read a resource from the MCP server
180
+ */
181
+ async readResource(uri) {
182
+ const result = await this.client.readResource({ uri });
183
+ if (result.contents && result.contents.length > 0) {
184
+ const content = result.contents[0];
185
+ return {
186
+ uri: content.uri,
187
+ mimeType: content.mimeType,
188
+ text: 'text' in content ? content.text : undefined,
189
+ blob: 'blob' in content ? content.blob : undefined,
190
+ };
191
+ }
192
+ return { uri };
193
+ }
194
+ /**
195
+ * List available prompts from the MCP server
196
+ */
197
+ async listPrompts() {
198
+ if (!this.serverCapabilities.prompts) {
199
+ return [];
200
+ }
201
+ const result = await this.client.listPrompts();
202
+ return result.prompts.map((prompt) => ({
203
+ name: prompt.name,
204
+ description: prompt.description,
205
+ arguments: prompt.arguments?.map((arg) => ({
206
+ name: arg.name,
207
+ description: arg.description,
208
+ required: arg.required,
209
+ })),
210
+ }));
211
+ }
212
+ /**
213
+ * Get a prompt from the MCP server
214
+ */
215
+ async getPrompt(name, args) {
216
+ const result = await this.client.getPrompt({
217
+ name,
218
+ arguments: args,
219
+ });
220
+ return result.messages.map((msg) => {
221
+ const content = msg.content;
222
+ return {
223
+ role: msg.role,
224
+ content: {
225
+ type: content.type,
226
+ text: content.type === 'text' ? content.text : undefined,
227
+ data: content.type === 'image' ? content.data : undefined,
228
+ mimeType: content.type === 'image' ? content.mimeType : undefined,
229
+ resource: content.type === 'resource'
230
+ ? {
231
+ uri: content.resource.uri,
232
+ text: 'text' in content.resource ? content.resource.text : undefined,
233
+ blob: 'blob' in content.resource ? content.resource.blob : undefined,
234
+ }
235
+ : undefined,
236
+ },
237
+ };
238
+ });
239
+ }
240
+ /**
241
+ * Close the connection to the MCP server
242
+ */
243
+ async close() {
244
+ if (this.connected) {
245
+ await this.client.close();
246
+ this.connected = false;
247
+ }
248
+ }
249
+ }
250
+ /**
251
+ * Helper function to connect to an MCP server and get tools in one step
252
+ *
253
+ * @example
254
+ * ```typescript
255
+ * const { tools, cleanup } = await connectMCPServer({
256
+ * transport: 'stdio',
257
+ * command: 'npx',
258
+ * args: ['-y', '@anthropic/mcp-server-filesystem', '/path'],
259
+ * });
260
+ *
261
+ * const agent = new Agent({ tools });
262
+ *
263
+ * // When done
264
+ * await cleanup();
265
+ * ```
266
+ */
267
+ export async function connectMCPServer(config) {
268
+ const client = await MCPClient.connect(config);
269
+ const tools = await client.getTools();
270
+ return {
271
+ client,
272
+ tools,
273
+ cleanup: () => client.close(),
274
+ };
275
+ }
276
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/client/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * MCP Transport Wrappers
3
+ *
4
+ * Provides factory functions for creating MCP transports.
5
+ */
6
+ import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
7
+ export interface StdioTransportConfig {
8
+ /** Command to execute */
9
+ command: string;
10
+ /** Command arguments */
11
+ args?: string[];
12
+ /** Environment variables */
13
+ env?: Record<string, string>;
14
+ /** Working directory */
15
+ cwd?: string;
16
+ }
17
+ export interface HttpTransportConfig {
18
+ /** Server URL */
19
+ url: string;
20
+ /** Custom headers */
21
+ headers?: Record<string, string>;
22
+ }
23
+ /**
24
+ * Create a stdio transport for connecting to a local MCP server process
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const transport = createStdioTransport({
29
+ * command: 'npx',
30
+ * args: ['-y', '@anthropic/mcp-server-filesystem', '/path/to/allowed/dir'],
31
+ * });
32
+ * ```
33
+ */
34
+ export declare function createStdioTransport(config: StdioTransportConfig): Transport;
35
+ /**
36
+ * Create an HTTP transport for connecting to a remote MCP server
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const transport = createHttpTransport({
41
+ * url: 'http://localhost:3000/mcp',
42
+ * });
43
+ * ```
44
+ */
45
+ export declare function createHttpTransport(config: HttpTransportConfig): Transport;
46
+ //# sourceMappingURL=transports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/client/transports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE/E,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAEhB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IAEZ,qBAAqB;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAiB5E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAE1E"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MCP Transport Wrappers
3
+ *
4
+ * Provides factory functions for creating MCP transports.
5
+ */
6
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
7
+ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
8
+ /**
9
+ * Create a stdio transport for connecting to a local MCP server process
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const transport = createStdioTransport({
14
+ * command: 'npx',
15
+ * args: ['-y', '@anthropic/mcp-server-filesystem', '/path/to/allowed/dir'],
16
+ * });
17
+ * ```
18
+ */
19
+ export function createStdioTransport(config) {
20
+ let env;
21
+ if (config.env) {
22
+ env = { ...config.env };
23
+ for (const [key, value] of Object.entries(process.env)) {
24
+ if (value !== undefined && !(key in env)) {
25
+ env[key] = value;
26
+ }
27
+ }
28
+ }
29
+ return new StdioClientTransport({
30
+ command: config.command,
31
+ args: config.args,
32
+ env,
33
+ cwd: config.cwd,
34
+ });
35
+ }
36
+ /**
37
+ * Create an HTTP transport for connecting to a remote MCP server
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const transport = createHttpTransport({
42
+ * url: 'http://localhost:3000/mcp',
43
+ * });
44
+ * ```
45
+ */
46
+ export function createHttpTransport(config) {
47
+ return new StreamableHTTPClientTransport(new URL(config.url));
48
+ }
49
+ //# sourceMappingURL=transports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transports.js","sourceRoot":"","sources":["../../src/client/transports.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAyBnG;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,IAAI,GAAuC,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,oBAAoB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG;QACH,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,OAAO,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @cogitator-ai/mcp - MCP (Model Context Protocol) Integration
3
+ *
4
+ * This package provides full MCP support for Cogitator:
5
+ * - MCPClient: Connect to external MCP servers and use their tools
6
+ * - MCPServer: Expose Cogitator tools as an MCP server
7
+ * - Tool Adapter: Convert between Cogitator and MCP tool formats
8
+ */
9
+ export { MCPClient } from './client/mcp-client';
10
+ export { createStdioTransport, createHttpTransport } from './client/transports';
11
+ export { MCPServer } from './server/mcp-server';
12
+ export { cogitatorToMCP, mcpToCogitator, wrapMCPTools, zodToJsonSchema, jsonSchemaToZod, } from './adapter/tool-adapter';
13
+ export type { MCPClientConfig, MCPServerConfig, MCPTransportType, MCPResource, MCPResourceContent, MCPPrompt, MCPPromptArgument, MCPPromptMessage, MCPToolDefinition, MCPToolCallResult, MCPToolContent, ToolAdapterOptions, ConvertedTools, } from './types';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,cAAc,GACf,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @cogitator-ai/mcp - MCP (Model Context Protocol) Integration
3
+ *
4
+ * This package provides full MCP support for Cogitator:
5
+ * - MCPClient: Connect to external MCP servers and use their tools
6
+ * - MCPServer: Expose Cogitator tools as an MCP server
7
+ * - Tool Adapter: Convert between Cogitator and MCP tool formats
8
+ */
9
+ export { MCPClient } from './client/mcp-client';
10
+ export { createStdioTransport, createHttpTransport } from './client/transports';
11
+ export { MCPServer } from './server/mcp-server';
12
+ export { cogitatorToMCP, mcpToCogitator, wrapMCPTools, zodToJsonSchema, jsonSchemaToZod, } from './adapter/tool-adapter';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * MCP Server
3
+ *
4
+ * Exposes Cogitator tools as an MCP server that can be used by
5
+ * other MCP clients (e.g., Claude Desktop, other AI assistants).
6
+ */
7
+ import type { Tool } from '@cogitator-ai/types';
8
+ import type { MCPServerConfig } from '../types';
9
+ /**
10
+ * MCP Server for exposing Cogitator tools
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * // Create server with tools
15
+ * const server = new MCPServer({
16
+ * name: 'my-cogitator-server',
17
+ * version: '1.0.0',
18
+ * transport: 'stdio',
19
+ * });
20
+ *
21
+ * // Register tools
22
+ * server.registerTool(calculatorTool);
23
+ * server.registerTool(fileReadTool);
24
+ * server.registerTools([searchTool, weatherTool]);
25
+ *
26
+ * // Start serving
27
+ * await server.start();
28
+ * ```
29
+ */
30
+ export declare class MCPServer {
31
+ private server;
32
+ private config;
33
+ private tools;
34
+ private started;
35
+ constructor(config: MCPServerConfig);
36
+ /**
37
+ * Register a single Cogitator tool
38
+ */
39
+ registerTool(tool: Tool): void;
40
+ /**
41
+ * Register multiple Cogitator tools
42
+ */
43
+ registerTools(tools: Tool[]): void;
44
+ /**
45
+ * Unregister a tool by name
46
+ */
47
+ unregisterTool(name: string): boolean;
48
+ /**
49
+ * Get list of registered tool names
50
+ */
51
+ getRegisteredTools(): string[];
52
+ /**
53
+ * Register a tool with the MCP server
54
+ */
55
+ private registerMCPTool;
56
+ /**
57
+ * Build the input schema for MCP tool registration
58
+ */
59
+ private buildInputSchema;
60
+ /**
61
+ * Execute a tool and return MCP-formatted result
62
+ */
63
+ private executeTool;
64
+ /**
65
+ * Start the MCP server
66
+ */
67
+ start(): Promise<void>;
68
+ /**
69
+ * Start HTTP server for MCP
70
+ */
71
+ private startHttpServer;
72
+ /**
73
+ * Stop the server
74
+ */
75
+ stop(): Promise<void>;
76
+ /**
77
+ * Check if server is running
78
+ */
79
+ isRunning(): boolean;
80
+ }
81
+ /**
82
+ * Create and start an MCP server with the given tools
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * await serveMCPTools([calculator, datetime], {
87
+ * name: 'my-tools',
88
+ * version: '1.0.0',
89
+ * transport: 'stdio',
90
+ * });
91
+ * ```
92
+ */
93
+ export declare function serveMCPTools(tools: Tool[], config: MCPServerConfig): Promise<MCPServer>;
94
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAShD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,eAAe;IAQnC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS9B;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMlC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;YACW,WAAW;IAsDzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC5B;;OAEG;YACW,eAAe;IAkD7B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,IAAI,EAAE,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,SAAS,CAAC,CAKpB"}