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,290 @@
1
+ "use strict";
2
+ /**
3
+ * Firebase Tenant Provider
4
+ * Implements ITenantProvider using Firebase Admin SDK
5
+ * Extracted from MultiTenantFirebaseManager for provider-agnostic architecture
6
+ *
7
+ * NOTE: firebase-admin is an optional peer dependency.
8
+ * Install it separately if you want to use Firebase as a tenant provider:
9
+ *
10
+ * ```bash
11
+ * pnpm add firebase-admin
12
+ * ```
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.FirebaseTenantProvider = void 0;
49
+ const interfaces_1 = require("../interfaces");
50
+ // Lazy-loaded firebase-admin module
51
+ let firebaseAdmin = null;
52
+ /**
53
+ * Dynamically load firebase-admin module
54
+ * @throws Error if firebase-admin is not installed
55
+ */
56
+ async function loadFirebaseAdmin() {
57
+ if (firebaseAdmin) {
58
+ return firebaseAdmin;
59
+ }
60
+ try {
61
+ // Dynamic import to avoid bundling firebase-admin when not used
62
+ firebaseAdmin = await Promise.resolve().then(() => __importStar(require('firebase-admin')));
63
+ return firebaseAdmin;
64
+ }
65
+ catch {
66
+ throw new Error('firebase-admin is not installed. Install it with: pnpm add firebase-admin\n' +
67
+ 'Firebase provider requires firebase-admin as a peer dependency.');
68
+ }
69
+ }
70
+ /**
71
+ * Synchronously get firebase-admin (must be loaded first via loadFirebaseAdmin)
72
+ * @throws Error if firebase-admin was not loaded
73
+ */
74
+ function getFirebaseAdmin() {
75
+ if (!firebaseAdmin) {
76
+ throw new Error('firebase-admin not loaded. Ensure initialize() was called first.');
77
+ }
78
+ return firebaseAdmin;
79
+ }
80
+ // =============================================================================
81
+ // Firebase Document Implementation
82
+ // =============================================================================
83
+ class FirebaseDocument {
84
+ constructor(docRef) {
85
+ this.docRef = docRef;
86
+ }
87
+ async get() {
88
+ const snapshot = await this.docRef.get();
89
+ if (!snapshot.exists) {
90
+ return null;
91
+ }
92
+ return snapshot.data();
93
+ }
94
+ async set(data) {
95
+ await this.docRef.set(data);
96
+ }
97
+ async update(data) {
98
+ const snapshot = await this.docRef.get();
99
+ if (!snapshot.exists) {
100
+ throw new interfaces_1.NotFoundError(`Document '${this.docRef.id}' not found`);
101
+ }
102
+ await this.docRef.update(data);
103
+ }
104
+ async delete() {
105
+ await this.docRef.delete();
106
+ }
107
+ }
108
+ // =============================================================================
109
+ // Firebase Collection Implementation
110
+ // =============================================================================
111
+ class FirebaseCollection {
112
+ constructor(collectionRef) {
113
+ this.collectionRef = collectionRef;
114
+ }
115
+ doc(id) {
116
+ return new FirebaseDocument(this.collectionRef.doc(id));
117
+ }
118
+ async add(data) {
119
+ const docRef = await this.collectionRef.add(data);
120
+ return docRef.id;
121
+ }
122
+ async get() {
123
+ const snapshot = await this.collectionRef.get();
124
+ return snapshot.docs.map((doc) => ({
125
+ id: doc.id,
126
+ data: doc.data(),
127
+ }));
128
+ }
129
+ }
130
+ // =============================================================================
131
+ // Firebase Database Implementation
132
+ // =============================================================================
133
+ class FirebaseDatabase {
134
+ constructor(firestore, tenantId) {
135
+ this.firestore = firestore;
136
+ this.tenantId = tenantId;
137
+ }
138
+ collection(name) {
139
+ // Namespace collections under tenant ID for isolation
140
+ const namespacedPath = `tenants/${this.tenantId}/${name}`;
141
+ return new FirebaseCollection(this.firestore.collection(namespacedPath));
142
+ }
143
+ }
144
+ // =============================================================================
145
+ // Firebase Tenant App Implementation
146
+ // =============================================================================
147
+ class FirebaseTenantApp {
148
+ constructor(tenantId, firebaseApp, _config) {
149
+ this.tenantId = tenantId;
150
+ this.firebaseApp = firebaseApp;
151
+ this._config = _config;
152
+ this.destroyed = false;
153
+ this.database = new FirebaseDatabase(firebaseApp.firestore(), tenantId);
154
+ }
155
+ /**
156
+ * Get the tenant configuration
157
+ * @internal
158
+ */
159
+ getConfig() {
160
+ return this._config;
161
+ }
162
+ getDatabase() {
163
+ if (this.destroyed) {
164
+ throw new interfaces_1.NotFoundError(`Tenant '${this.tenantId}' has been destroyed`);
165
+ }
166
+ return this.database;
167
+ }
168
+ /**
169
+ * Get the underlying Firebase app (for advanced operations)
170
+ * @internal
171
+ */
172
+ getFirebaseApp() {
173
+ if (this.destroyed) {
174
+ throw new interfaces_1.NotFoundError(`Tenant '${this.tenantId}' has been destroyed`);
175
+ }
176
+ return this.firebaseApp;
177
+ }
178
+ async destroy() {
179
+ if (this.destroyed) {
180
+ return;
181
+ }
182
+ this.destroyed = true;
183
+ await this.firebaseApp.delete();
184
+ }
185
+ }
186
+ // =============================================================================
187
+ // Firebase Tenant Provider Implementation
188
+ // =============================================================================
189
+ /**
190
+ * Firebase implementation of ITenantProvider
191
+ * Provides multi-tenant isolation using Firebase Admin SDK
192
+ *
193
+ * NOTE: firebase-admin must be installed separately as a peer dependency.
194
+ */
195
+ class FirebaseTenantProvider {
196
+ constructor() {
197
+ this.type = 'firebase';
198
+ this.tenants = new Map();
199
+ this.initialized = false;
200
+ }
201
+ /**
202
+ * Ensure firebase-admin is loaded before use
203
+ */
204
+ async ensureFirebaseLoaded() {
205
+ if (!this.initialized) {
206
+ await loadFirebaseAdmin();
207
+ this.initialized = true;
208
+ }
209
+ }
210
+ /**
211
+ * Validate Firebase-specific provider configuration
212
+ */
213
+ validateFirebaseConfig(config) {
214
+ if (config.provider !== 'firebase') {
215
+ throw new interfaces_1.ValidationError(`Invalid provider type: expected 'firebase', got '${config.provider}'`);
216
+ }
217
+ const providerConfig = config.providerConfig;
218
+ if (!providerConfig.projectId) {
219
+ throw new interfaces_1.ValidationError('Firebase projectId is required');
220
+ }
221
+ if (!providerConfig.databaseURL) {
222
+ throw new interfaces_1.ValidationError('Firebase databaseURL is required');
223
+ }
224
+ if (!providerConfig.storageBucket) {
225
+ throw new interfaces_1.ValidationError('Firebase storageBucket is required');
226
+ }
227
+ return providerConfig;
228
+ }
229
+ /**
230
+ * Validate tenant configuration
231
+ */
232
+ validateTenantConfig(config) {
233
+ if (!config.tenantId || config.tenantId.length < 3) {
234
+ throw new interfaces_1.ValidationError('Invalid tenant ID - must be at least 3 characters');
235
+ }
236
+ if (!config.securityProfile) {
237
+ throw new interfaces_1.ValidationError('Security profile is required');
238
+ }
239
+ if (!config.dataRetentionDays) {
240
+ throw new interfaces_1.ValidationError('Data retention days is required');
241
+ }
242
+ if (config.dataRetentionDays < 90) {
243
+ throw new interfaces_1.ValidationError('Data retention minimum 90 days for LGPD compliance');
244
+ }
245
+ }
246
+ async initialize(config) {
247
+ // Ensure firebase-admin is loaded
248
+ await this.ensureFirebaseLoaded();
249
+ const admin = getFirebaseAdmin();
250
+ // Validate configurations
251
+ this.validateTenantConfig(config);
252
+ const firebaseConfig = this.validateFirebaseConfig(config);
253
+ // Check if tenant already exists
254
+ if (this.tenants.has(config.tenantId)) {
255
+ throw new interfaces_1.TenantAlreadyExistsError(config.tenantId);
256
+ }
257
+ // Initialize Firebase app for this tenant
258
+ const appName = `tenant-${config.tenantId}`;
259
+ const firebaseApp = admin.initializeApp({
260
+ credential: admin.credential.applicationDefault(),
261
+ projectId: firebaseConfig.projectId,
262
+ databaseURL: firebaseConfig.databaseURL,
263
+ storageBucket: firebaseConfig.storageBucket,
264
+ }, appName);
265
+ // Create tenant app wrapper
266
+ const tenantApp = new FirebaseTenantApp(config.tenantId, firebaseApp, config);
267
+ this.tenants.set(config.tenantId, tenantApp);
268
+ return tenantApp;
269
+ }
270
+ get(tenantId) {
271
+ const app = this.tenants.get(tenantId);
272
+ if (!app) {
273
+ throw new interfaces_1.NotFoundError(`Tenant '${tenantId}' not found`);
274
+ }
275
+ return app;
276
+ }
277
+ async remove(tenantId) {
278
+ const app = this.tenants.get(tenantId);
279
+ if (!app) {
280
+ throw new interfaces_1.NotFoundError(`Tenant '${tenantId}' not found`);
281
+ }
282
+ await app.destroy();
283
+ this.tenants.delete(tenantId);
284
+ }
285
+ list() {
286
+ return Array.from(this.tenants.keys());
287
+ }
288
+ }
289
+ exports.FirebaseTenantProvider = FirebaseTenantProvider;
290
+ //# sourceMappingURL=FirebaseTenantProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FirebaseTenantProvider.js","sourceRoot":"","sources":["../../../src/tenant/providers/FirebaseTenantProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * In-Memory Tenant Provider
3
+ * Implements ITenantProvider for testing without external dependencies
4
+ */
5
+ import { ITenantProvider, ITenantApp, TenantConfig, ProviderType } from '../interfaces';
6
+ /**
7
+ * In-memory implementation of ITenantProvider
8
+ * Useful for testing without external dependencies
9
+ */
10
+ export declare class InMemoryTenantProvider implements ITenantProvider {
11
+ readonly type: ProviderType;
12
+ private tenants;
13
+ initialize(config: TenantConfig): Promise<ITenantApp>;
14
+ get(tenantId: string): ITenantApp;
15
+ remove(tenantId: string): Promise<void>;
16
+ list(): string[];
17
+ }
18
+ //# sourceMappingURL=InMemoryTenantProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryTenantProvider.d.ts","sourceRoot":"","sources":["../../../src/tenant/providers/InMemoryTenantProvider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,eAAe,EACf,UAAU,EAIV,YAAY,EACZ,YAAY,EAGb,MAAM,eAAe,CAAC;AAkHvB;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,SAAgB,IAAI,EAAE,YAAY,CAAY;IAC9C,OAAO,CAAC,OAAO,CAA6C;IAEtD,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAU3D,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAQ3B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ /**
3
+ * In-Memory Tenant Provider
4
+ * Implements ITenantProvider for testing without external dependencies
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.InMemoryTenantProvider = void 0;
8
+ const interfaces_1 = require("../interfaces");
9
+ // =============================================================================
10
+ // In-Memory Document Implementation
11
+ // =============================================================================
12
+ class InMemoryDocument {
13
+ constructor(storage, docId) {
14
+ this.storage = storage;
15
+ this.docId = docId;
16
+ }
17
+ async get() {
18
+ return this.storage.get(this.docId) ?? null;
19
+ }
20
+ async set(data) {
21
+ this.storage.set(this.docId, { ...data });
22
+ }
23
+ async update(data) {
24
+ const existing = this.storage.get(this.docId);
25
+ if (!existing) {
26
+ throw new interfaces_1.NotFoundError(`Document '${this.docId}' not found`);
27
+ }
28
+ this.storage.set(this.docId, { ...existing, ...data });
29
+ }
30
+ async delete() {
31
+ this.storage.delete(this.docId);
32
+ }
33
+ }
34
+ // =============================================================================
35
+ // In-Memory Collection Implementation
36
+ // =============================================================================
37
+ class InMemoryCollection {
38
+ constructor(collectionName) {
39
+ this.collectionName = collectionName;
40
+ this.documents = new Map();
41
+ this.autoIdCounter = 0;
42
+ }
43
+ doc(id) {
44
+ return new InMemoryDocument(this.documents, id);
45
+ }
46
+ async add(data) {
47
+ const id = `${this.collectionName}_${++this.autoIdCounter}_${Date.now()}`;
48
+ this.documents.set(id, { ...data });
49
+ return id;
50
+ }
51
+ async get() {
52
+ const results = [];
53
+ for (const [id, data] of this.documents) {
54
+ results.push({ id, data: { ...data } });
55
+ }
56
+ return results;
57
+ }
58
+ }
59
+ // =============================================================================
60
+ // In-Memory Database Implementation
61
+ // =============================================================================
62
+ class InMemoryDatabase {
63
+ constructor() {
64
+ this.collections = new Map();
65
+ }
66
+ collection(name) {
67
+ let coll = this.collections.get(name);
68
+ if (!coll) {
69
+ coll = new InMemoryCollection(name);
70
+ this.collections.set(name, coll);
71
+ }
72
+ return coll;
73
+ }
74
+ }
75
+ // =============================================================================
76
+ // In-Memory Tenant App Implementation
77
+ // =============================================================================
78
+ class InMemoryTenantApp {
79
+ constructor(tenantId, config) {
80
+ this.tenantId = tenantId;
81
+ this.config = config;
82
+ this.destroyed = false;
83
+ this.database = new InMemoryDatabase();
84
+ }
85
+ getDatabase() {
86
+ if (this.destroyed) {
87
+ throw new interfaces_1.NotFoundError(`Tenant '${this.tenantId}' has been destroyed`);
88
+ }
89
+ return this.database;
90
+ }
91
+ async destroy() {
92
+ this.destroyed = true;
93
+ // Clear internal references to allow garbage collection
94
+ this.database = null;
95
+ }
96
+ }
97
+ // =============================================================================
98
+ // In-Memory Tenant Provider Implementation
99
+ // =============================================================================
100
+ /**
101
+ * In-memory implementation of ITenantProvider
102
+ * Useful for testing without external dependencies
103
+ */
104
+ class InMemoryTenantProvider {
105
+ constructor() {
106
+ this.type = 'memory';
107
+ this.tenants = new Map();
108
+ }
109
+ async initialize(config) {
110
+ if (this.tenants.has(config.tenantId)) {
111
+ throw new interfaces_1.TenantAlreadyExistsError(config.tenantId);
112
+ }
113
+ const app = new InMemoryTenantApp(config.tenantId, config);
114
+ this.tenants.set(config.tenantId, app);
115
+ return app;
116
+ }
117
+ get(tenantId) {
118
+ const app = this.tenants.get(tenantId);
119
+ if (!app) {
120
+ throw new interfaces_1.NotFoundError(`Tenant '${tenantId}' not found`);
121
+ }
122
+ return app;
123
+ }
124
+ async remove(tenantId) {
125
+ const app = this.tenants.get(tenantId);
126
+ if (!app) {
127
+ throw new interfaces_1.NotFoundError(`Tenant '${tenantId}' not found`);
128
+ }
129
+ await app.destroy();
130
+ this.tenants.delete(tenantId);
131
+ }
132
+ list() {
133
+ return Array.from(this.tenants.keys());
134
+ }
135
+ }
136
+ exports.InMemoryTenantProvider = InMemoryTenantProvider;
137
+ //# sourceMappingURL=InMemoryTenantProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InMemoryTenantProvider.js","sourceRoot":"","sources":["../../../src/tenant/providers/InMemoryTenantProvider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "beddel",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "description": "Beddel - A secure YAML parser and OpenAPI endpoint manager for Node.js applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,11 +27,28 @@
27
27
  "./server/api/graphql": {
28
28
  "types": "./dist/server/api/graphql.d.ts",
29
29
  "default": "./dist/server/api/graphql.js"
30
+ },
31
+ "./client": {
32
+ "types": "./dist/client/index.d.ts",
33
+ "default": "./dist/client/index.js"
34
+ },
35
+ "./shared": {
36
+ "types": "./dist/shared/index.d.ts",
37
+ "default": "./dist/shared/index.js"
38
+ },
39
+ "./agents": {
40
+ "types": "./dist/agents/index.d.ts",
41
+ "default": "./dist/agents/index.js"
42
+ },
43
+ "./agents/*": {
44
+ "types": "./dist/agents/*/index.d.ts",
45
+ "default": "./dist/agents/*/index.js"
30
46
  }
31
47
  },
32
48
  "scripts": {
33
49
  "prepublishOnly": "npm run build",
34
- "build": "tsc -p tsconfig.build.json",
50
+ "build": "tsc -p tsconfig.build.json && npm run copy-yaml",
51
+ "copy-yaml": "find src/agents -name '*.yaml' -exec sh -c 'mkdir -p dist/agents/$(dirname \"{}\" | sed \"s|src/agents/||\") && cp \"{}\" dist/agents/$(dirname \"{}\" | sed \"s|src/agents/||\")/$(basename \"{}\")' \\;",
35
52
  "dev": "tsc -p tsconfig.build.json --watch",
36
53
  "test": "jest",
37
54
  "test:watch": "jest --watch",
@@ -44,11 +61,16 @@
44
61
  },
45
62
  "keywords": [
46
63
  "yaml",
47
- "parser",
48
- "openapi",
49
- "endpoint",
50
- "manager",
64
+ "agents",
65
+ "ai-agents",
66
+ "declarative",
51
67
  "secure",
68
+ "sandbox",
69
+ "isolated-vm",
70
+ "multi-tenant",
71
+ "gemini",
72
+ "genkit",
73
+ "workflow",
52
74
  "nodejs"
53
75
  ],
54
76
  "author": "Beddel Contributors",
@@ -63,25 +85,39 @@
63
85
  "homepage": "https://github.com/botanarede/beddel-alpha#readme",
64
86
  "dependencies": {
65
87
  "@ai-sdk/google": "^2.0.23",
88
+ "@modelcontextprotocol/sdk": "^1.0.0",
66
89
  "@upstash/redis": "^1.34.3",
67
90
  "ai": "^5.0.70",
68
- "firebase-admin": "12.7.0",
91
+ "chromadb": "^3.1.8",
92
+ "eventsource": "^2.0.2",
69
93
  "graphql": "^16.10.0",
70
94
  "graphql-yoga": "^5.13.5",
71
95
  "isolated-vm": "5.0.1",
72
- "js-yaml": "^4.1.0",
96
+ "js-yaml": "^4.1.1",
97
+ "server-only": "^0.0.1",
73
98
  "zod": "^4.1.12"
74
99
  },
100
+ "peerDependencies": {
101
+ "firebase-admin": ">=12.0.0"
102
+ },
103
+ "peerDependenciesMeta": {
104
+ "firebase-admin": {
105
+ "optional": true
106
+ }
107
+ },
75
108
  "devDependencies": {
109
+ "@eslint/js": "^9.39.2",
110
+ "@types/eventsource": "^1.1.15",
111
+ "@types/jest": "^29.5.12",
76
112
  "@types/js-yaml": "^4.0.9",
77
113
  "@types/node": "^22.0.0",
78
- "@types/jest": "^29.5.12",
79
114
  "@typescript-eslint/eslint-plugin": "^8.0.0",
80
115
  "@typescript-eslint/parser": "^8.0.0",
81
116
  "eslint": "^9.0.0",
82
117
  "jest": "^29.0.0",
83
118
  "ts-jest": "^29.0.0",
84
- "typescript": "^5.0.0"
119
+ "typescript": "^5.0.0",
120
+ "typescript-eslint": "^8.50.0"
85
121
  },
86
122
  "engines": {
87
123
  "node": ">=18.0.0"