@lobu/gateway 3.0.9 → 3.0.13

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 (212) hide show
  1. package/dist/api/platform.d.ts.map +1 -1
  2. package/dist/api/platform.js +7 -26
  3. package/dist/api/platform.js.map +1 -1
  4. package/dist/auth/mcp/proxy.d.ts +14 -0
  5. package/dist/auth/mcp/proxy.d.ts.map +1 -1
  6. package/dist/auth/mcp/proxy.js +149 -13
  7. package/dist/auth/mcp/proxy.js.map +1 -1
  8. package/dist/cli/gateway.d.ts.map +1 -1
  9. package/dist/cli/gateway.js +29 -0
  10. package/dist/cli/gateway.js.map +1 -1
  11. package/dist/connections/chat-instance-manager.d.ts.map +1 -1
  12. package/dist/connections/chat-instance-manager.js +2 -1
  13. package/dist/connections/chat-instance-manager.js.map +1 -1
  14. package/dist/connections/interaction-bridge.d.ts +9 -2
  15. package/dist/connections/interaction-bridge.d.ts.map +1 -1
  16. package/dist/connections/interaction-bridge.js +121 -261
  17. package/dist/connections/interaction-bridge.js.map +1 -1
  18. package/dist/gateway/index.js +1 -1
  19. package/dist/gateway/index.js.map +1 -1
  20. package/dist/interactions.d.ts +9 -43
  21. package/dist/interactions.d.ts.map +1 -1
  22. package/dist/interactions.js +10 -52
  23. package/dist/interactions.js.map +1 -1
  24. package/dist/routes/public/agent.d.ts +4 -0
  25. package/dist/routes/public/agent.d.ts.map +1 -1
  26. package/dist/routes/public/agent.js +21 -0
  27. package/dist/routes/public/agent.js.map +1 -1
  28. package/dist/services/core-services.d.ts.map +1 -1
  29. package/dist/services/core-services.js +4 -0
  30. package/dist/services/core-services.js.map +1 -1
  31. package/package.json +9 -9
  32. package/src/__tests__/agent-config-routes.test.ts +0 -254
  33. package/src/__tests__/agent-history-routes.test.ts +0 -72
  34. package/src/__tests__/agent-routes.test.ts +0 -68
  35. package/src/__tests__/agent-schedules-routes.test.ts +0 -59
  36. package/src/__tests__/agent-settings-store.test.ts +0 -323
  37. package/src/__tests__/bedrock-model-catalog.test.ts +0 -40
  38. package/src/__tests__/bedrock-openai-service.test.ts +0 -157
  39. package/src/__tests__/bedrock-provider-module.test.ts +0 -56
  40. package/src/__tests__/chat-instance-manager-slack.test.ts +0 -204
  41. package/src/__tests__/chat-response-bridge.test.ts +0 -131
  42. package/src/__tests__/config-memory-plugins.test.ts +0 -92
  43. package/src/__tests__/config-request-store.test.ts +0 -127
  44. package/src/__tests__/connection-routes.test.ts +0 -144
  45. package/src/__tests__/core-services-store-selection.test.ts +0 -92
  46. package/src/__tests__/docker-deployment.test.ts +0 -1211
  47. package/src/__tests__/embedded-deployment.test.ts +0 -342
  48. package/src/__tests__/grant-store.test.ts +0 -148
  49. package/src/__tests__/http-proxy.test.ts +0 -281
  50. package/src/__tests__/instruction-service.test.ts +0 -37
  51. package/src/__tests__/link-buttons.test.ts +0 -112
  52. package/src/__tests__/lobu.test.ts +0 -32
  53. package/src/__tests__/mcp-config-service.test.ts +0 -347
  54. package/src/__tests__/mcp-proxy.test.ts +0 -694
  55. package/src/__tests__/message-handler-bridge.test.ts +0 -17
  56. package/src/__tests__/model-selection.test.ts +0 -172
  57. package/src/__tests__/oauth-templates.test.ts +0 -39
  58. package/src/__tests__/platform-adapter-slack-send.test.ts +0 -114
  59. package/src/__tests__/platform-helpers-model-resolution.test.ts +0 -253
  60. package/src/__tests__/provider-inheritance.test.ts +0 -212
  61. package/src/__tests__/routes/cli-auth.test.ts +0 -337
  62. package/src/__tests__/routes/interactions.test.ts +0 -121
  63. package/src/__tests__/secret-proxy.test.ts +0 -85
  64. package/src/__tests__/session-manager.test.ts +0 -572
  65. package/src/__tests__/setup.ts +0 -133
  66. package/src/__tests__/skill-and-mcp-registry.test.ts +0 -203
  67. package/src/__tests__/slack-routes.test.ts +0 -161
  68. package/src/__tests__/system-config-resolver.test.ts +0 -75
  69. package/src/__tests__/system-message-limiter.test.ts +0 -89
  70. package/src/__tests__/system-skills-service.test.ts +0 -362
  71. package/src/__tests__/transcription-service.test.ts +0 -222
  72. package/src/__tests__/utils/rate-limiter.test.ts +0 -102
  73. package/src/__tests__/worker-connection-manager.test.ts +0 -497
  74. package/src/__tests__/worker-job-router.test.ts +0 -722
  75. package/src/api/index.ts +0 -1
  76. package/src/api/platform.ts +0 -292
  77. package/src/api/response-renderer.ts +0 -157
  78. package/src/auth/agent-metadata-store.ts +0 -168
  79. package/src/auth/api-auth-middleware.ts +0 -69
  80. package/src/auth/api-key-provider-module.ts +0 -213
  81. package/src/auth/base-provider-module.ts +0 -201
  82. package/src/auth/bedrock/provider-module.ts +0 -110
  83. package/src/auth/chatgpt/chatgpt-oauth-module.ts +0 -185
  84. package/src/auth/chatgpt/device-code-client.ts +0 -218
  85. package/src/auth/chatgpt/index.ts +0 -1
  86. package/src/auth/claude/oauth-module.ts +0 -280
  87. package/src/auth/cli/token-service.ts +0 -249
  88. package/src/auth/external/client.ts +0 -560
  89. package/src/auth/external/device-code-client.ts +0 -235
  90. package/src/auth/mcp/config-service.ts +0 -420
  91. package/src/auth/mcp/proxy.ts +0 -1086
  92. package/src/auth/mcp/string-substitution.ts +0 -17
  93. package/src/auth/mcp/tool-cache.ts +0 -90
  94. package/src/auth/oauth/base-client.ts +0 -267
  95. package/src/auth/oauth/client.ts +0 -153
  96. package/src/auth/oauth/credentials.ts +0 -7
  97. package/src/auth/oauth/providers.ts +0 -69
  98. package/src/auth/oauth/state-store.ts +0 -150
  99. package/src/auth/oauth-templates.ts +0 -179
  100. package/src/auth/provider-catalog.ts +0 -220
  101. package/src/auth/provider-model-options.ts +0 -41
  102. package/src/auth/settings/agent-settings-store.ts +0 -565
  103. package/src/auth/settings/auth-profiles-manager.ts +0 -216
  104. package/src/auth/settings/index.ts +0 -12
  105. package/src/auth/settings/model-preference-store.ts +0 -52
  106. package/src/auth/settings/model-selection.ts +0 -135
  107. package/src/auth/settings/resolved-settings-view.ts +0 -298
  108. package/src/auth/settings/template-utils.ts +0 -44
  109. package/src/auth/settings/token-service.ts +0 -88
  110. package/src/auth/system-env-store.ts +0 -98
  111. package/src/auth/user-agents-store.ts +0 -68
  112. package/src/channels/binding-service.ts +0 -214
  113. package/src/channels/index.ts +0 -4
  114. package/src/cli/gateway.ts +0 -1312
  115. package/src/cli/index.ts +0 -74
  116. package/src/commands/built-in-commands.ts +0 -80
  117. package/src/commands/command-dispatcher.ts +0 -94
  118. package/src/commands/command-reply-adapters.ts +0 -27
  119. package/src/config/file-loader.ts +0 -618
  120. package/src/config/index.ts +0 -588
  121. package/src/config/network-allowlist.ts +0 -71
  122. package/src/connections/chat-instance-manager.ts +0 -1284
  123. package/src/connections/chat-response-bridge.ts +0 -618
  124. package/src/connections/index.ts +0 -7
  125. package/src/connections/interaction-bridge.ts +0 -831
  126. package/src/connections/message-handler-bridge.ts +0 -440
  127. package/src/connections/platform-auth-methods.ts +0 -15
  128. package/src/connections/types.ts +0 -84
  129. package/src/gateway/connection-manager.ts +0 -291
  130. package/src/gateway/index.ts +0 -698
  131. package/src/gateway/job-router.ts +0 -201
  132. package/src/gateway-main.ts +0 -200
  133. package/src/index.ts +0 -41
  134. package/src/infrastructure/queue/index.ts +0 -12
  135. package/src/infrastructure/queue/queue-producer.ts +0 -148
  136. package/src/infrastructure/queue/redis-queue.ts +0 -361
  137. package/src/infrastructure/queue/types.ts +0 -133
  138. package/src/infrastructure/redis/system-message-limiter.ts +0 -94
  139. package/src/interactions/config-request-store.ts +0 -198
  140. package/src/interactions.ts +0 -363
  141. package/src/lobu.ts +0 -311
  142. package/src/metrics/prometheus.ts +0 -159
  143. package/src/modules/module-system.ts +0 -179
  144. package/src/orchestration/base-deployment-manager.ts +0 -900
  145. package/src/orchestration/deployment-utils.ts +0 -98
  146. package/src/orchestration/impl/docker-deployment.ts +0 -620
  147. package/src/orchestration/impl/embedded-deployment.ts +0 -268
  148. package/src/orchestration/impl/index.ts +0 -8
  149. package/src/orchestration/impl/k8s/deployment.ts +0 -1061
  150. package/src/orchestration/impl/k8s/helpers.ts +0 -610
  151. package/src/orchestration/impl/k8s/index.ts +0 -1
  152. package/src/orchestration/index.ts +0 -333
  153. package/src/orchestration/message-consumer.ts +0 -584
  154. package/src/orchestration/scheduled-wakeup.ts +0 -704
  155. package/src/permissions/approval-policy.ts +0 -36
  156. package/src/permissions/grant-store.ts +0 -219
  157. package/src/platform/file-handler.ts +0 -66
  158. package/src/platform/link-buttons.ts +0 -57
  159. package/src/platform/renderer-utils.ts +0 -44
  160. package/src/platform/response-renderer.ts +0 -84
  161. package/src/platform/unified-thread-consumer.ts +0 -194
  162. package/src/platform.ts +0 -318
  163. package/src/proxy/http-proxy.ts +0 -752
  164. package/src/proxy/proxy-manager.ts +0 -81
  165. package/src/proxy/secret-proxy.ts +0 -402
  166. package/src/proxy/token-refresh-job.ts +0 -143
  167. package/src/routes/internal/audio.ts +0 -141
  168. package/src/routes/internal/device-auth.ts +0 -652
  169. package/src/routes/internal/files.ts +0 -226
  170. package/src/routes/internal/history.ts +0 -69
  171. package/src/routes/internal/images.ts +0 -127
  172. package/src/routes/internal/interactions.ts +0 -84
  173. package/src/routes/internal/middleware.ts +0 -23
  174. package/src/routes/internal/schedule.ts +0 -226
  175. package/src/routes/internal/types.ts +0 -22
  176. package/src/routes/openapi-auto.ts +0 -239
  177. package/src/routes/public/agent-access.ts +0 -23
  178. package/src/routes/public/agent-config.ts +0 -675
  179. package/src/routes/public/agent-history.ts +0 -422
  180. package/src/routes/public/agent-schedules.ts +0 -296
  181. package/src/routes/public/agent.ts +0 -1086
  182. package/src/routes/public/agents.ts +0 -373
  183. package/src/routes/public/channels.ts +0 -191
  184. package/src/routes/public/cli-auth.ts +0 -896
  185. package/src/routes/public/connections.ts +0 -574
  186. package/src/routes/public/landing.ts +0 -16
  187. package/src/routes/public/oauth.ts +0 -147
  188. package/src/routes/public/settings-auth.ts +0 -104
  189. package/src/routes/public/slack.ts +0 -173
  190. package/src/routes/shared/agent-ownership.ts +0 -101
  191. package/src/routes/shared/token-verifier.ts +0 -34
  192. package/src/services/bedrock-model-catalog.ts +0 -217
  193. package/src/services/bedrock-openai-service.ts +0 -658
  194. package/src/services/core-services.ts +0 -1072
  195. package/src/services/image-generation-service.ts +0 -257
  196. package/src/services/instruction-service.ts +0 -318
  197. package/src/services/mcp-registry.ts +0 -94
  198. package/src/services/platform-helpers.ts +0 -287
  199. package/src/services/session-manager.ts +0 -262
  200. package/src/services/settings-resolver.ts +0 -74
  201. package/src/services/system-config-resolver.ts +0 -89
  202. package/src/services/system-skills-service.ts +0 -229
  203. package/src/services/transcription-service.ts +0 -684
  204. package/src/session.ts +0 -110
  205. package/src/spaces/index.ts +0 -1
  206. package/src/spaces/space-resolver.ts +0 -17
  207. package/src/stores/in-memory-agent-store.ts +0 -403
  208. package/src/stores/redis-agent-store.ts +0 -279
  209. package/src/utils/public-url.ts +0 -44
  210. package/src/utils/rate-limiter.ts +0 -94
  211. package/tsconfig.json +0 -33
  212. package/tsconfig.tsbuildinfo +0 -1
package/src/platform.ts DELETED
@@ -1,318 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import type {
4
- CommandRegistry,
5
- InstructionProvider,
6
- UserSuggestion,
7
- } from "@lobu/core";
8
- import type { AgentMetadataStore } from "./auth/agent-metadata-store";
9
- import type { McpProxy } from "./auth/mcp/proxy";
10
- import type { ProviderOAuthStateStore } from "./auth/oauth/state-store";
11
- import type { AgentSettingsStore } from "./auth/settings";
12
- import type { ModelPreferenceStore } from "./auth/settings/model-preference-store";
13
- import type { UserAgentsStore } from "./auth/user-agents-store";
14
- import type { ChannelBindingService } from "./channels";
15
- import type { WorkerGateway } from "./gateway";
16
- import type { IMessageQueue, QueueProducer } from "./infrastructure/queue";
17
- import type { InteractionService } from "./interactions";
18
- import type { GrantStore } from "./permissions/grant-store";
19
- import type { IFileHandler } from "./platform/file-handler";
20
- import type { ResponseRenderer } from "./platform/response-renderer";
21
- import type { SecretProxy } from "./proxy/secret-proxy";
22
- import type { InstructionService } from "./services/instruction-service";
23
- import type { TranscriptionService } from "./services/transcription-service";
24
- import type { ISessionManager } from "./session";
25
-
26
- // ============================================================================
27
- // Core Services Interface
28
- // ============================================================================
29
-
30
- /**
31
- * Core services interface that platforms receive during initialization
32
- * This allows platforms to access shared infrastructure without tight coupling
33
- */
34
- export interface CoreServices {
35
- getQueue(): IMessageQueue;
36
- getQueueProducer(): QueueProducer;
37
- getSecretProxy(): SecretProxy | undefined;
38
- getWorkerGateway(): WorkerGateway | undefined;
39
- getMcpProxy(): McpProxy | undefined;
40
- getModelPreferenceStore(): ModelPreferenceStore | undefined;
41
- getOAuthStateStore(): ProviderOAuthStateStore | undefined;
42
- getPublicGatewayUrl(): string;
43
- getSessionManager(): ISessionManager;
44
- getInstructionService(): InstructionService | undefined;
45
- getInteractionService(): InteractionService;
46
- getAgentSettingsStore(): AgentSettingsStore;
47
- getChannelBindingService(): ChannelBindingService;
48
- getTranscriptionService(): TranscriptionService | undefined;
49
- getUserAgentsStore(): UserAgentsStore;
50
- getAgentMetadataStore(): AgentMetadataStore;
51
- getCommandRegistry(): CommandRegistry;
52
- getGrantStore(): GrantStore | undefined;
53
- }
54
-
55
- // ============================================================================
56
- // Platform Adapter Interface
57
- // ============================================================================
58
-
59
- /**
60
- * Interface that all platform adapters must implement
61
- * Platforms include: Slack, Discord, Teams, etc.
62
- *
63
- * Each platform adapter:
64
- * 1. Receives CoreServices during initialization
65
- * 2. Sets up platform-specific event handlers
66
- * 3. Manages its own platform client/connection
67
- * 4. Uses core services (MCP, Anthropic, Redis) provided by Gateway
68
- */
69
- export interface PlatformAdapter {
70
- /**
71
- * Platform name
72
- */
73
- readonly name: string;
74
-
75
- /**
76
- * Initialize the platform with core services
77
- * This is called by Gateway after core services are initialized
78
- *
79
- * @param services - Core services provided by Gateway
80
- */
81
- initialize(services: CoreServices): Promise<void>;
82
-
83
- /**
84
- * Start the platform (connect to platform API, start event listeners)
85
- * This is called after initialization
86
- */
87
- start(): Promise<void>;
88
-
89
- /**
90
- * Stop the platform gracefully
91
- */
92
- stop(): Promise<void>;
93
-
94
- /**
95
- * Check if platform is healthy and running
96
- */
97
- isHealthy(): boolean;
98
-
99
- /**
100
- * Optionally provide platform-specific instruction provider
101
- * Returns null if platform doesn't have custom instructions
102
- */
103
- getInstructionProvider?(): InstructionProvider | null;
104
-
105
- /**
106
- * Build platform-specific deployment metadata
107
- * This metadata is used for deployment annotations (e.g., thread URLs, team IDs)
108
- *
109
- * @param conversationId - The conversation identifier
110
- * @param channelId - The channel identifier
111
- * @param platformMetadata - Platform-specific metadata from the queue payload
112
- * @returns Record of metadata key-value pairs for deployment annotations
113
- */
114
- buildDeploymentMetadata(
115
- conversationId: string,
116
- channelId: string,
117
- platformMetadata: Record<string, any>
118
- ): Record<string, string>;
119
-
120
- /**
121
- * Render non-blocking suggestions
122
- * Platform should display this as suggested prompts/quick replies
123
- *
124
- * @param suggestion - The suggestions to render
125
- */
126
- renderSuggestion?(suggestion: UserSuggestion): Promise<void>;
127
-
128
- /**
129
- * Set conversation status indicator
130
- * Used to show "is running...", "Waiting for approval...", etc.
131
- * Pass null/undefined to clear the status
132
- *
133
- * @param channelId - Channel identifier
134
- * @param conversationId - Conversation identifier
135
- * @param status - Status message to display, or null to clear
136
- */
137
- setThreadStatus?(
138
- channelId: string,
139
- conversationId: string,
140
- status: string | null
141
- ): Promise<void>;
142
-
143
- /**
144
- * Check if the provided token matches the platform's configured bot token
145
- * Used to detect self-messaging for direct queueing
146
- *
147
- * @param token - Token to check
148
- * @returns True if this is the platform's own bot token
149
- */
150
- isOwnBotToken?(token: string): boolean;
151
-
152
- /**
153
- * Send a message via the messaging API
154
- * Uses polymorphic routing info extracted from the request
155
- *
156
- * @param token - Auth token from request
157
- * @param message - Message text to send (use @me to mention the bot)
158
- * @param options - Routing and file options
159
- * @param options.agentId - Universal session identifier
160
- * @param options.channelId - Platform-specific channel (or agentId for API)
161
- * @param options.conversationId - Platform-specific conversation (or agentId for API)
162
- * @param options.teamId - Platform-specific team/workspace
163
- * @param options.files - Files to upload with the message (up to 10)
164
- * @returns Message metadata
165
- */
166
- sendMessage?(
167
- token: string,
168
- message: string,
169
- options: {
170
- agentId: string;
171
- channelId: string;
172
- conversationId?: string;
173
- teamId: string;
174
- files?: Array<{ buffer: Buffer; filename: string }>;
175
- }
176
- ): Promise<{
177
- messageId: string;
178
- eventsUrl?: string;
179
- queued?: boolean;
180
- }>;
181
-
182
- /**
183
- * Render authentication status for OAuth providers (MCP servers, Claude, etc.)
184
- * Displays connection status in platform-specific UI (e.g., Slack home tab)
185
- *
186
- * @param userId - User ID to render status for
187
- * @param providers - Array of OAuth providers with their connection status
188
- * @returns Promise that resolves when rendering is complete
189
- */
190
- renderAuthStatus?(
191
- userId: string,
192
- providers: Array<{
193
- id: string;
194
- name: string;
195
- isAuthenticated: boolean;
196
- loginUrl?: string;
197
- logoutUrl?: string;
198
- metadata?: Record<string, any>;
199
- }>
200
- ): Promise<void>;
201
-
202
- /**
203
- * Get the file handler for this platform.
204
- * Used by the file upload/download routes to route files
205
- * to the correct platform-specific handler.
206
- */
207
- getFileHandler?(): IFileHandler | undefined;
208
-
209
- /**
210
- * Get the response renderer for this platform.
211
- * Used by the unified thread response consumer to route responses
212
- * to platform-specific rendering logic.
213
- *
214
- * @returns ResponseRenderer instance or undefined if platform handles responses differently
215
- */
216
- getResponseRenderer?(): ResponseRenderer | undefined;
217
-
218
- /**
219
- * Check if a channel ID represents a group/channel vs a DM.
220
- * Used by space-resolver to determine space type.
221
- *
222
- * @param channelId - Channel identifier to check
223
- * @returns True if this is a group/channel, false if DM
224
- */
225
- isGroupChannel?(channelId: string): boolean;
226
-
227
- /**
228
- * Get display information for the platform.
229
- * Used in UI to show platform-specific icons and names.
230
- *
231
- * @returns Display info with name and icon (SVG or emoji)
232
- */
233
- getDisplayInfo?(): {
234
- /** Human-readable platform name */
235
- name: string;
236
- /** SVG icon markup or emoji */
237
- icon: string;
238
- /** Optional logo URL */
239
- logoUrl?: string;
240
- };
241
-
242
- /**
243
- * Extract routing info from platform-specific request body.
244
- * Used by messaging API to parse platform-specific fields.
245
- *
246
- * @param body - Request body with platform-specific fields
247
- * @returns Routing info or null if platform fields are missing/invalid
248
- */
249
- extractRoutingInfo?(body: Record<string, unknown>): {
250
- channelId: string;
251
- conversationId?: string;
252
- teamId?: string;
253
- } | null;
254
-
255
- /**
256
- * Get conversation history for a channel/thread.
257
- * Used by the GetChannelHistory tool to fetch past messages.
258
- *
259
- * @param channelId - Channel/chat identifier
260
- * @param conversationId - Conversation identifier (optional)
261
- * @param limit - Maximum number of messages to return
262
- * @param before - ISO timestamp cursor for pagination
263
- * @returns History response with messages and pagination info
264
- */
265
- getConversationHistory?(
266
- channelId: string,
267
- conversationId: string | undefined,
268
- limit: number,
269
- before: string | undefined
270
- ): Promise<{
271
- messages: Array<{
272
- timestamp: string;
273
- user: string;
274
- text: string;
275
- isBot?: boolean;
276
- }>;
277
- nextCursor: string | null;
278
- hasMore: boolean;
279
- }>;
280
- }
281
-
282
- // ============================================================================
283
- // Platform Registry
284
- // ============================================================================
285
-
286
- /**
287
- * Global registry for platform adapters
288
- * Allows deployment managers and other services to access platform-specific functionality
289
- */
290
- export class PlatformRegistry {
291
- private platforms: Map<string, PlatformAdapter> = new Map();
292
-
293
- /**
294
- * Register a platform adapter
295
- */
296
- register(platform: PlatformAdapter): void {
297
- this.platforms.set(platform.name, platform);
298
- }
299
-
300
- /**
301
- * Get a platform by name
302
- */
303
- get(name: string): PlatformAdapter | undefined {
304
- return this.platforms.get(name);
305
- }
306
-
307
- /**
308
- * Get list of available platform names
309
- */
310
- getAvailablePlatforms(): string[] {
311
- return Array.from(this.platforms.keys());
312
- }
313
- }
314
-
315
- /**
316
- * Global platform registry instance
317
- */
318
- export const platformRegistry = new PlatformRegistry();