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,392 @@
1
+ "use strict";
2
+ /**
3
+ * Agnostic Tenant Manager
4
+ * Provider-independent tenant management with compliance integration
5
+ *
6
+ * This manager orchestrates tenant operations using abstract interfaces,
7
+ * allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.)
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TenantManager = void 0;
11
+ const config_1 = require("../config");
12
+ const auditTrail_1 = require("../audit/auditTrail");
13
+ const gdprEngine_1 = require("../compliance/gdprEngine");
14
+ const lgpdEngine_1 = require("../compliance/lgpdEngine");
15
+ const interfaces_1 = require("./interfaces");
16
+ const providerFactory_1 = require("./providerFactory");
17
+ /**
18
+ * Agnostic Tenant Manager
19
+ *
20
+ * Singleton manager that orchestrates tenant operations using abstract
21
+ * provider interfaces. Maintains integration with AuditTrail and
22
+ * LGPD/GDPR compliance engines independent of the underlying provider.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const manager = TenantManager.getInstance();
27
+ *
28
+ * // Initialize with in-memory provider for testing
29
+ * const result = await manager.initializeTenant({
30
+ * tenantId: 'tenant-123',
31
+ * securityProfile: 'tenant-isolated',
32
+ * dataRetentionDays: 365,
33
+ * lgpdEnabled: true,
34
+ * gdprEnabled: true,
35
+ * provider: 'memory',
36
+ * providerConfig: {}
37
+ * });
38
+ * ```
39
+ */
40
+ class TenantManager {
41
+ constructor() {
42
+ this.provider = null;
43
+ this.auditTrail = new auditTrail_1.AuditTrail();
44
+ this.gdprCompliance = new gdprEngine_1.GDPRCompliance(this.auditTrail);
45
+ this.lgpdCompliance = new lgpdEngine_1.LGPDCompliance(this.auditTrail);
46
+ this.tenantConfigs = new Map();
47
+ }
48
+ /**
49
+ * Get the singleton instance of TenantManager
50
+ */
51
+ static getInstance() {
52
+ if (!this.instance) {
53
+ this.instance = new TenantManager();
54
+ }
55
+ return this.instance;
56
+ }
57
+ /**
58
+ * Reset the singleton instance (useful for testing)
59
+ */
60
+ static resetInstance() {
61
+ this.instance = undefined;
62
+ }
63
+ /**
64
+ * Set the provider to use for tenant operations
65
+ * This allows runtime provider switching
66
+ */
67
+ setProvider(provider) {
68
+ this.provider = provider;
69
+ }
70
+ /**
71
+ * Get the current provider
72
+ * @throws ValidationError if no provider is set
73
+ */
74
+ getProvider() {
75
+ if (!this.provider) {
76
+ throw new interfaces_1.ValidationError('No provider configured. Call setProvider() or initializeTenant() first.');
77
+ }
78
+ return this.provider;
79
+ }
80
+ /**
81
+ * Initialize tenant with complete isolation and compliance verification
82
+ *
83
+ * @param config - Tenant configuration including provider settings
84
+ * @returns TenantIsolationResult with security and compliance metrics
85
+ * @throws ValidationError if configuration is invalid
86
+ * @throws TenantAlreadyExistsError if tenant already exists
87
+ */
88
+ async initializeTenant(config) {
89
+ const startTime = Date.now();
90
+ try {
91
+ // Validate tenant configuration
92
+ this.validateTenantConfig(config);
93
+ // Create or reuse provider based on config
94
+ if (!this.provider || this.provider.type !== config.provider) {
95
+ this.provider = (0, providerFactory_1.createProvider)(config.provider);
96
+ }
97
+ // Check if tenant already exists
98
+ const existingTenants = this.provider.list();
99
+ if (existingTenants.includes(config.tenantId)) {
100
+ throw new interfaces_1.TenantAlreadyExistsError(config.tenantId);
101
+ }
102
+ // Initialize tenant via provider
103
+ await this.provider.initialize(config);
104
+ // Store tenant config for later reference
105
+ this.tenantConfigs.set(config.tenantId, config);
106
+ // Generate audit trail
107
+ const operationId = `init-${config.tenantId}-${Date.now()}`;
108
+ const auditHash = await this.auditTrail.logOperation({
109
+ operationId,
110
+ tenantId: config.tenantId,
111
+ operation: 'tenant_init',
112
+ data: this.sanitizeForAudit(config),
113
+ timestamp: new Date(),
114
+ });
115
+ // Verify compliance
116
+ const complianceStatus = await this.verifyCompliance(config);
117
+ const executionTime = Date.now() - startTime;
118
+ // Calculate security score
119
+ const securityScore = this.calculateSecurityScore(config);
120
+ return {
121
+ success: true,
122
+ tenantId: config.tenantId,
123
+ securityScore,
124
+ auditHash,
125
+ executionTime,
126
+ complianceStatus,
127
+ };
128
+ }
129
+ catch (error) {
130
+ const executionTime = Date.now() - startTime;
131
+ await this.auditTrail.logOperation({
132
+ operationId: `error-${config.tenantId}-${Date.now()}`,
133
+ tenantId: config.tenantId,
134
+ operation: 'tenant_init_error',
135
+ data: {
136
+ error: error instanceof Error ? error.message : String(error),
137
+ config: this.sanitizeForAudit(config),
138
+ },
139
+ timestamp: new Date(),
140
+ success: false,
141
+ });
142
+ throw error;
143
+ }
144
+ }
145
+ /**
146
+ * Get isolated tenant app
147
+ *
148
+ * @param tenantId - The tenant identifier
149
+ * @returns The tenant app instance
150
+ * @throws NotFoundError if tenant does not exist
151
+ * @throws ValidationError if no provider is configured
152
+ */
153
+ getTenantApp(tenantId) {
154
+ const provider = this.getProvider();
155
+ return provider.get(tenantId);
156
+ }
157
+ /**
158
+ * Execute operation in tenant context with audit trail
159
+ *
160
+ * @param tenantId - The tenant identifier
161
+ * @param operation - Operation name for audit logging
162
+ * @param data - Operation data for audit logging
163
+ * @param callback - The operation to execute
164
+ * @returns The result of the callback
165
+ */
166
+ async executeInTenant(tenantId, operation, data, callback) {
167
+ const startTime = Date.now();
168
+ try {
169
+ // Verify tenant exists
170
+ this.getTenantApp(tenantId);
171
+ // Generate audit trail
172
+ const operationId = `${operation}-${tenantId}-${Date.now()}`;
173
+ await this.auditTrail.logOperation({
174
+ operationId,
175
+ tenantId,
176
+ operation,
177
+ data: this.sanitizeForAudit(data),
178
+ timestamp: new Date(),
179
+ });
180
+ // Execute operation
181
+ const result = await callback();
182
+ // Record successful operation
183
+ const executionTime = Date.now() - startTime;
184
+ await this.auditTrail.logOperation({
185
+ operationId: `${operationId}-complete`,
186
+ tenantId,
187
+ operation: `${operation}_complete`,
188
+ data: { result: this.sanitizeForAudit(result), executionTime },
189
+ timestamp: new Date(),
190
+ success: true,
191
+ });
192
+ return result;
193
+ }
194
+ catch (error) {
195
+ const executionTime = Date.now() - startTime;
196
+ await this.auditTrail.logOperation({
197
+ operationId: `${operation}-${tenantId}-${Date.now()}-error`,
198
+ tenantId,
199
+ operation: `${operation}_error`,
200
+ data: {
201
+ error: error instanceof Error ? error.message : String(error),
202
+ executionTime,
203
+ },
204
+ timestamp: new Date(),
205
+ success: false,
206
+ });
207
+ throw error;
208
+ }
209
+ }
210
+ /**
211
+ * Safely remove tenant and release all resources
212
+ *
213
+ * @param tenantId - The tenant identifier
214
+ * @throws NotFoundError if tenant does not exist
215
+ */
216
+ async removeTenant(tenantId) {
217
+ const provider = this.getProvider();
218
+ // Log removal
219
+ await this.auditTrail.logOperation({
220
+ operationId: `remove-${tenantId}-${Date.now()}`,
221
+ tenantId,
222
+ operation: 'tenant_removal',
223
+ data: { reason: 'admin_removal' },
224
+ timestamp: new Date(),
225
+ });
226
+ // Remove via provider
227
+ await provider.remove(tenantId);
228
+ // Clean up stored config
229
+ this.tenantConfigs.delete(tenantId);
230
+ }
231
+ /**
232
+ * Get all active tenant IDs
233
+ */
234
+ getActiveTenants() {
235
+ if (!this.provider) {
236
+ return [];
237
+ }
238
+ return this.provider.list();
239
+ }
240
+ /**
241
+ * Get statistics for all tenants
242
+ */
243
+ async getTenantStats() {
244
+ const stats = new Map();
245
+ const tenants = this.getActiveTenants();
246
+ for (const tenantId of tenants) {
247
+ const config = this.tenantConfigs.get(tenantId);
248
+ const securityScore = config ? this.calculateSecurityScore(config) : 9.5;
249
+ const mockStats = {
250
+ success: true,
251
+ tenantId,
252
+ securityScore,
253
+ auditHash: 'SHA256-' + Math.random().toString(36),
254
+ executionTime: 95,
255
+ complianceStatus: {
256
+ lgpd: config?.lgpdEnabled ?? true,
257
+ gdpr: config?.gdprEnabled ?? true,
258
+ },
259
+ };
260
+ stats.set(tenantId, mockStats);
261
+ }
262
+ return stats;
263
+ }
264
+ /**
265
+ * Get the stored configuration for a tenant
266
+ */
267
+ getTenantConfig(tenantId) {
268
+ return this.tenantConfigs.get(tenantId);
269
+ }
270
+ /**
271
+ * Verify LGPD/GDPR compliance for tenant configuration
272
+ */
273
+ async verifyCompliance(config) {
274
+ let lgpd = false;
275
+ let gdpr = false;
276
+ if (config.lgpdEnabled) {
277
+ lgpd = await this.lgpdCompliance.verifyCompliance({
278
+ tenantId: config.tenantId,
279
+ dataConsent: true,
280
+ dataAnonymization: true,
281
+ dataRetentionDays: config.dataRetentionDays,
282
+ brazilianDataResidency: true,
283
+ rightToDelete: true,
284
+ dataOwnerRights: true,
285
+ automaticDeletion: true,
286
+ });
287
+ }
288
+ if (config.gdprEnabled) {
289
+ gdpr = await this.gdprCompliance.verifyCompliance({
290
+ tenantId: config.tenantId,
291
+ dataAnonymization: true,
292
+ consentManagement: true,
293
+ rightToBeForgotten: true,
294
+ dataPortability: true,
295
+ dataRetentionDays: config.dataRetentionDays,
296
+ });
297
+ }
298
+ return { lgpd, gdpr };
299
+ }
300
+ /**
301
+ * Calculate security score based on configuration
302
+ */
303
+ calculateSecurityScore(config) {
304
+ let score = 5.0; // Base score
305
+ // Multi-tenant isolation
306
+ const tenants = this.getActiveTenants();
307
+ if (tenants.includes(config.tenantId)) {
308
+ score += 1.0;
309
+ }
310
+ // Security profile
311
+ switch (config.securityProfile) {
312
+ case 'ultra-secure':
313
+ score += 2.0;
314
+ break;
315
+ case 'tenant-isolated':
316
+ score += 1.5;
317
+ break;
318
+ }
319
+ // Compliance features
320
+ if (config.lgpdEnabled) {
321
+ score += 0.5;
322
+ }
323
+ if (config.gdprEnabled) {
324
+ score += 0.5;
325
+ }
326
+ // Audit trail
327
+ if (config_1.runtimeConfig.auditEnabled) {
328
+ score += 1.0;
329
+ }
330
+ // Memory limit enforcement (1MB for multi-tenant)
331
+ const memoryLimit = config_1.runtimeConfig.memoryLimit;
332
+ if (memoryLimit <= 1) {
333
+ score += 0.5;
334
+ }
335
+ return Math.min(score, 10.0); // Maximum 10.0
336
+ }
337
+ /**
338
+ * Validate tenant configuration
339
+ * @throws ValidationError if configuration is invalid
340
+ */
341
+ validateTenantConfig(config) {
342
+ if (!config.tenantId || config.tenantId.length < 3) {
343
+ throw new interfaces_1.ValidationError('Invalid tenant ID - must be at least 3 characters');
344
+ }
345
+ if (!config.provider) {
346
+ throw new interfaces_1.ValidationError('Provider type is required');
347
+ }
348
+ if (!config.securityProfile) {
349
+ config.securityProfile = 'tenant-isolated';
350
+ }
351
+ if (!config.dataRetentionDays) {
352
+ config.dataRetentionDays = 365; // 1 year default for LGPD
353
+ }
354
+ if (config.dataRetentionDays < 90) {
355
+ throw new interfaces_1.ValidationError('Data retention minimum 90 days for LGPD compliance');
356
+ }
357
+ }
358
+ /**
359
+ * Sanitize data for audit trail (remove sensitive information)
360
+ */
361
+ sanitizeForAudit(data) {
362
+ return JSON.parse(JSON.stringify(data, (key, value) => {
363
+ // Remove sensitive information
364
+ if (key.includes('password') ||
365
+ key.includes('secret') ||
366
+ key.includes('key')) {
367
+ return '[REDACTED]';
368
+ }
369
+ return value;
370
+ }));
371
+ }
372
+ /**
373
+ * Get the audit trail instance (for testing/debugging)
374
+ */
375
+ getAuditTrail() {
376
+ return this.auditTrail;
377
+ }
378
+ /**
379
+ * Get the LGPD compliance engine (for testing/debugging)
380
+ */
381
+ getLGPDCompliance() {
382
+ return this.lgpdCompliance;
383
+ }
384
+ /**
385
+ * Get the GDPR compliance engine (for testing/debugging)
386
+ */
387
+ getGDPRCompliance() {
388
+ return this.gdprCompliance;
389
+ }
390
+ }
391
+ exports.TenantManager = TenantManager;
392
+ //# sourceMappingURL=TenantManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TenantManager.js","sourceRoot":"","sources":["../../src/tenant/TenantManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Agnostic Multi-Tenant Module
3
+ * Provider-independent tenant management for Beddel
4
+ *
5
+ * This module provides a complete abstraction layer for multi-tenant operations,
6
+ * allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.) without
7
+ * modifying business logic.
8
+ *
9
+ * External providers (Firebase, Supabase, etc.) should be registered by the
10
+ * consuming application using ProviderRegistry before use.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import {
15
+ * TenantManager,
16
+ * createProvider,
17
+ * ProviderRegistry,
18
+ * InMemoryTenantProvider,
19
+ * } from 'beddel/tenant';
20
+ *
21
+ * // Register external provider (in your application)
22
+ * import { FirebaseTenantProvider } from './providers/FirebaseTenantProvider';
23
+ * ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
24
+ *
25
+ * // Use in-memory provider for testing (built-in)
26
+ * const manager = TenantManager.getInstance();
27
+ * const result = await manager.initializeTenant({
28
+ * tenantId: 'tenant-123',
29
+ * securityProfile: 'tenant-isolated',
30
+ * dataRetentionDays: 365,
31
+ * lgpdEnabled: true,
32
+ * gdprEnabled: true,
33
+ * provider: 'memory',
34
+ * providerConfig: {}
35
+ * });
36
+ * ```
37
+ *
38
+ * @module tenant
39
+ */
40
+ export { TenantManager } from './TenantManager';
41
+ export type { TenantIsolationResult } from './TenantManager';
42
+ export type { ProviderType, BuiltInProviderType, TenantConfig, FirebaseProviderConfig, MemoryProviderConfig, ITenantProvider, ITenantApp, ITenantDatabase, ITenantCollection, ITenantDocument, } from './interfaces';
43
+ export { TenantError, ValidationError, NotFoundError, NotSupportedError, TenantAlreadyExistsError, } from './interfaces';
44
+ export { ProviderRegistry } from './providerRegistry';
45
+ export { createProvider, isValidProviderType, isBuiltInProviderType, getSupportedProviders, getBuiltInProviders, } from './providerFactory';
46
+ export { InMemoryTenantProvider } from './providers/InMemoryTenantProvider';
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAM7D,YAAY,EAEV,YAAY,EACZ,mBAAmB,EAGnB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EAGpB,eAAe,EACf,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,WAAW,EACX,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAMtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Agnostic Multi-Tenant Module
4
+ * Provider-independent tenant management for Beddel
5
+ *
6
+ * This module provides a complete abstraction layer for multi-tenant operations,
7
+ * allowing swappable backends (Firebase, Supabase, PostgreSQL, etc.) without
8
+ * modifying business logic.
9
+ *
10
+ * External providers (Firebase, Supabase, etc.) should be registered by the
11
+ * consuming application using ProviderRegistry before use.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import {
16
+ * TenantManager,
17
+ * createProvider,
18
+ * ProviderRegistry,
19
+ * InMemoryTenantProvider,
20
+ * } from 'beddel/tenant';
21
+ *
22
+ * // Register external provider (in your application)
23
+ * import { FirebaseTenantProvider } from './providers/FirebaseTenantProvider';
24
+ * ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
25
+ *
26
+ * // Use in-memory provider for testing (built-in)
27
+ * const manager = TenantManager.getInstance();
28
+ * const result = await manager.initializeTenant({
29
+ * tenantId: 'tenant-123',
30
+ * securityProfile: 'tenant-isolated',
31
+ * dataRetentionDays: 365,
32
+ * lgpdEnabled: true,
33
+ * gdprEnabled: true,
34
+ * provider: 'memory',
35
+ * providerConfig: {}
36
+ * });
37
+ * ```
38
+ *
39
+ * @module tenant
40
+ */
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.InMemoryTenantProvider = exports.getBuiltInProviders = exports.getSupportedProviders = exports.isBuiltInProviderType = exports.isValidProviderType = exports.createProvider = exports.ProviderRegistry = exports.TenantAlreadyExistsError = exports.NotSupportedError = exports.NotFoundError = exports.ValidationError = exports.TenantError = exports.TenantManager = void 0;
43
+ // =============================================================================
44
+ // Core Manager
45
+ // =============================================================================
46
+ var TenantManager_1 = require("./TenantManager");
47
+ Object.defineProperty(exports, "TenantManager", { enumerable: true, get: function () { return TenantManager_1.TenantManager; } });
48
+ // Error types (classes, not just types)
49
+ var interfaces_1 = require("./interfaces");
50
+ Object.defineProperty(exports, "TenantError", { enumerable: true, get: function () { return interfaces_1.TenantError; } });
51
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return interfaces_1.ValidationError; } });
52
+ Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return interfaces_1.NotFoundError; } });
53
+ Object.defineProperty(exports, "NotSupportedError", { enumerable: true, get: function () { return interfaces_1.NotSupportedError; } });
54
+ Object.defineProperty(exports, "TenantAlreadyExistsError", { enumerable: true, get: function () { return interfaces_1.TenantAlreadyExistsError; } });
55
+ // =============================================================================
56
+ // Provider Registry
57
+ // =============================================================================
58
+ var providerRegistry_1 = require("./providerRegistry");
59
+ Object.defineProperty(exports, "ProviderRegistry", { enumerable: true, get: function () { return providerRegistry_1.ProviderRegistry; } });
60
+ // =============================================================================
61
+ // Provider Factory
62
+ // =============================================================================
63
+ var providerFactory_1 = require("./providerFactory");
64
+ Object.defineProperty(exports, "createProvider", { enumerable: true, get: function () { return providerFactory_1.createProvider; } });
65
+ Object.defineProperty(exports, "isValidProviderType", { enumerable: true, get: function () { return providerFactory_1.isValidProviderType; } });
66
+ Object.defineProperty(exports, "isBuiltInProviderType", { enumerable: true, get: function () { return providerFactory_1.isBuiltInProviderType; } });
67
+ Object.defineProperty(exports, "getSupportedProviders", { enumerable: true, get: function () { return providerFactory_1.getSupportedProviders; } });
68
+ Object.defineProperty(exports, "getBuiltInProviders", { enumerable: true, get: function () { return providerFactory_1.getBuiltInProviders; } });
69
+ // =============================================================================
70
+ // Built-in Provider Implementations
71
+ // =============================================================================
72
+ var InMemoryTenantProvider_1 = require("./providers/InMemoryTenantProvider");
73
+ Object.defineProperty(exports, "InMemoryTenantProvider", { enumerable: true, get: function () { return InMemoryTenantProvider_1.InMemoryTenantProvider; } });
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;;;AAEH,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAyBtB,wCAAwC;AACxC,2CAMsB;AALpB,yGAAA,WAAW,OAAA;AACX,6GAAA,eAAe,OAAA;AACf,2GAAA,aAAa,OAAA;AACb,+GAAA,iBAAiB,OAAA;AACjB,sHAAA,wBAAwB,OAAA;AAG1B,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AAEzB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,qDAM2B;AALzB,iHAAA,cAAc,OAAA;AACd,sHAAA,mBAAmB,OAAA;AACnB,wHAAA,qBAAqB,OAAA;AACrB,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AAGrB,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF,6EAA4E;AAAnE,gIAAA,sBAAsB,OAAA"}