@juspay/neurolink 6.1.0 → 6.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 (303) hide show
  1. package/CHANGELOG.md +16 -6
  2. package/dist/agent/direct-tools.js +6 -5
  3. package/dist/cli/commands/config.d.ts +13 -13
  4. package/dist/cli/index.js +3 -9
  5. package/dist/config/configManager.js +11 -10
  6. package/dist/core/analytics.d.ts +11 -1
  7. package/dist/core/analytics.js +2 -2
  8. package/dist/core/base-provider.js +4 -18
  9. package/dist/core/dynamic-models.d.ts +8 -8
  10. package/dist/core/factory.js +3 -11
  11. package/dist/index.d.ts +2 -4
  12. package/dist/index.js +2 -11
  13. package/dist/lib/agent/direct-tools.js +6 -5
  14. package/dist/lib/config/configManager.js +11 -10
  15. package/dist/lib/core/analytics.d.ts +11 -1
  16. package/dist/lib/core/analytics.js +2 -2
  17. package/dist/lib/core/base-provider.js +4 -18
  18. package/dist/lib/core/dynamic-models.d.ts +8 -8
  19. package/dist/lib/core/factory.js +3 -11
  20. package/dist/lib/index.d.ts +2 -4
  21. package/dist/lib/index.js +2 -11
  22. package/dist/lib/mcp/factory.d.ts +1 -1
  23. package/dist/lib/mcp/index.d.ts +9 -21
  24. package/dist/lib/mcp/index.js +16 -57
  25. package/dist/lib/mcp/registry.js +1 -1
  26. package/dist/lib/mcp/servers/ai-providers/ai-analysis-tools.js +2 -1
  27. package/dist/lib/mcp/tool-registry.js +1 -1
  28. package/dist/lib/neurolink.d.ts +1 -9
  29. package/dist/lib/neurolink.js +22 -71
  30. package/dist/lib/providers/amazon-bedrock.js +5 -16
  31. package/dist/lib/providers/anthropic-baseprovider.js +3 -21
  32. package/dist/lib/providers/anthropic.js +4 -7
  33. package/dist/lib/providers/azure-openai.js +6 -3
  34. package/dist/lib/providers/google-vertex.js +5 -9
  35. package/dist/lib/providers/huggingFace.js +5 -10
  36. package/dist/lib/providers/mistral.js +5 -8
  37. package/dist/lib/providers/openAI.js +4 -7
  38. package/dist/lib/telemetry/index.js +2 -1
  39. package/dist/lib/utils/logger.d.ts +62 -2
  40. package/dist/lib/utils/logger.js +174 -9
  41. package/dist/lib/utils/providerConfig.d.ts +117 -0
  42. package/dist/lib/utils/providerConfig.js +353 -0
  43. package/dist/lib/utils/providerUtils.d.ts +2 -1
  44. package/dist/lib/utils/providerUtils.js +53 -36
  45. package/dist/lib/utils/timeout.d.ts +72 -1
  46. package/dist/lib/utils/timeout.js +203 -2
  47. package/dist/mcp/factory.d.ts +1 -1
  48. package/dist/mcp/index.d.ts +9 -21
  49. package/dist/mcp/index.js +16 -57
  50. package/dist/mcp/registry.js +1 -1
  51. package/dist/mcp/servers/ai-providers/ai-analysis-tools.js +2 -1
  52. package/dist/mcp/tool-registry.js +1 -1
  53. package/dist/neurolink.d.ts +1 -9
  54. package/dist/neurolink.js +22 -71
  55. package/dist/providers/amazon-bedrock.js +5 -16
  56. package/dist/providers/anthropic-baseprovider.js +3 -21
  57. package/dist/providers/anthropic.js +4 -7
  58. package/dist/providers/azure-openai.js +6 -3
  59. package/dist/providers/google-vertex.js +5 -9
  60. package/dist/providers/huggingFace.js +5 -10
  61. package/dist/providers/mistral.js +5 -8
  62. package/dist/providers/openAI.js +4 -7
  63. package/dist/telemetry/index.js +2 -1
  64. package/dist/utils/logger.d.ts +62 -2
  65. package/dist/utils/logger.js +174 -9
  66. package/dist/utils/providerConfig.d.ts +117 -0
  67. package/dist/utils/providerConfig.js +353 -0
  68. package/dist/utils/providerUtils.d.ts +2 -1
  69. package/dist/utils/providerUtils.js +53 -36
  70. package/dist/utils/timeout.d.ts +72 -1
  71. package/dist/utils/timeout.js +203 -2
  72. package/package.json +1 -1
  73. package/dist/chat/client-utils.d.ts +0 -95
  74. package/dist/chat/client-utils.js +0 -315
  75. package/dist/chat/index.d.ts +0 -24
  76. package/dist/chat/index.js +0 -33
  77. package/dist/chat/session-storage.d.ts +0 -77
  78. package/dist/chat/session-storage.js +0 -233
  79. package/dist/chat/session.d.ts +0 -96
  80. package/dist/chat/session.js +0 -257
  81. package/dist/chat/sse-handler.d.ts +0 -49
  82. package/dist/chat/sse-handler.js +0 -259
  83. package/dist/chat/types.d.ts +0 -74
  84. package/dist/chat/types.js +0 -5
  85. package/dist/chat/websocket-chat-handler.d.ts +0 -37
  86. package/dist/chat/websocket-chat-handler.js +0 -262
  87. package/dist/cli/commands/mcp.d.ts +0 -20
  88. package/dist/cli/commands/mcp.js +0 -1272
  89. package/dist/core/defaults.d.ts +0 -19
  90. package/dist/core/defaults.js +0 -29
  91. package/dist/core/evaluation-config.d.ts +0 -29
  92. package/dist/core/evaluation-config.js +0 -144
  93. package/dist/factories/compatibility-factory.d.ts +0 -35
  94. package/dist/factories/compatibility-factory.js +0 -71
  95. package/dist/factories/provider-generate-factory.d.ts +0 -20
  96. package/dist/factories/provider-generate-factory.js +0 -93
  97. package/dist/lib/chat/client-utils.d.ts +0 -95
  98. package/dist/lib/chat/client-utils.js +0 -315
  99. package/dist/lib/chat/index.d.ts +0 -24
  100. package/dist/lib/chat/index.js +0 -33
  101. package/dist/lib/chat/session-storage.d.ts +0 -77
  102. package/dist/lib/chat/session-storage.js +0 -233
  103. package/dist/lib/chat/session.d.ts +0 -96
  104. package/dist/lib/chat/session.js +0 -257
  105. package/dist/lib/chat/sse-handler.d.ts +0 -49
  106. package/dist/lib/chat/sse-handler.js +0 -259
  107. package/dist/lib/chat/types.d.ts +0 -74
  108. package/dist/lib/chat/types.js +0 -5
  109. package/dist/lib/chat/websocket-chat-handler.d.ts +0 -37
  110. package/dist/lib/chat/websocket-chat-handler.js +0 -262
  111. package/dist/lib/core/defaults.d.ts +0 -19
  112. package/dist/lib/core/defaults.js +0 -29
  113. package/dist/lib/core/evaluation-config.d.ts +0 -29
  114. package/dist/lib/core/evaluation-config.js +0 -144
  115. package/dist/lib/factories/compatibility-factory.d.ts +0 -35
  116. package/dist/lib/factories/compatibility-factory.js +0 -71
  117. package/dist/lib/factories/provider-generate-factory.d.ts +0 -20
  118. package/dist/lib/factories/provider-generate-factory.js +0 -93
  119. package/dist/lib/mcp/adapters/plugin-bridge.d.ts +0 -40
  120. package/dist/lib/mcp/adapters/plugin-bridge.js +0 -89
  121. package/dist/lib/mcp/auto-discovery.d.ts +0 -62
  122. package/dist/lib/mcp/auto-discovery.js +0 -149
  123. package/dist/lib/mcp/client.d.ts +0 -68
  124. package/dist/lib/mcp/client.js +0 -248
  125. package/dist/lib/mcp/config.d.ts +0 -31
  126. package/dist/lib/mcp/config.js +0 -99
  127. package/dist/lib/mcp/context-manager.d.ts +0 -171
  128. package/dist/lib/mcp/context-manager.js +0 -362
  129. package/dist/lib/mcp/contracts/mcp-contract.d.ts +0 -169
  130. package/dist/lib/mcp/contracts/mcp-contract.js +0 -58
  131. package/dist/lib/mcp/core/plugin-manager.d.ts +0 -46
  132. package/dist/lib/mcp/core/plugin-manager.js +0 -110
  133. package/dist/lib/mcp/demo/plugin-demo.d.ts +0 -20
  134. package/dist/lib/mcp/demo/plugin-demo.js +0 -118
  135. package/dist/lib/mcp/dynamic-chain-executor.d.ts +0 -225
  136. package/dist/lib/mcp/dynamic-chain-executor.js +0 -489
  137. package/dist/lib/mcp/dynamic-orchestrator.d.ts +0 -115
  138. package/dist/lib/mcp/dynamic-orchestrator.js +0 -351
  139. package/dist/lib/mcp/ecosystem.d.ts +0 -75
  140. package/dist/lib/mcp/ecosystem.js +0 -161
  141. package/dist/lib/mcp/error-manager.d.ts +0 -254
  142. package/dist/lib/mcp/error-manager.js +0 -501
  143. package/dist/lib/mcp/error-recovery.d.ts +0 -159
  144. package/dist/lib/mcp/error-recovery.js +0 -405
  145. package/dist/lib/mcp/external-client.d.ts +0 -88
  146. package/dist/lib/mcp/external-client.js +0 -331
  147. package/dist/lib/mcp/external-manager.d.ts +0 -112
  148. package/dist/lib/mcp/external-manager.js +0 -308
  149. package/dist/lib/mcp/function-calling.d.ts +0 -65
  150. package/dist/lib/mcp/function-calling.js +0 -642
  151. package/dist/lib/mcp/health-monitor.d.ts +0 -257
  152. package/dist/lib/mcp/health-monitor.js +0 -630
  153. package/dist/lib/mcp/initialize-tools.d.ts +0 -29
  154. package/dist/lib/mcp/initialize-tools.js +0 -261
  155. package/dist/lib/mcp/initialize.d.ts +0 -18
  156. package/dist/lib/mcp/initialize.js +0 -62
  157. package/dist/lib/mcp/logging.d.ts +0 -38
  158. package/dist/lib/mcp/logging.js +0 -100
  159. package/dist/lib/mcp/manager.d.ts +0 -68
  160. package/dist/lib/mcp/manager.js +0 -176
  161. package/dist/lib/mcp/neurolink-mcp-client.d.ts +0 -97
  162. package/dist/lib/mcp/neurolink-mcp-client.js +0 -462
  163. package/dist/lib/mcp/orchestrator.d.ts +0 -302
  164. package/dist/lib/mcp/orchestrator.js +0 -703
  165. package/dist/lib/mcp/plugin-manager.d.ts +0 -98
  166. package/dist/lib/mcp/plugin-manager.js +0 -296
  167. package/dist/lib/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  168. package/dist/lib/mcp/plugins/core/filesystem-mcp.js +0 -142
  169. package/dist/lib/mcp/plugins/filesystem-mcp.d.ts +0 -37
  170. package/dist/lib/mcp/plugins/filesystem-mcp.js +0 -54
  171. package/dist/lib/mcp/security-manager.d.ts +0 -87
  172. package/dist/lib/mcp/security-manager.js +0 -344
  173. package/dist/lib/mcp/semaphore-manager.d.ts +0 -137
  174. package/dist/lib/mcp/semaphore-manager.js +0 -329
  175. package/dist/lib/mcp/session-manager.d.ts +0 -187
  176. package/dist/lib/mcp/session-manager.js +0 -400
  177. package/dist/lib/mcp/session-persistence.d.ts +0 -93
  178. package/dist/lib/mcp/session-persistence.js +0 -301
  179. package/dist/lib/mcp/tool-integration.d.ts +0 -58
  180. package/dist/lib/mcp/tool-integration.js +0 -203
  181. package/dist/lib/mcp/transport-manager.d.ts +0 -154
  182. package/dist/lib/mcp/transport-manager.js +0 -334
  183. package/dist/lib/mcp/unified-mcp.d.ts +0 -133
  184. package/dist/lib/mcp/unified-mcp.js +0 -251
  185. package/dist/lib/mcp/unified-registry.d.ts +0 -165
  186. package/dist/lib/mcp/unified-registry.js +0 -538
  187. package/dist/lib/providers/analytics-helper.d.ts +0 -38
  188. package/dist/lib/providers/analytics-helper.js +0 -216
  189. package/dist/lib/providers/function-calling-provider.d.ts +0 -142
  190. package/dist/lib/providers/function-calling-provider.js +0 -630
  191. package/dist/lib/providers/mcp-provider.d.ts +0 -75
  192. package/dist/lib/providers/mcp-provider.js +0 -283
  193. package/dist/lib/providers/timeout-wrapper.d.ts +0 -40
  194. package/dist/lib/providers/timeout-wrapper.js +0 -100
  195. package/dist/lib/sdk/tool-extension.d.ts +0 -181
  196. package/dist/lib/sdk/tool-extension.js +0 -284
  197. package/dist/lib/services/streaming/streaming-manager.d.ts +0 -29
  198. package/dist/lib/services/streaming/streaming-manager.js +0 -245
  199. package/dist/lib/services/types.d.ts +0 -156
  200. package/dist/lib/services/types.js +0 -2
  201. package/dist/lib/services/websocket/websocket-server.d.ts +0 -34
  202. package/dist/lib/services/websocket/websocket-server.js +0 -305
  203. package/dist/lib/utils/provider-validation.d.ts +0 -36
  204. package/dist/lib/utils/provider-validation.js +0 -625
  205. package/dist/lib/utils/providerUtils-fixed.d.ts +0 -8
  206. package/dist/lib/utils/providerUtils-fixed.js +0 -94
  207. package/dist/lib/utils/streaming-utils.d.ts +0 -79
  208. package/dist/lib/utils/streaming-utils.js +0 -198
  209. package/dist/lib/utils/timeout-manager.d.ts +0 -75
  210. package/dist/lib/utils/timeout-manager.js +0 -244
  211. package/dist/mcp/adapters/plugin-bridge.d.ts +0 -40
  212. package/dist/mcp/adapters/plugin-bridge.js +0 -89
  213. package/dist/mcp/auto-discovery.d.ts +0 -62
  214. package/dist/mcp/auto-discovery.js +0 -149
  215. package/dist/mcp/client.d.ts +0 -68
  216. package/dist/mcp/client.js +0 -248
  217. package/dist/mcp/config.d.ts +0 -31
  218. package/dist/mcp/config.js +0 -99
  219. package/dist/mcp/context-manager.d.ts +0 -171
  220. package/dist/mcp/context-manager.js +0 -362
  221. package/dist/mcp/contracts/mcp-contract.d.ts +0 -169
  222. package/dist/mcp/contracts/mcp-contract.js +0 -58
  223. package/dist/mcp/core/plugin-manager.d.ts +0 -46
  224. package/dist/mcp/core/plugin-manager.js +0 -110
  225. package/dist/mcp/demo/plugin-demo.d.ts +0 -20
  226. package/dist/mcp/demo/plugin-demo.js +0 -118
  227. package/dist/mcp/dynamic-chain-executor.d.ts +0 -225
  228. package/dist/mcp/dynamic-chain-executor.js +0 -489
  229. package/dist/mcp/dynamic-orchestrator.d.ts +0 -115
  230. package/dist/mcp/dynamic-orchestrator.js +0 -351
  231. package/dist/mcp/ecosystem.d.ts +0 -75
  232. package/dist/mcp/ecosystem.js +0 -162
  233. package/dist/mcp/error-manager.d.ts +0 -254
  234. package/dist/mcp/error-manager.js +0 -501
  235. package/dist/mcp/error-recovery.d.ts +0 -159
  236. package/dist/mcp/error-recovery.js +0 -405
  237. package/dist/mcp/external-client.d.ts +0 -88
  238. package/dist/mcp/external-client.js +0 -331
  239. package/dist/mcp/external-manager.d.ts +0 -112
  240. package/dist/mcp/external-manager.js +0 -308
  241. package/dist/mcp/function-calling.d.ts +0 -65
  242. package/dist/mcp/function-calling.js +0 -642
  243. package/dist/mcp/health-monitor.d.ts +0 -257
  244. package/dist/mcp/health-monitor.js +0 -630
  245. package/dist/mcp/initialize-tools.d.ts +0 -29
  246. package/dist/mcp/initialize-tools.js +0 -262
  247. package/dist/mcp/initialize.d.ts +0 -18
  248. package/dist/mcp/initialize.js +0 -62
  249. package/dist/mcp/logging.d.ts +0 -38
  250. package/dist/mcp/logging.js +0 -100
  251. package/dist/mcp/manager.d.ts +0 -68
  252. package/dist/mcp/manager.js +0 -176
  253. package/dist/mcp/neurolink-mcp-client.d.ts +0 -97
  254. package/dist/mcp/neurolink-mcp-client.js +0 -462
  255. package/dist/mcp/orchestrator.d.ts +0 -302
  256. package/dist/mcp/orchestrator.js +0 -703
  257. package/dist/mcp/plugin-manager.d.ts +0 -98
  258. package/dist/mcp/plugin-manager.js +0 -297
  259. package/dist/mcp/plugins/core/filesystem-mcp.d.ts +0 -36
  260. package/dist/mcp/plugins/core/filesystem-mcp.js +0 -142
  261. package/dist/mcp/plugins/core/neurolink-mcp.json +0 -17
  262. package/dist/mcp/plugins/filesystem-mcp.d.ts +0 -37
  263. package/dist/mcp/plugins/filesystem-mcp.js +0 -54
  264. package/dist/mcp/security-manager.d.ts +0 -87
  265. package/dist/mcp/security-manager.js +0 -344
  266. package/dist/mcp/semaphore-manager.d.ts +0 -137
  267. package/dist/mcp/semaphore-manager.js +0 -329
  268. package/dist/mcp/session-manager.d.ts +0 -187
  269. package/dist/mcp/session-manager.js +0 -400
  270. package/dist/mcp/session-persistence.d.ts +0 -93
  271. package/dist/mcp/session-persistence.js +0 -302
  272. package/dist/mcp/tool-integration.d.ts +0 -58
  273. package/dist/mcp/tool-integration.js +0 -203
  274. package/dist/mcp/transport-manager.d.ts +0 -154
  275. package/dist/mcp/transport-manager.js +0 -335
  276. package/dist/mcp/unified-mcp.d.ts +0 -133
  277. package/dist/mcp/unified-mcp.js +0 -251
  278. package/dist/mcp/unified-registry.d.ts +0 -165
  279. package/dist/mcp/unified-registry.js +0 -539
  280. package/dist/providers/analytics-helper.d.ts +0 -38
  281. package/dist/providers/analytics-helper.js +0 -216
  282. package/dist/providers/function-calling-provider.d.ts +0 -142
  283. package/dist/providers/function-calling-provider.js +0 -630
  284. package/dist/providers/mcp-provider.d.ts +0 -75
  285. package/dist/providers/mcp-provider.js +0 -283
  286. package/dist/providers/timeout-wrapper.d.ts +0 -40
  287. package/dist/providers/timeout-wrapper.js +0 -100
  288. package/dist/sdk/tool-extension.d.ts +0 -181
  289. package/dist/sdk/tool-extension.js +0 -284
  290. package/dist/services/streaming/streaming-manager.d.ts +0 -29
  291. package/dist/services/streaming/streaming-manager.js +0 -245
  292. package/dist/services/types.d.ts +0 -156
  293. package/dist/services/types.js +0 -2
  294. package/dist/services/websocket/websocket-server.d.ts +0 -34
  295. package/dist/services/websocket/websocket-server.js +0 -306
  296. package/dist/utils/provider-validation.d.ts +0 -36
  297. package/dist/utils/provider-validation.js +0 -625
  298. package/dist/utils/providerUtils-fixed.d.ts +0 -8
  299. package/dist/utils/providerUtils-fixed.js +0 -94
  300. package/dist/utils/streaming-utils.d.ts +0 -79
  301. package/dist/utils/streaming-utils.js +0 -198
  302. package/dist/utils/timeout-manager.d.ts +0 -75
  303. package/dist/utils/timeout-manager.js +0 -244
@@ -1,156 +0,0 @@
1
- import type { UnknownRecord, Unknown } from "../types/common.js";
2
- export interface StreamingSession {
3
- id: string;
4
- connectionId: string;
5
- provider: string;
6
- status: "active" | "paused" | "terminated";
7
- startTime: number;
8
- lastActivity: number;
9
- config: StreamingConfig;
10
- metrics: {
11
- bytesTransferred: number;
12
- messagesCount: number;
13
- averageLatency: number;
14
- errorCount: number;
15
- };
16
- }
17
- export interface WebSocketOptions {
18
- port?: number;
19
- maxConnections?: number;
20
- heartbeatInterval?: number;
21
- enableCompression?: boolean;
22
- enableBackpressure?: boolean;
23
- bufferSize?: number;
24
- timeoutMs?: number;
25
- }
26
- export interface StreamingConfig {
27
- provider: string;
28
- model: string;
29
- streamingMode: "real-time" | "buffered" | "adaptive";
30
- compressionEnabled: boolean;
31
- maxChunkSize: number;
32
- bufferSize: number;
33
- latencyTarget: number;
34
- }
35
- export interface StreamingPool {
36
- id: string;
37
- maxSessions: number;
38
- activeSessions: Set<string>;
39
- config: StreamingPoolConfig;
40
- loadBalancer: LoadBalancingStrategy;
41
- }
42
- export interface StreamingPoolConfig {
43
- maxConcurrentSessions: number;
44
- sessionTimeout: number;
45
- loadBalancing: LoadBalancingStrategy;
46
- autoScaling: {
47
- enabled: boolean;
48
- minSessions: number;
49
- maxSessions: number;
50
- scaleUpThreshold: number;
51
- scaleDownThreshold: number;
52
- };
53
- }
54
- export type LoadBalancingStrategy = "round-robin" | "least-connections" | "weighted" | "adaptive";
55
- export interface StreamingChannel {
56
- id: string;
57
- connectionId: string;
58
- type: "ai-response" | "mcp-tool" | "chat" | "notification";
59
- status: "open" | "closed" | "error";
60
- buffer: StreamingBuffer;
61
- onData: (data: Unknown) => void;
62
- onError: (error: Error) => void;
63
- onClose: () => void;
64
- }
65
- export interface StreamingBuffer {
66
- data: Unknown[];
67
- maxSize: number;
68
- currentSize: number;
69
- flushThreshold: number;
70
- lastFlush: number;
71
- }
72
- export interface StreamingMetrics {
73
- sessionId?: string;
74
- activeSessions: number;
75
- totalBytesTransferred: number;
76
- averageLatency: number;
77
- throughputBps: number;
78
- errorRate: number;
79
- connectionCount: number;
80
- uptime: number;
81
- }
82
- export interface StreamingHealthStatus {
83
- status: "healthy" | "degraded" | "unhealthy";
84
- activeSessions: number;
85
- errorRate: number;
86
- averageLatency: number;
87
- lastHealthCheck: number;
88
- issues: string[];
89
- }
90
- export interface WebSocketMessage {
91
- id: string;
92
- type: "chat" | "ai-response" | "tool-result" | "system" | "heartbeat" | "error";
93
- connectionId: string;
94
- roomId?: string;
95
- timestamp: number;
96
- data: Unknown;
97
- metadata?: {
98
- provider?: string;
99
- model?: string;
100
- tokens?: number;
101
- latency?: number;
102
- };
103
- }
104
- export interface ChatRequest {
105
- prompt: string;
106
- sessionId?: string;
107
- options?: {
108
- temperature?: number;
109
- maxTokens?: number;
110
- streaming?: boolean;
111
- enableTools?: boolean;
112
- };
113
- }
114
- export interface GroupChatRequest extends ChatRequest {
115
- roomId: string;
116
- userId?: string;
117
- broadcastToRoom?: boolean;
118
- }
119
- export interface StreamingChatRequest extends ChatRequest {
120
- streamingOptions?: {
121
- chunkSize?: number;
122
- flushInterval?: number;
123
- enableCompression?: boolean;
124
- };
125
- }
126
- export interface MultiModalContent {
127
- type: "text" | "image" | "audio" | "video" | "file";
128
- content: string | Buffer;
129
- metadata?: {
130
- mimeType?: string;
131
- size?: number;
132
- duration?: number;
133
- dimensions?: {
134
- width: number;
135
- height: number;
136
- };
137
- };
138
- }
139
- export interface BufferConfig {
140
- maxSize: number;
141
- flushThreshold: number;
142
- flushInterval: number;
143
- compressionEnabled: boolean;
144
- persistToDisk: boolean;
145
- }
146
- export interface ConnectionInfo {
147
- id: string;
148
- userId?: string;
149
- userAgent?: string;
150
- ipAddress?: string;
151
- connectedAt: number;
152
- lastActivity: number;
153
- rooms: Set<string>;
154
- subscriptions: Set<string>;
155
- metadata: UnknownRecord;
156
- }
@@ -1,2 +0,0 @@
1
- // Real-time Services Types
2
- export {};
@@ -1,34 +0,0 @@
1
- import { EventEmitter } from "events";
2
- import type { WebSocketOptions, WebSocketMessage, StreamingChannel } from "../types.js";
3
- export declare class NeuroLinkWebSocketServer extends EventEmitter {
4
- private wss;
5
- private connections;
6
- private connectionInfo;
7
- private rooms;
8
- private streamingChannels;
9
- private heartbeatInterval?;
10
- private options;
11
- constructor(options?: WebSocketOptions);
12
- private setupEventHandlers;
13
- private handleConnection;
14
- private handleMessage;
15
- private handleDisconnection;
16
- joinRoom(connectionId: string, roomId: string): boolean;
17
- leaveRoom(connectionId: string, roomId: string): boolean;
18
- broadcastToRoom(roomId: string, message: WebSocketMessage): void;
19
- createStreamingChannel(connectionId: string, channelId: string): StreamingChannel;
20
- destroyStreamingChannel(channelId: string): void;
21
- sendMessage(connectionId: string, message: WebSocketMessage): boolean;
22
- private sendError;
23
- private updateLastActivity;
24
- private handleHeartbeat;
25
- private handleChatMessage;
26
- private startHeartbeat;
27
- getConnectionCount(): number;
28
- getRoomCount(): number;
29
- getActiveChannels(): number;
30
- close(): void;
31
- private handleChannelData;
32
- private handleChannelError;
33
- private handleChannelClose;
34
- }
@@ -1,306 +0,0 @@
1
- import { WebSocketServer, WebSocket } from "ws";
2
- import { EventEmitter } from "events";
3
- import { randomUUID } from "crypto";
4
- import { IncomingMessage } from "http";
5
- import { logger } from "../../utils/logger.js";
6
- export class NeuroLinkWebSocketServer extends EventEmitter {
7
- wss;
8
- connections = new Map();
9
- connectionInfo = new Map();
10
- rooms = new Map();
11
- streamingChannels = new Map();
12
- heartbeatInterval;
13
- options;
14
- constructor(options = {}) {
15
- super();
16
- this.options = {
17
- port: options.port || 8080,
18
- maxConnections: options.maxConnections || 1000,
19
- heartbeatInterval: options.heartbeatInterval || 30000,
20
- enableCompression: options.enableCompression ?? true,
21
- enableBackpressure: options.enableBackpressure ?? true,
22
- bufferSize: options.bufferSize || 8192,
23
- timeoutMs: options.timeoutMs || 30000,
24
- };
25
- this.wss = new WebSocketServer({
26
- port: this.options.port,
27
- perMessageDeflate: this.options.enableCompression,
28
- });
29
- this.setupEventHandlers();
30
- this.startHeartbeat();
31
- }
32
- setupEventHandlers() {
33
- this.wss.on("connection", (ws, request) => {
34
- this.handleConnection(ws, request);
35
- });
36
- this.wss.on("error", (error) => {
37
- logger.error("[WebSocket Server] Error:", error);
38
- this.emit("error", error);
39
- });
40
- }
41
- handleConnection(ws, request) {
42
- if (this.connections.size >= this.options.maxConnections) {
43
- ws.close(1013, "Server at capacity");
44
- return;
45
- }
46
- const connectionId = randomUUID();
47
- const userAgent = request.headers["user-agent"];
48
- const ipAddress = request.socket?.remoteAddress;
49
- // Store connection
50
- this.connections.set(connectionId, ws);
51
- this.connectionInfo.set(connectionId, {
52
- id: connectionId,
53
- userAgent,
54
- ipAddress,
55
- connectedAt: Date.now(),
56
- lastActivity: Date.now(),
57
- rooms: new Set(),
58
- subscriptions: new Set(),
59
- metadata: {},
60
- });
61
- // Setup WebSocket event handlers
62
- ws.on("message", (data) => {
63
- this.handleMessage(connectionId, data);
64
- });
65
- ws.on("close", () => {
66
- this.handleDisconnection(connectionId);
67
- });
68
- ws.on("error", (error) => {
69
- logger.error(`[WebSocket] Connection ${connectionId} error:`, error);
70
- this.handleDisconnection(connectionId);
71
- });
72
- // Send connection confirmation
73
- this.sendMessage(connectionId, {
74
- id: randomUUID(),
75
- type: "system",
76
- connectionId,
77
- timestamp: Date.now(),
78
- data: {
79
- event: "connected",
80
- connectionId,
81
- serverInfo: {
82
- version: "3.0.1",
83
- features: ["streaming", "rooms", "tools"],
84
- },
85
- },
86
- });
87
- logger.debug(`[WebSocket] New connection: ${connectionId} (${this.connections.size}/${this.options.maxConnections})`);
88
- this.emit("connection", { connectionId, userAgent, ipAddress });
89
- }
90
- handleMessage(connectionId, data) {
91
- try {
92
- const message = JSON.parse(data.toString());
93
- this.updateLastActivity(connectionId);
94
- switch (message.type) {
95
- case "heartbeat":
96
- this.handleHeartbeat(connectionId);
97
- break;
98
- case "chat":
99
- this.handleChatMessage(connectionId, message);
100
- break;
101
- default:
102
- this.emit("message", { connectionId, message });
103
- }
104
- }
105
- catch (error) {
106
- logger.error(`[WebSocket] Invalid message from ${connectionId}:`, error);
107
- this.sendError(connectionId, "Invalid message format");
108
- }
109
- }
110
- handleDisconnection(connectionId) {
111
- const connection = this.connectionInfo.get(connectionId);
112
- if (!connection) {
113
- return;
114
- }
115
- // Leave all rooms
116
- connection.rooms.forEach((roomId) => {
117
- this.leaveRoom(connectionId, roomId);
118
- });
119
- // Close streaming channels
120
- this.streamingChannels.forEach((channel, channelId) => {
121
- if (channel.connectionId === connectionId) {
122
- channel.onClose();
123
- this.streamingChannels.delete(channelId);
124
- }
125
- });
126
- // Clean up
127
- this.connections.delete(connectionId);
128
- this.connectionInfo.delete(connectionId);
129
- logger.debug(`[WebSocket] Disconnected: ${connectionId} (${this.connections.size}/${this.options.maxConnections})`);
130
- this.emit("disconnection", { connectionId });
131
- }
132
- // Room Management
133
- joinRoom(connectionId, roomId) {
134
- const connection = this.connectionInfo.get(connectionId);
135
- if (!connection) {
136
- return false;
137
- }
138
- if (!this.rooms.has(roomId)) {
139
- this.rooms.set(roomId, new Set());
140
- }
141
- this.rooms.get(roomId).add(connectionId);
142
- connection.rooms.add(roomId);
143
- this.sendMessage(connectionId, {
144
- id: randomUUID(),
145
- type: "system",
146
- connectionId,
147
- roomId,
148
- timestamp: Date.now(),
149
- data: {
150
- event: "room_joined",
151
- roomId,
152
- memberCount: this.rooms.get(roomId).size,
153
- },
154
- });
155
- logger.debug(`[WebSocket] ${connectionId} joined room ${roomId}`);
156
- return true;
157
- }
158
- leaveRoom(connectionId, roomId) {
159
- const connection = this.connectionInfo.get(connectionId);
160
- if (!connection) {
161
- return false;
162
- }
163
- const room = this.rooms.get(roomId);
164
- if (!room) {
165
- return false;
166
- }
167
- room.delete(connectionId);
168
- connection.rooms.delete(roomId);
169
- if (room.size === 0) {
170
- this.rooms.delete(roomId);
171
- }
172
- this.sendMessage(connectionId, {
173
- id: randomUUID(),
174
- type: "system",
175
- connectionId,
176
- roomId,
177
- timestamp: Date.now(),
178
- data: {
179
- event: "room_left",
180
- roomId,
181
- memberCount: room.size,
182
- },
183
- });
184
- logger.debug(`[WebSocket] ${connectionId} left room ${roomId}`);
185
- return true;
186
- }
187
- broadcastToRoom(roomId, message) {
188
- const room = this.rooms.get(roomId);
189
- if (!room) {
190
- return;
191
- }
192
- room.forEach((connectionId) => {
193
- this.sendMessage(connectionId, { ...message, roomId });
194
- });
195
- }
196
- // Streaming Support
197
- createStreamingChannel(connectionId, channelId) {
198
- const channel = {
199
- id: channelId,
200
- connectionId,
201
- type: "ai-response",
202
- status: "open",
203
- buffer: {
204
- data: [],
205
- maxSize: this.options.bufferSize,
206
- currentSize: 0,
207
- flushThreshold: Math.floor(this.options.bufferSize * 0.8),
208
- lastFlush: Date.now(),
209
- },
210
- onData: (data) => this.handleChannelData(channelId, data),
211
- onError: (error) => this.handleChannelError(channelId, error),
212
- onClose: () => this.handleChannelClose(channelId),
213
- };
214
- this.streamingChannels.set(channelId, channel);
215
- return channel;
216
- }
217
- destroyStreamingChannel(channelId) {
218
- const channel = this.streamingChannels.get(channelId);
219
- if (channel) {
220
- channel.status = "closed";
221
- channel.onClose();
222
- this.streamingChannels.delete(channelId);
223
- }
224
- }
225
- // Helper methods
226
- sendMessage(connectionId, message) {
227
- const ws = this.connections.get(connectionId);
228
- if (!ws || ws.readyState !== WebSocket.OPEN) {
229
- return false;
230
- }
231
- try {
232
- ws.send(JSON.stringify(message));
233
- return true;
234
- }
235
- catch (error) {
236
- logger.error(`[WebSocket] Failed to send message to ${connectionId}:`, error);
237
- return false;
238
- }
239
- }
240
- sendError(connectionId, errorMessage) {
241
- this.sendMessage(connectionId, {
242
- id: randomUUID(),
243
- type: "error",
244
- connectionId,
245
- timestamp: Date.now(),
246
- data: { error: errorMessage },
247
- });
248
- }
249
- updateLastActivity(connectionId) {
250
- const connection = this.connectionInfo.get(connectionId);
251
- if (connection) {
252
- connection.lastActivity = Date.now();
253
- }
254
- }
255
- handleHeartbeat(connectionId) {
256
- this.sendMessage(connectionId, {
257
- id: randomUUID(),
258
- type: "heartbeat",
259
- connectionId,
260
- timestamp: Date.now(),
261
- data: { pong: true },
262
- });
263
- }
264
- handleChatMessage(connectionId, message) {
265
- this.emit("chat-message", { connectionId, message });
266
- }
267
- startHeartbeat() {
268
- this.heartbeatInterval = setInterval(() => {
269
- this.connections.forEach((ws, connectionId) => {
270
- if (ws.readyState === WebSocket.OPEN) {
271
- const connection = this.connectionInfo.get(connectionId);
272
- if (connection &&
273
- Date.now() - connection.lastActivity > this.options.timeoutMs) {
274
- logger.debug(`[WebSocket] Timeout for connection ${connectionId}`);
275
- ws.terminate();
276
- }
277
- }
278
- });
279
- }, this.options.heartbeatInterval);
280
- }
281
- // Public getters
282
- getConnectionCount() {
283
- return this.connections.size;
284
- }
285
- getRoomCount() {
286
- return this.rooms.size;
287
- }
288
- getActiveChannels() {
289
- return this.streamingChannels.size;
290
- }
291
- close() {
292
- if (this.heartbeatInterval) {
293
- clearInterval(this.heartbeatInterval);
294
- }
295
- this.wss.close();
296
- }
297
- handleChannelData(channelId, data) {
298
- // Implementation for channel data handling
299
- }
300
- handleChannelError(channelId, error) {
301
- logger.error(`[Streaming Channel] ${channelId} error:`, error);
302
- }
303
- handleChannelClose(channelId) {
304
- logger.debug(`[Streaming Channel] ${channelId} closed`);
305
- }
306
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * Enhanced Provider Validation Utilities
3
- *
4
- * Fixes false positives in provider status checking by implementing:
5
- * - API key format validation
6
- * - Lightweight authentication checks
7
- * - Proper error classification
8
- * - Rate-limit friendly validation
9
- */
10
- import type { UnknownRecord } from "../types/common.js";
11
- export interface ProviderValidationResult {
12
- configured: boolean;
13
- formatValid: boolean;
14
- authenticated: boolean;
15
- available: boolean;
16
- error?: string;
17
- errorType?: "config" | "format" | "auth" | "network" | "quota" | "unknown";
18
- responseTime?: number;
19
- details?: UnknownRecord;
20
- }
21
- /**
22
- * Validate API key format for a specific provider
23
- */
24
- export declare function validateApiKeyFormat(provider: string, apiKey: string): boolean;
25
- /**
26
- * Comprehensive provider validation that prevents false positives
27
- */
28
- export declare function validateProvider(provider: string): Promise<ProviderValidationResult>;
29
- /**
30
- * Batch validate multiple providers efficiently
31
- */
32
- export declare function validateProviders(providers: string[]): Promise<Record<string, ProviderValidationResult>>;
33
- /**
34
- * Check if provider validation should be cached (to avoid rate limits)
35
- */
36
- export declare function shouldCacheValidation(result: ProviderValidationResult): boolean;