@lobu/gateway 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/dist/api/index.d.ts +2 -0
  2. package/dist/api/index.d.ts.map +1 -0
  3. package/dist/api/index.js +6 -0
  4. package/dist/api/index.js.map +1 -0
  5. package/dist/api/platform.d.ts +92 -0
  6. package/dist/api/platform.d.ts.map +1 -0
  7. package/dist/api/platform.js +236 -0
  8. package/dist/api/platform.js.map +1 -0
  9. package/dist/api/response-renderer.d.ts +44 -0
  10. package/dist/api/response-renderer.d.ts.map +1 -0
  11. package/dist/api/response-renderer.js +123 -0
  12. package/dist/api/response-renderer.js.map +1 -0
  13. package/dist/auth/agent-metadata-store.d.ts +64 -0
  14. package/dist/auth/agent-metadata-store.d.ts.map +1 -0
  15. package/dist/auth/agent-metadata-store.js +115 -0
  16. package/dist/auth/agent-metadata-store.js.map +1 -0
  17. package/dist/auth/api-auth-middleware.d.ts +19 -0
  18. package/dist/auth/api-auth-middleware.d.ts.map +1 -0
  19. package/dist/auth/api-auth-middleware.js +61 -0
  20. package/dist/auth/api-auth-middleware.js.map +1 -0
  21. package/dist/auth/api-key-provider-module.d.ts +60 -0
  22. package/dist/auth/api-key-provider-module.d.ts.map +1 -0
  23. package/dist/auth/api-key-provider-module.js +148 -0
  24. package/dist/auth/api-key-provider-module.js.map +1 -0
  25. package/dist/auth/base-provider-module.d.ts +70 -0
  26. package/dist/auth/base-provider-module.d.ts.map +1 -0
  27. package/dist/auth/base-provider-module.js +118 -0
  28. package/dist/auth/base-provider-module.js.map +1 -0
  29. package/dist/auth/chatgpt/chatgpt-oauth-module.d.ts +34 -0
  30. package/dist/auth/chatgpt/chatgpt-oauth-module.d.ts.map +1 -0
  31. package/dist/auth/chatgpt/chatgpt-oauth-module.js +136 -0
  32. package/dist/auth/chatgpt/chatgpt-oauth-module.js.map +1 -0
  33. package/dist/auth/chatgpt/device-code-client.d.ts +40 -0
  34. package/dist/auth/chatgpt/device-code-client.d.ts.map +1 -0
  35. package/dist/auth/chatgpt/device-code-client.js +165 -0
  36. package/dist/auth/chatgpt/device-code-client.js.map +1 -0
  37. package/dist/auth/chatgpt/index.d.ts +2 -0
  38. package/dist/auth/chatgpt/index.d.ts.map +1 -0
  39. package/dist/auth/chatgpt/index.js +6 -0
  40. package/dist/auth/chatgpt/index.js.map +1 -0
  41. package/dist/auth/claude/oauth-module.d.ts +29 -0
  42. package/dist/auth/claude/oauth-module.d.ts.map +1 -0
  43. package/dist/auth/claude/oauth-module.js +201 -0
  44. package/dist/auth/claude/oauth-module.js.map +1 -0
  45. package/dist/auth/cli/token-service.d.ts +35 -0
  46. package/dist/auth/cli/token-service.d.ts.map +1 -0
  47. package/dist/auth/cli/token-service.js +171 -0
  48. package/dist/auth/cli/token-service.js.map +1 -0
  49. package/dist/auth/external/client.d.ts +65 -0
  50. package/dist/auth/external/client.d.ts.map +1 -0
  51. package/dist/auth/external/client.js +348 -0
  52. package/dist/auth/external/client.js.map +1 -0
  53. package/dist/auth/external/device-code-client.d.ts +41 -0
  54. package/dist/auth/external/device-code-client.d.ts.map +1 -0
  55. package/dist/auth/external/device-code-client.js +128 -0
  56. package/dist/auth/external/device-code-client.js.map +1 -0
  57. package/dist/auth/mcp/config-service.d.ts +70 -0
  58. package/dist/auth/mcp/config-service.d.ts.map +1 -0
  59. package/dist/auth/mcp/config-service.js +269 -0
  60. package/dist/auth/mcp/config-service.js.map +1 -0
  61. package/dist/auth/mcp/proxy.d.ts +68 -0
  62. package/dist/auth/mcp/proxy.d.ts.map +1 -0
  63. package/dist/auth/mcp/proxy.js +783 -0
  64. package/dist/auth/mcp/proxy.js.map +1 -0
  65. package/dist/auth/mcp/string-substitution.d.ts +11 -0
  66. package/dist/auth/mcp/string-substitution.d.ts.map +1 -0
  67. package/dist/auth/mcp/string-substitution.js +21 -0
  68. package/dist/auth/mcp/string-substitution.js.map +1 -0
  69. package/dist/auth/mcp/tool-cache.d.ts +26 -0
  70. package/dist/auth/mcp/tool-cache.d.ts.map +1 -0
  71. package/dist/auth/mcp/tool-cache.js +58 -0
  72. package/dist/auth/mcp/tool-cache.js.map +1 -0
  73. package/dist/auth/oauth/base-client.d.ts +54 -0
  74. package/dist/auth/oauth/base-client.d.ts.map +1 -0
  75. package/dist/auth/oauth/base-client.js +191 -0
  76. package/dist/auth/oauth/base-client.js.map +1 -0
  77. package/dist/auth/oauth/client.d.ts +35 -0
  78. package/dist/auth/oauth/client.d.ts.map +1 -0
  79. package/dist/auth/oauth/client.js +96 -0
  80. package/dist/auth/oauth/client.js.map +1 -0
  81. package/dist/auth/oauth/credentials.d.ts +8 -0
  82. package/dist/auth/oauth/credentials.d.ts.map +1 -0
  83. package/dist/auth/oauth/credentials.js +3 -0
  84. package/dist/auth/oauth/credentials.js.map +1 -0
  85. package/dist/auth/oauth/providers.d.ts +44 -0
  86. package/dist/auth/oauth/providers.d.ts.map +1 -0
  87. package/dist/auth/oauth/providers.js +37 -0
  88. package/dist/auth/oauth/providers.js.map +1 -0
  89. package/dist/auth/oauth/state-store.d.ts +62 -0
  90. package/dist/auth/oauth/state-store.d.ts.map +1 -0
  91. package/dist/auth/oauth/state-store.js +84 -0
  92. package/dist/auth/oauth/state-store.js.map +1 -0
  93. package/dist/auth/oauth-templates.d.ts +15 -0
  94. package/dist/auth/oauth-templates.d.ts.map +1 -0
  95. package/dist/auth/oauth-templates.js +161 -0
  96. package/dist/auth/oauth-templates.js.map +1 -0
  97. package/dist/auth/provider-catalog.d.ts +52 -0
  98. package/dist/auth/provider-catalog.d.ts.map +1 -0
  99. package/dist/auth/provider-catalog.js +155 -0
  100. package/dist/auth/provider-catalog.js.map +1 -0
  101. package/dist/auth/provider-model-options.d.ts +3 -0
  102. package/dist/auth/provider-model-options.d.ts.map +1 -0
  103. package/dist/auth/provider-model-options.js +29 -0
  104. package/dist/auth/provider-model-options.js.map +1 -0
  105. package/dist/auth/settings/agent-settings-store.d.ts +112 -0
  106. package/dist/auth/settings/agent-settings-store.d.ts.map +1 -0
  107. package/dist/auth/settings/agent-settings-store.js +376 -0
  108. package/dist/auth/settings/agent-settings-store.js.map +1 -0
  109. package/dist/auth/settings/auth-profiles-manager.d.ts +26 -0
  110. package/dist/auth/settings/auth-profiles-manager.d.ts.map +1 -0
  111. package/dist/auth/settings/auth-profiles-manager.js +146 -0
  112. package/dist/auth/settings/auth-profiles-manager.js.map +1 -0
  113. package/dist/auth/settings/index.d.ts +4 -0
  114. package/dist/auth/settings/index.d.ts.map +1 -0
  115. package/dist/auth/settings/index.js +9 -0
  116. package/dist/auth/settings/index.js.map +1 -0
  117. package/dist/auth/settings/model-preference-store.d.ts +25 -0
  118. package/dist/auth/settings/model-preference-store.d.ts.map +1 -0
  119. package/dist/auth/settings/model-preference-store.js +50 -0
  120. package/dist/auth/settings/model-preference-store.js.map +1 -0
  121. package/dist/auth/settings/model-selection.d.ts +11 -0
  122. package/dist/auth/settings/model-selection.d.ts.map +1 -0
  123. package/dist/auth/settings/model-selection.js +83 -0
  124. package/dist/auth/settings/model-selection.js.map +1 -0
  125. package/dist/auth/settings/resolved-settings-view.d.ts +45 -0
  126. package/dist/auth/settings/resolved-settings-view.d.ts.map +1 -0
  127. package/dist/auth/settings/resolved-settings-view.js +152 -0
  128. package/dist/auth/settings/resolved-settings-view.js.map +1 -0
  129. package/dist/auth/settings/template-utils.d.ts +3 -0
  130. package/dist/auth/settings/template-utils.d.ts.map +1 -0
  131. package/dist/auth/settings/template-utils.js +43 -0
  132. package/dist/auth/settings/template-utils.js.map +1 -0
  133. package/dist/auth/settings/token-service.d.ts +86 -0
  134. package/dist/auth/settings/token-service.d.ts.map +1 -0
  135. package/dist/auth/settings/token-service.js +3 -0
  136. package/dist/auth/settings/token-service.js.map +1 -0
  137. package/dist/auth/system-env-store.d.ts +26 -0
  138. package/dist/auth/system-env-store.d.ts.map +1 -0
  139. package/dist/auth/system-env-store.js +92 -0
  140. package/dist/auth/system-env-store.js.map +1 -0
  141. package/dist/auth/user-agents-store.d.ts +31 -0
  142. package/dist/auth/user-agents-store.d.ts.map +1 -0
  143. package/dist/auth/user-agents-store.js +54 -0
  144. package/dist/auth/user-agents-store.js.map +1 -0
  145. package/dist/channels/binding-service.d.ts +69 -0
  146. package/dist/channels/binding-service.d.ts.map +1 -0
  147. package/dist/channels/binding-service.js +144 -0
  148. package/dist/channels/binding-service.js.map +1 -0
  149. package/dist/channels/index.d.ts +2 -0
  150. package/dist/channels/index.d.ts.map +1 -0
  151. package/dist/channels/index.js +6 -0
  152. package/dist/channels/index.js.map +1 -0
  153. package/dist/cli/gateway.d.ts +31 -0
  154. package/dist/cli/gateway.d.ts.map +1 -0
  155. package/dist/cli/gateway.js +1062 -0
  156. package/dist/cli/gateway.js.map +1 -0
  157. package/dist/cli/index.d.ts +3 -0
  158. package/dist/cli/index.d.ts.map +1 -0
  159. package/dist/cli/index.js +56 -0
  160. package/dist/cli/index.js.map +1 -0
  161. package/dist/commands/built-in-commands.d.ts +10 -0
  162. package/dist/commands/built-in-commands.d.ts.map +1 -0
  163. package/dist/commands/built-in-commands.js +63 -0
  164. package/dist/commands/built-in-commands.js.map +1 -0
  165. package/dist/commands/command-dispatcher.d.ts +25 -0
  166. package/dist/commands/command-dispatcher.d.ts.map +1 -0
  167. package/dist/commands/command-dispatcher.js +50 -0
  168. package/dist/commands/command-dispatcher.js.map +1 -0
  169. package/dist/commands/command-reply-adapters.d.ts +3 -0
  170. package/dist/commands/command-reply-adapters.d.ts.map +1 -0
  171. package/dist/commands/command-reply-adapters.js +60 -0
  172. package/dist/commands/command-reply-adapters.js.map +1 -0
  173. package/dist/config/file-loader.d.ts +23 -0
  174. package/dist/config/file-loader.d.ts.map +1 -0
  175. package/dist/config/file-loader.js +495 -0
  176. package/dist/config/file-loader.js.map +1 -0
  177. package/dist/config/index.d.ts +96 -0
  178. package/dist/config/index.d.ts.map +1 -0
  179. package/dist/config/index.js +357 -0
  180. package/dist/config/index.js.map +1 -0
  181. package/dist/config/network-allowlist.d.ts +18 -0
  182. package/dist/config/network-allowlist.d.ts.map +1 -0
  183. package/dist/config/network-allowlist.js +60 -0
  184. package/dist/config/network-allowlist.js.map +1 -0
  185. package/dist/connections/chat-instance-manager.d.ts +107 -0
  186. package/dist/connections/chat-instance-manager.d.ts.map +1 -0
  187. package/dist/connections/chat-instance-manager.js +886 -0
  188. package/dist/connections/chat-instance-manager.js.map +1 -0
  189. package/dist/connections/chat-response-bridge.d.ts +31 -0
  190. package/dist/connections/chat-response-bridge.d.ts.map +1 -0
  191. package/dist/connections/chat-response-bridge.js +465 -0
  192. package/dist/connections/chat-response-bridge.js.map +1 -0
  193. package/dist/connections/index.d.ts +4 -0
  194. package/dist/connections/index.d.ts.map +1 -0
  195. package/dist/connections/index.js +8 -0
  196. package/dist/connections/index.js.map +1 -0
  197. package/dist/connections/interaction-bridge.d.ts +7 -0
  198. package/dist/connections/interaction-bridge.d.ts.map +1 -0
  199. package/dist/connections/interaction-bridge.js +593 -0
  200. package/dist/connections/interaction-bridge.js.map +1 -0
  201. package/dist/connections/message-handler-bridge.d.ts +21 -0
  202. package/dist/connections/message-handler-bridge.d.ts.map +1 -0
  203. package/dist/connections/message-handler-bridge.js +314 -0
  204. package/dist/connections/message-handler-bridge.js.map +1 -0
  205. package/dist/connections/platform-auth-methods.d.ts +5 -0
  206. package/dist/connections/platform-auth-methods.d.ts.map +1 -0
  207. package/dist/connections/platform-auth-methods.js +13 -0
  208. package/dist/connections/platform-auth-methods.js.map +1 -0
  209. package/dist/connections/types.d.ts +52 -0
  210. package/dist/connections/types.d.ts.map +1 -0
  211. package/dist/connections/types.js +20 -0
  212. package/dist/connections/types.js.map +1 -0
  213. package/dist/gateway/connection-manager.d.ts +87 -0
  214. package/dist/gateway/connection-manager.d.ts.map +1 -0
  215. package/dist/gateway/connection-manager.js +216 -0
  216. package/dist/gateway/connection-manager.js.map +1 -0
  217. package/dist/gateway/index.d.ts +71 -0
  218. package/dist/gateway/index.d.ts.map +1 -0
  219. package/dist/gateway/index.js +509 -0
  220. package/dist/gateway/index.js.map +1 -0
  221. package/dist/gateway/job-router.d.ts +60 -0
  222. package/dist/gateway/job-router.d.ts.map +1 -0
  223. package/dist/gateway/job-router.js +148 -0
  224. package/dist/gateway/job-router.js.map +1 -0
  225. package/dist/gateway-main.d.ts +81 -0
  226. package/dist/gateway-main.d.ts.map +1 -0
  227. package/dist/gateway-main.js +143 -0
  228. package/dist/gateway-main.js.map +1 -0
  229. package/dist/index.d.ts +16 -0
  230. package/dist/index.d.ts.map +1 -0
  231. package/dist/index.js +64 -0
  232. package/dist/index.js.map +1 -0
  233. package/dist/infrastructure/queue/index.d.ts +8 -0
  234. package/dist/infrastructure/queue/index.d.ts.map +1 -0
  235. package/dist/infrastructure/queue/index.js +12 -0
  236. package/dist/infrastructure/queue/index.js.map +1 -0
  237. package/dist/infrastructure/queue/queue-producer.d.ts +68 -0
  238. package/dist/infrastructure/queue/queue-producer.d.ts.map +1 -0
  239. package/dist/infrastructure/queue/queue-producer.js +72 -0
  240. package/dist/infrastructure/queue/queue-producer.js.map +1 -0
  241. package/dist/infrastructure/queue/redis-queue.d.ts +45 -0
  242. package/dist/infrastructure/queue/redis-queue.d.ts.map +1 -0
  243. package/dist/infrastructure/queue/redis-queue.js +273 -0
  244. package/dist/infrastructure/queue/redis-queue.js.map +1 -0
  245. package/dist/infrastructure/queue/types.d.ts +107 -0
  246. package/dist/infrastructure/queue/types.d.ts.map +1 -0
  247. package/dist/infrastructure/queue/types.js +7 -0
  248. package/dist/infrastructure/queue/types.js.map +1 -0
  249. package/dist/infrastructure/redis/system-message-limiter.d.ts +35 -0
  250. package/dist/infrastructure/redis/system-message-limiter.d.ts.map +1 -0
  251. package/dist/infrastructure/redis/system-message-limiter.js +61 -0
  252. package/dist/infrastructure/redis/system-message-limiter.js.map +1 -0
  253. package/dist/interactions/config-request-store.d.ts +41 -0
  254. package/dist/interactions/config-request-store.d.ts.map +1 -0
  255. package/dist/interactions/config-request-store.js +103 -0
  256. package/dist/interactions/config-request-store.js.map +1 -0
  257. package/dist/interactions.d.ts +134 -0
  258. package/dist/interactions.d.ts.map +1 -0
  259. package/dist/interactions.js +175 -0
  260. package/dist/interactions.js.map +1 -0
  261. package/dist/lobu.d.ts +78 -0
  262. package/dist/lobu.d.ts.map +1 -0
  263. package/dist/lobu.js +248 -0
  264. package/dist/lobu.js.map +1 -0
  265. package/dist/metrics/prometheus.d.ts +6 -0
  266. package/dist/metrics/prometheus.d.ts.map +1 -0
  267. package/dist/metrics/prometheus.js +78 -0
  268. package/dist/metrics/prometheus.js.map +1 -0
  269. package/dist/modules/module-system.d.ts +82 -0
  270. package/dist/modules/module-system.d.ts.map +1 -0
  271. package/dist/modules/module-system.js +53 -0
  272. package/dist/modules/module-system.js.map +1 -0
  273. package/dist/orchestration/base-deployment-manager.d.ts +173 -0
  274. package/dist/orchestration/base-deployment-manager.d.ts.map +1 -0
  275. package/dist/orchestration/base-deployment-manager.js +553 -0
  276. package/dist/orchestration/base-deployment-manager.js.map +1 -0
  277. package/dist/orchestration/deployment-utils.d.ts +25 -0
  278. package/dist/orchestration/deployment-utils.d.ts.map +1 -0
  279. package/dist/orchestration/deployment-utils.js +65 -0
  280. package/dist/orchestration/deployment-utils.js.map +1 -0
  281. package/dist/orchestration/impl/docker-deployment.d.ts +43 -0
  282. package/dist/orchestration/impl/docker-deployment.d.ts.map +1 -0
  283. package/dist/orchestration/impl/docker-deployment.js +480 -0
  284. package/dist/orchestration/impl/docker-deployment.js.map +1 -0
  285. package/dist/orchestration/impl/embedded-deployment.d.ts +16 -0
  286. package/dist/orchestration/impl/embedded-deployment.d.ts.map +1 -0
  287. package/dist/orchestration/impl/embedded-deployment.js +195 -0
  288. package/dist/orchestration/impl/embedded-deployment.js.map +1 -0
  289. package/dist/orchestration/impl/index.d.ts +8 -0
  290. package/dist/orchestration/impl/index.d.ts.map +1 -0
  291. package/dist/orchestration/impl/index.js +14 -0
  292. package/dist/orchestration/impl/index.js.map +1 -0
  293. package/dist/orchestration/impl/k8s/deployment.d.ts +204 -0
  294. package/dist/orchestration/impl/k8s/deployment.d.ts.map +1 -0
  295. package/dist/orchestration/impl/k8s/deployment.js +620 -0
  296. package/dist/orchestration/impl/k8s/deployment.js.map +1 -0
  297. package/dist/orchestration/impl/k8s/helpers.d.ts +34 -0
  298. package/dist/orchestration/impl/k8s/helpers.d.ts.map +1 -0
  299. package/dist/orchestration/impl/k8s/helpers.js +377 -0
  300. package/dist/orchestration/impl/k8s/helpers.js.map +1 -0
  301. package/dist/orchestration/impl/k8s/index.d.ts +2 -0
  302. package/dist/orchestration/impl/k8s/index.d.ts.map +1 -0
  303. package/dist/orchestration/impl/k8s/index.js +6 -0
  304. package/dist/orchestration/impl/k8s/index.js.map +1 -0
  305. package/dist/orchestration/index.d.ts +53 -0
  306. package/dist/orchestration/index.d.ts.map +1 -0
  307. package/dist/orchestration/index.js +257 -0
  308. package/dist/orchestration/index.js.map +1 -0
  309. package/dist/orchestration/message-consumer.d.ts +49 -0
  310. package/dist/orchestration/message-consumer.d.ts.map +1 -0
  311. package/dist/orchestration/message-consumer.js +406 -0
  312. package/dist/orchestration/message-consumer.js.map +1 -0
  313. package/dist/orchestration/scheduled-wakeup.d.ts +110 -0
  314. package/dist/orchestration/scheduled-wakeup.d.ts.map +1 -0
  315. package/dist/orchestration/scheduled-wakeup.js +500 -0
  316. package/dist/orchestration/scheduled-wakeup.js.map +1 -0
  317. package/dist/permissions/approval-policy.d.ts +28 -0
  318. package/dist/permissions/approval-policy.d.ts.map +1 -0
  319. package/dist/permissions/approval-policy.js +33 -0
  320. package/dist/permissions/approval-policy.js.map +1 -0
  321. package/dist/permissions/grant-store.d.ts +52 -0
  322. package/dist/permissions/grant-store.d.ts.map +1 -0
  323. package/dist/permissions/grant-store.js +192 -0
  324. package/dist/permissions/grant-store.js.map +1 -0
  325. package/dist/platform/file-handler.d.ts +51 -0
  326. package/dist/platform/file-handler.d.ts.map +1 -0
  327. package/dist/platform/file-handler.js +6 -0
  328. package/dist/platform/file-handler.js.map +1 -0
  329. package/dist/platform/link-buttons.d.ts +21 -0
  330. package/dist/platform/link-buttons.d.ts.map +1 -0
  331. package/dist/platform/link-buttons.js +43 -0
  332. package/dist/platform/link-buttons.js.map +1 -0
  333. package/dist/platform/renderer-utils.d.ts +10 -0
  334. package/dist/platform/renderer-utils.d.ts.map +1 -0
  335. package/dist/platform/renderer-utils.js +42 -0
  336. package/dist/platform/renderer-utils.js.map +1 -0
  337. package/dist/platform/response-renderer.d.ts +66 -0
  338. package/dist/platform/response-renderer.d.ts.map +1 -0
  339. package/dist/platform/response-renderer.js +8 -0
  340. package/dist/platform/response-renderer.js.map +1 -0
  341. package/dist/platform/unified-thread-consumer.d.ts +41 -0
  342. package/dist/platform/unified-thread-consumer.d.ts.map +1 -0
  343. package/dist/platform/unified-thread-consumer.js +143 -0
  344. package/dist/platform/unified-thread-consumer.js.map +1 -0
  345. package/dist/platform.d.ts +255 -0
  346. package/dist/platform.d.ts.map +1 -0
  347. package/dist/platform.js +40 -0
  348. package/dist/platform.js.map +1 -0
  349. package/dist/proxy/http-proxy.d.ts +32 -0
  350. package/dist/proxy/http-proxy.d.ts.map +1 -0
  351. package/dist/proxy/http-proxy.js +636 -0
  352. package/dist/proxy/http-proxy.js.map +1 -0
  353. package/dist/proxy/proxy-manager.d.ts +13 -0
  354. package/dist/proxy/proxy-manager.d.ts.map +1 -0
  355. package/dist/proxy/proxy-manager.js +68 -0
  356. package/dist/proxy/proxy-manager.js.map +1 -0
  357. package/dist/proxy/secret-proxy.d.ts +78 -0
  358. package/dist/proxy/secret-proxy.d.ts.map +1 -0
  359. package/dist/proxy/secret-proxy.js +309 -0
  360. package/dist/proxy/secret-proxy.js.map +1 -0
  361. package/dist/proxy/token-refresh-job.d.ts +29 -0
  362. package/dist/proxy/token-refresh-job.d.ts.map +1 -0
  363. package/dist/proxy/token-refresh-job.js +104 -0
  364. package/dist/proxy/token-refresh-job.js.map +1 -0
  365. package/dist/routes/internal/audio.d.ts +14 -0
  366. package/dist/routes/internal/audio.d.ts.map +1 -0
  367. package/dist/routes/internal/audio.js +118 -0
  368. package/dist/routes/internal/audio.js.map +1 -0
  369. package/dist/routes/internal/device-auth.d.ts +42 -0
  370. package/dist/routes/internal/device-auth.d.ts.map +1 -0
  371. package/dist/routes/internal/device-auth.js +397 -0
  372. package/dist/routes/internal/device-auth.js.map +1 -0
  373. package/dist/routes/internal/files.d.ts +9 -0
  374. package/dist/routes/internal/files.d.ts.map +1 -0
  375. package/dist/routes/internal/files.js +175 -0
  376. package/dist/routes/internal/files.js.map +1 -0
  377. package/dist/routes/internal/history.d.ts +9 -0
  378. package/dist/routes/internal/history.d.ts.map +1 -0
  379. package/dist/routes/internal/history.js +55 -0
  380. package/dist/routes/internal/history.js.map +1 -0
  381. package/dist/routes/internal/images.d.ts +10 -0
  382. package/dist/routes/internal/images.d.ts.map +1 -0
  383. package/dist/routes/internal/images.js +101 -0
  384. package/dist/routes/internal/images.js.map +1 -0
  385. package/dist/routes/internal/interactions.d.ts +9 -0
  386. package/dist/routes/internal/interactions.d.ts.map +1 -0
  387. package/dist/routes/internal/interactions.js +53 -0
  388. package/dist/routes/internal/interactions.js.map +1 -0
  389. package/dist/routes/internal/middleware.d.ts +7 -0
  390. package/dist/routes/internal/middleware.d.ts.map +1 -0
  391. package/dist/routes/internal/middleware.js +24 -0
  392. package/dist/routes/internal/middleware.js.map +1 -0
  393. package/dist/routes/internal/schedule.d.ts +14 -0
  394. package/dist/routes/internal/schedule.d.ts.map +1 -0
  395. package/dist/routes/internal/schedule.js +169 -0
  396. package/dist/routes/internal/schedule.js.map +1 -0
  397. package/dist/routes/internal/types.d.ts +22 -0
  398. package/dist/routes/internal/types.d.ts.map +1 -0
  399. package/dist/routes/internal/types.js +6 -0
  400. package/dist/routes/internal/types.js.map +1 -0
  401. package/dist/routes/openapi-auto.d.ts +8 -0
  402. package/dist/routes/openapi-auto.d.ts.map +1 -0
  403. package/dist/routes/openapi-auto.js +196 -0
  404. package/dist/routes/openapi-auto.js.map +1 -0
  405. package/dist/routes/public/agent-access.d.ts +11 -0
  406. package/dist/routes/public/agent-access.d.ts.map +1 -0
  407. package/dist/routes/public/agent-access.js +11 -0
  408. package/dist/routes/public/agent-access.js.map +1 -0
  409. package/dist/routes/public/agent-config.d.ts +42 -0
  410. package/dist/routes/public/agent-config.d.ts.map +1 -0
  411. package/dist/routes/public/agent-config.js +415 -0
  412. package/dist/routes/public/agent-config.js.map +1 -0
  413. package/dist/routes/public/agent-history.d.ts +17 -0
  414. package/dist/routes/public/agent-history.d.ts.map +1 -0
  415. package/dist/routes/public/agent-history.js +335 -0
  416. package/dist/routes/public/agent-history.js.map +1 -0
  417. package/dist/routes/public/agent-schedules.d.ts +18 -0
  418. package/dist/routes/public/agent-schedules.d.ts.map +1 -0
  419. package/dist/routes/public/agent-schedules.js +242 -0
  420. package/dist/routes/public/agent-schedules.js.map +1 -0
  421. package/dist/routes/public/agent.d.ts +23 -0
  422. package/dist/routes/public/agent.d.ts.map +1 -0
  423. package/dist/routes/public/agent.js +864 -0
  424. package/dist/routes/public/agent.js.map +1 -0
  425. package/dist/routes/public/agents.d.ts +22 -0
  426. package/dist/routes/public/agents.d.ts.map +1 -0
  427. package/dist/routes/public/agents.js +257 -0
  428. package/dist/routes/public/agents.js.map +1 -0
  429. package/dist/routes/public/channels.d.ts +23 -0
  430. package/dist/routes/public/channels.d.ts.map +1 -0
  431. package/dist/routes/public/channels.js +131 -0
  432. package/dist/routes/public/channels.js.map +1 -0
  433. package/dist/routes/public/cli-auth.d.ts +12 -0
  434. package/dist/routes/public/cli-auth.d.ts.map +1 -0
  435. package/dist/routes/public/cli-auth.js +552 -0
  436. package/dist/routes/public/cli-auth.js.map +1 -0
  437. package/dist/routes/public/connections.d.ts +20 -0
  438. package/dist/routes/public/connections.d.ts.map +1 -0
  439. package/dist/routes/public/connections.js +464 -0
  440. package/dist/routes/public/connections.js.map +1 -0
  441. package/dist/routes/public/landing.d.ts +3 -0
  442. package/dist/routes/public/landing.d.ts.map +1 -0
  443. package/dist/routes/public/landing.js +17 -0
  444. package/dist/routes/public/landing.js.map +1 -0
  445. package/dist/routes/public/oauth.d.ts +24 -0
  446. package/dist/routes/public/oauth.d.ts.map +1 -0
  447. package/dist/routes/public/oauth.js +108 -0
  448. package/dist/routes/public/oauth.js.map +1 -0
  449. package/dist/routes/public/settings-auth.d.ts +28 -0
  450. package/dist/routes/public/settings-auth.d.ts.map +1 -0
  451. package/dist/routes/public/settings-auth.js +90 -0
  452. package/dist/routes/public/settings-auth.js.map +1 -0
  453. package/dist/routes/public/slack.d.ts +4 -0
  454. package/dist/routes/public/slack.d.ts.map +1 -0
  455. package/dist/routes/public/slack.js +119 -0
  456. package/dist/routes/public/slack.js.map +1 -0
  457. package/dist/routes/shared/agent-ownership.d.ts +15 -0
  458. package/dist/routes/shared/agent-ownership.d.ts.map +1 -0
  459. package/dist/routes/shared/agent-ownership.js +61 -0
  460. package/dist/routes/shared/agent-ownership.js.map +1 -0
  461. package/dist/routes/shared/token-verifier.d.ts +21 -0
  462. package/dist/routes/shared/token-verifier.d.ts.map +1 -0
  463. package/dist/routes/shared/token-verifier.js +25 -0
  464. package/dist/routes/shared/token-verifier.js.map +1 -0
  465. package/dist/services/core-services.d.ts +133 -0
  466. package/dist/services/core-services.d.ts.map +1 -0
  467. package/dist/services/core-services.js +728 -0
  468. package/dist/services/core-services.js.map +1 -0
  469. package/dist/services/image-generation-service.d.ts +38 -0
  470. package/dist/services/image-generation-service.d.ts.map +1 -0
  471. package/dist/services/image-generation-service.js +167 -0
  472. package/dist/services/image-generation-service.js.map +1 -0
  473. package/dist/services/instruction-service.d.ts +41 -0
  474. package/dist/services/instruction-service.d.ts.map +1 -0
  475. package/dist/services/instruction-service.js +252 -0
  476. package/dist/services/instruction-service.js.map +1 -0
  477. package/dist/services/mcp-registry.d.ts +31 -0
  478. package/dist/services/mcp-registry.d.ts.map +1 -0
  479. package/dist/services/mcp-registry.js +69 -0
  480. package/dist/services/mcp-registry.js.map +1 -0
  481. package/dist/services/platform-helpers.d.ts +47 -0
  482. package/dist/services/platform-helpers.d.ts.map +1 -0
  483. package/dist/services/platform-helpers.js +200 -0
  484. package/dist/services/platform-helpers.js.map +1 -0
  485. package/dist/services/session-manager.d.ts +72 -0
  486. package/dist/services/session-manager.d.ts.map +1 -0
  487. package/dist/services/session-manager.js +199 -0
  488. package/dist/services/session-manager.js.map +1 -0
  489. package/dist/services/settings-resolver.d.ts +25 -0
  490. package/dist/services/settings-resolver.d.ts.map +1 -0
  491. package/dist/services/settings-resolver.js +55 -0
  492. package/dist/services/settings-resolver.js.map +1 -0
  493. package/dist/services/system-config-resolver.d.ts +25 -0
  494. package/dist/services/system-config-resolver.d.ts.map +1 -0
  495. package/dist/services/system-config-resolver.js +73 -0
  496. package/dist/services/system-config-resolver.js.map +1 -0
  497. package/dist/services/system-skills-service.d.ts +38 -0
  498. package/dist/services/system-skills-service.d.ts.map +1 -0
  499. package/dist/services/system-skills-service.js +186 -0
  500. package/dist/services/system-skills-service.js.map +1 -0
  501. package/dist/services/transcription-service.d.ts +91 -0
  502. package/dist/services/transcription-service.d.ts.map +1 -0
  503. package/dist/services/transcription-service.js +465 -0
  504. package/dist/services/transcription-service.js.map +1 -0
  505. package/dist/session.d.ts +75 -0
  506. package/dist/session.d.ts.map +1 -0
  507. package/dist/session.js +19 -0
  508. package/dist/session.js.map +1 -0
  509. package/dist/spaces/index.d.ts +2 -0
  510. package/dist/spaces/index.d.ts.map +1 -0
  511. package/dist/spaces/index.js +18 -0
  512. package/dist/spaces/index.js.map +1 -0
  513. package/dist/spaces/space-resolver.d.ts +10 -0
  514. package/dist/spaces/space-resolver.d.ts.map +1 -0
  515. package/dist/spaces/space-resolver.js +17 -0
  516. package/dist/spaces/space-resolver.js.map +1 -0
  517. package/dist/stores/in-memory-agent-store.d.ts +57 -0
  518. package/dist/stores/in-memory-agent-store.d.ts.map +1 -0
  519. package/dist/stores/in-memory-agent-store.js +304 -0
  520. package/dist/stores/in-memory-agent-store.js.map +1 -0
  521. package/dist/stores/redis-agent-store.d.ts +57 -0
  522. package/dist/stores/redis-agent-store.d.ts.map +1 -0
  523. package/dist/stores/redis-agent-store.js +163 -0
  524. package/dist/stores/redis-agent-store.js.map +1 -0
  525. package/dist/utils/public-url.d.ts +6 -0
  526. package/dist/utils/public-url.d.ts.map +1 -0
  527. package/dist/utils/public-url.js +33 -0
  528. package/dist/utils/public-url.js.map +1 -0
  529. package/dist/utils/rate-limiter.d.ts +32 -0
  530. package/dist/utils/rate-limiter.d.ts.map +1 -0
  531. package/dist/utils/rate-limiter.js +56 -0
  532. package/dist/utils/rate-limiter.js.map +1 -0
  533. package/package.json +63 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDefaultSettingsFromSource = buildDefaultSettingsFromSource;
4
+ function cloneSettingValue(value) {
5
+ return JSON.parse(JSON.stringify(value));
6
+ }
7
+ function buildDefaultSettingsFromSource(source) {
8
+ if (!source)
9
+ return {};
10
+ const defaults = {};
11
+ if (source.model !== undefined)
12
+ defaults.model = source.model;
13
+ if (source.modelSelection)
14
+ defaults.modelSelection = cloneSettingValue(source.modelSelection);
15
+ if (source.providerModelPreferences)
16
+ defaults.providerModelPreferences = cloneSettingValue(source.providerModelPreferences);
17
+ if (source.networkConfig)
18
+ defaults.networkConfig = cloneSettingValue(source.networkConfig);
19
+ if (source.nixConfig)
20
+ defaults.nixConfig = cloneSettingValue(source.nixConfig);
21
+ if (source.mcpServers)
22
+ defaults.mcpServers = cloneSettingValue(source.mcpServers);
23
+ if (source.soulMd !== undefined)
24
+ defaults.soulMd = source.soulMd;
25
+ if (source.userMd !== undefined)
26
+ defaults.userMd = source.userMd;
27
+ if (source.identityMd !== undefined)
28
+ defaults.identityMd = source.identityMd;
29
+ if (source.skillsConfig)
30
+ defaults.skillsConfig = cloneSettingValue(source.skillsConfig);
31
+ if (source.toolsConfig)
32
+ defaults.toolsConfig = cloneSettingValue(source.toolsConfig);
33
+ if (source.pluginsConfig)
34
+ defaults.pluginsConfig = cloneSettingValue(source.pluginsConfig);
35
+ if (source.installedProviders) {
36
+ defaults.installedProviders = cloneSettingValue(source.installedProviders);
37
+ }
38
+ if (source.verboseLogging !== undefined) {
39
+ defaults.verboseLogging = source.verboseLogging;
40
+ }
41
+ return defaults;
42
+ }
43
+ //# sourceMappingURL=template-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-utils.js","sourceRoot":"","sources":["../../../src/auth/settings/template-utils.ts"],"names":[],"mappings":";;AAMA,wEAqCC;AAzCD,SAAS,iBAAiB,CAAI,KAAQ;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM,CAAC;AAChD,CAAC;AAED,SAAgB,8BAA8B,CAC5C,MAA4B;IAE5B,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,QAAQ,GAAqC,EAAE,CAAC;IAEtD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9D,IAAI,MAAM,CAAC,cAAc;QACvB,QAAQ,CAAC,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,wBAAwB;QACjC,QAAQ,CAAC,wBAAwB,GAAG,iBAAiB,CACnD,MAAM,CAAC,wBAAwB,CAChC,CAAC;IACJ,IAAI,MAAM,CAAC,aAAa;QACtB,QAAQ,CAAC,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,SAAS;QAClB,QAAQ,CAAC,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,UAAU;QACnB,QAAQ,CAAC,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACjE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7E,IAAI,MAAM,CAAC,YAAY;QACrB,QAAQ,CAAC,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,WAAW;QACpB,QAAQ,CAAC,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,MAAM,CAAC,aAAa;QACtB,QAAQ,CAAC,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Pre-filled skill configuration for an agent config session
3
+ */
4
+ export interface PrefillSkill {
5
+ /** Skill repository (e.g., "anthropics/skills/pdf") */
6
+ repo: string;
7
+ /** Display name */
8
+ name?: string;
9
+ /** Description */
10
+ description?: string;
11
+ }
12
+ /**
13
+ * Pre-filled MCP server configuration for an agent config session
14
+ */
15
+ export interface PrefillMcpServer {
16
+ /** MCP server ID (key in mcpServers record) */
17
+ id: string;
18
+ /** Display name/description */
19
+ name?: string;
20
+ /** Server URL (for SSE type) */
21
+ url?: string;
22
+ /** Server type */
23
+ type?: "sse" | "stdio";
24
+ /** Command (for stdio type) */
25
+ command?: string;
26
+ /** Args (for stdio type) */
27
+ args?: string[];
28
+ /** Environment variables needed (just the keys, user fills values) */
29
+ envVars?: string[];
30
+ }
31
+ /**
32
+ * Source message context where settings link was requested.
33
+ * Used to send follow-up notifications back to the same conversation.
34
+ */
35
+ export interface SettingsSourceContext {
36
+ conversationId: string;
37
+ channelId: string;
38
+ teamId?: string;
39
+ platform?: string;
40
+ }
41
+ /**
42
+ * Unified session payload for config/auth sessions.
43
+ *
44
+ * OAuth sessions populate email/name/oauthUserId. Claimed chat sessions
45
+ * populate platform/channelId/userId directly.
46
+ */
47
+ export interface SettingsTokenPayload {
48
+ /** Agent to configure. Optional when using channel-based entry (user picks agent on page). */
49
+ agentId?: string;
50
+ userId: string;
51
+ platform: string;
52
+ exp: number;
53
+ /** Channel that triggered the settings link. Used for agent switching and binding. */
54
+ channelId?: string;
55
+ /** Team/workspace ID for multi-tenant platforms (Slack). */
56
+ teamId?: string;
57
+ /** OAuth user email (set for OAuth sessions). */
58
+ email?: string;
59
+ /** OAuth user display name (set for OAuth sessions). */
60
+ name?: string;
61
+ /** OAuth provider user ID (set for OAuth sessions). */
62
+ oauthUserId?: string;
63
+ /** Optional message to display during config/auth flows */
64
+ message?: string;
65
+ /** Optional provider IDs to associate with the flow */
66
+ prefillProviders?: string[];
67
+ /** Optional skills to pre-fill (user confirms to enable) */
68
+ prefillSkills?: PrefillSkill[];
69
+ /** Optional MCP servers to pre-fill (user confirms to enable) */
70
+ prefillMcpServers?: PrefillMcpServer[];
71
+ /** Optional Nix packages to pre-fill */
72
+ prefillNixPackages?: string[];
73
+ /** Optional domain patterns to pre-fill as grants */
74
+ prefillGrants?: string[];
75
+ /** Optional source context for post-install notifications */
76
+ sourceContext?: SettingsSourceContext;
77
+ /** Settings mode: "admin" has full access, "user" is restricted by allowedScopes */
78
+ settingsMode?: "admin" | "user";
79
+ /** Scopes the user is allowed to configure (only relevant when settingsMode is "user") */
80
+ allowedScopes?: string[];
81
+ /** Connection ID that triggered this session */
82
+ connectionId?: string;
83
+ /** Whether this session has admin access */
84
+ isAdmin?: boolean;
85
+ }
86
+ //# sourceMappingURL=token-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-service.d.ts","sourceRoot":"","sources":["../../../src/auth/settings/token-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IACvB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,wCAAwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,oFAAoF;IACpF,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,0FAA0F;IAC1F,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-service.js","sourceRoot":"","sources":["../../../src/auth/settings/token-service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import type Redis from "ioredis";
2
+ /**
3
+ * Redis-backed store for system environment variables.
4
+ * Maintains an in-memory cache for synchronous resolution
5
+ * (required by the string-substitution system).
6
+ */
7
+ export declare class SystemEnvStore {
8
+ private redis;
9
+ private cache;
10
+ constructor(redis: Redis);
11
+ get(key: string): Promise<string | null>;
12
+ set(key: string, value: string): Promise<void>;
13
+ delete(key: string): Promise<void>;
14
+ listAll(): Promise<Record<string, string>>;
15
+ /**
16
+ * Synchronous lookup: cache first, then process.env.
17
+ * Used by the string-substitution env resolver.
18
+ */
19
+ resolve(key: string): string | undefined;
20
+ /**
21
+ * Load all system:env:* keys from Redis into the in-memory cache.
22
+ * Call on startup before registering the resolver.
23
+ */
24
+ refreshCache(): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=system-env-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-env-store.d.ts","sourceRoot":"","sources":["../../src/auth/system-env-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAKjC;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAkC;gBAEnC,KAAK,EAAE,KAAK;IAIlB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0BhD;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAQpC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemEnvStore = void 0;
4
+ const core_1 = require("@lobu/core");
5
+ const logger = (0, core_1.createLogger)("system-env-store");
6
+ const KEY_PREFIX = "system:env:";
7
+ /**
8
+ * Redis-backed store for system environment variables.
9
+ * Maintains an in-memory cache for synchronous resolution
10
+ * (required by the string-substitution system).
11
+ */
12
+ class SystemEnvStore {
13
+ constructor(redis) {
14
+ this.cache = new Map();
15
+ this.redis = redis;
16
+ }
17
+ async get(key) {
18
+ try {
19
+ const raw = await this.redis.get(`${KEY_PREFIX}${key}`);
20
+ if (raw === null)
21
+ return null;
22
+ return (0, core_1.decrypt)(raw);
23
+ }
24
+ catch (error) {
25
+ logger.error("Failed to get env var", { key, error });
26
+ return null;
27
+ }
28
+ }
29
+ async set(key, value) {
30
+ try {
31
+ await this.redis.set(`${KEY_PREFIX}${key}`, (0, core_1.encrypt)(value));
32
+ this.cache.set(key, value);
33
+ logger.info(`Set system env var: ${key}`);
34
+ }
35
+ catch (error) {
36
+ logger.error("Failed to set env var", { key, error });
37
+ throw error;
38
+ }
39
+ }
40
+ async delete(key) {
41
+ try {
42
+ await this.redis.del(`${KEY_PREFIX}${key}`);
43
+ this.cache.delete(key);
44
+ logger.info(`Deleted system env var: ${key}`);
45
+ }
46
+ catch (error) {
47
+ logger.error("Failed to delete env var", { key, error });
48
+ }
49
+ }
50
+ async listAll() {
51
+ const result = {};
52
+ let cursor = "0";
53
+ try {
54
+ do {
55
+ const [nextCursor, keys] = await this.redis.scan(cursor, "MATCH", `${KEY_PREFIX}*`, "COUNT", 100);
56
+ cursor = nextCursor;
57
+ for (const key of keys) {
58
+ const raw = await this.redis.get(key);
59
+ if (raw !== null) {
60
+ result[key.slice(KEY_PREFIX.length)] = (0, core_1.decrypt)(raw);
61
+ }
62
+ }
63
+ } while (cursor !== "0");
64
+ }
65
+ catch (error) {
66
+ logger.error("Failed to list env vars", { error });
67
+ }
68
+ return result;
69
+ }
70
+ /**
71
+ * Synchronous lookup: cache first, then process.env.
72
+ * Used by the string-substitution env resolver.
73
+ */
74
+ resolve(key) {
75
+ var _a, _b;
76
+ return (_b = (_a = this.cache.get(key)) !== null && _a !== void 0 ? _a : process.env[key]) !== null && _b !== void 0 ? _b : undefined;
77
+ }
78
+ /**
79
+ * Load all system:env:* keys from Redis into the in-memory cache.
80
+ * Call on startup before registering the resolver.
81
+ */
82
+ async refreshCache() {
83
+ const all = await this.listAll();
84
+ this.cache.clear();
85
+ for (const [key, value] of Object.entries(all)) {
86
+ this.cache.set(key, value);
87
+ }
88
+ logger.debug(`Loaded ${this.cache.size} system env vars into cache`);
89
+ }
90
+ }
91
+ exports.SystemEnvStore = SystemEnvStore;
92
+ //# sourceMappingURL=system-env-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-env-store.js","sourceRoot":"","sources":["../../src/auth/system-env-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type Redis from "ioredis";
2
+ /**
3
+ * Track which agents belong to which users.
4
+ * Uses Redis sets for fast membership checks and listing.
5
+ *
6
+ * Storage pattern:
7
+ * - user_agents:{platform}:{userId} -> Set of agentIds
8
+ */
9
+ export declare class UserAgentsStore {
10
+ private redis;
11
+ private readonly KEY_PREFIX;
12
+ constructor(redis: Redis);
13
+ private buildKey;
14
+ /**
15
+ * Add an agent to a user's list
16
+ */
17
+ addAgent(platform: string, userId: string, agentId: string): Promise<void>;
18
+ /**
19
+ * Remove an agent from a user's list
20
+ */
21
+ removeAgent(platform: string, userId: string, agentId: string): Promise<void>;
22
+ /**
23
+ * List all agents owned by a user
24
+ */
25
+ listAgents(platform: string, userId: string): Promise<string[]>;
26
+ /**
27
+ * Check if a user owns a specific agent
28
+ */
29
+ ownsAgent(platform: string, userId: string, agentId: string): Promise<boolean>;
30
+ }
31
+ //# sourceMappingURL=user-agents-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-agents-store.d.ts","sourceRoot":"","sources":["../../src/auth/user-agents-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAIjC;;;;;;GAMG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,KAAK;IAFzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;gBAExB,KAAK,EAAE,KAAK;IAEhC,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAMhB;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAMhB;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrE;;OAEG;IACG,SAAS,CACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;CAKpB"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserAgentsStore = void 0;
4
+ const core_1 = require("@lobu/core");
5
+ const logger = (0, core_1.createLogger)("user-agents-store");
6
+ /**
7
+ * Track which agents belong to which users.
8
+ * Uses Redis sets for fast membership checks and listing.
9
+ *
10
+ * Storage pattern:
11
+ * - user_agents:{platform}:{userId} -> Set of agentIds
12
+ */
13
+ class UserAgentsStore {
14
+ constructor(redis) {
15
+ this.redis = redis;
16
+ this.KEY_PREFIX = "user_agents";
17
+ }
18
+ buildKey(platform, userId) {
19
+ return `${this.KEY_PREFIX}:${platform}:${userId}`;
20
+ }
21
+ /**
22
+ * Add an agent to a user's list
23
+ */
24
+ async addAgent(platform, userId, agentId) {
25
+ const key = this.buildKey(platform, userId);
26
+ await this.redis.sadd(key, agentId);
27
+ logger.info(`Added agent ${agentId} to user ${platform}/${userId}`);
28
+ }
29
+ /**
30
+ * Remove an agent from a user's list
31
+ */
32
+ async removeAgent(platform, userId, agentId) {
33
+ const key = this.buildKey(platform, userId);
34
+ await this.redis.srem(key, agentId);
35
+ logger.info(`Removed agent ${agentId} from user ${platform}/${userId}`);
36
+ }
37
+ /**
38
+ * List all agents owned by a user
39
+ */
40
+ async listAgents(platform, userId) {
41
+ const key = this.buildKey(platform, userId);
42
+ return this.redis.smembers(key);
43
+ }
44
+ /**
45
+ * Check if a user owns a specific agent
46
+ */
47
+ async ownsAgent(platform, userId, agentId) {
48
+ const key = this.buildKey(platform, userId);
49
+ const result = await this.redis.sismember(key, agentId);
50
+ return result === 1;
51
+ }
52
+ }
53
+ exports.UserAgentsStore = UserAgentsStore;
54
+ //# sourceMappingURL=user-agents-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-agents-store.js","sourceRoot":"","sources":["../../src/auth/user-agents-store.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAG1C,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,mBAAmB,CAAC,CAAC;AAEjD;;;;;;GAMG;AACH,MAAa,eAAe;IAG1B,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;QAFf,eAAU,GAAG,aAAa,CAAC;IAET,CAAC;IAE5B,QAAQ,CAAC,QAAgB,EAAE,MAAc;QAC/C,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,MAAc,EACd,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,eAAe,OAAO,YAAY,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,MAAc,EACd,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,cAAc,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,MAAc,EACd,OAAe;QAEf,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxD,OAAO,MAAM,KAAK,CAAC,CAAC;IACtB,CAAC;CACF;AAvDD,0CAuDC"}
@@ -0,0 +1,69 @@
1
+ import { BaseRedisStore } from "@lobu/core";
2
+ import type Redis from "ioredis";
3
+ /**
4
+ * Channel binding - links a platform channel to a specific agent
5
+ */
6
+ export interface ChannelBinding {
7
+ platform: string;
8
+ channelId: string;
9
+ agentId: string;
10
+ teamId?: string;
11
+ configuredBy?: string;
12
+ configuredAt?: number;
13
+ wasAdmin?: boolean;
14
+ createdAt: number;
15
+ }
16
+ /**
17
+ * Internal storage format includes reverse lookup info
18
+ */
19
+ interface StoredBinding extends ChannelBinding {
20
+ }
21
+ /**
22
+ * Service for managing channel-to-agent bindings
23
+ *
24
+ * Storage patterns:
25
+ * - Forward lookup: channel_binding:{platform}:{channelId} → binding data
26
+ * - Forward lookup (Slack): channel_binding:{platform}:{teamId}:{channelId} → binding data
27
+ * - Reverse index: channel_binding_index:{agentId} → Set of binding keys
28
+ */
29
+ export declare class ChannelBindingService extends BaseRedisStore<StoredBinding> {
30
+ private readonly INDEX_PREFIX;
31
+ constructor(redis: Redis);
32
+ /**
33
+ * Build the binding key for a channel
34
+ * Includes teamId for multi-tenant platforms (e.g., Slack workspaces)
35
+ */
36
+ private buildBindingKey;
37
+ /**
38
+ * Build the index key for an agent's bindings
39
+ */
40
+ private buildIndexKey;
41
+ /**
42
+ * Get binding for a channel
43
+ * Returns null if channel is not bound to any agent
44
+ */
45
+ getBinding(platform: string, channelId: string, teamId?: string): Promise<ChannelBinding | null>;
46
+ /**
47
+ * Create a binding from a channel to an agent
48
+ * If the channel was already bound, the old binding is removed
49
+ */
50
+ createBinding(agentId: string, platform: string, channelId: string, teamId?: string, options?: {
51
+ configuredBy?: string;
52
+ wasAdmin?: boolean;
53
+ }): Promise<void>;
54
+ /**
55
+ * Delete a binding for a channel
56
+ */
57
+ deleteBinding(agentId: string, platform: string, channelId: string, teamId?: string): Promise<boolean>;
58
+ /**
59
+ * List all bindings for an agent
60
+ */
61
+ listBindings(agentId: string): Promise<ChannelBinding[]>;
62
+ /**
63
+ * Delete all bindings for an agent
64
+ * Used when deleting an agent
65
+ */
66
+ deleteAllBindings(agentId: string): Promise<number>;
67
+ }
68
+ export {};
69
+ //# sourceMappingURL=binding-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-service.d.ts","sourceRoot":"","sources":["../../src/channels/binding-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAIjC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,aAAc,SAAQ,cAAc;CAE7C;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,cAAc,CAAC,aAAa,CAAC;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;gBAE5C,KAAK,EAAE,KAAK;IAQxB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAWjC;;;OAGG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GACtD,OAAO,CAAC,IAAI,CAAC;IAkChB;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC;IA2BnB;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsB9D;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAmB1D"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChannelBindingService = void 0;
4
+ const core_1 = require("@lobu/core");
5
+ const logger = (0, core_1.createLogger)("channel-binding-service");
6
+ /**
7
+ * Service for managing channel-to-agent bindings
8
+ *
9
+ * Storage patterns:
10
+ * - Forward lookup: channel_binding:{platform}:{channelId} → binding data
11
+ * - Forward lookup (Slack): channel_binding:{platform}:{teamId}:{channelId} → binding data
12
+ * - Reverse index: channel_binding_index:{agentId} → Set of binding keys
13
+ */
14
+ class ChannelBindingService extends core_1.BaseRedisStore {
15
+ constructor(redis) {
16
+ super({
17
+ redis,
18
+ keyPrefix: "channel_binding",
19
+ loggerName: "channel-binding-service",
20
+ });
21
+ this.INDEX_PREFIX = "channel_binding_index";
22
+ }
23
+ /**
24
+ * Build the binding key for a channel
25
+ * Includes teamId for multi-tenant platforms (e.g., Slack workspaces)
26
+ */
27
+ buildBindingKey(platform, channelId, teamId) {
28
+ if (teamId) {
29
+ return this.buildKey(platform, teamId, channelId);
30
+ }
31
+ return this.buildKey(platform, channelId);
32
+ }
33
+ /**
34
+ * Build the index key for an agent's bindings
35
+ */
36
+ buildIndexKey(agentId) {
37
+ return `${this.INDEX_PREFIX}:${agentId}`;
38
+ }
39
+ /**
40
+ * Get binding for a channel
41
+ * Returns null if channel is not bound to any agent
42
+ */
43
+ async getBinding(platform, channelId, teamId) {
44
+ const key = this.buildBindingKey(platform, channelId, teamId);
45
+ const binding = await this.get(key);
46
+ if (binding) {
47
+ logger.debug(`Found binding for ${platform}/${channelId}: ${binding.agentId}`);
48
+ }
49
+ return binding;
50
+ }
51
+ /**
52
+ * Create a binding from a channel to an agent
53
+ * If the channel was already bound, the old binding is removed
54
+ */
55
+ async createBinding(agentId, platform, channelId, teamId, options) {
56
+ const key = this.buildBindingKey(platform, channelId, teamId);
57
+ // Check if already bound to a different agent
58
+ const existing = await this.get(key);
59
+ if (existing && existing.agentId !== agentId) {
60
+ // Remove from old agent's index
61
+ const oldIndexKey = this.buildIndexKey(existing.agentId);
62
+ await this.redis.srem(oldIndexKey, key);
63
+ logger.info(`Removed binding from agent ${existing.agentId} for ${platform}/${channelId}`);
64
+ }
65
+ // Create the binding
66
+ const binding = {
67
+ platform,
68
+ channelId,
69
+ agentId,
70
+ teamId,
71
+ configuredBy: options === null || options === void 0 ? void 0 : options.configuredBy,
72
+ configuredAt: Date.now(),
73
+ wasAdmin: options === null || options === void 0 ? void 0 : options.wasAdmin,
74
+ createdAt: Date.now(),
75
+ };
76
+ await this.set(key, binding);
77
+ // Add to agent's index
78
+ const indexKey = this.buildIndexKey(agentId);
79
+ await this.redis.sadd(indexKey, key);
80
+ logger.info(`Created binding: ${platform}/${channelId} → ${agentId}`);
81
+ }
82
+ /**
83
+ * Delete a binding for a channel
84
+ */
85
+ async deleteBinding(agentId, platform, channelId, teamId) {
86
+ const key = this.buildBindingKey(platform, channelId, teamId);
87
+ const existing = await this.get(key);
88
+ if (!existing) {
89
+ logger.warn(`No binding found for ${platform}/${channelId}`);
90
+ return false;
91
+ }
92
+ if (existing.agentId !== agentId) {
93
+ logger.warn(`Binding for ${platform}/${channelId} belongs to ${existing.agentId}, not ${agentId}`);
94
+ return false;
95
+ }
96
+ // Delete the binding
97
+ await this.delete(key);
98
+ // Remove from agent's index
99
+ const indexKey = this.buildIndexKey(agentId);
100
+ await this.redis.srem(indexKey, key);
101
+ logger.info(`Deleted binding: ${platform}/${channelId} from ${agentId}`);
102
+ return true;
103
+ }
104
+ /**
105
+ * List all bindings for an agent
106
+ */
107
+ async listBindings(agentId) {
108
+ const indexKey = this.buildIndexKey(agentId);
109
+ const bindingKeys = await this.redis.smembers(indexKey);
110
+ if (bindingKeys.length === 0) {
111
+ return [];
112
+ }
113
+ const bindings = [];
114
+ for (const key of bindingKeys) {
115
+ const binding = await this.get(key);
116
+ if (binding) {
117
+ bindings.push(binding);
118
+ }
119
+ else {
120
+ // Clean up stale index entry
121
+ await this.redis.srem(indexKey, key);
122
+ }
123
+ }
124
+ return bindings;
125
+ }
126
+ /**
127
+ * Delete all bindings for an agent
128
+ * Used when deleting an agent
129
+ */
130
+ async deleteAllBindings(agentId) {
131
+ const bindings = await this.listBindings(agentId);
132
+ for (const binding of bindings) {
133
+ const key = this.buildBindingKey(binding.platform, binding.channelId, binding.teamId);
134
+ await this.delete(key);
135
+ }
136
+ // Delete the index
137
+ const indexKey = this.buildIndexKey(agentId);
138
+ await this.redis.del(indexKey);
139
+ logger.info(`Deleted ${bindings.length} bindings for agent ${agentId}`);
140
+ return bindings.length;
141
+ }
142
+ }
143
+ exports.ChannelBindingService = ChannelBindingService;
144
+ //# sourceMappingURL=binding-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binding-service.js","sourceRoot":"","sources":["../../src/channels/binding-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { type ChannelBinding, ChannelBindingService, } from "./binding-service";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChannelBindingService = void 0;
4
+ var binding_service_1 = require("./binding-service");
5
+ Object.defineProperty(exports, "ChannelBindingService", { enumerable: true, get: function () { return binding_service_1.ChannelBindingService; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channels/index.ts"],"names":[],"mappings":";;;AAAA,qDAG2B;AADzB,wHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env bun
2
+ import type { Server } from "node:http";
3
+ import { OpenAPIHono } from "@hono/zod-openapi";
4
+ import type { GatewayConfig } from "../config";
5
+ export interface CreateGatewayAppOptions {
6
+ secretProxy: any;
7
+ workerGateway: any;
8
+ mcpProxy: any;
9
+ interactionService?: any;
10
+ platformRegistry?: any;
11
+ coreServices?: any;
12
+ chatInstanceManager?: import("../connections").ChatInstanceManager | null;
13
+ /** Custom auth provider for embedded mode. When set, gateway delegates auth to this function instead of using cookie-based sessions. */
14
+ authProvider?: import("../routes/public/settings-auth").AuthProvider;
15
+ }
16
+ /**
17
+ * Create the Hono app with all gateway routes.
18
+ * Returns the app without starting an HTTP server — the caller can mount it
19
+ * on their own server (embedded mode) or pass it to `startGatewayServer()`.
20
+ */
21
+ export declare function createGatewayApp(options: CreateGatewayAppOptions): OpenAPIHono;
22
+ /**
23
+ * Start an HTTP server for the gateway Hono app.
24
+ * Used in standalone mode. In embedded mode, the host creates its own server.
25
+ */
26
+ export declare function startGatewayServer(app: OpenAPIHono, port?: number): Server;
27
+ /**
28
+ * Start the gateway with the provided configuration
29
+ */
30
+ export declare function startGateway(config: GatewayConfig): Promise<void>;
31
+ //# sourceMappingURL=gateway.d.ts.map