@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,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentMetadataStore = void 0;
4
+ const core_1 = require("@lobu/core");
5
+ const logger = (0, core_1.createLogger)("agent-metadata-store");
6
+ /**
7
+ * Store agent metadata in Redis.
8
+ * Pattern: agent_metadata:{agentId}
9
+ */
10
+ class AgentMetadataStore extends core_1.BaseRedisStore {
11
+ constructor(redis) {
12
+ super({
13
+ redis,
14
+ keyPrefix: "agent_metadata",
15
+ loggerName: "agent-metadata-store",
16
+ });
17
+ }
18
+ /**
19
+ * Create a new agent with metadata
20
+ */
21
+ async createAgent(agentId, name, platform, userId, options) {
22
+ const metadata = {
23
+ agentId,
24
+ name,
25
+ owner: { platform, userId },
26
+ isWorkspaceAgent: options === null || options === void 0 ? void 0 : options.isWorkspaceAgent,
27
+ workspaceId: options === null || options === void 0 ? void 0 : options.workspaceId,
28
+ parentConnectionId: options === null || options === void 0 ? void 0 : options.parentConnectionId,
29
+ createdAt: Date.now(),
30
+ };
31
+ if (options === null || options === void 0 ? void 0 : options.description) {
32
+ metadata.description = options.description;
33
+ }
34
+ const key = this.buildKey(agentId);
35
+ await this.set(key, metadata);
36
+ // Index sandbox under its parent connection
37
+ if (options === null || options === void 0 ? void 0 : options.parentConnectionId) {
38
+ await this.redis.sadd(`sandboxes:connection:${options.parentConnectionId}`, agentId);
39
+ }
40
+ logger.info(`Created agent metadata for ${agentId}: "${name}"`);
41
+ return metadata;
42
+ }
43
+ /**
44
+ * Get metadata for an agent
45
+ */
46
+ async getMetadata(agentId) {
47
+ const key = this.buildKey(agentId);
48
+ return this.get(key);
49
+ }
50
+ /**
51
+ * Update agent metadata (partial update)
52
+ */
53
+ async updateMetadata(agentId, updates) {
54
+ const existing = await this.getMetadata(agentId);
55
+ if (!existing) {
56
+ logger.warn(`Cannot update metadata: agent ${agentId} not found`);
57
+ return;
58
+ }
59
+ const updated = Object.assign(Object.assign({}, existing), updates);
60
+ const key = this.buildKey(agentId);
61
+ await this.set(key, updated);
62
+ logger.info(`Updated metadata for agent ${agentId}`);
63
+ }
64
+ /**
65
+ * Delete agent metadata
66
+ */
67
+ async deleteAgent(agentId) {
68
+ // Clean up sandbox index if this agent has a parent connection
69
+ const metadata = await this.getMetadata(agentId);
70
+ if (metadata === null || metadata === void 0 ? void 0 : metadata.parentConnectionId) {
71
+ await this.redis.srem(`sandboxes:connection:${metadata.parentConnectionId}`, agentId);
72
+ }
73
+ const key = this.buildKey(agentId);
74
+ await this.delete(key);
75
+ logger.info(`Deleted metadata for agent ${agentId}`);
76
+ }
77
+ /**
78
+ * Check if agent exists
79
+ */
80
+ async hasAgent(agentId) {
81
+ const key = this.buildKey(agentId);
82
+ return this.exists(key);
83
+ }
84
+ /**
85
+ * List sandbox agents belonging to a connection
86
+ */
87
+ async listSandboxes(connectionId) {
88
+ const agentIds = await this.redis.smembers(`sandboxes:connection:${connectionId}`);
89
+ const sandboxes = [];
90
+ for (const agentId of agentIds) {
91
+ const data = await this.getMetadata(agentId);
92
+ if (data)
93
+ sandboxes.push(data);
94
+ }
95
+ sandboxes.sort((a, b) => { var _a, _b; return ((_a = b.lastUsedAt) !== null && _a !== void 0 ? _a : 0) - ((_b = a.lastUsedAt) !== null && _b !== void 0 ? _b : 0); });
96
+ return sandboxes;
97
+ }
98
+ /**
99
+ * List all agents in the system, sorted by lastUsedAt descending
100
+ */
101
+ async listAllAgents() {
102
+ const prefix = `${this.keyPrefix}:`;
103
+ const keys = await this.scanByPrefix(prefix);
104
+ const agents = [];
105
+ for (const key of keys) {
106
+ const data = await this.get(key);
107
+ if (data)
108
+ agents.push(data);
109
+ }
110
+ agents.sort((a, b) => { var _a, _b; return ((_a = b.lastUsedAt) !== null && _a !== void 0 ? _a : 0) - ((_b = a.lastUsedAt) !== null && _b !== void 0 ? _b : 0); });
111
+ return agents;
112
+ }
113
+ }
114
+ exports.AgentMetadataStore = AgentMetadataStore;
115
+ //# sourceMappingURL=agent-metadata-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-metadata-store.js","sourceRoot":"","sources":["../../src/auth/agent-metadata-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { Context, Next } from "hono";
2
+ import type { CliTokenService } from "./cli/token-service";
3
+ import type { ExternalAuthClient } from "./external/client";
4
+ export declare const TOKEN_EXPIRATION_MS: number;
5
+ /**
6
+ * Creates a Hono middleware that enforces the standard auth check:
7
+ * 1. Settings session cookie 2. CLI JWT 3. External OAuth 4. Admin password 5. Worker token
8
+ */
9
+ export declare function createApiAuthMiddleware(opts: {
10
+ adminPassword?: string;
11
+ cliTokenService?: CliTokenService;
12
+ externalAuthClient?: ExternalAuthClient;
13
+ allowWorkerToken?: boolean;
14
+ allowSettingsSession?: boolean;
15
+ }): (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
16
+ success: false;
17
+ error: string;
18
+ }, 401, "json">)>;
19
+ //# sourceMappingURL=api-auth-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-auth-middleware.d.ts","sourceRoot":"","sources":["../../src/auth/api-auth-middleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,QAAsB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,IACe,GAAG,OAAO,EAAE,MAAM,IAAI;;;kBAgDrC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOKEN_EXPIRATION_MS = void 0;
4
+ exports.createApiAuthMiddleware = createApiAuthMiddleware;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const core_1 = require("@lobu/core");
7
+ const settings_auth_1 = require("../routes/public/settings-auth");
8
+ exports.TOKEN_EXPIRATION_MS = 24 * 60 * 60 * 1000;
9
+ /**
10
+ * Creates a Hono middleware that enforces the standard auth check:
11
+ * 1. Settings session cookie 2. CLI JWT 3. External OAuth 4. Admin password 5. Worker token
12
+ */
13
+ function createApiAuthMiddleware(opts) {
14
+ return async (c, next) => {
15
+ // 1. Try settings session cookie when explicitly allowed.
16
+ if (opts.allowSettingsSession && (0, settings_auth_1.verifySettingsSession)(c))
17
+ return next();
18
+ const authHeader = c.req.header("Authorization");
19
+ if (!authHeader || !authHeader.startsWith("Bearer ")) {
20
+ return c.json({ success: false, error: "Unauthorized" }, 401);
21
+ }
22
+ const token = authHeader.substring(7);
23
+ // 2. Try CLI JWT
24
+ if (opts.cliTokenService) {
25
+ const identity = await opts.cliTokenService.verifyAccessToken(token);
26
+ if (identity)
27
+ return next();
28
+ }
29
+ // 3. Try external OAuth token (validated against MEMORY_URL userinfo)
30
+ if (opts.externalAuthClient) {
31
+ try {
32
+ const userInfo = await opts.externalAuthClient.fetchUserInfo(token);
33
+ if (userInfo === null || userInfo === void 0 ? void 0 : userInfo.sub)
34
+ return next();
35
+ }
36
+ catch (_a) {
37
+ // Token not valid for external auth, continue to next method
38
+ }
39
+ }
40
+ // 4. Try admin password
41
+ if (opts.adminPassword) {
42
+ const a = Buffer.from(token);
43
+ const b = Buffer.from(opts.adminPassword);
44
+ if (a.length === b.length && (0, node_crypto_1.timingSafeEqual)(a, b)) {
45
+ return next();
46
+ }
47
+ }
48
+ // 5. Try worker token when explicitly allowed for the route
49
+ if (opts.allowWorkerToken !== false) {
50
+ const workerData = (0, core_1.verifyWorkerToken)(token);
51
+ if (workerData) {
52
+ const tokenAge = Date.now() - workerData.timestamp;
53
+ if (tokenAge <= exports.TOKEN_EXPIRATION_MS) {
54
+ return next();
55
+ }
56
+ }
57
+ }
58
+ return c.json({ success: false, error: "Unauthorized" }, 401);
59
+ };
60
+ }
61
+ //# sourceMappingURL=api-auth-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-auth-middleware.js","sourceRoot":"","sources":["../../src/auth/api-auth-middleware.ts"],"names":[],"mappings":";;;AAaA,0DAuDC;AApED,6CAA8C;AAC9C,qCAA+C;AAE/C,kEAAuE;AAI1D,QAAA,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,IAMvC;IACC,OAAO,KAAK,EAAE,CAAU,EAAE,IAAU,EAAE,EAAE;QACtC,0DAA0D;QAC1D,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAA,qCAAqB,EAAC,CAAC,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAEzE,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEtC,iBAAiB;QACjB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,QAAQ;gBAAE,OAAO,IAAI,EAAE,CAAC;QAC9B,CAAC;QAED,sEAAsE;QACtE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACpE,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG;oBAAE,OAAO,IAAI,EAAE,CAAC;YACnC,CAAC;YAAC,WAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,IAAA,6BAAe,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACnD,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAA,wBAAiB,EAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC;gBACnD,IAAI,QAAQ,IAAI,2BAAmB,EAAE,CAAC;oBACpC,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { ConfigProviderMeta } from "@lobu/core";
2
+ import type { ModelOption } from "../modules/module-system";
3
+ import { BaseProviderModule } from "./base-provider-module";
4
+ import type { AgentSettingsStore } from "./settings/agent-settings-store";
5
+ export interface ApiKeyProviderConfig {
6
+ providerId: string;
7
+ providerDisplayName: string;
8
+ providerIconUrl: string;
9
+ envVarName: string;
10
+ apiKeyInstructions: string;
11
+ apiKeyPlaceholder: string;
12
+ systemEnvVarName?: string;
13
+ /** Provider slug for proxy path routing (e.g. "gemini") */
14
+ slug?: string;
15
+ /** Upstream base URL for proxy forwarding (e.g. "https://generativelanguage.googleapis.com") */
16
+ upstreamBaseUrl?: string;
17
+ /** Explicit base URL env var name (defaults to envVarName with _KEY replaced by _BASE_URL) */
18
+ baseUrlEnvVarName?: string;
19
+ /** Relative path to fetch model list (e.g. "/v1/models"). Enables generic model fetching. */
20
+ modelsEndpoint?: string;
21
+ /** SDK compatibility — "openai" means OpenAI-compatible format. Also maps OPENAI_BASE_URL in proxy. */
22
+ sdkCompat?: "openai";
23
+ /** Default model ID when none is configured */
24
+ defaultModel?: string;
25
+ /** Override provider name for model registry lookup */
26
+ registryAlias?: string;
27
+ /** Whether to show in "Add Provider" catalog (default: true) */
28
+ catalogVisible?: boolean;
29
+ agentSettingsStore: AgentSettingsStore;
30
+ }
31
+ /**
32
+ * Generic API-key provider module.
33
+ * Any model provider that only needs a "paste your API key" flow
34
+ * can be instantiated from this class without writing a full module.
35
+ *
36
+ * Config-driven providers (from system-skills.json) set sdkCompat,
37
+ * defaultModel, and registryAlias to enable dynamic worker model resolution.
38
+ */
39
+ export declare class ApiKeyProviderModule extends BaseProviderModule {
40
+ protected readonly apiKeyConfig: ApiKeyProviderConfig;
41
+ constructor(config: ApiKeyProviderConfig);
42
+ /**
43
+ * For openai-compatible providers, also map OPENAI_BASE_URL so the
44
+ * OpenAI SDK resolves through our proxy.
45
+ */
46
+ getProxyBaseUrlMappings(proxyUrl: string, agentId?: string): Record<string, string>;
47
+ /**
48
+ * Returns metadata for config-driven providers (sdkCompat, defaultModel, etc.)
49
+ * so the worker can register them dynamically. Returns null for hardcoded providers.
50
+ */
51
+ getProviderMetadata(): ConfigProviderMeta | null;
52
+ getModelOptions(agentId: string, _userId: string): Promise<ModelOption[]>;
53
+ /**
54
+ * Generic model fetcher using Bearer auth. Works with OpenAI-compatible
55
+ * endpoints ({data:[{id}]}) and Ollama ({models:[{name}]}).
56
+ */
57
+ private fetchModelsGeneric;
58
+ private fetchGeminiModels;
59
+ }
60
+ //# sourceMappingURL=api-key-provider-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key-provider-module.d.ts","sourceRoot":"","sources":["../../src/auth/api-key-provider-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6FAA6F;IAC7F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uGAAuG;IACvG,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED;;;;;;;GAOG;AACH,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;gBAE1C,MAAM,EAAE,oBAAoB;IA4BxC;;;OAGG;IACM,uBAAuB,CAC9B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAUzB;;;OAGG;IACH,mBAAmB,IAAI,kBAAkB,GAAG,IAAI;IAkB1C,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;IAsBzB;;;OAGG;YACW,kBAAkB;YA8ClB,iBAAiB;CA0BhC"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiKeyProviderModule = void 0;
4
+ const base_provider_module_1 = require("./base-provider-module");
5
+ const auth_profiles_manager_1 = require("./settings/auth-profiles-manager");
6
+ /**
7
+ * Generic API-key provider module.
8
+ * Any model provider that only needs a "paste your API key" flow
9
+ * can be instantiated from this class without writing a full module.
10
+ *
11
+ * Config-driven providers (from system-skills.json) set sdkCompat,
12
+ * defaultModel, and registryAlias to enable dynamic worker model resolution.
13
+ */
14
+ class ApiKeyProviderModule extends base_provider_module_1.BaseProviderModule {
15
+ constructor(config) {
16
+ const authProfilesManager = new auth_profiles_manager_1.AuthProfilesManager(config.agentSettingsStore);
17
+ super({
18
+ providerId: config.providerId,
19
+ providerDisplayName: config.providerDisplayName,
20
+ providerIconUrl: config.providerIconUrl,
21
+ credentialEnvVarName: config.envVarName,
22
+ secretEnvVarNames: [config.envVarName],
23
+ systemEnvVarName: config.systemEnvVarName,
24
+ slug: config.slug || config.providerId,
25
+ upstreamBaseUrl: config.upstreamBaseUrl,
26
+ baseUrlEnvVarName: config.baseUrlEnvVarName ||
27
+ config.envVarName.replace("_KEY", "_BASE_URL"),
28
+ authType: "api-key",
29
+ apiKeyInstructions: config.apiKeyInstructions,
30
+ apiKeyPlaceholder: config.apiKeyPlaceholder,
31
+ catalogVisible: config.catalogVisible,
32
+ }, authProfilesManager);
33
+ this.apiKeyConfig = config;
34
+ this.name = `${config.providerId}-api-key`;
35
+ }
36
+ /**
37
+ * For openai-compatible providers, also map OPENAI_BASE_URL so the
38
+ * OpenAI SDK resolves through our proxy.
39
+ */
40
+ getProxyBaseUrlMappings(proxyUrl, agentId) {
41
+ const mappings = super.getProxyBaseUrlMappings(proxyUrl, agentId);
42
+ if (this.apiKeyConfig.sdkCompat === "openai") {
43
+ const slug = this.providerConfig.slug || this.providerId;
44
+ const base = `${proxyUrl}/${slug}`;
45
+ mappings.OPENAI_BASE_URL = agentId ? `${base}/a/${agentId}` : base;
46
+ }
47
+ return mappings;
48
+ }
49
+ /**
50
+ * Returns metadata for config-driven providers (sdkCompat, defaultModel, etc.)
51
+ * so the worker can register them dynamically. Returns null for hardcoded providers.
52
+ */
53
+ getProviderMetadata() {
54
+ if (!this.apiKeyConfig.sdkCompat &&
55
+ !this.apiKeyConfig.defaultModel &&
56
+ !this.apiKeyConfig.registryAlias) {
57
+ return null;
58
+ }
59
+ return {
60
+ sdkCompat: this.apiKeyConfig.sdkCompat,
61
+ defaultModel: this.apiKeyConfig.defaultModel,
62
+ registryAlias: this.apiKeyConfig.registryAlias,
63
+ baseUrlEnvVar: this.providerConfig.baseUrlEnvVarName ||
64
+ this.apiKeyConfig.envVarName.replace("_KEY", "_BASE_URL"),
65
+ };
66
+ }
67
+ async getModelOptions(agentId, _userId) {
68
+ const key = await this.getCredential(agentId);
69
+ if (!key)
70
+ return [];
71
+ // Gemini uses a non-standard models endpoint with key-in-query auth
72
+ if (this.providerId === "gemini") {
73
+ return this.fetchGeminiModels(key);
74
+ }
75
+ // Generic modelsEndpoint: supports OpenAI format ({data:[{id}]}) and Ollama format ({models:[{name}]})
76
+ const modelsEndpoint = this.apiKeyConfig.modelsEndpoint;
77
+ if (modelsEndpoint && this.apiKeyConfig.upstreamBaseUrl) {
78
+ return this.fetchModelsGeneric(key, this.apiKeyConfig.upstreamBaseUrl, modelsEndpoint);
79
+ }
80
+ return [];
81
+ }
82
+ /**
83
+ * Generic model fetcher using Bearer auth. Works with OpenAI-compatible
84
+ * endpoints ({data:[{id}]}) and Ollama ({models:[{name}]}).
85
+ */
86
+ async fetchModelsGeneric(apiKey, baseUrl, endpoint) {
87
+ const url = `${baseUrl.replace(/\/$/, "")}${endpoint}`;
88
+ const response = await fetch(url, {
89
+ headers: {
90
+ Accept: "application/json",
91
+ Authorization: `Bearer ${apiKey}`,
92
+ },
93
+ }).catch(() => null);
94
+ if (!response || !response.ok)
95
+ return [];
96
+ const payload = (await response.json().catch(() => ({})));
97
+ const prefix = this.providerId;
98
+ // OpenAI format: { data: [{ id: "model-name" }] }
99
+ if (payload.data && Array.isArray(payload.data)) {
100
+ return payload.data
101
+ .map((model) => {
102
+ var _a;
103
+ const id = (_a = model.id) === null || _a === void 0 ? void 0 : _a.trim();
104
+ if (!id)
105
+ return null;
106
+ return { value: `${prefix}/${id}`, label: id };
107
+ })
108
+ .filter((item) => Boolean(item));
109
+ }
110
+ // Ollama format: { models: [{ name: "model-name", model: "model-name" }] }
111
+ if (payload.models && Array.isArray(payload.models)) {
112
+ return payload.models
113
+ .map((model) => {
114
+ var _a;
115
+ const id = (_a = (model.model || model.name)) === null || _a === void 0 ? void 0 : _a.trim();
116
+ if (!id)
117
+ return null;
118
+ return { value: `${prefix}/${id}`, label: id };
119
+ })
120
+ .filter((item) => Boolean(item));
121
+ }
122
+ return [];
123
+ }
124
+ async fetchGeminiModels(apiKey) {
125
+ const url = new URL("https://generativelanguage.googleapis.com/v1beta/models");
126
+ url.searchParams.set("key", apiKey);
127
+ const response = await fetch(url.toString(), {
128
+ headers: { Accept: "application/json" },
129
+ }).catch(() => null);
130
+ if (!response || !response.ok)
131
+ return [];
132
+ const payload = (await response.json().catch(() => ({})));
133
+ return (payload.models || [])
134
+ .map((model) => {
135
+ var _a;
136
+ const raw = (_a = model.name) === null || _a === void 0 ? void 0 : _a.replace(/^models\//, "").trim();
137
+ if (!raw)
138
+ return null;
139
+ return {
140
+ value: `gemini/${raw}`,
141
+ label: model.displayName || raw,
142
+ };
143
+ })
144
+ .filter((item) => Boolean(item));
145
+ }
146
+ }
147
+ exports.ApiKeyProviderModule = ApiKeyProviderModule;
148
+ //# sourceMappingURL=api-key-provider-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key-provider-module.js","sourceRoot":"","sources":["../../src/auth/api-key-provider-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { Hono } from "hono";
2
+ import { BaseModule, type ModelProviderModule, type ProviderUpstreamConfig } from "../modules/module-system";
3
+ import type { AuthProfilesManager } from "./settings/auth-profiles-manager";
4
+ export interface BaseProviderConfig {
5
+ providerId: string;
6
+ providerDisplayName: string;
7
+ providerIconUrl: string;
8
+ /** Env var name the SDK expects for the API credential (e.g. "ANTHROPIC_API_KEY") */
9
+ credentialEnvVarName: string;
10
+ /** All env vars this provider considers secrets */
11
+ secretEnvVarNames: string[];
12
+ /** Env var to check for system key (defaults to credentialEnvVarName) */
13
+ systemEnvVarName?: string;
14
+ /** Provider slug for proxy path routing (e.g. "anthropic") */
15
+ slug?: string;
16
+ /** Upstream base URL for proxy forwarding (e.g. "https://api.anthropic.com") */
17
+ upstreamBaseUrl?: string;
18
+ /** Explicit base URL env var name (defaults to slug-derived name) */
19
+ baseUrlEnvVarName?: string;
20
+ authType: "oauth" | "device-code" | "api-key";
21
+ supportedAuthTypes?: ("oauth" | "device-code" | "api-key")[];
22
+ apiKeyInstructions?: string;
23
+ apiKeyPlaceholder?: string;
24
+ catalogDescription?: string;
25
+ catalogVisible?: boolean;
26
+ }
27
+ /**
28
+ * Base class for model provider modules.
29
+ * Implements shared logic: credential lookup, proxy mappings, env var injection,
30
+ * and Hono app management. Save-key and logout routes are handled by the
31
+ * parameterized auth router in gateway.ts.
32
+ *
33
+ * Subclasses provide a config object and optionally override:
34
+ * - `setupRoutes(app)` to add provider-specific routes
35
+ * - `getModelOptions()` for model listing
36
+ * - `buildEnvVars()` for custom env var injection
37
+ * - `hasSystemKey()` / `injectSystemKeyFallback()` for multi-env-var logic
38
+ */
39
+ export declare abstract class BaseProviderModule extends BaseModule implements ModelProviderModule {
40
+ name: string;
41
+ providerId: string;
42
+ providerDisplayName: string;
43
+ providerIconUrl: string;
44
+ authType: "oauth" | "device-code" | "api-key";
45
+ supportedAuthTypes?: ("oauth" | "device-code" | "api-key")[];
46
+ apiKeyInstructions?: string;
47
+ apiKeyPlaceholder?: string;
48
+ catalogDescription?: string;
49
+ catalogVisible?: boolean;
50
+ protected readonly providerConfig: BaseProviderConfig;
51
+ protected readonly authProfilesManager: AuthProfilesManager;
52
+ protected readonly app: Hono;
53
+ constructor(config: BaseProviderConfig, authProfilesManager: AuthProfilesManager);
54
+ isEnabled(): boolean;
55
+ getSecretEnvVarNames(): string[];
56
+ getCredentialEnvVarName(): string;
57
+ getUpstreamConfig(): ProviderUpstreamConfig | null;
58
+ hasCredentials(agentId: string): Promise<boolean>;
59
+ hasSystemKey(): boolean;
60
+ getProxyBaseUrlMappings(proxyUrl: string, agentId?: string): Record<string, string>;
61
+ injectSystemKeyFallback(envVars: Record<string, string>): Record<string, string>;
62
+ buildEnvVars(agentId: string, envVars: Record<string, string>): Promise<Record<string, string>>;
63
+ getApp(): Hono;
64
+ protected getCredential(agentId: string): Promise<string | null>;
65
+ /** Build a structured placeholder for proxy mode (default: "lobu-proxy"). */
66
+ buildCredentialPlaceholder(_agentId: string): Promise<string> | string;
67
+ /** Override in subclasses to add provider-specific routes. */
68
+ protected setupRoutes(): void;
69
+ }
70
+ //# sourceMappingURL=base-provider-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider-module.d.ts","sourceRoot":"","sources":["../../src/auth/base-provider-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseProviderModule = void 0;
4
+ const core_1 = require("@lobu/core");
5
+ const hono_1 = require("hono");
6
+ const module_system_1 = require("../modules/module-system");
7
+ const string_substitution_1 = require("./mcp/string-substitution");
8
+ const logger = (0, core_1.createLogger)("base-provider-module");
9
+ /**
10
+ * Base class for model provider modules.
11
+ * Implements shared logic: credential lookup, proxy mappings, env var injection,
12
+ * and Hono app management. Save-key and logout routes are handled by the
13
+ * parameterized auth router in gateway.ts.
14
+ *
15
+ * Subclasses provide a config object and optionally override:
16
+ * - `setupRoutes(app)` to add provider-specific routes
17
+ * - `getModelOptions()` for model listing
18
+ * - `buildEnvVars()` for custom env var injection
19
+ * - `hasSystemKey()` / `injectSystemKeyFallback()` for multi-env-var logic
20
+ */
21
+ class BaseProviderModule extends module_system_1.BaseModule {
22
+ constructor(config, authProfilesManager) {
23
+ super();
24
+ this.providerConfig = config;
25
+ this.authProfilesManager = authProfilesManager;
26
+ this.providerId = config.providerId;
27
+ this.name = `${config.providerId}-provider`;
28
+ this.providerDisplayName = config.providerDisplayName;
29
+ this.providerIconUrl = config.providerIconUrl;
30
+ this.authType = config.authType;
31
+ this.supportedAuthTypes = config.supportedAuthTypes;
32
+ this.apiKeyInstructions = config.apiKeyInstructions;
33
+ this.apiKeyPlaceholder = config.apiKeyPlaceholder;
34
+ this.catalogDescription = config.catalogDescription;
35
+ this.catalogVisible = config.catalogVisible;
36
+ this.app = new hono_1.Hono();
37
+ this.setupRoutes();
38
+ }
39
+ isEnabled() {
40
+ return true;
41
+ }
42
+ getSecretEnvVarNames() {
43
+ return this.providerConfig.secretEnvVarNames;
44
+ }
45
+ getCredentialEnvVarName() {
46
+ return this.providerConfig.credentialEnvVarName;
47
+ }
48
+ getUpstreamConfig() {
49
+ const { slug, upstreamBaseUrl, baseUrlEnvVarName } = this.providerConfig;
50
+ if (!slug || !upstreamBaseUrl)
51
+ return null;
52
+ // Check env for base URL override (e.g., ANTHROPIC_BASE_URL=https://api.z.ai)
53
+ const envOverride = baseUrlEnvVarName
54
+ ? (0, string_substitution_1.resolveEnv)(baseUrlEnvVarName)
55
+ : undefined;
56
+ return { slug, upstreamBaseUrl: envOverride || upstreamBaseUrl };
57
+ }
58
+ async hasCredentials(agentId) {
59
+ return this.authProfilesManager.hasProviderProfiles(agentId, this.providerId);
60
+ }
61
+ hasSystemKey() {
62
+ const envVar = this.providerConfig.systemEnvVarName ||
63
+ this.providerConfig.credentialEnvVarName;
64
+ return !!(0, string_substitution_1.resolveEnv)(envVar);
65
+ }
66
+ getProxyBaseUrlMappings(proxyUrl, agentId) {
67
+ const { slug, baseUrlEnvVarName, credentialEnvVarName } = this.providerConfig;
68
+ if (!slug)
69
+ return {};
70
+ const envVar = baseUrlEnvVarName || credentialEnvVarName.replace("_KEY", "_BASE_URL");
71
+ const base = `${proxyUrl}/${slug}`;
72
+ return { [envVar]: agentId ? `${base}/a/${agentId}` : base };
73
+ }
74
+ injectSystemKeyFallback(envVars) {
75
+ const credVar = this.providerConfig.credentialEnvVarName;
76
+ if (!envVars[credVar]) {
77
+ const sysVar = this.providerConfig.systemEnvVarName || credVar;
78
+ const systemKey = (0, string_substitution_1.resolveEnv)(sysVar);
79
+ if (systemKey) {
80
+ envVars[credVar] = systemKey;
81
+ }
82
+ }
83
+ return envVars;
84
+ }
85
+ async buildEnvVars(agentId, envVars) {
86
+ const credVar = this.providerConfig.credentialEnvVarName;
87
+ if (!envVars[credVar]) {
88
+ const profile = await this.authProfilesManager.getBestProfile(agentId, this.providerId);
89
+ if (profile === null || profile === void 0 ? void 0 : profile.credential) {
90
+ logger.info(`Injecting ${credVar} for agent ${agentId} (${this.providerId})`);
91
+ envVars[credVar] = profile.credential;
92
+ }
93
+ }
94
+ return envVars;
95
+ }
96
+ getApp() {
97
+ return this.app;
98
+ }
99
+ async getCredential(agentId) {
100
+ const profile = await this.authProfilesManager.getBestProfile(agentId, this.providerId);
101
+ if (profile === null || profile === void 0 ? void 0 : profile.credential) {
102
+ return profile.credential;
103
+ }
104
+ const sysVar = this.providerConfig.systemEnvVarName ||
105
+ this.providerConfig.credentialEnvVarName;
106
+ return process.env[sysVar] || null;
107
+ }
108
+ /** Build a structured placeholder for proxy mode (default: "lobu-proxy"). */
109
+ buildCredentialPlaceholder(_agentId) {
110
+ return "lobu-proxy";
111
+ }
112
+ /** Override in subclasses to add provider-specific routes. */
113
+ setupRoutes() {
114
+ // Default: no extra routes
115
+ }
116
+ }
117
+ exports.BaseProviderModule = BaseProviderModule;
118
+ //# sourceMappingURL=base-provider-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider-module.js","sourceRoot":"","sources":["../../src/auth/base-provider-module.ts"],"names":[],"mappings":"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"}