beddel 0.2.2 → 0.3.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 (357) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +117 -14
  3. package/dist/agents/chat/chat.handler.d.ts +12 -0
  4. package/dist/agents/chat/chat.handler.d.ts.map +1 -0
  5. package/dist/agents/chat/chat.handler.js +145 -0
  6. package/dist/agents/chat/chat.handler.js.map +1 -0
  7. package/dist/agents/chat/chat.schema.d.ts +38 -0
  8. package/dist/agents/chat/chat.schema.d.ts.map +1 -0
  9. package/dist/agents/chat/chat.schema.js +31 -0
  10. package/dist/agents/chat/chat.schema.js.map +1 -0
  11. package/dist/agents/chat/chat.types.d.ts +42 -0
  12. package/dist/agents/chat/chat.types.d.ts.map +1 -0
  13. package/dist/agents/chat/chat.types.js +6 -0
  14. package/dist/agents/chat/chat.types.js.map +1 -0
  15. package/dist/agents/chat/chat.yaml +148 -0
  16. package/dist/agents/chat/index.d.ts +16 -0
  17. package/dist/agents/chat/index.d.ts.map +1 -0
  18. package/dist/agents/chat/index.js +21 -0
  19. package/dist/agents/chat/index.js.map +1 -0
  20. package/dist/agents/chromadb/chromadb.handler.d.ts +12 -0
  21. package/dist/agents/chromadb/chromadb.handler.d.ts.map +1 -0
  22. package/dist/agents/chromadb/chromadb.handler.js +139 -0
  23. package/dist/agents/chromadb/chromadb.handler.js.map +1 -0
  24. package/dist/agents/chromadb/chromadb.schema.d.ts +36 -0
  25. package/dist/agents/chromadb/chromadb.schema.d.ts.map +1 -0
  26. package/dist/agents/chromadb/chromadb.schema.js +33 -0
  27. package/dist/agents/chromadb/chromadb.schema.js.map +1 -0
  28. package/dist/agents/chromadb/chromadb.types.d.ts +49 -0
  29. package/dist/agents/chromadb/chromadb.types.d.ts.map +1 -0
  30. package/dist/agents/chromadb/chromadb.types.js +6 -0
  31. package/dist/agents/chromadb/chromadb.types.js.map +1 -0
  32. package/dist/agents/chromadb/chromadb.yaml +128 -0
  33. package/dist/agents/chromadb/index.d.ts +15 -0
  34. package/dist/agents/chromadb/index.d.ts.map +1 -0
  35. package/dist/agents/chromadb/index.js +20 -0
  36. package/dist/agents/chromadb/index.js.map +1 -0
  37. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts +8 -0
  38. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.d.ts.map +1 -0
  39. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js +61 -0
  40. package/dist/agents/gemini-vectorize/gemini-vectorize.handler.js.map +1 -0
  41. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts +22 -0
  42. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.d.ts.map +1 -0
  43. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js +20 -0
  44. package/dist/agents/gemini-vectorize/gemini-vectorize.schema.js.map +1 -0
  45. package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts +32 -0
  46. package/dist/agents/gemini-vectorize/gemini-vectorize.types.d.ts.map +1 -0
  47. package/dist/agents/gemini-vectorize/gemini-vectorize.types.js +6 -0
  48. package/dist/agents/gemini-vectorize/gemini-vectorize.types.js.map +1 -0
  49. package/dist/agents/gemini-vectorize/gemini-vectorize.yaml +84 -0
  50. package/dist/agents/gemini-vectorize/index.d.ts +15 -0
  51. package/dist/agents/gemini-vectorize/index.d.ts.map +1 -0
  52. package/dist/agents/gemini-vectorize/index.js +20 -0
  53. package/dist/agents/gemini-vectorize/index.js.map +1 -0
  54. package/dist/agents/gitmcp/gitmcp.handler.d.ts +12 -0
  55. package/dist/agents/gitmcp/gitmcp.handler.d.ts.map +1 -0
  56. package/dist/agents/gitmcp/gitmcp.handler.js +95 -0
  57. package/dist/agents/gitmcp/gitmcp.handler.js.map +1 -0
  58. package/dist/agents/gitmcp/gitmcp.schema.d.ts +17 -0
  59. package/dist/agents/gitmcp/gitmcp.schema.d.ts.map +1 -0
  60. package/dist/agents/gitmcp/gitmcp.schema.js +18 -0
  61. package/dist/agents/gitmcp/gitmcp.schema.js.map +1 -0
  62. package/dist/agents/gitmcp/gitmcp.types.d.ts +31 -0
  63. package/dist/agents/gitmcp/gitmcp.types.d.ts.map +1 -0
  64. package/dist/agents/gitmcp/gitmcp.types.js +6 -0
  65. package/dist/agents/gitmcp/gitmcp.types.js.map +1 -0
  66. package/dist/agents/gitmcp/gitmcp.yaml +71 -0
  67. package/dist/agents/gitmcp/index.d.ts +16 -0
  68. package/dist/agents/gitmcp/index.d.ts.map +1 -0
  69. package/dist/agents/gitmcp/index.js +21 -0
  70. package/dist/agents/gitmcp/index.js.map +1 -0
  71. package/dist/agents/image/image.handler.d.ts +8 -0
  72. package/dist/agents/image/image.handler.d.ts.map +1 -0
  73. package/dist/agents/image/image.handler.js +69 -0
  74. package/dist/agents/image/image.handler.js.map +1 -0
  75. package/dist/agents/image/image.schema.d.ts +29 -0
  76. package/dist/agents/image/image.schema.d.ts.map +1 -0
  77. package/dist/agents/image/image.schema.js +26 -0
  78. package/dist/agents/image/image.schema.js.map +1 -0
  79. package/dist/agents/image/image.types.d.ts +43 -0
  80. package/dist/agents/image/image.types.d.ts.map +1 -0
  81. package/dist/agents/image/image.types.js +6 -0
  82. package/dist/agents/image/image.types.js.map +1 -0
  83. package/{src/agents/image-agent.yaml → dist/agents/image/image.yaml} +21 -21
  84. package/dist/agents/image/index.d.ts +14 -0
  85. package/dist/agents/image/index.d.ts.map +1 -0
  86. package/dist/agents/image/index.js +19 -0
  87. package/dist/agents/image/index.js.map +1 -0
  88. package/dist/agents/index.d.ts +104 -0
  89. package/dist/agents/index.d.ts.map +1 -0
  90. package/dist/agents/index.js +82 -0
  91. package/dist/agents/index.js.map +1 -0
  92. package/dist/agents/joker/index.d.ts +14 -0
  93. package/dist/agents/joker/index.d.ts.map +1 -0
  94. package/dist/agents/joker/index.js +19 -0
  95. package/dist/agents/joker/index.js.map +1 -0
  96. package/dist/agents/joker/joker.handler.d.ts +8 -0
  97. package/dist/agents/joker/joker.handler.d.ts.map +1 -0
  98. package/dist/agents/joker/joker.handler.js +44 -0
  99. package/dist/agents/joker/joker.handler.js.map +1 -0
  100. package/dist/agents/joker/joker.schema.d.ts +12 -0
  101. package/dist/agents/joker/joker.schema.d.ts.map +1 -0
  102. package/dist/agents/joker/joker.schema.js +13 -0
  103. package/dist/agents/joker/joker.schema.js.map +1 -0
  104. package/dist/agents/joker/joker.types.d.ts +36 -0
  105. package/dist/agents/joker/joker.types.d.ts.map +1 -0
  106. package/dist/agents/joker/joker.types.js +6 -0
  107. package/dist/agents/joker/joker.types.js.map +1 -0
  108. package/{src/agents/joker-agent.yaml → dist/agents/joker/joker.yaml} +4 -4
  109. package/dist/agents/llm/index.d.ts +15 -0
  110. package/dist/agents/llm/index.d.ts.map +1 -0
  111. package/dist/agents/llm/index.js +20 -0
  112. package/dist/agents/llm/index.js.map +1 -0
  113. package/dist/agents/llm/llm.handler.d.ts +8 -0
  114. package/dist/agents/llm/llm.handler.d.ts.map +1 -0
  115. package/dist/agents/llm/llm.handler.js +64 -0
  116. package/dist/agents/llm/llm.handler.js.map +1 -0
  117. package/dist/agents/llm/llm.schema.d.ts +26 -0
  118. package/dist/agents/llm/llm.schema.d.ts.map +1 -0
  119. package/dist/agents/llm/llm.schema.js +23 -0
  120. package/dist/agents/llm/llm.schema.js.map +1 -0
  121. package/dist/agents/llm/llm.types.d.ts +34 -0
  122. package/dist/agents/llm/llm.types.d.ts.map +1 -0
  123. package/dist/agents/llm/llm.types.js +7 -0
  124. package/dist/agents/llm/llm.types.js.map +1 -0
  125. package/dist/agents/llm/llm.yaml +87 -0
  126. package/dist/agents/mcp-tool/index.d.ts +14 -0
  127. package/dist/agents/mcp-tool/index.d.ts.map +1 -0
  128. package/dist/agents/mcp-tool/index.js +19 -0
  129. package/dist/agents/mcp-tool/index.js.map +1 -0
  130. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts +12 -0
  131. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts.map +1 -0
  132. package/dist/agents/mcp-tool/mcp-tool.handler.js +116 -0
  133. package/dist/agents/mcp-tool/mcp-tool.handler.js.map +1 -0
  134. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts +19 -0
  135. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts.map +1 -0
  136. package/dist/agents/mcp-tool/mcp-tool.schema.js +20 -0
  137. package/dist/agents/mcp-tool/mcp-tool.schema.js.map +1 -0
  138. package/dist/agents/mcp-tool/mcp-tool.types.d.ts +31 -0
  139. package/dist/agents/mcp-tool/mcp-tool.types.d.ts.map +1 -0
  140. package/dist/agents/mcp-tool/mcp-tool.types.js +6 -0
  141. package/dist/agents/mcp-tool/mcp-tool.types.js.map +1 -0
  142. package/dist/agents/mcp-tool/mcp-tool.yaml +71 -0
  143. package/dist/agents/rag/index.d.ts +15 -0
  144. package/dist/agents/rag/index.d.ts.map +1 -0
  145. package/dist/agents/rag/index.js +20 -0
  146. package/dist/agents/rag/index.js.map +1 -0
  147. package/dist/agents/rag/rag.handler.d.ts +9 -0
  148. package/dist/agents/rag/rag.handler.d.ts.map +1 -0
  149. package/dist/agents/rag/rag.handler.js +78 -0
  150. package/dist/agents/rag/rag.handler.js.map +1 -0
  151. package/dist/agents/rag/rag.schema.d.ts +27 -0
  152. package/dist/agents/rag/rag.schema.d.ts.map +1 -0
  153. package/dist/agents/rag/rag.schema.js +24 -0
  154. package/dist/agents/rag/rag.schema.js.map +1 -0
  155. package/dist/agents/rag/rag.types.d.ts +42 -0
  156. package/dist/agents/rag/rag.types.d.ts.map +1 -0
  157. package/dist/agents/rag/rag.types.js +7 -0
  158. package/dist/agents/rag/rag.types.js.map +1 -0
  159. package/dist/agents/rag/rag.yaml +89 -0
  160. package/dist/agents/{agentRegistry.d.ts → registry/agentRegistry.d.ts} +30 -1
  161. package/dist/agents/registry/agentRegistry.d.ts.map +1 -0
  162. package/dist/agents/{agentRegistry.js → registry/agentRegistry.js} +187 -5
  163. package/dist/agents/registry/agentRegistry.js.map +1 -0
  164. package/dist/agents/registry/index.d.ts +6 -0
  165. package/dist/agents/registry/index.d.ts.map +1 -0
  166. package/dist/agents/registry/index.js +10 -0
  167. package/dist/agents/registry/index.js.map +1 -0
  168. package/dist/agents/translator/index.d.ts +14 -0
  169. package/dist/agents/translator/index.d.ts.map +1 -0
  170. package/dist/agents/translator/index.js +19 -0
  171. package/dist/agents/translator/index.js.map +1 -0
  172. package/dist/agents/translator/translator.handler.d.ts +8 -0
  173. package/dist/agents/translator/translator.handler.d.ts.map +1 -0
  174. package/dist/agents/translator/translator.handler.js +81 -0
  175. package/dist/agents/translator/translator.handler.js.map +1 -0
  176. package/dist/agents/translator/translator.schema.d.ts +27 -0
  177. package/dist/agents/translator/translator.schema.d.ts.map +1 -0
  178. package/dist/agents/translator/translator.schema.js +28 -0
  179. package/dist/agents/translator/translator.schema.js.map +1 -0
  180. package/dist/agents/translator/translator.types.d.ts +41 -0
  181. package/dist/agents/translator/translator.types.d.ts.map +1 -0
  182. package/dist/agents/translator/translator.types.js +6 -0
  183. package/dist/agents/translator/translator.types.js.map +1 -0
  184. package/{src/agents/translator-agent.yaml → dist/agents/translator/translator.yaml} +27 -27
  185. package/dist/client/index.d.ts +89 -0
  186. package/dist/client/index.d.ts.map +1 -0
  187. package/dist/client/index.js +93 -0
  188. package/dist/client/index.js.map +1 -0
  189. package/dist/client/types.d.ts +17 -0
  190. package/dist/client/types.d.ts.map +1 -0
  191. package/dist/client/types.js +7 -0
  192. package/dist/client/types.js.map +1 -0
  193. package/dist/firebase/tenantManager.d.ts +34 -2
  194. package/dist/firebase/tenantManager.d.ts.map +1 -1
  195. package/dist/firebase/tenantManager.js +67 -1
  196. package/dist/firebase/tenantManager.js.map +1 -1
  197. package/dist/index.d.ts +10 -4
  198. package/dist/index.d.ts.map +1 -1
  199. package/dist/index.js +24 -7
  200. package/dist/index.js.map +1 -1
  201. package/dist/runtime/declarativeAgentRuntime.d.ts +17 -52
  202. package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -1
  203. package/dist/runtime/declarativeAgentRuntime.js +259 -361
  204. package/dist/runtime/declarativeAgentRuntime.js.map +1 -1
  205. package/dist/runtime/index.d.ts +14 -0
  206. package/dist/runtime/index.d.ts.map +1 -0
  207. package/dist/runtime/index.js +38 -0
  208. package/dist/runtime/index.js.map +1 -0
  209. package/dist/runtime/llmProviderFactory.d.ts +47 -0
  210. package/dist/runtime/llmProviderFactory.d.ts.map +1 -0
  211. package/dist/runtime/llmProviderFactory.js +119 -0
  212. package/dist/runtime/llmProviderFactory.js.map +1 -0
  213. package/dist/runtime/workflowExecutor.d.ts +31 -0
  214. package/dist/runtime/workflowExecutor.d.ts.map +1 -0
  215. package/dist/runtime/workflowExecutor.js +80 -0
  216. package/dist/runtime/workflowExecutor.js.map +1 -0
  217. package/dist/server/api/graphql.js +3 -3
  218. package/dist/server/api/graphql.js.map +1 -1
  219. package/dist/server/index.d.ts +2 -2
  220. package/dist/server/index.d.ts.map +1 -1
  221. package/dist/server/index.js +2 -2
  222. package/dist/server/index.js.map +1 -1
  223. package/dist/shared/index.d.ts +7 -0
  224. package/dist/shared/index.d.ts.map +1 -0
  225. package/dist/shared/index.js +23 -0
  226. package/dist/shared/index.js.map +1 -0
  227. package/dist/shared/types/agent.types.d.ts +63 -0
  228. package/dist/shared/types/agent.types.d.ts.map +1 -0
  229. package/dist/shared/types/agent.types.js +18 -0
  230. package/dist/shared/types/agent.types.js.map +1 -0
  231. package/dist/shared/types/execution.types.d.ts +42 -0
  232. package/dist/shared/types/execution.types.d.ts.map +1 -0
  233. package/dist/shared/types/execution.types.js +7 -0
  234. package/dist/shared/types/execution.types.js.map +1 -0
  235. package/dist/shared/types/index.d.ts +7 -0
  236. package/dist/shared/types/index.d.ts.map +1 -0
  237. package/dist/shared/types/index.js +23 -0
  238. package/dist/shared/types/index.js.map +1 -0
  239. package/dist/shared/types/schema.types.d.ts +52 -0
  240. package/dist/shared/types/schema.types.d.ts.map +1 -0
  241. package/dist/shared/types/schema.types.js +7 -0
  242. package/dist/shared/types/schema.types.js.map +1 -0
  243. package/dist/shared/utils/index.d.ts +5 -0
  244. package/dist/shared/utils/index.d.ts.map +1 -0
  245. package/dist/shared/utils/index.js +21 -0
  246. package/dist/shared/utils/index.js.map +1 -0
  247. package/dist/shared/utils/validation.d.ts +42 -0
  248. package/dist/shared/utils/validation.d.ts.map +1 -0
  249. package/dist/shared/utils/validation.js +93 -0
  250. package/dist/shared/utils/validation.js.map +1 -0
  251. package/dist/tenant/TenantManager.d.ts +152 -0
  252. package/dist/tenant/TenantManager.d.ts.map +1 -0
  253. package/dist/tenant/TenantManager.js +392 -0
  254. package/dist/tenant/TenantManager.js.map +1 -0
  255. package/dist/tenant/index.d.ts +47 -0
  256. package/dist/tenant/index.d.ts.map +1 -0
  257. package/dist/tenant/index.js +74 -0
  258. package/dist/tenant/index.js.map +1 -0
  259. package/dist/tenant/interfaces.d.ts +170 -0
  260. package/dist/tenant/interfaces.d.ts.map +1 -0
  261. package/dist/tenant/interfaces.js +67 -0
  262. package/dist/tenant/interfaces.js.map +1 -0
  263. package/dist/tenant/providerFactory.d.ts +43 -0
  264. package/dist/tenant/providerFactory.d.ts.map +1 -0
  265. package/dist/tenant/providerFactory.js +70 -0
  266. package/dist/tenant/providerFactory.js.map +1 -0
  267. package/dist/tenant/providerRegistry.d.ts +47 -0
  268. package/dist/tenant/providerRegistry.d.ts.map +1 -0
  269. package/dist/tenant/providerRegistry.js +79 -0
  270. package/dist/tenant/providerRegistry.js.map +1 -0
  271. package/dist/tenant/providers/FirebaseTenantProvider.d.ts +41 -0
  272. package/dist/tenant/providers/FirebaseTenantProvider.d.ts.map +1 -0
  273. package/dist/tenant/providers/FirebaseTenantProvider.js +290 -0
  274. package/dist/tenant/providers/FirebaseTenantProvider.js.map +1 -0
  275. package/dist/tenant/providers/InMemoryTenantProvider.d.ts +18 -0
  276. package/dist/tenant/providers/InMemoryTenantProvider.d.ts.map +1 -0
  277. package/dist/tenant/providers/InMemoryTenantProvider.js +137 -0
  278. package/dist/tenant/providers/InMemoryTenantProvider.js.map +1 -0
  279. package/package.json +46 -10
  280. package/src/agents/chat/chat.handler.ts +211 -0
  281. package/src/agents/chat/chat.schema.ts +33 -0
  282. package/src/agents/chat/chat.types.ts +46 -0
  283. package/src/agents/chat/chat.yaml +148 -0
  284. package/src/agents/chat/index.ts +21 -0
  285. package/src/agents/chromadb/chromadb.handler.ts +130 -0
  286. package/src/agents/chromadb/chromadb.schema.ts +35 -0
  287. package/src/agents/chromadb/chromadb.types.ts +52 -0
  288. package/src/agents/chromadb/chromadb.yaml +128 -0
  289. package/src/agents/chromadb/index.ts +20 -0
  290. package/src/agents/gemini-vectorize/gemini-vectorize.handler.ts +75 -0
  291. package/src/agents/gemini-vectorize/gemini-vectorize.schema.ts +22 -0
  292. package/src/agents/gemini-vectorize/gemini-vectorize.types.ts +34 -0
  293. package/src/agents/gemini-vectorize/gemini-vectorize.yaml +84 -0
  294. package/src/agents/gemini-vectorize/index.ts +20 -0
  295. package/src/agents/gitmcp/gitmcp.handler.ts +122 -0
  296. package/src/agents/gitmcp/gitmcp.schema.ts +20 -0
  297. package/src/agents/gitmcp/gitmcp.types.ts +33 -0
  298. package/src/agents/gitmcp/gitmcp.yaml +71 -0
  299. package/src/agents/gitmcp/index.ts +21 -0
  300. package/src/agents/image/image.handler.ts +86 -0
  301. package/src/agents/image/image.schema.ts +28 -0
  302. package/src/agents/image/image.types.ts +46 -0
  303. package/src/agents/image/image.yaml +86 -0
  304. package/src/agents/image/index.ts +19 -0
  305. package/src/agents/index.ts +63 -0
  306. package/src/agents/joker/index.ts +19 -0
  307. package/src/agents/joker/joker.handler.ts +55 -0
  308. package/src/agents/joker/joker.schema.ts +15 -0
  309. package/src/agents/joker/joker.types.ts +38 -0
  310. package/src/agents/joker/joker.yaml +47 -0
  311. package/src/agents/llm/index.ts +20 -0
  312. package/src/agents/llm/llm.handler.ts +82 -0
  313. package/src/agents/llm/llm.schema.ts +25 -0
  314. package/src/agents/llm/llm.types.ts +37 -0
  315. package/src/agents/llm/llm.yaml +87 -0
  316. package/src/agents/mcp-tool/index.ts +19 -0
  317. package/src/agents/mcp-tool/mcp-tool.handler.ts +112 -0
  318. package/src/agents/mcp-tool/mcp-tool.schema.ts +22 -0
  319. package/src/agents/mcp-tool/mcp-tool.types.ts +33 -0
  320. package/src/agents/mcp-tool/mcp-tool.yaml +71 -0
  321. package/src/agents/rag/index.ts +20 -0
  322. package/src/agents/rag/rag.handler.ts +95 -0
  323. package/src/agents/rag/rag.schema.ts +26 -0
  324. package/src/agents/rag/rag.types.ts +45 -0
  325. package/src/agents/rag/rag.yaml +89 -0
  326. package/src/agents/{agentRegistry.ts → registry/agentRegistry.ts} +195 -6
  327. package/src/agents/registry/index.ts +6 -0
  328. package/src/agents/translator/index.ts +19 -0
  329. package/src/agents/translator/translator.handler.ts +97 -0
  330. package/src/agents/translator/translator.schema.ts +30 -0
  331. package/src/agents/translator/translator.types.ts +43 -0
  332. package/src/agents/translator/translator.yaml +80 -0
  333. package/src/client/index.ts +53 -0
  334. package/src/client/types.ts +38 -0
  335. package/src/index.ts +56 -5
  336. package/src/runtime/declarativeAgentRuntime.ts +378 -495
  337. package/src/runtime/index.ts +36 -0
  338. package/src/runtime/llmProviderFactory.ts +145 -0
  339. package/src/runtime/workflowExecutor.ts +107 -0
  340. package/src/server/api/graphql.ts +1 -1
  341. package/src/server/index.ts +2 -2
  342. package/src/shared/index.ts +7 -0
  343. package/src/shared/types/agent.types.ts +100 -0
  344. package/src/shared/types/execution.types.ts +45 -0
  345. package/src/shared/types/index.ts +7 -0
  346. package/src/shared/types/schema.types.ts +55 -0
  347. package/src/shared/utils/index.ts +5 -0
  348. package/src/shared/utils/validation.ts +100 -0
  349. package/src/tenant/TenantManager.ts +488 -0
  350. package/src/tenant/index.ts +101 -0
  351. package/src/tenant/interfaces.ts +231 -0
  352. package/src/tenant/providerFactory.ts +75 -0
  353. package/src/tenant/providerRegistry.ts +86 -0
  354. package/src/tenant/providers/InMemoryTenantProvider.ts +168 -0
  355. package/dist/agents/agentRegistry.d.ts.map +0 -1
  356. package/dist/agents/agentRegistry.js.map +0 -1
  357. package/src/firebase/tenantManager.ts +0 -443
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Agnostic Multi-Tenant Interfaces
3
+ * Provider-independent abstractions for multi-tenant operations
4
+ */
5
+ /**
6
+ * Built-in provider type
7
+ */
8
+ export type BuiltInProviderType = 'memory';
9
+ /**
10
+ * Provider type accepts built-in or any registered external type
11
+ */
12
+ export type ProviderType = BuiltInProviderType | string;
13
+ /**
14
+ * Firebase-specific provider configuration
15
+ */
16
+ export interface FirebaseProviderConfig {
17
+ projectId: string;
18
+ databaseURL: string;
19
+ storageBucket: string;
20
+ }
21
+ /**
22
+ * In-memory provider configuration (for testing)
23
+ */
24
+ export interface MemoryProviderConfig {
25
+ persistToDisk?: boolean;
26
+ }
27
+ /**
28
+ * Provider-agnostic tenant configuration
29
+ */
30
+ export interface TenantConfig {
31
+ tenantId: string;
32
+ securityProfile: 'ultra-secure' | 'tenant-isolated';
33
+ dataRetentionDays: number;
34
+ lgpdEnabled: boolean;
35
+ gdprEnabled: boolean;
36
+ provider: ProviderType;
37
+ providerConfig: FirebaseProviderConfig | MemoryProviderConfig;
38
+ }
39
+ /**
40
+ * Abstract provider interface for tenant management
41
+ * Implements Strategy pattern for swappable backends
42
+ */
43
+ export interface ITenantProvider {
44
+ /**
45
+ * Initialize a new tenant with the given configuration
46
+ * @throws TenantAlreadyExistsError if tenant already exists
47
+ * @throws ValidationError if configuration is invalid
48
+ */
49
+ initialize(config: TenantConfig): Promise<ITenantApp>;
50
+ /**
51
+ * Get an existing tenant app by ID
52
+ * @throws NotFoundError if tenant does not exist
53
+ */
54
+ get(tenantId: string): ITenantApp;
55
+ /**
56
+ * Remove a tenant and release all associated resources
57
+ * @throws NotFoundError if tenant does not exist
58
+ */
59
+ remove(tenantId: string): Promise<void>;
60
+ /**
61
+ * List all active tenant IDs
62
+ */
63
+ list(): string[];
64
+ /**
65
+ * The type of this provider
66
+ */
67
+ readonly type: ProviderType;
68
+ }
69
+ /**
70
+ * Abstract tenant app representing an isolated tenant instance
71
+ */
72
+ export interface ITenantApp {
73
+ /**
74
+ * Unique identifier for this tenant
75
+ */
76
+ readonly tenantId: string;
77
+ /**
78
+ * Get the database interface for this tenant
79
+ */
80
+ getDatabase(): ITenantDatabase;
81
+ /**
82
+ * Destroy this tenant app and release resources
83
+ */
84
+ destroy(): Promise<void>;
85
+ }
86
+ /**
87
+ * Abstract database interface for tenant data operations
88
+ */
89
+ export interface ITenantDatabase {
90
+ /**
91
+ * Get a collection by name
92
+ */
93
+ collection(name: string): ITenantCollection;
94
+ }
95
+ /**
96
+ * Abstract collection interface for document operations
97
+ */
98
+ export interface ITenantCollection {
99
+ /**
100
+ * Get a document reference by ID
101
+ */
102
+ doc(id: string): ITenantDocument;
103
+ /**
104
+ * Add a new document with auto-generated ID
105
+ * @returns The generated document ID
106
+ */
107
+ add(data: Record<string, unknown>): Promise<string>;
108
+ /**
109
+ * Get all documents in this collection
110
+ */
111
+ get(): Promise<Array<{
112
+ id: string;
113
+ data: Record<string, unknown>;
114
+ }>>;
115
+ }
116
+ /**
117
+ * Abstract document interface for CRUD operations
118
+ */
119
+ export interface ITenantDocument {
120
+ /**
121
+ * Get the document data
122
+ * @returns Document data or null if not found
123
+ */
124
+ get(): Promise<Record<string, unknown> | null>;
125
+ /**
126
+ * Set the document data (creates or overwrites)
127
+ */
128
+ set(data: Record<string, unknown>): Promise<void>;
129
+ /**
130
+ * Update specific fields in the document
131
+ * @throws NotFoundError if document does not exist
132
+ */
133
+ update(data: Record<string, unknown>): Promise<void>;
134
+ /**
135
+ * Delete the document
136
+ */
137
+ delete(): Promise<void>;
138
+ }
139
+ /**
140
+ * Base error for tenant operations
141
+ */
142
+ export declare class TenantError extends Error {
143
+ code?: string | undefined;
144
+ constructor(message: string, code?: string | undefined);
145
+ }
146
+ /**
147
+ * Thrown when configuration validation fails
148
+ */
149
+ export declare class ValidationError extends TenantError {
150
+ constructor(message: string);
151
+ }
152
+ /**
153
+ * Thrown when a requested resource is not found
154
+ */
155
+ export declare class NotFoundError extends TenantError {
156
+ constructor(message: string);
157
+ }
158
+ /**
159
+ * Thrown when an operation is not supported by the provider
160
+ */
161
+ export declare class NotSupportedError extends TenantError {
162
+ constructor(message: string);
163
+ }
164
+ /**
165
+ * Thrown when attempting to create a tenant that already exists
166
+ */
167
+ export declare class TenantAlreadyExistsError extends TenantError {
168
+ constructor(tenantId: string);
169
+ }
170
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/tenant/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Agnostic Multi-Tenant Interfaces
4
+ * Provider-independent abstractions for multi-tenant operations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TenantAlreadyExistsError = exports.NotSupportedError = exports.NotFoundError = exports.ValidationError = exports.TenantError = void 0;
8
+ // =============================================================================
9
+ // Error Types
10
+ // =============================================================================
11
+ /**
12
+ * Base error for tenant operations
13
+ */
14
+ class TenantError extends Error {
15
+ constructor(message, code) {
16
+ super(message);
17
+ this.code = code;
18
+ this.name = 'TenantError';
19
+ Object.setPrototypeOf(this, TenantError.prototype);
20
+ }
21
+ }
22
+ exports.TenantError = TenantError;
23
+ /**
24
+ * Thrown when configuration validation fails
25
+ */
26
+ class ValidationError extends TenantError {
27
+ constructor(message) {
28
+ super(message, 'VALIDATION_ERROR');
29
+ this.name = 'ValidationError';
30
+ Object.setPrototypeOf(this, ValidationError.prototype);
31
+ }
32
+ }
33
+ exports.ValidationError = ValidationError;
34
+ /**
35
+ * Thrown when a requested resource is not found
36
+ */
37
+ class NotFoundError extends TenantError {
38
+ constructor(message) {
39
+ super(message, 'NOT_FOUND');
40
+ this.name = 'NotFoundError';
41
+ Object.setPrototypeOf(this, NotFoundError.prototype);
42
+ }
43
+ }
44
+ exports.NotFoundError = NotFoundError;
45
+ /**
46
+ * Thrown when an operation is not supported by the provider
47
+ */
48
+ class NotSupportedError extends TenantError {
49
+ constructor(message) {
50
+ super(message, 'NOT_SUPPORTED');
51
+ this.name = 'NotSupportedError';
52
+ Object.setPrototypeOf(this, NotSupportedError.prototype);
53
+ }
54
+ }
55
+ exports.NotSupportedError = NotSupportedError;
56
+ /**
57
+ * Thrown when attempting to create a tenant that already exists
58
+ */
59
+ class TenantAlreadyExistsError extends TenantError {
60
+ constructor(tenantId) {
61
+ super(`Tenant '${tenantId}' already exists`, 'TENANT_EXISTS');
62
+ this.name = 'TenantAlreadyExistsError';
63
+ Object.setPrototypeOf(this, TenantAlreadyExistsError.prototype);
64
+ }
65
+ }
66
+ exports.TenantAlreadyExistsError = TenantAlreadyExistsError;
67
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/tenant/interfaces.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA0KH,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;GAEG;AACH,MAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe,EAAS,IAAa;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QADmB,SAAI,GAAJ,IAAI,CAAS;QAE/C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;CACF;AAND,kCAMC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,WAAW;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;CACF;AAND,0CAMC;AAED;;GAEG;AACH,MAAa,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACF;AAND,sCAMC;AAED;;GAEG;AACH,MAAa,iBAAkB,SAAQ,WAAW;IAChD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;CACF;AAND,8CAMC;AAED;;GAEG;AACH,MAAa,wBAAyB,SAAQ,WAAW;IACvD,YAAY,QAAgB;QAC1B,KAAK,CAAC,WAAW,QAAQ,kBAAkB,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAND,4DAMC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Provider Factory
3
+ * Factory function for creating tenant providers based on configuration
4
+ * Uses ProviderRegistry for dynamic provider registration
5
+ */
6
+ import { ProviderType, ITenantProvider, BuiltInProviderType } from './interfaces';
7
+ /**
8
+ * Check if a value is a valid built-in ProviderType
9
+ */
10
+ export declare function isBuiltInProviderType(type: unknown): type is BuiltInProviderType;
11
+ /**
12
+ * Check if a value is a valid ProviderType (built-in or registered)
13
+ */
14
+ export declare function isValidProviderType(type: unknown): type is ProviderType;
15
+ /**
16
+ * Create a tenant provider instance based on the specified type
17
+ *
18
+ * @param type - The provider type to create (built-in or registered)
19
+ * @returns An instance of ITenantProvider for the specified type
20
+ * @throws ValidationError if the provider type is not registered
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Create an in-memory provider for testing (built-in)
25
+ * const memoryProvider = createProvider('memory');
26
+ *
27
+ * // Create a Firebase provider (must be registered by application first)
28
+ * // In your app: ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
29
+ * const firebaseProvider = createProvider('firebase');
30
+ * ```
31
+ */
32
+ export declare function createProvider(type: ProviderType): ITenantProvider;
33
+ /**
34
+ * Get the list of supported provider types (built-in + registered)
35
+ * @returns Array of supported provider type strings
36
+ */
37
+ export declare function getSupportedProviders(): string[];
38
+ /**
39
+ * Get the list of built-in provider types
40
+ * @returns Array of built-in provider type strings
41
+ */
42
+ export declare function getBuiltInProviders(): readonly BuiltInProviderType[];
43
+ //# sourceMappingURL=providerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerFactory.d.ts","sourceRoot":"","sources":["../../src/tenant/providerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAYtB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,mBAAmB,CAEhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAKvE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAElE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,mBAAmB,EAAE,CAEpE"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * Provider Factory
4
+ * Factory function for creating tenant providers based on configuration
5
+ * Uses ProviderRegistry for dynamic provider registration
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.isBuiltInProviderType = isBuiltInProviderType;
9
+ exports.isValidProviderType = isValidProviderType;
10
+ exports.createProvider = createProvider;
11
+ exports.getSupportedProviders = getSupportedProviders;
12
+ exports.getBuiltInProviders = getBuiltInProviders;
13
+ const providerRegistry_1 = require("./providerRegistry");
14
+ const InMemoryTenantProvider_1 = require("./providers/InMemoryTenantProvider");
15
+ /**
16
+ * Built-in provider types
17
+ */
18
+ const BUILTIN_PROVIDERS = ['memory'];
19
+ // Register built-in provider on module load
20
+ providerRegistry_1.ProviderRegistry.register('memory', () => new InMemoryTenantProvider_1.InMemoryTenantProvider());
21
+ /**
22
+ * Check if a value is a valid built-in ProviderType
23
+ */
24
+ function isBuiltInProviderType(type) {
25
+ return typeof type === 'string' && BUILTIN_PROVIDERS.includes(type);
26
+ }
27
+ /**
28
+ * Check if a value is a valid ProviderType (built-in or registered)
29
+ */
30
+ function isValidProviderType(type) {
31
+ if (typeof type !== 'string') {
32
+ return false;
33
+ }
34
+ return isBuiltInProviderType(type) || providerRegistry_1.ProviderRegistry.isRegistered(type);
35
+ }
36
+ /**
37
+ * Create a tenant provider instance based on the specified type
38
+ *
39
+ * @param type - The provider type to create (built-in or registered)
40
+ * @returns An instance of ITenantProvider for the specified type
41
+ * @throws ValidationError if the provider type is not registered
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // Create an in-memory provider for testing (built-in)
46
+ * const memoryProvider = createProvider('memory');
47
+ *
48
+ * // Create a Firebase provider (must be registered by application first)
49
+ * // In your app: ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
50
+ * const firebaseProvider = createProvider('firebase');
51
+ * ```
52
+ */
53
+ function createProvider(type) {
54
+ return providerRegistry_1.ProviderRegistry.create(type);
55
+ }
56
+ /**
57
+ * Get the list of supported provider types (built-in + registered)
58
+ * @returns Array of supported provider type strings
59
+ */
60
+ function getSupportedProviders() {
61
+ return providerRegistry_1.ProviderRegistry.getRegisteredTypes();
62
+ }
63
+ /**
64
+ * Get the list of built-in provider types
65
+ * @returns Array of built-in provider type strings
66
+ */
67
+ function getBuiltInProviders() {
68
+ return BUILTIN_PROVIDERS;
69
+ }
70
+ //# sourceMappingURL=providerFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerFactory.js","sourceRoot":"","sources":["../../src/tenant/providerFactory.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAqBH,sDAEC;AAKD,kDAKC;AAmBD,wCAEC;AAMD,sDAEC;AAMD,kDAEC;AA/DD,yDAAsD;AACtD,+EAA4E;AAE5E;;GAEG;AACH,MAAM,iBAAiB,GAAmC,CAAC,QAAQ,CAAU,CAAC;AAE9E,4CAA4C;AAC5C,mCAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,+CAAsB,EAAE,CAAC,CAAC;AAExE;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAa;IACjD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAA2B,CAAC,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,IAAa;IAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,mCAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,cAAc,CAAC,IAAkB;IAC/C,OAAO,mCAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,qBAAqB;IACnC,OAAO,mCAAgB,CAAC,kBAAkB,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Provider Registry
3
+ * Dynamic registration system for external tenant providers
4
+ * Allows applications to register custom providers at runtime
5
+ */
6
+ import { ITenantProvider } from './interfaces';
7
+ type ProviderFactory = () => ITenantProvider;
8
+ /**
9
+ * Registry for tenant providers
10
+ * Applications register their providers here before using TenantManager
11
+ */
12
+ declare class ProviderRegistryClass {
13
+ private providers;
14
+ /**
15
+ * Register a provider factory
16
+ * @param type - Unique provider type identifier
17
+ * @param factory - Factory function that creates the provider instance
18
+ * @throws ValidationError if type is already registered
19
+ */
20
+ register(type: string, factory: ProviderFactory): void;
21
+ /**
22
+ * Unregister a provider
23
+ * @param type - Provider type to remove
24
+ */
25
+ unregister(type: string): void;
26
+ /**
27
+ * Create a provider instance
28
+ * @param type - Provider type to create
29
+ * @throws ValidationError if provider type is not registered
30
+ */
31
+ create(type: string): ITenantProvider;
32
+ /**
33
+ * Check if a provider type is registered
34
+ */
35
+ isRegistered(type: string): boolean;
36
+ /**
37
+ * Get all registered provider types
38
+ */
39
+ getRegisteredTypes(): string[];
40
+ /**
41
+ * Clear all registered providers (useful for testing)
42
+ */
43
+ clear(): void;
44
+ }
45
+ export declare const ProviderRegistry: ProviderRegistryClass;
46
+ export {};
47
+ //# sourceMappingURL=providerRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerRegistry.d.ts","sourceRoot":"","sources":["../../src/tenant/providerRegistry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAmB,MAAM,cAAc,CAAC;AAEhE,KAAK,eAAe,GAAG,MAAM,eAAe,CAAC;AAE7C;;;GAGG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAA2C;IAE5D;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAatD;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAcrC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED,eAAO,MAAM,gBAAgB,uBAA8B,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * Provider Registry
4
+ * Dynamic registration system for external tenant providers
5
+ * Allows applications to register custom providers at runtime
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ProviderRegistry = void 0;
9
+ const interfaces_1 = require("./interfaces");
10
+ /**
11
+ * Registry for tenant providers
12
+ * Applications register their providers here before using TenantManager
13
+ */
14
+ class ProviderRegistryClass {
15
+ constructor() {
16
+ this.providers = new Map();
17
+ }
18
+ /**
19
+ * Register a provider factory
20
+ * @param type - Unique provider type identifier
21
+ * @param factory - Factory function that creates the provider instance
22
+ * @throws ValidationError if type is already registered
23
+ */
24
+ register(type, factory) {
25
+ if (!type || typeof type !== 'string') {
26
+ throw new interfaces_1.ValidationError('Provider type must be a non-empty string');
27
+ }
28
+ if (typeof factory !== 'function') {
29
+ throw new interfaces_1.ValidationError('Provider factory must be a function');
30
+ }
31
+ if (this.providers.has(type)) {
32
+ throw new interfaces_1.ValidationError(`Provider type '${type}' is already registered`);
33
+ }
34
+ this.providers.set(type, factory);
35
+ }
36
+ /**
37
+ * Unregister a provider
38
+ * @param type - Provider type to remove
39
+ */
40
+ unregister(type) {
41
+ this.providers.delete(type);
42
+ }
43
+ /**
44
+ * Create a provider instance
45
+ * @param type - Provider type to create
46
+ * @throws ValidationError if provider type is not registered
47
+ */
48
+ create(type) {
49
+ const factory = this.providers.get(type);
50
+ if (!factory) {
51
+ const registered = this.getRegisteredTypes();
52
+ const available = registered.length > 0
53
+ ? `Available types: ${registered.join(', ')}`
54
+ : 'No providers registered';
55
+ throw new interfaces_1.ValidationError(`Unknown provider type: '${type}'. ${available}`);
56
+ }
57
+ return factory();
58
+ }
59
+ /**
60
+ * Check if a provider type is registered
61
+ */
62
+ isRegistered(type) {
63
+ return this.providers.has(type);
64
+ }
65
+ /**
66
+ * Get all registered provider types
67
+ */
68
+ getRegisteredTypes() {
69
+ return Array.from(this.providers.keys());
70
+ }
71
+ /**
72
+ * Clear all registered providers (useful for testing)
73
+ */
74
+ clear() {
75
+ this.providers.clear();
76
+ }
77
+ }
78
+ exports.ProviderRegistry = new ProviderRegistryClass();
79
+ //# sourceMappingURL=providerRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providerRegistry.js","sourceRoot":"","sources":["../../src/tenant/providerRegistry.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,6CAAgE;AAIhE;;;GAGG;AACH,MAAM,qBAAqB;IAA3B;QACU,cAAS,GAAiC,IAAI,GAAG,EAAE,CAAC;IAoE9D,CAAC;IAlEC;;;;;OAKG;IACH,QAAQ,CAAC,IAAY,EAAE,OAAwB;QAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,4BAAe,CAAC,0CAA0C,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,4BAAe,CAAC,qCAAqC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,4BAAe,CAAC,kBAAkB,IAAI,yBAAyB,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;gBACrC,CAAC,CAAC,oBAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7C,CAAC,CAAC,yBAAyB,CAAC;YAC9B,MAAM,IAAI,4BAAe,CACvB,2BAA2B,IAAI,MAAM,SAAS,EAAE,CACjD,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAEY,QAAA,gBAAgB,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Firebase Tenant Provider
3
+ * Implements ITenantProvider using Firebase Admin SDK
4
+ * Extracted from MultiTenantFirebaseManager for provider-agnostic architecture
5
+ *
6
+ * NOTE: firebase-admin is an optional peer dependency.
7
+ * Install it separately if you want to use Firebase as a tenant provider:
8
+ *
9
+ * ```bash
10
+ * pnpm add firebase-admin
11
+ * ```
12
+ */
13
+ import { ITenantProvider, ITenantApp, TenantConfig, ProviderType } from '../interfaces';
14
+ /**
15
+ * Firebase implementation of ITenantProvider
16
+ * Provides multi-tenant isolation using Firebase Admin SDK
17
+ *
18
+ * NOTE: firebase-admin must be installed separately as a peer dependency.
19
+ */
20
+ export declare class FirebaseTenantProvider implements ITenantProvider {
21
+ readonly type: ProviderType;
22
+ private tenants;
23
+ private initialized;
24
+ /**
25
+ * Ensure firebase-admin is loaded before use
26
+ */
27
+ private ensureFirebaseLoaded;
28
+ /**
29
+ * Validate Firebase-specific provider configuration
30
+ */
31
+ private validateFirebaseConfig;
32
+ /**
33
+ * Validate tenant configuration
34
+ */
35
+ private validateTenantConfig;
36
+ initialize(config: TenantConfig): Promise<ITenantApp>;
37
+ get(tenantId: string): ITenantApp;
38
+ remove(tenantId: string): Promise<void>;
39
+ list(): string[];
40
+ }
41
+ //# sourceMappingURL=FirebaseTenantProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirebaseTenantProvider.d.ts","sourceRoot":"","sources":["../../../src/tenant/providers/FirebaseTenantProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,eAAe,EACf,UAAU,EAIV,YAAY,EACZ,YAAY,EAKb,MAAM,eAAe,CAAC;AAkLvB;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,SAAgB,IAAI,EAAE,YAAY,CAAc;IAChD,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;YACW,oBAAoB;IAOlC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAsB9B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkBtB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAiC3D,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAQ3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,IAAI,IAAI,MAAM,EAAE;CAGjB"}