@toolplex/ai-engine 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.
Files changed (88) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +292 -0
  3. package/dist/adapters/index.d.ts +9 -0
  4. package/dist/adapters/index.d.ts.map +1 -0
  5. package/dist/adapters/index.js +9 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/types.d.ts +137 -0
  8. package/dist/adapters/types.d.ts.map +1 -0
  9. package/dist/adapters/types.js +14 -0
  10. package/dist/adapters/types.js.map +1 -0
  11. package/dist/core/ChatEngine.d.ts +47 -0
  12. package/dist/core/ChatEngine.d.ts.map +1 -0
  13. package/dist/core/ChatEngine.js +355 -0
  14. package/dist/core/ChatEngine.js.map +1 -0
  15. package/dist/core/ToolBuilder.d.ts +25 -0
  16. package/dist/core/ToolBuilder.d.ts.map +1 -0
  17. package/dist/core/ToolBuilder.js +215 -0
  18. package/dist/core/ToolBuilder.js.map +1 -0
  19. package/dist/core/index.d.ts +6 -0
  20. package/dist/core/index.d.ts.map +1 -0
  21. package/dist/core/index.js +6 -0
  22. package/dist/core/index.js.map +1 -0
  23. package/dist/index.d.ts +41 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +49 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mcp/DefaultStdioTransportFactory.d.ts +27 -0
  28. package/dist/mcp/DefaultStdioTransportFactory.d.ts.map +1 -0
  29. package/dist/mcp/DefaultStdioTransportFactory.js +60 -0
  30. package/dist/mcp/DefaultStdioTransportFactory.js.map +1 -0
  31. package/dist/mcp/MCPClient.d.ts +60 -0
  32. package/dist/mcp/MCPClient.d.ts.map +1 -0
  33. package/dist/mcp/MCPClient.js +164 -0
  34. package/dist/mcp/MCPClient.js.map +1 -0
  35. package/dist/mcp/index.d.ts +10 -0
  36. package/dist/mcp/index.d.ts.map +1 -0
  37. package/dist/mcp/index.js +11 -0
  38. package/dist/mcp/index.js.map +1 -0
  39. package/dist/mcp/paths.d.ts +16 -0
  40. package/dist/mcp/paths.d.ts.map +1 -0
  41. package/dist/mcp/paths.js +58 -0
  42. package/dist/mcp/paths.js.map +1 -0
  43. package/dist/mcp/types.d.ts +85 -0
  44. package/dist/mcp/types.d.ts.map +1 -0
  45. package/dist/mcp/types.js +7 -0
  46. package/dist/mcp/types.js.map +1 -0
  47. package/dist/providers/index.d.ts +40 -0
  48. package/dist/providers/index.d.ts.map +1 -0
  49. package/dist/providers/index.js +148 -0
  50. package/dist/providers/index.js.map +1 -0
  51. package/dist/providers/toolplex.d.ts +43 -0
  52. package/dist/providers/toolplex.d.ts.map +1 -0
  53. package/dist/providers/toolplex.js +168 -0
  54. package/dist/providers/toolplex.js.map +1 -0
  55. package/dist/types/index.d.ts +218 -0
  56. package/dist/types/index.d.ts.map +1 -0
  57. package/dist/types/index.js +8 -0
  58. package/dist/types/index.js.map +1 -0
  59. package/dist/utils/index.d.ts +8 -0
  60. package/dist/utils/index.d.ts.map +1 -0
  61. package/dist/utils/index.js +8 -0
  62. package/dist/utils/index.js.map +1 -0
  63. package/dist/utils/models.d.ts +30 -0
  64. package/dist/utils/models.d.ts.map +1 -0
  65. package/dist/utils/models.js +52 -0
  66. package/dist/utils/models.js.map +1 -0
  67. package/dist/utils/schema.d.ts +74 -0
  68. package/dist/utils/schema.d.ts.map +1 -0
  69. package/dist/utils/schema.js +253 -0
  70. package/dist/utils/schema.js.map +1 -0
  71. package/package.json +70 -0
  72. package/src/adapters/index.ts +9 -0
  73. package/src/adapters/types.ts +241 -0
  74. package/src/core/ChatEngine.ts +464 -0
  75. package/src/core/ToolBuilder.ts +323 -0
  76. package/src/core/index.ts +6 -0
  77. package/src/index.ts +86 -0
  78. package/src/mcp/DefaultStdioTransportFactory.ts +71 -0
  79. package/src/mcp/MCPClient.ts +209 -0
  80. package/src/mcp/index.ts +24 -0
  81. package/src/mcp/paths.ts +91 -0
  82. package/src/mcp/types.ts +93 -0
  83. package/src/providers/index.ts +177 -0
  84. package/src/providers/toolplex.ts +217 -0
  85. package/src/types/index.ts +290 -0
  86. package/src/utils/index.ts +8 -0
  87. package/src/utils/models.ts +59 -0
  88. package/src/utils/schema.ts +307 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @toolplex/ai-engine
3
+ *
4
+ * Core AI chat engine for ToolPlex.
5
+ * Powers desktop, cloud, and CLI environments through adapter pattern.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ChatEngine, createElectronAdapter } from '@toolplex/ai-engine';
10
+ *
11
+ * const adapter = createElectronAdapter({ webContents });
12
+ * const engine = new ChatEngine(adapter);
13
+ *
14
+ * await engine.stream({
15
+ * sessionId: 'session-123',
16
+ * modelId: 'anthropic/claude-sonnet-4',
17
+ * messages: [{ role: 'user', content: 'Hello!' }],
18
+ * });
19
+ * ```
20
+ */
21
+ export * from "./types/index.js";
22
+ export * from "./adapters/index.js";
23
+ export { getProvider, getModel, isProviderAvailable, toolplexUsageMap, type GetProviderOptions, } from "./providers/index.js";
24
+ export { createToolPlex, type ToolPlexConfig } from "./providers/toolplex.js";
25
+ export { deepSanitizeParams, resolveSchemaRefs, sanitizeSchemaForGemini, cleanToolSchema, } from "./utils/schema.js";
26
+ export { isChatGPTModel, isGoogleGeminiModel, isAnthropicModel, parseModelId, } from "./utils/models.js";
27
+ export { ChatEngine, type ChatEngineOptions } from "./core/ChatEngine.js";
28
+ export { buildMCPTools, type BuildToolsOptions } from "./core/ToolBuilder.js";
29
+ export { MCPClient } from "./mcp/MCPClient.js";
30
+ export type { MCPSession, MCPResult, MCPTool, MCPToolResult, TransportFactory, MCPClientConfig, } from "./mcp/types.js";
31
+ export { getToolplexClientPath } from "./mcp/paths.js";
32
+ export { DefaultStdioTransportFactory, defaultStdioTransportFactory, } from "./mcp/DefaultStdioTransportFactory.js";
33
+ export { streamText, tool, jsonSchema, stepCountIs } from "ai";
34
+ export type { ToolResultPart, ToolCallPart, TextPart, ImagePart } from "ai";
35
+ export { createOpenAI } from "@ai-sdk/openai";
36
+ export { createAnthropic } from "@ai-sdk/anthropic";
37
+ export { createGoogleGenerativeAI } from "@ai-sdk/google";
38
+ export { createOpenRouter } from "@openrouter/ai-sdk-provider";
39
+ export { Client as MCPSDKClient } from "@modelcontextprotocol/sdk/client/index.js";
40
+ export { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,cAAc,kBAAkB,CAAC;AAGjC,cAAc,qBAAqB,CAAC;AAGpC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @toolplex/ai-engine
3
+ *
4
+ * Core AI chat engine for ToolPlex.
5
+ * Powers desktop, cloud, and CLI environments through adapter pattern.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ChatEngine, createElectronAdapter } from '@toolplex/ai-engine';
10
+ *
11
+ * const adapter = createElectronAdapter({ webContents });
12
+ * const engine = new ChatEngine(adapter);
13
+ *
14
+ * await engine.stream({
15
+ * sessionId: 'session-123',
16
+ * modelId: 'anthropic/claude-sonnet-4',
17
+ * messages: [{ role: 'user', content: 'Hello!' }],
18
+ * });
19
+ * ```
20
+ */
21
+ // Types
22
+ export * from "./types/index.js";
23
+ // Adapters
24
+ export * from "./adapters/index.js";
25
+ // Providers
26
+ export { getProvider, getModel, isProviderAvailable, toolplexUsageMap, } from "./providers/index.js";
27
+ export { createToolPlex } from "./providers/toolplex.js";
28
+ // Utilities
29
+ export { deepSanitizeParams, resolveSchemaRefs, sanitizeSchemaForGemini, cleanToolSchema, } from "./utils/schema.js";
30
+ export { isChatGPTModel, isGoogleGeminiModel, isAnthropicModel, parseModelId, } from "./utils/models.js";
31
+ // Core engine
32
+ export { ChatEngine } from "./core/ChatEngine.js";
33
+ export { buildMCPTools } from "./core/ToolBuilder.js";
34
+ // MCP Client
35
+ export { MCPClient } from "./mcp/MCPClient.js";
36
+ // MCP path utilities and default transport
37
+ export { getToolplexClientPath } from "./mcp/paths.js";
38
+ export { DefaultStdioTransportFactory, defaultStdioTransportFactory, } from "./mcp/DefaultStdioTransportFactory.js";
39
+ // Re-export AI SDK primitives for consumers
40
+ export { streamText, tool, jsonSchema, stepCountIs } from "ai";
41
+ // Re-export provider factory functions
42
+ export { createOpenAI } from "@ai-sdk/openai";
43
+ export { createAnthropic } from "@ai-sdk/anthropic";
44
+ export { createGoogleGenerativeAI } from "@ai-sdk/google";
45
+ export { createOpenRouter } from "@openrouter/ai-sdk-provider";
46
+ // Re-export MCP SDK for transport implementations
47
+ export { Client as MCPSDKClient } from "@modelcontextprotocol/sdk/client/index.js";
48
+ export { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,QAAQ;AACR,cAAc,kBAAkB,CAAC;AAEjC,WAAW;AACX,cAAc,qBAAqB,CAAC;AAEpC,YAAY;AACZ,OAAO,EACL,WAAW,EACX,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAuB,MAAM,yBAAyB,CAAC;AAE9E,YAAY;AACZ,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,EAAE,UAAU,EAA0B,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAA0B,MAAM,uBAAuB,CAAC;AAE9E,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU/C,2CAA2C;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAE/C,4CAA4C;AAC5C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAG/D,uCAAuC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,kDAAkD;AAClD,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @toolplex/ai-engine - Default Stdio Transport Factory
3
+ *
4
+ * Default implementation of TransportFactory that spawns @toolplex/client
5
+ * using the system's Node.js. This works out-of-box for CLI usage.
6
+ *
7
+ * For desktop apps with bundled dependencies, override this with a custom
8
+ * TransportFactory implementation.
9
+ */
10
+ import type { TransportFactory, MCPSession } from "./types.js";
11
+ /**
12
+ * Default Transport Factory - spawns @toolplex/client using system Node.js
13
+ *
14
+ * This is suitable for:
15
+ * - CLI applications
16
+ * - Development environments
17
+ * - Any context where system Node.js is available
18
+ *
19
+ * For Electron/desktop apps with bundled Node.js, create a custom
20
+ * TransportFactory that uses the bundled runtime.
21
+ */
22
+ export declare class DefaultStdioTransportFactory implements TransportFactory {
23
+ createTransport(apiKey: string, sessionResumeHistory?: string): Promise<MCPSession>;
24
+ closeTransport(session: MCPSession): Promise<void>;
25
+ }
26
+ export declare const defaultStdioTransportFactory: DefaultStdioTransportFactory;
27
+ //# sourceMappingURL=DefaultStdioTransportFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultStdioTransportFactory.d.ts","sourceRoot":"","sources":["../../src/mcp/DefaultStdioTransportFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG/D;;;;;;;;;;GAUG;AACH,qBAAa,4BAA6B,YAAW,gBAAgB;IAC7D,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,UAAU,CAAC;IA8BhB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzD;AAGD,eAAO,MAAM,4BAA4B,8BAAqC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @toolplex/ai-engine - Default Stdio Transport Factory
3
+ *
4
+ * Default implementation of TransportFactory that spawns @toolplex/client
5
+ * using the system's Node.js. This works out-of-box for CLI usage.
6
+ *
7
+ * For desktop apps with bundled dependencies, override this with a custom
8
+ * TransportFactory implementation.
9
+ */
10
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
11
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
12
+ import { getToolplexClientPath } from "./paths.js";
13
+ /**
14
+ * Default Transport Factory - spawns @toolplex/client using system Node.js
15
+ *
16
+ * This is suitable for:
17
+ * - CLI applications
18
+ * - Development environments
19
+ * - Any context where system Node.js is available
20
+ *
21
+ * For Electron/desktop apps with bundled Node.js, create a custom
22
+ * TransportFactory that uses the bundled runtime.
23
+ */
24
+ export class DefaultStdioTransportFactory {
25
+ async createTransport(apiKey, sessionResumeHistory) {
26
+ const toolplexPath = getToolplexClientPath();
27
+ // Build environment for the MCP server
28
+ const env = {
29
+ ...process.env,
30
+ TOOLPLEX_API_KEY: apiKey,
31
+ CLIENT_NAME: "toolplex-ai-engine",
32
+ };
33
+ // Add session resume history if provided
34
+ if (sessionResumeHistory) {
35
+ env.TOOLPLEX_SESSION_RESUME_HISTORY = sessionResumeHistory;
36
+ }
37
+ const transport = new StdioClientTransport({
38
+ command: "node", // Uses system Node.js
39
+ args: [toolplexPath],
40
+ env,
41
+ });
42
+ const client = new Client({
43
+ name: "toolplex-ai-engine-client",
44
+ version: "1.0.0",
45
+ });
46
+ await client.connect(transport);
47
+ return { transport, client };
48
+ }
49
+ async closeTransport(session) {
50
+ try {
51
+ await session.client.close();
52
+ }
53
+ catch {
54
+ // Silently continue to ensure cleanup
55
+ }
56
+ }
57
+ }
58
+ // Export singleton instance for convenience
59
+ export const defaultStdioTransportFactory = new DefaultStdioTransportFactory();
60
+ //# sourceMappingURL=DefaultStdioTransportFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultStdioTransportFactory.js","sourceRoot":"","sources":["../../src/mcp/DefaultStdioTransportFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,4BAA4B;IACvC,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,oBAA6B;QAE7B,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;QAE7C,uCAAuC;QACvC,MAAM,GAAG,GAA2B;YAClC,GAAI,OAAO,CAAC,GAA8B;YAC1C,gBAAgB,EAAE,MAAM;YACxB,WAAW,EAAE,oBAAoB;SAClC,CAAC;QAEF,yCAAyC;QACzC,IAAI,oBAAoB,EAAE,CAAC;YACzB,GAAG,CAAC,+BAA+B,GAAG,oBAAoB,CAAC;QAC7D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;YACzC,OAAO,EAAE,MAAM,EAAE,sBAAsB;YACvC,IAAI,EAAE,CAAC,YAAY,CAAC;YACpB,GAAG;SACJ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAmB;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;CACF;AAED,4CAA4C;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Client
3
+ *
4
+ * Core MCP client that manages sessions and tool operations.
5
+ * Uses a TransportFactory for platform-specific transport creation.
6
+ */
7
+ import type { MCPResult, MCPToolResult, MCPClientConfig } from "./types.js";
8
+ /**
9
+ * MCP Client - manages sessions and provides tool operations
10
+ */
11
+ export declare class MCPClient {
12
+ private sessions;
13
+ private transportFactory;
14
+ private logger;
15
+ private imageHandler;
16
+ private getCurrentUserId;
17
+ constructor(config: MCPClientConfig);
18
+ /**
19
+ * Creates an MCP session and waits for tools to be initialized
20
+ *
21
+ * CRITICAL: The ToolPlex MCP server fetches tool schemas from the API during startup.
22
+ * This is asynchronous and can take time. We MUST wait for this to complete before
23
+ * returning, otherwise listTools() will return empty schemas.
24
+ */
25
+ createSession(sessionId: string, apiKey: string, sessionResumeHistory?: string): Promise<MCPResult>;
26
+ /**
27
+ * Lists available tools for a session
28
+ */
29
+ listTools(sessionId: string): Promise<{
30
+ tools: any[];
31
+ }>;
32
+ /**
33
+ * Calls a tool for a session
34
+ */
35
+ callTool(sessionId: string, toolName: string, args: any): Promise<MCPToolResult>;
36
+ /**
37
+ * Destroys an MCP session
38
+ */
39
+ destroySession(sessionId: string): Promise<MCPResult>;
40
+ /**
41
+ * Gets all active session IDs
42
+ */
43
+ getActiveSessions(): string[];
44
+ /**
45
+ * Destroys all MCP sessions (cleanup)
46
+ */
47
+ destroyAllSessions(): Promise<void>;
48
+ /**
49
+ * Gets session info
50
+ */
51
+ getSessionInfo(sessionId: string): {
52
+ exists: boolean;
53
+ isConnected?: boolean;
54
+ };
55
+ /**
56
+ * Check if a session exists
57
+ */
58
+ hasSession(sessionId: string): boolean;
59
+ }
60
+ //# sourceMappingURL=MCPClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPClient.d.ts","sourceRoot":"","sources":["../../src/mcp/MCPClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAEV,SAAS,EACT,aAAa,EACb,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,gBAAgB,CAAsC;gBAElD,MAAM,EAAE,eAAe;IAOnC;;;;;;OAMG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,SAAS,CAAC;IA2BrB;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IA+B7D;;OAEG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,GACR,OAAO,CAAC,aAAa,CAAC;IAyCzB;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAiB3D;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKzC;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QACjC,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;IASD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGvC"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Client
3
+ *
4
+ * Core MCP client that manages sessions and tool operations.
5
+ * Uses a TransportFactory for platform-specific transport creation.
6
+ */
7
+ /**
8
+ * MCP Client - manages sessions and provides tool operations
9
+ */
10
+ export class MCPClient {
11
+ sessions = new Map();
12
+ transportFactory;
13
+ logger;
14
+ imageHandler;
15
+ getCurrentUserId;
16
+ constructor(config) {
17
+ this.transportFactory = config.transportFactory;
18
+ this.logger = config.logger;
19
+ this.imageHandler = config.imageHandler;
20
+ this.getCurrentUserId = config.getCurrentUserId;
21
+ }
22
+ /**
23
+ * Creates an MCP session and waits for tools to be initialized
24
+ *
25
+ * CRITICAL: The ToolPlex MCP server fetches tool schemas from the API during startup.
26
+ * This is asynchronous and can take time. We MUST wait for this to complete before
27
+ * returning, otherwise listTools() will return empty schemas.
28
+ */
29
+ async createSession(sessionId, apiKey, sessionResumeHistory) {
30
+ try {
31
+ // Clean up existing session if it exists
32
+ await this.destroySession(sessionId);
33
+ this.logger?.debug("MCPClient: Creating session", { sessionId });
34
+ const session = await this.transportFactory.createTransport(apiKey, sessionResumeHistory);
35
+ this.sessions.set(sessionId, session);
36
+ this.logger?.debug("MCPClient: Session created and stored", {
37
+ sessionId,
38
+ });
39
+ return { success: true };
40
+ }
41
+ catch (error) {
42
+ this.logger?.error("MCPClient: Transport creation failed", { error });
43
+ return {
44
+ success: false,
45
+ error: error instanceof Error ? error.message : "Unknown error",
46
+ };
47
+ }
48
+ }
49
+ /**
50
+ * Lists available tools for a session
51
+ */
52
+ async listTools(sessionId) {
53
+ this.logger?.debug("MCPClient: Listing tools for session", {
54
+ sessionId,
55
+ availableSessions: Array.from(this.sessions.keys()),
56
+ });
57
+ const session = this.sessions.get(sessionId);
58
+ if (!session) {
59
+ this.logger?.error("MCPClient: No session found in registry", {
60
+ sessionId,
61
+ availableSessions: Array.from(this.sessions.keys()),
62
+ });
63
+ throw new Error(`No MCP client found for session: ${sessionId}`);
64
+ }
65
+ try {
66
+ const result = await session.client.listTools();
67
+ this.logger?.debug("MCPClient: Tools listed successfully", {
68
+ sessionId,
69
+ toolCount: result?.tools?.length || 0,
70
+ });
71
+ return result;
72
+ }
73
+ catch (error) {
74
+ this.logger?.error("MCPClient: Failed to list tools", {
75
+ sessionId,
76
+ error,
77
+ });
78
+ throw error;
79
+ }
80
+ }
81
+ /**
82
+ * Calls a tool for a session
83
+ */
84
+ async callTool(sessionId, toolName, args) {
85
+ const session = this.sessions.get(sessionId);
86
+ if (!session) {
87
+ throw new Error(`No MCP client found for session: ${sessionId}`);
88
+ }
89
+ const toolCall = {
90
+ name: toolName,
91
+ arguments: args || {},
92
+ };
93
+ const result = await session.client.callTool(toolCall);
94
+ // Process the result to handle images if handler is available
95
+ if (this.imageHandler &&
96
+ this.getCurrentUserId &&
97
+ result?.content &&
98
+ Array.isArray(result.content)) {
99
+ const hasImages = result.content.some((item) => item?.type === "image" && item?.data);
100
+ if (hasImages) {
101
+ const userId = this.getCurrentUserId();
102
+ if (userId) {
103
+ await this.imageHandler.initialize(userId);
104
+ const processed = await this.imageHandler.processToolResult(result);
105
+ return {
106
+ ...result,
107
+ content: processed.content,
108
+ savedImages: processed.savedImages,
109
+ };
110
+ }
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ /**
116
+ * Destroys an MCP session
117
+ */
118
+ async destroySession(sessionId) {
119
+ try {
120
+ const session = this.sessions.get(sessionId);
121
+ if (session) {
122
+ await this.transportFactory.closeTransport(session);
123
+ this.sessions.delete(sessionId);
124
+ }
125
+ return { success: true };
126
+ }
127
+ catch (error) {
128
+ return {
129
+ success: false,
130
+ error: error instanceof Error ? error.message : "Unknown error",
131
+ };
132
+ }
133
+ }
134
+ /**
135
+ * Gets all active session IDs
136
+ */
137
+ getActiveSessions() {
138
+ return Array.from(this.sessions.keys());
139
+ }
140
+ /**
141
+ * Destroys all MCP sessions (cleanup)
142
+ */
143
+ async destroyAllSessions() {
144
+ const sessionIds = this.getActiveSessions();
145
+ await Promise.all(sessionIds.map((id) => this.destroySession(id)));
146
+ }
147
+ /**
148
+ * Gets session info
149
+ */
150
+ getSessionInfo(sessionId) {
151
+ const session = this.sessions.get(sessionId);
152
+ if (!session) {
153
+ return { exists: false };
154
+ }
155
+ return { exists: true, isConnected: true };
156
+ }
157
+ /**
158
+ * Check if a session exists
159
+ */
160
+ hasSession(sessionId) {
161
+ return this.sessions.has(sessionId);
162
+ }
163
+ }
164
+ //# sourceMappingURL=MCPClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCPClient.js","sourceRoot":"","sources":["../../src/mcp/MCPClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Module
3
+ *
4
+ * MCP (Model Context Protocol) client for ToolPlex.
5
+ */
6
+ export { MCPClient } from "./MCPClient.js";
7
+ export type { MCPSession, MCPResult, MCPTool, MCPToolResult, TransportFactory, MCPClientConfig, } from "./types.js";
8
+ export { getToolplexClientPath } from "./paths.js";
9
+ export { DefaultStdioTransportFactory, defaultStdioTransportFactory, } from "./DefaultStdioTransportFactory.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Module
3
+ *
4
+ * MCP (Model Context Protocol) client for ToolPlex.
5
+ */
6
+ export { MCPClient } from "./MCPClient.js";
7
+ // Path utilities
8
+ export { getToolplexClientPath } from "./paths.js";
9
+ // Default transport factory (uses system Node.js)
10
+ export { DefaultStdioTransportFactory, defaultStdioTransportFactory, } from "./DefaultStdioTransportFactory.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAU3C,iBAAiB;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,kDAAkD;AAClD,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Paths
3
+ *
4
+ * Utilities for locating @toolplex/client MCP server.
5
+ */
6
+ /**
7
+ * Get the path to @toolplex/client's MCP server entry point.
8
+ *
9
+ * This resolves the path regardless of where npm installs the package
10
+ * (hoisted or nested in node_modules).
11
+ *
12
+ * @returns Path to the MCP server index.js
13
+ * @throws Error if @toolplex/client cannot be found
14
+ */
15
+ export declare function getToolplexClientPath(): string;
16
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/mcp/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA+D9C"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Paths
3
+ *
4
+ * Utilities for locating @toolplex/client MCP server.
5
+ */
6
+ import path from "path";
7
+ import fs from "fs";
8
+ import { fileURLToPath } from "url";
9
+ import { createRequire } from "module";
10
+ // Create __dirname equivalent for ESM
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = path.dirname(__filename);
13
+ // Create require function for ESM (for require.resolve)
14
+ const require = createRequire(import.meta.url);
15
+ /**
16
+ * Get the path to @toolplex/client's MCP server entry point.
17
+ *
18
+ * This resolves the path regardless of where npm installs the package
19
+ * (hoisted or nested in node_modules).
20
+ *
21
+ * @returns Path to the MCP server index.js
22
+ * @throws Error if @toolplex/client cannot be found
23
+ */
24
+ export function getToolplexClientPath() {
25
+ // Try to resolve using require.resolve
26
+ try {
27
+ const clientPackageJson = require.resolve("@toolplex/client/package.json");
28
+ const clientDir = path.dirname(clientPackageJson);
29
+ const mcpServerPath = path.join(clientDir, "dist", "mcp-server", "index.js");
30
+ if (fs.existsSync(mcpServerPath)) {
31
+ return mcpServerPath;
32
+ }
33
+ }
34
+ catch {
35
+ // require.resolve failed, try fallback paths
36
+ }
37
+ // Fallback: try common paths
38
+ const fallbackPaths = [
39
+ // From process.cwd() (development)
40
+ path.resolve(process.cwd(), "node_modules/@toolplex/client/dist/mcp-server/index.js"),
41
+ // From this module's location (when installed as dependency)
42
+ path.resolve(__dirname, "../../node_modules/@toolplex/client/dist/mcp-server/index.js"),
43
+ path.resolve(__dirname, "../../../node_modules/@toolplex/client/dist/mcp-server/index.js"),
44
+ path.resolve(__dirname, "../../../../node_modules/@toolplex/client/dist/mcp-server/index.js"),
45
+ ];
46
+ // Add Electron production path if available (process.resourcesPath is Electron-specific)
47
+ const electronProcess = process;
48
+ if (electronProcess.resourcesPath) {
49
+ fallbackPaths.push(path.resolve(electronProcess.resourcesPath, "app/node_modules/@toolplex/client/dist/mcp-server/index.js"));
50
+ }
51
+ for (const fallbackPath of fallbackPaths) {
52
+ if (fs.existsSync(fallbackPath)) {
53
+ return fallbackPath;
54
+ }
55
+ }
56
+ throw new Error("@toolplex/client not found. Make sure @toolplex/ai-engine is properly installed.");
57
+ }
58
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/mcp/paths.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,sCAAsC;AACtC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,wDAAwD;AACxD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB;IACnC,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAC7B,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,CACX,CAAC;QAEF,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG;QACpB,mCAAmC;QACnC,IAAI,CAAC,OAAO,CACV,OAAO,CAAC,GAAG,EAAE,EACb,wDAAwD,CACzD;QACD,6DAA6D;QAC7D,IAAI,CAAC,OAAO,CACV,SAAS,EACT,8DAA8D,CAC/D;QACD,IAAI,CAAC,OAAO,CACV,SAAS,EACT,iEAAiE,CAClE;QACD,IAAI,CAAC,OAAO,CACV,SAAS,EACT,oEAAoE,CACrE;KACF,CAAC;IAEF,yFAAyF;IACzF,MAAM,eAAe,GAAG,OAEvB,CAAC;IACF,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC;QAClC,aAAa,CAAC,IAAI,CAChB,IAAI,CAAC,OAAO,CACV,eAAe,CAAC,aAAa,EAC7B,4DAA4D,CAC7D,CACF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Types
3
+ *
4
+ * Type definitions for MCP (Model Context Protocol) integration.
5
+ */
6
+ /**
7
+ * MCP Session - holds the client connection
8
+ * Client type is 'any' to avoid version mismatches between ai-engine and consumers
9
+ */
10
+ export interface MCPSession {
11
+ client: any;
12
+ transport: any;
13
+ }
14
+ /**
15
+ * Result from MCP operations
16
+ */
17
+ export interface MCPResult {
18
+ success: boolean;
19
+ data?: any;
20
+ error?: string;
21
+ }
22
+ /**
23
+ * MCP Tool definition from server
24
+ */
25
+ export interface MCPTool {
26
+ name: string;
27
+ description?: string;
28
+ inputSchema?: any;
29
+ }
30
+ /**
31
+ * MCP Tool call result
32
+ */
33
+ export interface MCPToolResult {
34
+ content: Array<{
35
+ type: string;
36
+ text?: string;
37
+ data?: any;
38
+ [key: string]: any;
39
+ }>;
40
+ isError?: boolean;
41
+ [key: string]: any;
42
+ }
43
+ /**
44
+ * Transport factory interface - platforms implement this
45
+ */
46
+ export interface TransportFactory {
47
+ /**
48
+ * Create a transport and connect to the MCP server
49
+ * @param apiKey - ToolPlex API key
50
+ * @param sessionResumeHistory - Optional session history for resuming
51
+ * @returns Connected MCP session
52
+ */
53
+ createTransport(apiKey: string, sessionResumeHistory?: string): Promise<MCPSession>;
54
+ /**
55
+ * Close a transport
56
+ */
57
+ closeTransport(session: MCPSession): Promise<void>;
58
+ }
59
+ /**
60
+ * MCP Client configuration
61
+ */
62
+ export interface MCPClientConfig {
63
+ transportFactory: TransportFactory;
64
+ logger?: {
65
+ debug: (message: string, meta?: any) => void;
66
+ info: (message: string, meta?: any) => void;
67
+ warn: (message: string, meta?: any) => void;
68
+ error: (message: string, meta?: any) => void;
69
+ };
70
+ /**
71
+ * Optional image handler for processing image results
72
+ */
73
+ imageHandler?: {
74
+ initialize(userId: string): Promise<void>;
75
+ processToolResult(result: any): Promise<{
76
+ content: any[];
77
+ savedImages?: any[];
78
+ }>;
79
+ };
80
+ /**
81
+ * Optional function to get current user ID (for image handling)
82
+ */
83
+ getCurrentUserId?: () => string | null;
84
+ }
85
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,eAAe,CACb,MAAM,EAAE,MAAM,EACd,oBAAoB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC5C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;QAC5C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KAC9C,CAAC;IACF;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,iBAAiB,CACf,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAA;SAAE,CAAC,CAAC;KACrD,CAAC;IACF;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACxC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @toolplex/ai-engine - MCP Types
3
+ *
4
+ * Type definitions for MCP (Model Context Protocol) integration.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}