beddel 0.2.2 → 0.2.3

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 (330) hide show
  1. package/CHANGELOG.md +15 -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 +143 -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 +150 -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 +58 -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 +66 -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 +42 -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 +95 -0
  89. package/dist/agents/index.d.ts.map +1 -0
  90. package/dist/agents/index.js +76 -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 +48 -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 +35 -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/mcp-tool/index.d.ts +14 -0
  110. package/dist/agents/mcp-tool/index.d.ts.map +1 -0
  111. package/dist/agents/mcp-tool/index.js +19 -0
  112. package/dist/agents/mcp-tool/index.js.map +1 -0
  113. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts +12 -0
  114. package/dist/agents/mcp-tool/mcp-tool.handler.d.ts.map +1 -0
  115. package/dist/agents/mcp-tool/mcp-tool.handler.js +116 -0
  116. package/dist/agents/mcp-tool/mcp-tool.handler.js.map +1 -0
  117. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts +19 -0
  118. package/dist/agents/mcp-tool/mcp-tool.schema.d.ts.map +1 -0
  119. package/dist/agents/mcp-tool/mcp-tool.schema.js +20 -0
  120. package/dist/agents/mcp-tool/mcp-tool.schema.js.map +1 -0
  121. package/dist/agents/mcp-tool/mcp-tool.types.d.ts +31 -0
  122. package/dist/agents/mcp-tool/mcp-tool.types.d.ts.map +1 -0
  123. package/dist/agents/mcp-tool/mcp-tool.types.js +6 -0
  124. package/dist/agents/mcp-tool/mcp-tool.types.js.map +1 -0
  125. package/dist/agents/mcp-tool/mcp-tool.yaml +71 -0
  126. package/dist/agents/rag/index.d.ts +15 -0
  127. package/dist/agents/rag/index.d.ts.map +1 -0
  128. package/dist/agents/rag/index.js +20 -0
  129. package/dist/agents/rag/index.js.map +1 -0
  130. package/dist/agents/rag/rag.handler.d.ts +8 -0
  131. package/dist/agents/rag/rag.handler.d.ts.map +1 -0
  132. package/dist/agents/rag/rag.handler.js +101 -0
  133. package/dist/agents/rag/rag.handler.js.map +1 -0
  134. package/dist/agents/rag/rag.schema.d.ts +27 -0
  135. package/dist/agents/rag/rag.schema.d.ts.map +1 -0
  136. package/dist/agents/rag/rag.schema.js +24 -0
  137. package/dist/agents/rag/rag.schema.js.map +1 -0
  138. package/dist/agents/rag/rag.types.d.ts +47 -0
  139. package/dist/agents/rag/rag.types.d.ts.map +1 -0
  140. package/dist/agents/rag/rag.types.js +6 -0
  141. package/dist/agents/rag/rag.types.js.map +1 -0
  142. package/dist/agents/rag/rag.yaml +89 -0
  143. package/dist/agents/{agentRegistry.d.ts → registry/agentRegistry.d.ts} +25 -1
  144. package/dist/agents/registry/agentRegistry.d.ts.map +1 -0
  145. package/dist/agents/{agentRegistry.js → registry/agentRegistry.js} +154 -4
  146. package/dist/agents/registry/agentRegistry.js.map +1 -0
  147. package/dist/agents/registry/index.d.ts +6 -0
  148. package/dist/agents/registry/index.d.ts.map +1 -0
  149. package/dist/agents/registry/index.js +10 -0
  150. package/dist/agents/registry/index.js.map +1 -0
  151. package/dist/agents/translator/index.d.ts +14 -0
  152. package/dist/agents/translator/index.d.ts.map +1 -0
  153. package/dist/agents/translator/index.js +19 -0
  154. package/dist/agents/translator/index.js.map +1 -0
  155. package/dist/agents/translator/translator.handler.d.ts +8 -0
  156. package/dist/agents/translator/translator.handler.d.ts.map +1 -0
  157. package/dist/agents/translator/translator.handler.js +83 -0
  158. package/dist/agents/translator/translator.handler.js.map +1 -0
  159. package/dist/agents/translator/translator.schema.d.ts +27 -0
  160. package/dist/agents/translator/translator.schema.d.ts.map +1 -0
  161. package/dist/agents/translator/translator.schema.js +28 -0
  162. package/dist/agents/translator/translator.schema.js.map +1 -0
  163. package/dist/agents/translator/translator.types.d.ts +40 -0
  164. package/dist/agents/translator/translator.types.d.ts.map +1 -0
  165. package/dist/agents/translator/translator.types.js +6 -0
  166. package/dist/agents/translator/translator.types.js.map +1 -0
  167. package/{src/agents/translator-agent.yaml → dist/agents/translator/translator.yaml} +27 -27
  168. package/dist/client/index.d.ts +89 -0
  169. package/dist/client/index.d.ts.map +1 -0
  170. package/dist/client/index.js +93 -0
  171. package/dist/client/index.js.map +1 -0
  172. package/dist/client/types.d.ts +17 -0
  173. package/dist/client/types.d.ts.map +1 -0
  174. package/dist/client/types.js +7 -0
  175. package/dist/client/types.js.map +1 -0
  176. package/dist/firebase/tenantManager.d.ts +34 -2
  177. package/dist/firebase/tenantManager.d.ts.map +1 -1
  178. package/dist/firebase/tenantManager.js +67 -1
  179. package/dist/firebase/tenantManager.js.map +1 -1
  180. package/dist/index.d.ts +8 -4
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +22 -7
  183. package/dist/index.js.map +1 -1
  184. package/dist/runtime/declarativeAgentRuntime.d.ts +14 -49
  185. package/dist/runtime/declarativeAgentRuntime.d.ts.map +1 -1
  186. package/dist/runtime/declarativeAgentRuntime.js +248 -355
  187. package/dist/runtime/declarativeAgentRuntime.js.map +1 -1
  188. package/dist/runtime/index.d.ts +12 -0
  189. package/dist/runtime/index.d.ts.map +1 -0
  190. package/dist/runtime/index.js +33 -0
  191. package/dist/runtime/index.js.map +1 -0
  192. package/dist/runtime/workflowExecutor.d.ts +30 -0
  193. package/dist/runtime/workflowExecutor.d.ts.map +1 -0
  194. package/dist/runtime/workflowExecutor.js +70 -0
  195. package/dist/runtime/workflowExecutor.js.map +1 -0
  196. package/dist/server/api/graphql.js +3 -3
  197. package/dist/server/api/graphql.js.map +1 -1
  198. package/dist/server/index.d.ts +2 -2
  199. package/dist/server/index.d.ts.map +1 -1
  200. package/dist/server/index.js +2 -2
  201. package/dist/server/index.js.map +1 -1
  202. package/dist/shared/index.d.ts +7 -0
  203. package/dist/shared/index.d.ts.map +1 -0
  204. package/dist/shared/index.js +23 -0
  205. package/dist/shared/index.js.map +1 -0
  206. package/dist/shared/types/agent.types.d.ts +50 -0
  207. package/dist/shared/types/agent.types.d.ts.map +1 -0
  208. package/dist/shared/types/agent.types.js +7 -0
  209. package/dist/shared/types/agent.types.js.map +1 -0
  210. package/dist/shared/types/execution.types.d.ts +42 -0
  211. package/dist/shared/types/execution.types.d.ts.map +1 -0
  212. package/dist/shared/types/execution.types.js +7 -0
  213. package/dist/shared/types/execution.types.js.map +1 -0
  214. package/dist/shared/types/index.d.ts +7 -0
  215. package/dist/shared/types/index.d.ts.map +1 -0
  216. package/dist/shared/types/index.js +23 -0
  217. package/dist/shared/types/index.js.map +1 -0
  218. package/dist/shared/types/schema.types.d.ts +52 -0
  219. package/dist/shared/types/schema.types.d.ts.map +1 -0
  220. package/dist/shared/types/schema.types.js +7 -0
  221. package/dist/shared/types/schema.types.js.map +1 -0
  222. package/dist/shared/utils/index.d.ts +5 -0
  223. package/dist/shared/utils/index.d.ts.map +1 -0
  224. package/dist/shared/utils/index.js +21 -0
  225. package/dist/shared/utils/index.js.map +1 -0
  226. package/dist/shared/utils/validation.d.ts +42 -0
  227. package/dist/shared/utils/validation.d.ts.map +1 -0
  228. package/dist/shared/utils/validation.js +93 -0
  229. package/dist/shared/utils/validation.js.map +1 -0
  230. package/dist/tenant/TenantManager.d.ts +152 -0
  231. package/dist/tenant/TenantManager.d.ts.map +1 -0
  232. package/dist/tenant/TenantManager.js +392 -0
  233. package/dist/tenant/TenantManager.js.map +1 -0
  234. package/dist/tenant/index.d.ts +47 -0
  235. package/dist/tenant/index.d.ts.map +1 -0
  236. package/dist/tenant/index.js +74 -0
  237. package/dist/tenant/index.js.map +1 -0
  238. package/dist/tenant/interfaces.d.ts +170 -0
  239. package/dist/tenant/interfaces.d.ts.map +1 -0
  240. package/dist/tenant/interfaces.js +67 -0
  241. package/dist/tenant/interfaces.js.map +1 -0
  242. package/dist/tenant/providerFactory.d.ts +43 -0
  243. package/dist/tenant/providerFactory.d.ts.map +1 -0
  244. package/dist/tenant/providerFactory.js +70 -0
  245. package/dist/tenant/providerFactory.js.map +1 -0
  246. package/dist/tenant/providerRegistry.d.ts +47 -0
  247. package/dist/tenant/providerRegistry.d.ts.map +1 -0
  248. package/dist/tenant/providerRegistry.js +79 -0
  249. package/dist/tenant/providerRegistry.js.map +1 -0
  250. package/dist/tenant/providers/FirebaseTenantProvider.d.ts +41 -0
  251. package/dist/tenant/providers/FirebaseTenantProvider.d.ts.map +1 -0
  252. package/dist/tenant/providers/FirebaseTenantProvider.js +290 -0
  253. package/dist/tenant/providers/FirebaseTenantProvider.js.map +1 -0
  254. package/dist/tenant/providers/InMemoryTenantProvider.d.ts +18 -0
  255. package/dist/tenant/providers/InMemoryTenantProvider.d.ts.map +1 -0
  256. package/dist/tenant/providers/InMemoryTenantProvider.js +137 -0
  257. package/dist/tenant/providers/InMemoryTenantProvider.js.map +1 -0
  258. package/package.json +46 -12
  259. package/src/agents/chat/chat.handler.ts +209 -0
  260. package/src/agents/chat/chat.schema.ts +33 -0
  261. package/src/agents/chat/chat.types.ts +46 -0
  262. package/src/agents/chat/chat.yaml +150 -0
  263. package/src/agents/chat/index.ts +21 -0
  264. package/src/agents/chromadb/chromadb.handler.ts +130 -0
  265. package/src/agents/chromadb/chromadb.schema.ts +35 -0
  266. package/src/agents/chromadb/chromadb.types.ts +52 -0
  267. package/src/agents/chromadb/chromadb.yaml +128 -0
  268. package/src/agents/chromadb/index.ts +20 -0
  269. package/src/agents/gemini-vectorize/gemini-vectorize.handler.ts +72 -0
  270. package/src/agents/gemini-vectorize/gemini-vectorize.schema.ts +22 -0
  271. package/src/agents/gemini-vectorize/gemini-vectorize.types.ts +34 -0
  272. package/src/agents/gemini-vectorize/gemini-vectorize.yaml +84 -0
  273. package/src/agents/gemini-vectorize/index.ts +20 -0
  274. package/src/agents/gitmcp/gitmcp.handler.ts +122 -0
  275. package/src/agents/gitmcp/gitmcp.schema.ts +20 -0
  276. package/src/agents/gitmcp/gitmcp.types.ts +33 -0
  277. package/src/agents/gitmcp/gitmcp.yaml +71 -0
  278. package/src/agents/gitmcp/index.ts +21 -0
  279. package/src/agents/image/image.handler.ts +82 -0
  280. package/src/agents/image/image.schema.ts +28 -0
  281. package/src/agents/image/image.types.ts +45 -0
  282. package/src/agents/image/image.yaml +86 -0
  283. package/src/agents/image/index.ts +19 -0
  284. package/src/agents/index.ts +59 -0
  285. package/src/agents/joker/index.ts +19 -0
  286. package/src/agents/joker/joker.handler.ts +60 -0
  287. package/src/agents/joker/joker.schema.ts +15 -0
  288. package/src/agents/joker/joker.types.ts +37 -0
  289. package/src/agents/joker/joker.yaml +47 -0
  290. package/src/agents/mcp-tool/index.ts +19 -0
  291. package/src/agents/mcp-tool/mcp-tool.handler.ts +112 -0
  292. package/src/agents/mcp-tool/mcp-tool.schema.ts +22 -0
  293. package/src/agents/mcp-tool/mcp-tool.types.ts +33 -0
  294. package/src/agents/mcp-tool/mcp-tool.yaml +71 -0
  295. package/src/agents/rag/index.ts +20 -0
  296. package/src/agents/rag/rag.handler.ts +119 -0
  297. package/src/agents/rag/rag.schema.ts +26 -0
  298. package/src/agents/rag/rag.types.ts +51 -0
  299. package/src/agents/rag/rag.yaml +89 -0
  300. package/src/agents/{agentRegistry.ts → registry/agentRegistry.ts} +161 -5
  301. package/src/agents/registry/index.ts +6 -0
  302. package/src/agents/translator/index.ts +19 -0
  303. package/src/agents/translator/translator.handler.ts +99 -0
  304. package/src/agents/translator/translator.schema.ts +30 -0
  305. package/src/agents/translator/translator.types.ts +42 -0
  306. package/src/agents/translator/translator.yaml +80 -0
  307. package/src/client/index.ts +53 -0
  308. package/src/client/types.ts +38 -0
  309. package/src/index.ts +48 -5
  310. package/src/runtime/declarativeAgentRuntime.ts +367 -489
  311. package/src/runtime/index.ts +31 -0
  312. package/src/runtime/workflowExecutor.ts +94 -0
  313. package/src/server/api/graphql.ts +1 -1
  314. package/src/server/index.ts +2 -2
  315. package/src/shared/index.ts +7 -0
  316. package/src/shared/types/agent.types.ts +80 -0
  317. package/src/shared/types/execution.types.ts +45 -0
  318. package/src/shared/types/index.ts +7 -0
  319. package/src/shared/types/schema.types.ts +55 -0
  320. package/src/shared/utils/index.ts +5 -0
  321. package/src/shared/utils/validation.ts +100 -0
  322. package/src/tenant/TenantManager.ts +488 -0
  323. package/src/tenant/index.ts +101 -0
  324. package/src/tenant/interfaces.ts +231 -0
  325. package/src/tenant/providerFactory.ts +75 -0
  326. package/src/tenant/providerRegistry.ts +86 -0
  327. package/src/tenant/providers/InMemoryTenantProvider.ts +168 -0
  328. package/dist/agents/agentRegistry.d.ts.map +0 -1
  329. package/dist/agents/agentRegistry.js.map +0 -1
  330. package/src/firebase/tenantManager.ts +0 -443
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Agnostic Multi-Tenant Interfaces
3
+ * Provider-independent abstractions for multi-tenant operations
4
+ */
5
+
6
+ // =============================================================================
7
+ // Provider Types
8
+ // =============================================================================
9
+
10
+ /**
11
+ * Built-in provider type
12
+ */
13
+ export type BuiltInProviderType = 'memory';
14
+
15
+ /**
16
+ * Provider type accepts built-in or any registered external type
17
+ */
18
+ export type ProviderType = BuiltInProviderType | string;
19
+
20
+ // =============================================================================
21
+ // Provider-Specific Configurations
22
+ // =============================================================================
23
+
24
+ /**
25
+ * Firebase-specific provider configuration
26
+ */
27
+ export interface FirebaseProviderConfig {
28
+ projectId: string;
29
+ databaseURL: string;
30
+ storageBucket: string;
31
+ }
32
+
33
+ /**
34
+ * In-memory provider configuration (for testing)
35
+ */
36
+ export interface MemoryProviderConfig {
37
+ persistToDisk?: boolean;
38
+ }
39
+
40
+ // =============================================================================
41
+ // Agnostic Tenant Configuration
42
+ // =============================================================================
43
+
44
+ /**
45
+ * Provider-agnostic tenant configuration
46
+ */
47
+ export interface TenantConfig {
48
+ tenantId: string;
49
+ securityProfile: 'ultra-secure' | 'tenant-isolated';
50
+ dataRetentionDays: number;
51
+ lgpdEnabled: boolean;
52
+ gdprEnabled: boolean;
53
+ provider: ProviderType;
54
+ providerConfig: FirebaseProviderConfig | MemoryProviderConfig;
55
+ }
56
+
57
+ // =============================================================================
58
+ // Core Interfaces
59
+ // =============================================================================
60
+
61
+ /**
62
+ * Abstract provider interface for tenant management
63
+ * Implements Strategy pattern for swappable backends
64
+ */
65
+ export interface ITenantProvider {
66
+ /**
67
+ * Initialize a new tenant with the given configuration
68
+ * @throws TenantAlreadyExistsError if tenant already exists
69
+ * @throws ValidationError if configuration is invalid
70
+ */
71
+ initialize(config: TenantConfig): Promise<ITenantApp>;
72
+
73
+ /**
74
+ * Get an existing tenant app by ID
75
+ * @throws NotFoundError if tenant does not exist
76
+ */
77
+ get(tenantId: string): ITenantApp;
78
+
79
+ /**
80
+ * Remove a tenant and release all associated resources
81
+ * @throws NotFoundError if tenant does not exist
82
+ */
83
+ remove(tenantId: string): Promise<void>;
84
+
85
+ /**
86
+ * List all active tenant IDs
87
+ */
88
+ list(): string[];
89
+
90
+ /**
91
+ * The type of this provider
92
+ */
93
+ readonly type: ProviderType;
94
+ }
95
+
96
+ /**
97
+ * Abstract tenant app representing an isolated tenant instance
98
+ */
99
+ export interface ITenantApp {
100
+ /**
101
+ * Unique identifier for this tenant
102
+ */
103
+ readonly tenantId: string;
104
+
105
+ /**
106
+ * Get the database interface for this tenant
107
+ */
108
+ getDatabase(): ITenantDatabase;
109
+
110
+ /**
111
+ * Destroy this tenant app and release resources
112
+ */
113
+ destroy(): Promise<void>;
114
+ }
115
+
116
+ /**
117
+ * Abstract database interface for tenant data operations
118
+ */
119
+ export interface ITenantDatabase {
120
+ /**
121
+ * Get a collection by name
122
+ */
123
+ collection(name: string): ITenantCollection;
124
+ }
125
+
126
+ /**
127
+ * Abstract collection interface for document operations
128
+ */
129
+ export interface ITenantCollection {
130
+ /**
131
+ * Get a document reference by ID
132
+ */
133
+ doc(id: string): ITenantDocument;
134
+
135
+ /**
136
+ * Add a new document with auto-generated ID
137
+ * @returns The generated document ID
138
+ */
139
+ add(data: Record<string, unknown>): Promise<string>;
140
+
141
+ /**
142
+ * Get all documents in this collection
143
+ */
144
+ get(): Promise<Array<{ id: string; data: Record<string, unknown> }>>;
145
+ }
146
+
147
+ /**
148
+ * Abstract document interface for CRUD operations
149
+ */
150
+ export interface ITenantDocument {
151
+ /**
152
+ * Get the document data
153
+ * @returns Document data or null if not found
154
+ */
155
+ get(): Promise<Record<string, unknown> | null>;
156
+
157
+ /**
158
+ * Set the document data (creates or overwrites)
159
+ */
160
+ set(data: Record<string, unknown>): Promise<void>;
161
+
162
+ /**
163
+ * Update specific fields in the document
164
+ * @throws NotFoundError if document does not exist
165
+ */
166
+ update(data: Record<string, unknown>): Promise<void>;
167
+
168
+ /**
169
+ * Delete the document
170
+ */
171
+ delete(): Promise<void>;
172
+ }
173
+
174
+ // =============================================================================
175
+ // Error Types
176
+ // =============================================================================
177
+
178
+ /**
179
+ * Base error for tenant operations
180
+ */
181
+ export class TenantError extends Error {
182
+ constructor(message: string, public code?: string) {
183
+ super(message);
184
+ this.name = 'TenantError';
185
+ Object.setPrototypeOf(this, TenantError.prototype);
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Thrown when configuration validation fails
191
+ */
192
+ export class ValidationError extends TenantError {
193
+ constructor(message: string) {
194
+ super(message, 'VALIDATION_ERROR');
195
+ this.name = 'ValidationError';
196
+ Object.setPrototypeOf(this, ValidationError.prototype);
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Thrown when a requested resource is not found
202
+ */
203
+ export class NotFoundError extends TenantError {
204
+ constructor(message: string) {
205
+ super(message, 'NOT_FOUND');
206
+ this.name = 'NotFoundError';
207
+ Object.setPrototypeOf(this, NotFoundError.prototype);
208
+ }
209
+ }
210
+
211
+ /**
212
+ * Thrown when an operation is not supported by the provider
213
+ */
214
+ export class NotSupportedError extends TenantError {
215
+ constructor(message: string) {
216
+ super(message, 'NOT_SUPPORTED');
217
+ this.name = 'NotSupportedError';
218
+ Object.setPrototypeOf(this, NotSupportedError.prototype);
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Thrown when attempting to create a tenant that already exists
224
+ */
225
+ export class TenantAlreadyExistsError extends TenantError {
226
+ constructor(tenantId: string) {
227
+ super(`Tenant '${tenantId}' already exists`, 'TENANT_EXISTS');
228
+ this.name = 'TenantAlreadyExistsError';
229
+ Object.setPrototypeOf(this, TenantAlreadyExistsError.prototype);
230
+ }
231
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Provider Factory
3
+ * Factory function for creating tenant providers based on configuration
4
+ * Uses ProviderRegistry for dynamic provider registration
5
+ */
6
+
7
+ import {
8
+ ProviderType,
9
+ ITenantProvider,
10
+ BuiltInProviderType,
11
+ } from './interfaces';
12
+ import { ProviderRegistry } from './providerRegistry';
13
+ import { InMemoryTenantProvider } from './providers/InMemoryTenantProvider';
14
+
15
+ /**
16
+ * Built-in provider types
17
+ */
18
+ const BUILTIN_PROVIDERS: readonly BuiltInProviderType[] = ['memory'] as const;
19
+
20
+ // Register built-in provider on module load
21
+ ProviderRegistry.register('memory', () => new InMemoryTenantProvider());
22
+
23
+ /**
24
+ * Check if a value is a valid built-in ProviderType
25
+ */
26
+ export function isBuiltInProviderType(type: unknown): type is BuiltInProviderType {
27
+ return typeof type === 'string' && BUILTIN_PROVIDERS.includes(type as BuiltInProviderType);
28
+ }
29
+
30
+ /**
31
+ * Check if a value is a valid ProviderType (built-in or registered)
32
+ */
33
+ export function isValidProviderType(type: unknown): type is ProviderType {
34
+ if (typeof type !== 'string') {
35
+ return false;
36
+ }
37
+ return isBuiltInProviderType(type) || ProviderRegistry.isRegistered(type);
38
+ }
39
+
40
+ /**
41
+ * Create a tenant provider instance based on the specified type
42
+ *
43
+ * @param type - The provider type to create (built-in or registered)
44
+ * @returns An instance of ITenantProvider for the specified type
45
+ * @throws ValidationError if the provider type is not registered
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // Create an in-memory provider for testing (built-in)
50
+ * const memoryProvider = createProvider('memory');
51
+ *
52
+ * // Create a Firebase provider (must be registered by application first)
53
+ * // In your app: ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
54
+ * const firebaseProvider = createProvider('firebase');
55
+ * ```
56
+ */
57
+ export function createProvider(type: ProviderType): ITenantProvider {
58
+ return ProviderRegistry.create(type);
59
+ }
60
+
61
+ /**
62
+ * Get the list of supported provider types (built-in + registered)
63
+ * @returns Array of supported provider type strings
64
+ */
65
+ export function getSupportedProviders(): string[] {
66
+ return ProviderRegistry.getRegisteredTypes();
67
+ }
68
+
69
+ /**
70
+ * Get the list of built-in provider types
71
+ * @returns Array of built-in provider type strings
72
+ */
73
+ export function getBuiltInProviders(): readonly BuiltInProviderType[] {
74
+ return BUILTIN_PROVIDERS;
75
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Provider Registry
3
+ * Dynamic registration system for external tenant providers
4
+ * Allows applications to register custom providers at runtime
5
+ */
6
+
7
+ import { ITenantProvider, ValidationError } from './interfaces';
8
+
9
+ type ProviderFactory = () => ITenantProvider;
10
+
11
+ /**
12
+ * Registry for tenant providers
13
+ * Applications register their providers here before using TenantManager
14
+ */
15
+ class ProviderRegistryClass {
16
+ private providers: Map<string, ProviderFactory> = 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: string, factory: ProviderFactory): void {
25
+ if (!type || typeof type !== 'string') {
26
+ throw new ValidationError('Provider type must be a non-empty string');
27
+ }
28
+ if (typeof factory !== 'function') {
29
+ throw new ValidationError('Provider factory must be a function');
30
+ }
31
+ if (this.providers.has(type)) {
32
+ throw new ValidationError(`Provider type '${type}' is already registered`);
33
+ }
34
+ this.providers.set(type, factory);
35
+ }
36
+
37
+ /**
38
+ * Unregister a provider
39
+ * @param type - Provider type to remove
40
+ */
41
+ unregister(type: string): void {
42
+ this.providers.delete(type);
43
+ }
44
+
45
+ /**
46
+ * Create a provider instance
47
+ * @param type - Provider type to create
48
+ * @throws ValidationError if provider type is not registered
49
+ */
50
+ create(type: string): ITenantProvider {
51
+ const factory = this.providers.get(type);
52
+ if (!factory) {
53
+ const registered = this.getRegisteredTypes();
54
+ const available = registered.length > 0
55
+ ? `Available types: ${registered.join(', ')}`
56
+ : 'No providers registered';
57
+ throw new ValidationError(
58
+ `Unknown provider type: '${type}'. ${available}`
59
+ );
60
+ }
61
+ return factory();
62
+ }
63
+
64
+ /**
65
+ * Check if a provider type is registered
66
+ */
67
+ isRegistered(type: string): boolean {
68
+ return this.providers.has(type);
69
+ }
70
+
71
+ /**
72
+ * Get all registered provider types
73
+ */
74
+ getRegisteredTypes(): string[] {
75
+ return Array.from(this.providers.keys());
76
+ }
77
+
78
+ /**
79
+ * Clear all registered providers (useful for testing)
80
+ */
81
+ clear(): void {
82
+ this.providers.clear();
83
+ }
84
+ }
85
+
86
+ export const ProviderRegistry = new ProviderRegistryClass();
@@ -0,0 +1,168 @@
1
+ /**
2
+ * In-Memory Tenant Provider
3
+ * Implements ITenantProvider for testing without external dependencies
4
+ */
5
+
6
+ import {
7
+ ITenantProvider,
8
+ ITenantApp,
9
+ ITenantDatabase,
10
+ ITenantCollection,
11
+ ITenantDocument,
12
+ TenantConfig,
13
+ ProviderType,
14
+ NotFoundError,
15
+ TenantAlreadyExistsError,
16
+ } from '../interfaces';
17
+
18
+ // =============================================================================
19
+ // In-Memory Document Implementation
20
+ // =============================================================================
21
+
22
+ class InMemoryDocument implements ITenantDocument {
23
+ constructor(
24
+ private storage: Map<string, Record<string, unknown>>,
25
+ private docId: string
26
+ ) {}
27
+
28
+ async get(): Promise<Record<string, unknown> | null> {
29
+ return this.storage.get(this.docId) ?? null;
30
+ }
31
+
32
+ async set(data: Record<string, unknown>): Promise<void> {
33
+ this.storage.set(this.docId, { ...data });
34
+ }
35
+
36
+ async update(data: Record<string, unknown>): Promise<void> {
37
+ const existing = this.storage.get(this.docId);
38
+ if (!existing) {
39
+ throw new NotFoundError(`Document '${this.docId}' not found`);
40
+ }
41
+ this.storage.set(this.docId, { ...existing, ...data });
42
+ }
43
+
44
+ async delete(): Promise<void> {
45
+ this.storage.delete(this.docId);
46
+ }
47
+ }
48
+
49
+
50
+ // =============================================================================
51
+ // In-Memory Collection Implementation
52
+ // =============================================================================
53
+
54
+ class InMemoryCollection implements ITenantCollection {
55
+ private documents: Map<string, Record<string, unknown>> = new Map();
56
+ private autoIdCounter = 0;
57
+
58
+ constructor(private collectionName: string) {}
59
+
60
+ doc(id: string): ITenantDocument {
61
+ return new InMemoryDocument(this.documents, id);
62
+ }
63
+
64
+ async add(data: Record<string, unknown>): Promise<string> {
65
+ const id = `${this.collectionName}_${++this.autoIdCounter}_${Date.now()}`;
66
+ this.documents.set(id, { ...data });
67
+ return id;
68
+ }
69
+
70
+ async get(): Promise<Array<{ id: string; data: Record<string, unknown> }>> {
71
+ const results: Array<{ id: string; data: Record<string, unknown> }> = [];
72
+ for (const [id, data] of this.documents) {
73
+ results.push({ id, data: { ...data } });
74
+ }
75
+ return results;
76
+ }
77
+ }
78
+
79
+ // =============================================================================
80
+ // In-Memory Database Implementation
81
+ // =============================================================================
82
+
83
+ class InMemoryDatabase implements ITenantDatabase {
84
+ private collections: Map<string, InMemoryCollection> = new Map();
85
+
86
+ collection(name: string): ITenantCollection {
87
+ let coll = this.collections.get(name);
88
+ if (!coll) {
89
+ coll = new InMemoryCollection(name);
90
+ this.collections.set(name, coll);
91
+ }
92
+ return coll;
93
+ }
94
+ }
95
+
96
+
97
+ // =============================================================================
98
+ // In-Memory Tenant App Implementation
99
+ // =============================================================================
100
+
101
+ class InMemoryTenantApp implements ITenantApp {
102
+ private database: InMemoryDatabase;
103
+ private destroyed = false;
104
+
105
+ constructor(
106
+ public readonly tenantId: string,
107
+ public readonly config: TenantConfig
108
+ ) {
109
+ this.database = new InMemoryDatabase();
110
+ }
111
+
112
+ getDatabase(): ITenantDatabase {
113
+ if (this.destroyed) {
114
+ throw new NotFoundError(`Tenant '${this.tenantId}' has been destroyed`);
115
+ }
116
+ return this.database;
117
+ }
118
+
119
+ async destroy(): Promise<void> {
120
+ this.destroyed = true;
121
+ // Clear internal references to allow garbage collection
122
+ this.database = null as unknown as InMemoryDatabase;
123
+ }
124
+ }
125
+
126
+ // =============================================================================
127
+ // In-Memory Tenant Provider Implementation
128
+ // =============================================================================
129
+
130
+ /**
131
+ * In-memory implementation of ITenantProvider
132
+ * Useful for testing without external dependencies
133
+ */
134
+ export class InMemoryTenantProvider implements ITenantProvider {
135
+ public readonly type: ProviderType = 'memory';
136
+ private tenants: Map<string, InMemoryTenantApp> = new Map();
137
+
138
+ async initialize(config: TenantConfig): Promise<ITenantApp> {
139
+ if (this.tenants.has(config.tenantId)) {
140
+ throw new TenantAlreadyExistsError(config.tenantId);
141
+ }
142
+
143
+ const app = new InMemoryTenantApp(config.tenantId, config);
144
+ this.tenants.set(config.tenantId, app);
145
+ return app;
146
+ }
147
+
148
+ get(tenantId: string): ITenantApp {
149
+ const app = this.tenants.get(tenantId);
150
+ if (!app) {
151
+ throw new NotFoundError(`Tenant '${tenantId}' not found`);
152
+ }
153
+ return app;
154
+ }
155
+
156
+ async remove(tenantId: string): Promise<void> {
157
+ const app = this.tenants.get(tenantId);
158
+ if (!app) {
159
+ throw new NotFoundError(`Tenant '${tenantId}' not found`);
160
+ }
161
+ await app.destroy();
162
+ this.tenants.delete(tenantId);
163
+ }
164
+
165
+ list(): string[] {
166
+ return Array.from(this.tenants.keys());
167
+ }
168
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentRegistry.d.ts","sourceRoot":"","sources":["../../src/agents/agentRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoC;;IAiBpE;;OAEG;IACI,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,cAAc,UAAQ,GAAG,IAAI;IAc5E;;OAEG;IACU,YAAY,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,GAAG,CAAC;IAkBf;;OAEG;IACI,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjE;;OAEG;IACI,YAAY,IAAI,iBAAiB,EAAE;IAI1C;;;OAGG;IACU,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CvE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmDtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;OAGG;YACW,mBAAmB;IAuCjC;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;CAG7D;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC;AAEjD,eAAe,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agentRegistry.js","sourceRoot":"","sources":["../../src/agents/agentRegistry.ts"],"names":[],"mappings":"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"}