@lobu/gateway 3.0.9 → 3.0.12

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 (210) 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/interactions.d.ts +9 -43
  19. package/dist/interactions.d.ts.map +1 -1
  20. package/dist/interactions.js +10 -52
  21. package/dist/interactions.js.map +1 -1
  22. package/dist/routes/public/agent.d.ts +4 -0
  23. package/dist/routes/public/agent.d.ts.map +1 -1
  24. package/dist/routes/public/agent.js +21 -0
  25. package/dist/routes/public/agent.js.map +1 -1
  26. package/dist/services/core-services.d.ts.map +1 -1
  27. package/dist/services/core-services.js +4 -0
  28. package/dist/services/core-services.js.map +1 -1
  29. package/package.json +9 -9
  30. package/src/__tests__/agent-config-routes.test.ts +0 -254
  31. package/src/__tests__/agent-history-routes.test.ts +0 -72
  32. package/src/__tests__/agent-routes.test.ts +0 -68
  33. package/src/__tests__/agent-schedules-routes.test.ts +0 -59
  34. package/src/__tests__/agent-settings-store.test.ts +0 -323
  35. package/src/__tests__/bedrock-model-catalog.test.ts +0 -40
  36. package/src/__tests__/bedrock-openai-service.test.ts +0 -157
  37. package/src/__tests__/bedrock-provider-module.test.ts +0 -56
  38. package/src/__tests__/chat-instance-manager-slack.test.ts +0 -204
  39. package/src/__tests__/chat-response-bridge.test.ts +0 -131
  40. package/src/__tests__/config-memory-plugins.test.ts +0 -92
  41. package/src/__tests__/config-request-store.test.ts +0 -127
  42. package/src/__tests__/connection-routes.test.ts +0 -144
  43. package/src/__tests__/core-services-store-selection.test.ts +0 -92
  44. package/src/__tests__/docker-deployment.test.ts +0 -1211
  45. package/src/__tests__/embedded-deployment.test.ts +0 -342
  46. package/src/__tests__/grant-store.test.ts +0 -148
  47. package/src/__tests__/http-proxy.test.ts +0 -281
  48. package/src/__tests__/instruction-service.test.ts +0 -37
  49. package/src/__tests__/link-buttons.test.ts +0 -112
  50. package/src/__tests__/lobu.test.ts +0 -32
  51. package/src/__tests__/mcp-config-service.test.ts +0 -347
  52. package/src/__tests__/mcp-proxy.test.ts +0 -694
  53. package/src/__tests__/message-handler-bridge.test.ts +0 -17
  54. package/src/__tests__/model-selection.test.ts +0 -172
  55. package/src/__tests__/oauth-templates.test.ts +0 -39
  56. package/src/__tests__/platform-adapter-slack-send.test.ts +0 -114
  57. package/src/__tests__/platform-helpers-model-resolution.test.ts +0 -253
  58. package/src/__tests__/provider-inheritance.test.ts +0 -212
  59. package/src/__tests__/routes/cli-auth.test.ts +0 -337
  60. package/src/__tests__/routes/interactions.test.ts +0 -121
  61. package/src/__tests__/secret-proxy.test.ts +0 -85
  62. package/src/__tests__/session-manager.test.ts +0 -572
  63. package/src/__tests__/setup.ts +0 -133
  64. package/src/__tests__/skill-and-mcp-registry.test.ts +0 -203
  65. package/src/__tests__/slack-routes.test.ts +0 -161
  66. package/src/__tests__/system-config-resolver.test.ts +0 -75
  67. package/src/__tests__/system-message-limiter.test.ts +0 -89
  68. package/src/__tests__/system-skills-service.test.ts +0 -362
  69. package/src/__tests__/transcription-service.test.ts +0 -222
  70. package/src/__tests__/utils/rate-limiter.test.ts +0 -102
  71. package/src/__tests__/worker-connection-manager.test.ts +0 -497
  72. package/src/__tests__/worker-job-router.test.ts +0 -722
  73. package/src/api/index.ts +0 -1
  74. package/src/api/platform.ts +0 -292
  75. package/src/api/response-renderer.ts +0 -157
  76. package/src/auth/agent-metadata-store.ts +0 -168
  77. package/src/auth/api-auth-middleware.ts +0 -69
  78. package/src/auth/api-key-provider-module.ts +0 -213
  79. package/src/auth/base-provider-module.ts +0 -201
  80. package/src/auth/bedrock/provider-module.ts +0 -110
  81. package/src/auth/chatgpt/chatgpt-oauth-module.ts +0 -185
  82. package/src/auth/chatgpt/device-code-client.ts +0 -218
  83. package/src/auth/chatgpt/index.ts +0 -1
  84. package/src/auth/claude/oauth-module.ts +0 -280
  85. package/src/auth/cli/token-service.ts +0 -249
  86. package/src/auth/external/client.ts +0 -560
  87. package/src/auth/external/device-code-client.ts +0 -235
  88. package/src/auth/mcp/config-service.ts +0 -420
  89. package/src/auth/mcp/proxy.ts +0 -1086
  90. package/src/auth/mcp/string-substitution.ts +0 -17
  91. package/src/auth/mcp/tool-cache.ts +0 -90
  92. package/src/auth/oauth/base-client.ts +0 -267
  93. package/src/auth/oauth/client.ts +0 -153
  94. package/src/auth/oauth/credentials.ts +0 -7
  95. package/src/auth/oauth/providers.ts +0 -69
  96. package/src/auth/oauth/state-store.ts +0 -150
  97. package/src/auth/oauth-templates.ts +0 -179
  98. package/src/auth/provider-catalog.ts +0 -220
  99. package/src/auth/provider-model-options.ts +0 -41
  100. package/src/auth/settings/agent-settings-store.ts +0 -565
  101. package/src/auth/settings/auth-profiles-manager.ts +0 -216
  102. package/src/auth/settings/index.ts +0 -12
  103. package/src/auth/settings/model-preference-store.ts +0 -52
  104. package/src/auth/settings/model-selection.ts +0 -135
  105. package/src/auth/settings/resolved-settings-view.ts +0 -298
  106. package/src/auth/settings/template-utils.ts +0 -44
  107. package/src/auth/settings/token-service.ts +0 -88
  108. package/src/auth/system-env-store.ts +0 -98
  109. package/src/auth/user-agents-store.ts +0 -68
  110. package/src/channels/binding-service.ts +0 -214
  111. package/src/channels/index.ts +0 -4
  112. package/src/cli/gateway.ts +0 -1312
  113. package/src/cli/index.ts +0 -74
  114. package/src/commands/built-in-commands.ts +0 -80
  115. package/src/commands/command-dispatcher.ts +0 -94
  116. package/src/commands/command-reply-adapters.ts +0 -27
  117. package/src/config/file-loader.ts +0 -618
  118. package/src/config/index.ts +0 -588
  119. package/src/config/network-allowlist.ts +0 -71
  120. package/src/connections/chat-instance-manager.ts +0 -1284
  121. package/src/connections/chat-response-bridge.ts +0 -618
  122. package/src/connections/index.ts +0 -7
  123. package/src/connections/interaction-bridge.ts +0 -831
  124. package/src/connections/message-handler-bridge.ts +0 -440
  125. package/src/connections/platform-auth-methods.ts +0 -15
  126. package/src/connections/types.ts +0 -84
  127. package/src/gateway/connection-manager.ts +0 -291
  128. package/src/gateway/index.ts +0 -698
  129. package/src/gateway/job-router.ts +0 -201
  130. package/src/gateway-main.ts +0 -200
  131. package/src/index.ts +0 -41
  132. package/src/infrastructure/queue/index.ts +0 -12
  133. package/src/infrastructure/queue/queue-producer.ts +0 -148
  134. package/src/infrastructure/queue/redis-queue.ts +0 -361
  135. package/src/infrastructure/queue/types.ts +0 -133
  136. package/src/infrastructure/redis/system-message-limiter.ts +0 -94
  137. package/src/interactions/config-request-store.ts +0 -198
  138. package/src/interactions.ts +0 -363
  139. package/src/lobu.ts +0 -311
  140. package/src/metrics/prometheus.ts +0 -159
  141. package/src/modules/module-system.ts +0 -179
  142. package/src/orchestration/base-deployment-manager.ts +0 -900
  143. package/src/orchestration/deployment-utils.ts +0 -98
  144. package/src/orchestration/impl/docker-deployment.ts +0 -620
  145. package/src/orchestration/impl/embedded-deployment.ts +0 -268
  146. package/src/orchestration/impl/index.ts +0 -8
  147. package/src/orchestration/impl/k8s/deployment.ts +0 -1061
  148. package/src/orchestration/impl/k8s/helpers.ts +0 -610
  149. package/src/orchestration/impl/k8s/index.ts +0 -1
  150. package/src/orchestration/index.ts +0 -333
  151. package/src/orchestration/message-consumer.ts +0 -584
  152. package/src/orchestration/scheduled-wakeup.ts +0 -704
  153. package/src/permissions/approval-policy.ts +0 -36
  154. package/src/permissions/grant-store.ts +0 -219
  155. package/src/platform/file-handler.ts +0 -66
  156. package/src/platform/link-buttons.ts +0 -57
  157. package/src/platform/renderer-utils.ts +0 -44
  158. package/src/platform/response-renderer.ts +0 -84
  159. package/src/platform/unified-thread-consumer.ts +0 -194
  160. package/src/platform.ts +0 -318
  161. package/src/proxy/http-proxy.ts +0 -752
  162. package/src/proxy/proxy-manager.ts +0 -81
  163. package/src/proxy/secret-proxy.ts +0 -402
  164. package/src/proxy/token-refresh-job.ts +0 -143
  165. package/src/routes/internal/audio.ts +0 -141
  166. package/src/routes/internal/device-auth.ts +0 -652
  167. package/src/routes/internal/files.ts +0 -226
  168. package/src/routes/internal/history.ts +0 -69
  169. package/src/routes/internal/images.ts +0 -127
  170. package/src/routes/internal/interactions.ts +0 -84
  171. package/src/routes/internal/middleware.ts +0 -23
  172. package/src/routes/internal/schedule.ts +0 -226
  173. package/src/routes/internal/types.ts +0 -22
  174. package/src/routes/openapi-auto.ts +0 -239
  175. package/src/routes/public/agent-access.ts +0 -23
  176. package/src/routes/public/agent-config.ts +0 -675
  177. package/src/routes/public/agent-history.ts +0 -422
  178. package/src/routes/public/agent-schedules.ts +0 -296
  179. package/src/routes/public/agent.ts +0 -1086
  180. package/src/routes/public/agents.ts +0 -373
  181. package/src/routes/public/channels.ts +0 -191
  182. package/src/routes/public/cli-auth.ts +0 -896
  183. package/src/routes/public/connections.ts +0 -574
  184. package/src/routes/public/landing.ts +0 -16
  185. package/src/routes/public/oauth.ts +0 -147
  186. package/src/routes/public/settings-auth.ts +0 -104
  187. package/src/routes/public/slack.ts +0 -173
  188. package/src/routes/shared/agent-ownership.ts +0 -101
  189. package/src/routes/shared/token-verifier.ts +0 -34
  190. package/src/services/bedrock-model-catalog.ts +0 -217
  191. package/src/services/bedrock-openai-service.ts +0 -658
  192. package/src/services/core-services.ts +0 -1072
  193. package/src/services/image-generation-service.ts +0 -257
  194. package/src/services/instruction-service.ts +0 -318
  195. package/src/services/mcp-registry.ts +0 -94
  196. package/src/services/platform-helpers.ts +0 -287
  197. package/src/services/session-manager.ts +0 -262
  198. package/src/services/settings-resolver.ts +0 -74
  199. package/src/services/system-config-resolver.ts +0 -89
  200. package/src/services/system-skills-service.ts +0 -229
  201. package/src/services/transcription-service.ts +0 -684
  202. package/src/session.ts +0 -110
  203. package/src/spaces/index.ts +0 -1
  204. package/src/spaces/space-resolver.ts +0 -17
  205. package/src/stores/in-memory-agent-store.ts +0 -403
  206. package/src/stores/redis-agent-store.ts +0 -279
  207. package/src/utils/public-url.ts +0 -44
  208. package/src/utils/rate-limiter.ts +0 -94
  209. package/tsconfig.json +0 -33
  210. 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();