@meetsmore-oss/use-ai-server 1.2.1

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 (139) hide show
  1. package/dist/agents/AISDKAgent.d.ts +220 -0
  2. package/dist/agents/AISDKAgent.d.ts.map +1 -0
  3. package/dist/agents/AISDKAgent.test.d.ts +2 -0
  4. package/dist/agents/AISDKAgent.test.d.ts.map +1 -0
  5. package/dist/agents/index.d.ts +7 -0
  6. package/dist/agents/index.d.ts.map +1 -0
  7. package/dist/agents/types.d.ts +151 -0
  8. package/dist/agents/types.d.ts.map +1 -0
  9. package/dist/agents.integration.test.d.ts +2 -0
  10. package/dist/agents.integration.test.d.ts.map +1 -0
  11. package/dist/configuration.integration.test.d.ts +2 -0
  12. package/dist/configuration.integration.test.d.ts.map +1 -0
  13. package/dist/core-architecture.integration.test.d.ts +2 -0
  14. package/dist/core-architecture.integration.test.d.ts.map +1 -0
  15. package/dist/error-handling.integration.test.d.ts +2 -0
  16. package/dist/error-handling.integration.test.d.ts.map +1 -0
  17. package/dist/index.d.ts +9 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +80683 -0
  20. package/dist/instrumentation.d.ts +15 -0
  21. package/dist/instrumentation.d.ts.map +1 -0
  22. package/dist/langfuse.integration.test.d.ts +7 -0
  23. package/dist/langfuse.integration.test.d.ts.map +1 -0
  24. package/dist/logger.d.ts +30 -0
  25. package/dist/logger.d.ts.map +1 -0
  26. package/dist/mcp/RemoteMcpToolsProvider.d.ts +73 -0
  27. package/dist/mcp/RemoteMcpToolsProvider.d.ts.map +1 -0
  28. package/dist/mcp/RemoteMcpToolsProvider.test.d.ts +2 -0
  29. package/dist/mcp/RemoteMcpToolsProvider.test.d.ts.map +1 -0
  30. package/dist/mcp/index.d.ts +2 -0
  31. package/dist/mcp/index.d.ts.map +1 -0
  32. package/dist/mcp.integration.test.d.ts +2 -0
  33. package/dist/mcp.integration.test.d.ts.map +1 -0
  34. package/dist/message-sanitization.test.d.ts +2 -0
  35. package/dist/message-sanitization.test.d.ts.map +1 -0
  36. package/dist/plugins/index.d.ts +2 -0
  37. package/dist/plugins/index.d.ts.map +1 -0
  38. package/dist/plugins/types.d.ts +69 -0
  39. package/dist/plugins/types.d.ts.map +1 -0
  40. package/dist/plugins.integration.test.d.ts +2 -0
  41. package/dist/plugins.integration.test.d.ts.map +1 -0
  42. package/dist/rate-limiting.integration.test.d.ts +2 -0
  43. package/dist/rate-limiting.integration.test.d.ts.map +1 -0
  44. package/dist/rateLimiter.d.ts +17 -0
  45. package/dist/rateLimiter.d.ts.map +1 -0
  46. package/dist/rateLimiter.test.d.ts +2 -0
  47. package/dist/rateLimiter.test.d.ts.map +1 -0
  48. package/dist/server.d.ts +140 -0
  49. package/dist/server.d.ts.map +1 -0
  50. package/dist/server.test.d.ts +2 -0
  51. package/dist/server.test.d.ts.map +1 -0
  52. package/dist/src/agents/AISDKAgent.d.ts +220 -0
  53. package/dist/src/agents/AISDKAgent.d.ts.map +1 -0
  54. package/dist/src/agents/AISDKAgent.test.d.ts +2 -0
  55. package/dist/src/agents/AISDKAgent.test.d.ts.map +1 -0
  56. package/dist/src/agents/index.d.ts +7 -0
  57. package/dist/src/agents/index.d.ts.map +1 -0
  58. package/dist/src/agents/types.d.ts +151 -0
  59. package/dist/src/agents/types.d.ts.map +1 -0
  60. package/dist/src/agents.integration.test.d.ts +2 -0
  61. package/dist/src/agents.integration.test.d.ts.map +1 -0
  62. package/dist/src/configuration.integration.test.d.ts +2 -0
  63. package/dist/src/configuration.integration.test.d.ts.map +1 -0
  64. package/dist/src/core-architecture.integration.test.d.ts +2 -0
  65. package/dist/src/core-architecture.integration.test.d.ts.map +1 -0
  66. package/dist/src/error-handling.integration.test.d.ts +2 -0
  67. package/dist/src/error-handling.integration.test.d.ts.map +1 -0
  68. package/dist/src/index.d.ts +9 -0
  69. package/dist/src/index.d.ts.map +1 -0
  70. package/dist/src/instrumentation.d.ts +15 -0
  71. package/dist/src/instrumentation.d.ts.map +1 -0
  72. package/dist/src/langfuse.integration.test.d.ts +7 -0
  73. package/dist/src/langfuse.integration.test.d.ts.map +1 -0
  74. package/dist/src/logger.d.ts +30 -0
  75. package/dist/src/logger.d.ts.map +1 -0
  76. package/dist/src/mcp/RemoteMcpToolsProvider.d.ts +73 -0
  77. package/dist/src/mcp/RemoteMcpToolsProvider.d.ts.map +1 -0
  78. package/dist/src/mcp/RemoteMcpToolsProvider.test.d.ts +2 -0
  79. package/dist/src/mcp/RemoteMcpToolsProvider.test.d.ts.map +1 -0
  80. package/dist/src/mcp/index.d.ts +2 -0
  81. package/dist/src/mcp/index.d.ts.map +1 -0
  82. package/dist/src/mcp.integration.test.d.ts +2 -0
  83. package/dist/src/mcp.integration.test.d.ts.map +1 -0
  84. package/dist/src/message-sanitization.test.d.ts +2 -0
  85. package/dist/src/message-sanitization.test.d.ts.map +1 -0
  86. package/dist/src/plugins/index.d.ts +2 -0
  87. package/dist/src/plugins/index.d.ts.map +1 -0
  88. package/dist/src/plugins/types.d.ts +69 -0
  89. package/dist/src/plugins/types.d.ts.map +1 -0
  90. package/dist/src/plugins.integration.test.d.ts +2 -0
  91. package/dist/src/plugins.integration.test.d.ts.map +1 -0
  92. package/dist/src/rate-limiting.integration.test.d.ts +2 -0
  93. package/dist/src/rate-limiting.integration.test.d.ts.map +1 -0
  94. package/dist/src/rateLimiter.d.ts +17 -0
  95. package/dist/src/rateLimiter.d.ts.map +1 -0
  96. package/dist/src/rateLimiter.test.d.ts +2 -0
  97. package/dist/src/rateLimiter.test.d.ts.map +1 -0
  98. package/dist/src/server.d.ts +140 -0
  99. package/dist/src/server.d.ts.map +1 -0
  100. package/dist/src/server.test.d.ts +2 -0
  101. package/dist/src/server.test.d.ts.map +1 -0
  102. package/dist/src/test-preload.d.ts +25 -0
  103. package/dist/src/test-preload.d.ts.map +1 -0
  104. package/dist/src/tool-execution.integration.test.d.ts +2 -0
  105. package/dist/src/tool-execution.integration.test.d.ts.map +1 -0
  106. package/dist/src/types.d.ts +60 -0
  107. package/dist/src/types.d.ts.map +1 -0
  108. package/dist/src/utils/index.d.ts +6 -0
  109. package/dist/src/utils/index.d.ts.map +1 -0
  110. package/dist/src/utils/patternMatcher.d.ts +41 -0
  111. package/dist/src/utils/patternMatcher.d.ts.map +1 -0
  112. package/dist/src/utils/patternMatcher.test.d.ts +2 -0
  113. package/dist/src/utils/patternMatcher.test.d.ts.map +1 -0
  114. package/dist/src/utils/toolConverter.d.ts +22 -0
  115. package/dist/src/utils/toolConverter.d.ts.map +1 -0
  116. package/dist/src/utils/toolFilters.d.ts +101 -0
  117. package/dist/src/utils/toolFilters.d.ts.map +1 -0
  118. package/dist/test/integration-test-utils.d.ts +203 -0
  119. package/dist/test/integration-test-utils.d.ts.map +1 -0
  120. package/dist/test/test-utils.d.ts +104 -0
  121. package/dist/test/test-utils.d.ts.map +1 -0
  122. package/dist/test-preload.d.ts +25 -0
  123. package/dist/test-preload.d.ts.map +1 -0
  124. package/dist/tool-execution.integration.test.d.ts +2 -0
  125. package/dist/tool-execution.integration.test.d.ts.map +1 -0
  126. package/dist/tsconfig.tsbuildinfo +1 -0
  127. package/dist/types.d.ts +60 -0
  128. package/dist/types.d.ts.map +1 -0
  129. package/dist/utils/index.d.ts +6 -0
  130. package/dist/utils/index.d.ts.map +1 -0
  131. package/dist/utils/patternMatcher.d.ts +41 -0
  132. package/dist/utils/patternMatcher.d.ts.map +1 -0
  133. package/dist/utils/patternMatcher.test.d.ts +2 -0
  134. package/dist/utils/patternMatcher.test.d.ts.map +1 -0
  135. package/dist/utils/toolConverter.d.ts +22 -0
  136. package/dist/utils/toolConverter.d.ts.map +1 -0
  137. package/dist/utils/toolFilters.d.ts +101 -0
  138. package/dist/utils/toolFilters.d.ts.map +1 -0
  139. package/package.json +56 -0
@@ -0,0 +1,15 @@
1
+ export interface LangfuseConfig {
2
+ enabled: boolean;
3
+ spanProcessor?: {
4
+ forceFlush(): Promise<void>;
5
+ };
6
+ flush?: () => Promise<void>;
7
+ }
8
+ /**
9
+ * Initializes Langfuse observability using OpenTelemetry.
10
+ * Only activates if LANGFUSE_PUBLIC_KEY and LANGFUSE_SECRET_KEY are set.
11
+ *
12
+ * @returns Configuration object indicating if Langfuse is enabled
13
+ */
14
+ export declare function initializeLangfuse(): LangfuseConfig;
15
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE;QACd,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CA6CnD"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Langfuse Integration Tests
3
+ *
4
+ * Tests for Langfuse observability configuration and initialization.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=langfuse.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langfuse.integration.test.d.ts","sourceRoot":"","sources":["../../src/langfuse.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,30 @@
1
+ declare class Logger {
2
+ private format;
3
+ private silent;
4
+ constructor();
5
+ private log;
6
+ private logJson;
7
+ private logPretty;
8
+ info(message: string, data?: Record<string, unknown>): void;
9
+ warn(message: string, data?: Record<string, unknown>): void;
10
+ error(message: string, data?: Record<string, unknown>): void;
11
+ debug(message: string, data?: Record<string, unknown>): void;
12
+ apiRequest(data: {
13
+ tools: string[];
14
+ messageCount: number;
15
+ messages: Array<{
16
+ role: string;
17
+ preview: string;
18
+ }>;
19
+ systemMessages?: string[];
20
+ }): void;
21
+ aiResponse(textBlocks: string[]): void;
22
+ toolCalls(tools: Array<{
23
+ name: string;
24
+ input: unknown;
25
+ }>): void;
26
+ toolResult(toolName: string, result: unknown): void;
27
+ }
28
+ export declare const logger: Logger;
29
+ export {};
30
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAQA,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAU;;IAOxB,OAAO,CAAC,GAAG;IASX,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,SAAS;IAkCjB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIpD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAIrD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKrD,UAAU,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACnD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B;IAwBD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE;IAc/B,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAaxD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;CAS7C;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -0,0 +1,73 @@
1
+ import type { ToolDefinition, McpHeadersMap } from '@meetsmore-oss/use-ai-core';
2
+ import type { McpEndpointConfig } from '../types';
3
+ /**
4
+ * Server-only extension of ToolDefinition with remote execution metadata.
5
+ * This type is used internally by the server and never exposed to the client.
6
+ * The actual execute function is created in AISDKAgent where EventEmitter is available.
7
+ */
8
+ export interface RemoteToolDefinition extends ToolDefinition {
9
+ /** Remote execution metadata for MCP tools */
10
+ _remote: {
11
+ /** The provider that manages this tool */
12
+ provider: RemoteMcpToolsProvider;
13
+ /** The original tool name (before namespace prefix) */
14
+ originalName: string;
15
+ };
16
+ }
17
+ /**
18
+ * Manages fetching and executing tools from a single MCP endpoint.
19
+ * Each instance handles one endpoint independently, allowing for separate failure handling.
20
+ *
21
+ * Tools are fetched lazily on first request (not at server startup) to support
22
+ * per-user authentication headers for tool filtering.
23
+ */
24
+ export declare class RemoteMcpToolsProvider {
25
+ private readonly url;
26
+ private readonly config;
27
+ constructor(config: McpEndpointConfig);
28
+ /**
29
+ * Simply logs that the MCP endpoint is configured.
30
+ */
31
+ initialize(): Promise<void>;
32
+ /**
33
+ * Fetches tools from MCP endpoint with authentication headers.
34
+ * Called on first run_agent request per session (lazy loading).
35
+ *
36
+ * @param headers - User-specific auth headers from mcpHeadersProvider
37
+ * @returns List of tools the user is authorized to access
38
+ */
39
+ fetchToolsWithHeaders(headers?: Record<string, string>): Promise<RemoteToolDefinition[]>;
40
+ /**
41
+ * Converts MCP tool schemas to RemoteToolDefinition format.
42
+ */
43
+ private convertToToolDefinitions;
44
+ /**
45
+ * Gets the configured cache TTL for this endpoint.
46
+ * Returns 0 if not configured (cache for entire session).
47
+ */
48
+ getToolsCacheTtl(): number;
49
+ /**
50
+ * Executes a tool on the remote MCP endpoint using JSON-RPC.
51
+ *
52
+ * @param toolName - The name of the tool to execute
53
+ * @param args - Arguments to pass to the tool
54
+ * @param mcpHeaders - Optional MCP headers map (per-request headers override)
55
+ */
56
+ executeTool(toolName: string, args: any, mcpHeaders?: McpHeadersMap): Promise<any>;
57
+ /**
58
+ * Cleans up resources.
59
+ * Should be called when the server shuts down.
60
+ */
61
+ destroy(): void;
62
+ /**
63
+ * Gets the endpoint URL.
64
+ */
65
+ getUrl(): string;
66
+ /**
67
+ * Formats headers for logging.
68
+ * By default, redacts all values.
69
+ * Set DEBUG=1 environment variable to print the values.
70
+ */
71
+ private formatHeaders;
72
+ }
73
+ //# sourceMappingURL=RemoteMcpToolsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteMcpToolsProvider.d.ts","sourceRoot":"","sources":["../../../src/mcp/RemoteMcpToolsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAuBlD;;;;GAIG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,8CAA8C;IAC9C,OAAO,EAAE;QACP,0CAA0C;QAC1C,QAAQ,EAAE,sBAAsB,CAAC;QACjC,uDAAuD;QACvD,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;;;OAMG;IACG,qBAAqB,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAiElG;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;;;;;OAMG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAuGxF;;;OAGG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAMtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RemoteMcpToolsProvider.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteMcpToolsProvider.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/RemoteMcpToolsProvider.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { RemoteMcpToolsProvider, type RemoteToolDefinition } from './RemoteMcpToolsProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.integration.test.d.ts","sourceRoot":"","sources":["../../src/mcp.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=message-sanitization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-sanitization.test.d.ts","sourceRoot":"","sources":["../../src/message-sanitization.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export type { UseAIServerPlugin, MessageHandler } from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,69 @@
1
+ import type { ClientSession } from '../agents/types';
2
+ import type { UseAIClientMessage } from '../types';
3
+ /**
4
+ * Message handler function type for plugin-registered message handlers.
5
+ *
6
+ * @param session - The client session context
7
+ * @param message - The incoming message from the client
8
+ */
9
+ export type MessageHandler = (session: ClientSession, message: UseAIClientMessage) => Promise<void> | void;
10
+ /**
11
+ * Plugin interface for extending UseAIServer functionality.
12
+ *
13
+ * Plugins can register custom message handlers, react to client lifecycle events,
14
+ * and add new capabilities to the server without modifying core code.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * class WorkflowsPlugin implements UseAIServerPlugin {
19
+ * getName() {
20
+ * return 'workflows';
21
+ * }
22
+ *
23
+ * registerHandlers(server) {
24
+ * server.registerMessageHandler('run_workflow', async (session, message) => {
25
+ * // Handle workflow execution
26
+ * });
27
+ * }
28
+ *
29
+ * onClientConnect(session) {
30
+ * console.log('Client connected:', session.clientId);
31
+ * }
32
+ *
33
+ * onClientDisconnect(session) {
34
+ * console.log('Client disconnected:', session.clientId);
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export interface UseAIServerPlugin {
40
+ /**
41
+ * Returns the unique identifier for this plugin.
42
+ * Used for logging and debugging purposes.
43
+ *
44
+ * @returns Plugin name (e.g., 'workflows', 'analytics', 'auth')
45
+ */
46
+ getName(): string;
47
+ /**
48
+ * Called when the plugin is registered with the server.
49
+ * Use this to register custom message handlers.
50
+ *
51
+ * @param server - Object with registerMessageHandler method
52
+ */
53
+ registerHandlers(server: {
54
+ registerMessageHandler(type: string, handler: MessageHandler): void;
55
+ }): void;
56
+ /**
57
+ * Optional lifecycle hook called when a client connects.
58
+ *
59
+ * @param session - The newly created client session
60
+ */
61
+ onClientConnect?(session: ClientSession): void;
62
+ /**
63
+ * Optional lifecycle hook called when a client disconnects.
64
+ *
65
+ * @param session - The disconnecting client session
66
+ */
67
+ onClientDisconnect?(session: ClientSession): void;
68
+ }
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3G;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,OAAO,IAAI,MAAM,CAAC;IAElB;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE;QACvB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;KACrE,GAAG,IAAI,CAAC;IAET;;;;OAIG;IACH,eAAe,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAE/C;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugins.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.integration.test.d.ts","sourceRoot":"","sources":["../../src/plugins.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rate-limiting.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiting.integration.test.d.ts","sourceRoot":"","sources":["../../src/rate-limiting.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ export interface RateLimiterConfig {
2
+ maxRequests: number;
3
+ windowMs: number;
4
+ }
5
+ export declare class RateLimiter {
6
+ private requests;
7
+ private config;
8
+ constructor(config: RateLimiterConfig);
9
+ isEnabled(): boolean;
10
+ checkLimit(ipAddress: string): {
11
+ allowed: boolean;
12
+ retryAfterMs?: number;
13
+ };
14
+ removeIpAddress(ipAddress: string): void;
15
+ cleanup(): void;
16
+ }
17
+ //# sourceMappingURL=rateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.d.ts","sourceRoot":"","sources":["../../src/rateLimiter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB;IAIrC,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAuB1E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIxC,OAAO,IAAI,IAAI;CAchB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rateLimiter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.test.d.ts","sourceRoot":"","sources":["../../src/rateLimiter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
1
+ import type { UseAIServerConfig } from './types';
2
+ import type { MessageHandler } from './plugins/types';
3
+ export type { ClientSession } from './agents/types';
4
+ /**
5
+ * WebSocket server that coordinates between client applications and AI agents.
6
+ * Supports pluggable agents (AISDKAgent, etc.) via AG-UI protocol.
7
+ *
8
+ * Responsibilities:
9
+ * - Manages WebSocket connections from clients
10
+ * - Accepts RunAgentInput messages
11
+ * - Delegates to pluggable agents (AISDKAgent, etc.)
12
+ * - Emits AG-UI events (TEXT_MESSAGE_*, TOOL_CALL_*, etc.)
13
+ * - Routes tool execution requests back to clients
14
+ * - Maintains conversation history and state per session
15
+ * - Handles rate limiting
16
+ * - Supports plugins for extending functionality
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { UseAIServer, AISDKAgent } from '@meetsmore-oss/use-ai-server';
21
+ * import { createAnthropic } from '@ai-sdk/anthropic';
22
+ * import { openai } from '@ai-sdk/openai';
23
+ *
24
+ * // Single agent (Claude)
25
+ * const anthropic = createAnthropic({
26
+ * apiKey: process.env.ANTHROPIC_API_KEY,
27
+ * });
28
+ * const claudeAgent = new AISDKAgent({
29
+ * model: anthropic('claude-sonnet-4-20250514'),
30
+ * });
31
+ * const server = new UseAIServer({
32
+ * port: 8081,
33
+ * agents: { claude: claudeAgent },
34
+ * defaultAgent: 'claude', // Default agent name
35
+ * });
36
+ *
37
+ * // Multiple agents (Claude + OpenAI)
38
+ * const gptAgent = new AISDKAgent({
39
+ * model: openai('gpt-4-turbo'),
40
+ * });
41
+ * const multiServer = new UseAIServer({
42
+ * port: 8081,
43
+ * agents: {
44
+ * claude: claudeAgent,
45
+ * 'gpt-4': gptAgent,
46
+ * },
47
+ * runner: 'claude', // Default for chat
48
+ * });
49
+ * ```
50
+ */
51
+ export declare class UseAIServer {
52
+ private io;
53
+ private httpServer;
54
+ private agent;
55
+ private defaultAgentId;
56
+ private agents;
57
+ private clients;
58
+ private config;
59
+ private rateLimiter;
60
+ private cleanupInterval;
61
+ private clientIdCounter;
62
+ private plugins;
63
+ private messageHandlers;
64
+ private mcpEndpoints;
65
+ /**
66
+ * Creates a new UseAI server instance.
67
+ *
68
+ * @param config - Server configuration options
69
+ * @throws Error if the specified agent name does not exist in the agents map
70
+ */
71
+ constructor(config: UseAIServerConfig);
72
+ /**
73
+ * Initializes the server by fetching MCP tools from all endpoints.
74
+ * Must be called before the server starts accepting connections.
75
+ */
76
+ initialize(): Promise<void>;
77
+ /**
78
+ * Initialize all plugins by calling their registerHandlers method.
79
+ * This allows plugins to register custom message handlers.
80
+ */
81
+ private initializePlugins;
82
+ /**
83
+ * Register a custom message handler for a specific message type.
84
+ * Used by plugins to handle custom message types.
85
+ *
86
+ * @param type - The message type to handle (e.g., 'run_workflow')
87
+ * @param handler - The handler function to call when this message type is received
88
+ */
89
+ registerMessageHandler(type: string, handler: MessageHandler): void;
90
+ private setupSocketIOServer;
91
+ private handleClientMessage;
92
+ private handleRunAgent;
93
+ private buildSystemPrompt;
94
+ private handleToolResult;
95
+ private handleAbortRun;
96
+ private sendEvent;
97
+ /**
98
+ * Gets MCP tools for a session, using caching with authentication headers.
99
+ * Lazily fetches tools on first request, then caches per-session.
100
+ *
101
+ * Cache is invalidated when:
102
+ * 1. Headers hash changes (different user/token)
103
+ * 2. TTL expires (if configured per endpoint)
104
+ *
105
+ * @param session - The client session
106
+ * @param mcpHeaders - Optional MCP headers map with per-endpoint auth headers
107
+ * @returns Array of remote tool definitions from all MCP endpoints
108
+ */
109
+ private getMcpToolsForSession;
110
+ /**
111
+ * Checks if the MCP tools cache is still valid for a session.
112
+ *
113
+ * @param session - The client session
114
+ * @param currentHeadersHash - Hash of current auth headers
115
+ * @param now - Current timestamp
116
+ * @returns true if cache is valid, false if refresh is needed
117
+ */
118
+ private isMcpToolsCacheValid;
119
+ /**
120
+ * Creates a hash of MCP headers for use as a cache key.
121
+ *
122
+ * @param mcpHeaders - Optional MCP headers map
123
+ * @returns Hash string (16 chars), or 'no-auth' if no headers
124
+ */
125
+ private hashMcpHeaders;
126
+ /**
127
+ * Resolves headers for a specific MCP endpoint from the headers map.
128
+ *
129
+ * @param endpointUrl - The endpoint URL to match
130
+ * @param mcpHeaders - Optional MCP headers map
131
+ * @returns Headers to use for this endpoint (empty object if no match)
132
+ */
133
+ private resolveHeadersForEndpoint;
134
+ /**
135
+ * Closes the server and cleans up resources.
136
+ * Stops accepting new connections and terminates all existing connections.
137
+ */
138
+ close(): void;
139
+ }
140
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EAUlB,MAAM,SAAS,CAAC;AAMjB,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAKzE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAkJ;IAChK,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,YAAY,CAAgC;IAEpD;;;;;OAKG;gBACS,MAAM,EAAE,iBAAiB;IA2ErC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBjC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;;;OAMG;IACI,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAS1E,OAAO,CAAC,mBAAmB;YA0Eb,mBAAmB;YA2BnB,cAAc;IAgQ5B,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,SAAS;IAMjB;;;;;;;;;;;OAWG;YACW,qBAAqB;IA+CnC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAwC5B;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAYjC;;;OAGG;IACI,KAAK;CASb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../src/server.test.ts"],"names":[],"mappings":""}