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,211 @@
1
+ import 'server-only';
2
+
3
+ /**
4
+ * Chat Agent Handler - Server-only execution logic
5
+ * Orchestrates RAG pipeline or simple LLM chat based on mode
6
+ */
7
+
8
+ import type { ExecutionContext } from '../../types/executionContext';
9
+ import type { ExecutionStep } from '../../shared/types/agent.types';
10
+ import type { ChatHandlerParams, ChatHandlerResult, ChatMode } from './chat.types';
11
+ import { executeVectorizeHandler } from '../gemini-vectorize/gemini-vectorize.handler';
12
+ import { executeChromaDBHandler } from '../chromadb/chromadb.handler';
13
+ import { executeRagHandler } from '../rag/rag.handler';
14
+ import { executeLlmHandler } from '../llm/llm.handler';
15
+
16
+ const KNOWLEDGE_COLLECTION = 'beddel_knowledge';
17
+
18
+ /**
19
+ * Execute simple chat mode - direct LLM with conversation history (no documents)
20
+ */
21
+ async function executeSimpleChat(
22
+ query: string,
23
+ messages: ChatHandlerParams['messages'],
24
+ props: Record<string, string>,
25
+ context: ExecutionContext,
26
+ executionSteps: ExecutionStep[]
27
+ ): Promise<ChatHandlerResult> {
28
+ const startTime = Date.now();
29
+
30
+ context.log(`[Chat:Simple] Processing query: "${query.substring(0, 50)}..."`);
31
+
32
+ const chatStep: ExecutionStep = {
33
+ agent: 'llm',
34
+ action: 'chat',
35
+ status: 'running',
36
+ startTime: Date.now(),
37
+ phase: 'generation',
38
+ };
39
+ executionSteps.push(chatStep);
40
+
41
+ const result = await executeLlmHandler(
42
+ { query, history: messages },
43
+ props,
44
+ context
45
+ );
46
+
47
+ chatStep.status = result.error ? 'error' : 'success';
48
+ chatStep.endTime = Date.now();
49
+ chatStep.duration = chatStep.endTime - chatStep.startTime;
50
+ if (result.error) chatStep.error = result.error;
51
+
52
+ return {
53
+ response: result.response,
54
+ timestamp: result.timestamp,
55
+ execution_steps: executionSteps,
56
+ total_duration: Date.now() - startTime,
57
+ };
58
+ }
59
+
60
+ /**
61
+ * Execute RAG chat mode - full pipeline with knowledge base
62
+ */
63
+ async function executeRagChat(
64
+ query: string,
65
+ messages: ChatHandlerParams['messages'],
66
+ props: Record<string, string>,
67
+ context: ExecutionContext,
68
+ executionSteps: ExecutionStep[]
69
+ ): Promise<ChatHandlerResult> {
70
+ const startTime = Date.now();
71
+
72
+ context.log(`[Chat:RAG] Processing query: "${query.substring(0, 50)}..."`);
73
+
74
+ // Step 1: Vectorize user query
75
+ const vectorizeStep: ExecutionStep = {
76
+ agent: 'gemini-vectorize',
77
+ action: 'embedSingle',
78
+ status: 'running',
79
+ startTime: Date.now(),
80
+ phase: 'vectorization',
81
+ };
82
+ executionSteps.push(vectorizeStep);
83
+
84
+ const vectorResult = await executeVectorizeHandler(
85
+ { action: 'embedSingle', text: query },
86
+ props,
87
+ context
88
+ );
89
+
90
+ vectorizeStep.status = vectorResult.success ? 'success' : 'error';
91
+ vectorizeStep.endTime = Date.now();
92
+ vectorizeStep.duration = vectorizeStep.endTime - vectorizeStep.startTime;
93
+
94
+ if (!vectorResult.success || !vectorResult.vector) {
95
+ throw new Error(`Vectorization failed: ${vectorResult.error}`);
96
+ }
97
+
98
+ // Step 2: Check if knowledge base has data
99
+ const checkStep: ExecutionStep = {
100
+ agent: 'chromadb',
101
+ action: 'hasData',
102
+ status: 'running',
103
+ startTime: Date.now(),
104
+ phase: 'retrieval',
105
+ };
106
+ executionSteps.push(checkStep);
107
+
108
+ const hasDataResult = await executeChromaDBHandler(
109
+ { action: 'hasData', collection_name: KNOWLEDGE_COLLECTION, min_count: 5 },
110
+ props,
111
+ context
112
+ );
113
+
114
+ checkStep.status = hasDataResult.success ? 'success' : 'error';
115
+ checkStep.endTime = Date.now();
116
+ checkStep.duration = checkStep.endTime - checkStep.startTime;
117
+
118
+ // Step 3: Search knowledge base
119
+ const searchStep: ExecutionStep = {
120
+ agent: 'chromadb',
121
+ action: 'search',
122
+ status: 'running',
123
+ startTime: Date.now(),
124
+ phase: 'retrieval',
125
+ };
126
+ executionSteps.push(searchStep);
127
+
128
+ const searchResult = await executeChromaDBHandler(
129
+ {
130
+ action: 'search',
131
+ collection_name: KNOWLEDGE_COLLECTION,
132
+ query_vector: vectorResult.vector,
133
+ limit: 5,
134
+ },
135
+ props,
136
+ context
137
+ );
138
+
139
+ searchStep.status = searchResult.success ? 'success' : 'error';
140
+ searchStep.endTime = Date.now();
141
+ searchStep.duration = searchStep.endTime - searchStep.startTime;
142
+
143
+ // Step 4: Generate answer using RAG
144
+ const ragStep: ExecutionStep = {
145
+ agent: 'rag',
146
+ action: 'generate',
147
+ status: 'running',
148
+ startTime: Date.now(),
149
+ phase: 'generation',
150
+ };
151
+ executionSteps.push(ragStep);
152
+
153
+ const hasDocuments = searchResult.documents && searchResult.documents.trim().length > 0;
154
+ const documents = hasDocuments
155
+ ? searchResult.documents
156
+ : 'No specific documentation available. Answer based on general knowledge.';
157
+
158
+ const ragResult = await executeRagHandler(
159
+ { query, documents, history: messages },
160
+ props,
161
+ context
162
+ );
163
+
164
+ ragStep.status = ragResult.error ? 'error' : 'success';
165
+ ragStep.endTime = Date.now();
166
+ ragStep.duration = ragStep.endTime - ragStep.startTime;
167
+ if (ragResult.error) ragStep.error = ragResult.error;
168
+
169
+ return {
170
+ response: ragResult.response,
171
+ timestamp: ragResult.timestamp,
172
+ execution_steps: executionSteps,
173
+ total_duration: Date.now() - startTime,
174
+ };
175
+ }
176
+
177
+ /**
178
+ * Execute chat orchestration
179
+ */
180
+ export async function executeChatHandler(
181
+ params: ChatHandlerParams,
182
+ props: Record<string, string>,
183
+ context: ExecutionContext
184
+ ): Promise<ChatHandlerResult> {
185
+ const executionSteps: ExecutionStep[] = [];
186
+ const messages = params.messages || [];
187
+ const lastUserMessage = [...messages].reverse().find((m) => m.role === 'user');
188
+ const query = params.query || lastUserMessage?.content || '';
189
+ const mode: ChatMode = params.mode || 'rag';
190
+
191
+ if (!query) {
192
+ throw new Error('No query found in messages or query parameter');
193
+ }
194
+
195
+ try {
196
+ return mode === 'simple'
197
+ ? await executeSimpleChat(query, messages, props, context, executionSteps)
198
+ : await executeRagChat(query, messages, props, context, executionSteps);
199
+ } catch (error: unknown) {
200
+ const message = error instanceof Error ? error.message : String(error);
201
+ context.log(`[Chat] Error: ${message}`);
202
+ context.setError(message);
203
+
204
+ return {
205
+ response: `Error processing your request: ${message}`,
206
+ timestamp: new Date().toISOString(),
207
+ execution_steps: executionSteps,
208
+ total_duration: 0,
209
+ };
210
+ }
211
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Chat Agent Schema - Zod validation schemas
3
+ * Safe for both client and server
4
+ */
5
+
6
+ import { z } from 'zod';
7
+
8
+ export const ChatInputSchema = z.object({
9
+ messages: z.array(z.object({
10
+ role: z.enum(['user', 'assistant', 'system']),
11
+ content: z.string(),
12
+ })),
13
+ query: z.string().optional(),
14
+ knowledge_sources: z.array(z.string()).optional(),
15
+ });
16
+
17
+ export const ChatOutputSchema = z.object({
18
+ response: z.string(),
19
+ timestamp: z.string(),
20
+ execution_steps: z.array(z.object({
21
+ agent: z.string(),
22
+ action: z.string(),
23
+ status: z.enum(['running', 'success', 'error']),
24
+ startTime: z.number(),
25
+ endTime: z.number().optional(),
26
+ duration: z.number().optional(),
27
+ error: z.string().optional(),
28
+ })).optional(),
29
+ total_duration: z.number().optional(),
30
+ });
31
+
32
+ export type ChatInput = z.infer<typeof ChatInputSchema>;
33
+ export type ChatOutput = z.infer<typeof ChatOutputSchema>;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Chat Agent Types - Shared between client and server
3
+ */
4
+
5
+ import type { ConversationMessage } from '../rag/rag.types';
6
+ import type { ExecutionStep } from '../../shared/types/agent.types';
7
+
8
+ /**
9
+ * Chat mode determines the execution flow
10
+ * - 'rag': Full RAG pipeline with knowledge base (default)
11
+ * - 'simple': Direct LLM chat maintaining conversation context only
12
+ */
13
+ export type ChatMode = 'rag' | 'simple';
14
+
15
+ /**
16
+ * Parameters for chat orchestration
17
+ */
18
+ export interface ChatHandlerParams {
19
+ messages: ConversationMessage[];
20
+ query?: string;
21
+ mode?: ChatMode;
22
+ knowledge_sources?: string[];
23
+ }
24
+
25
+ /**
26
+ * Result from chat orchestration
27
+ */
28
+ export interface ChatHandlerResult {
29
+ response: string;
30
+ timestamp: string;
31
+ execution_steps?: ExecutionStep[];
32
+ total_duration?: number;
33
+ }
34
+
35
+ /**
36
+ * Chat agent metadata
37
+ */
38
+ export interface ChatMetadata {
39
+ id: 'chat';
40
+ name: string;
41
+ description: string;
42
+ category: 'chat';
43
+ route: '/agents/chat';
44
+ knowledge_sources: string[];
45
+ tags: string[];
46
+ }
@@ -0,0 +1,148 @@
1
+ # Chat Agent - Native Builtin Orchestrator Agent for Beddel Runtime
2
+ # Route: /agents/chat
3
+ # Method: chat.execute
4
+
5
+ agent:
6
+ id: chat
7
+ version: 1.0.0
8
+ protocol: beddel-declarative-protocol/v2.0
9
+
10
+ metadata:
11
+ name: "Q&A Context Chat Agent"
12
+ description: "Orchestrates RAG pipeline or direct LLM chat based on mode selection"
13
+ category: "chat"
14
+ route: "/agents/chat"
15
+ knowledge_sources:
16
+ - "gitmcp-agent"
17
+ tags:
18
+ - "chat"
19
+ - "orchestrator"
20
+ - "rag"
21
+ - "llm"
22
+ - "qa"
23
+
24
+ schema:
25
+ input:
26
+ type: "object"
27
+ properties:
28
+ messages:
29
+ type: "array"
30
+ items:
31
+ type: "object"
32
+ properties:
33
+ role:
34
+ type: "string"
35
+ enum: ["user", "assistant", "system"]
36
+ content:
37
+ type: "string"
38
+ required: ["role", "content"]
39
+ description: "Conversation messages"
40
+ query:
41
+ type: "string"
42
+ description: "Direct query (alternative to messages)"
43
+ mode:
44
+ type: "string"
45
+ enum: ["rag", "simple"]
46
+ default: "rag"
47
+ description: "Chat mode: 'rag' for knowledge-based answers, 'simple' for direct LLM chat"
48
+ knowledge_sources:
49
+ type: "array"
50
+ items:
51
+ type: "string"
52
+ description: "GitMCP URLs to use as knowledge sources"
53
+ required: ["messages"]
54
+
55
+ output:
56
+ type: "object"
57
+ properties:
58
+ response:
59
+ type: "string"
60
+ description: "Generated answer"
61
+ timestamp:
62
+ type: "string"
63
+ description: "ISO timestamp"
64
+ execution_steps:
65
+ type: "array"
66
+ description: "Detailed execution steps for observability"
67
+ total_duration:
68
+ type: "number"
69
+ description: "Total execution time in milliseconds"
70
+ required: ["response", "timestamp"]
71
+
72
+ logic:
73
+ variables:
74
+ - name: "userQuery"
75
+ type: "string"
76
+ init: '""'
77
+ - name: "allDocuments"
78
+ type: "string"
79
+ init: '""'
80
+
81
+ workflow:
82
+ # Step 1: Extract user query from messages
83
+ - name: "extract-query"
84
+ type: "output-generator"
85
+ action:
86
+ type: "generate"
87
+ output:
88
+ _extracted: true
89
+
90
+ # Step 2: Mode branch - Simple LLM chat or RAG pipeline
91
+ - name: "mode-check"
92
+ type: "conditional"
93
+ condition: "$input.mode == 'simple'"
94
+ then:
95
+ # Simple mode: Direct LLM chat with conversation history (no documents)
96
+ - name: "simple-chat"
97
+ type: "llm"
98
+ action:
99
+ query: "$input.query"
100
+ history: "$input.messages"
101
+ result: "llmResult"
102
+ else:
103
+ # RAG mode: Full pipeline with knowledge base
104
+ - name: "vectorize-query"
105
+ type: "gemini-vectorize"
106
+ action:
107
+ action: "embedSingle"
108
+ text: "$input.query"
109
+ result: "queryVector"
110
+
111
+ - name: "check-knowledge"
112
+ type: "chromadb"
113
+ action:
114
+ action: "hasData"
115
+ collection_name: "beddel_knowledge"
116
+ min_count: 5
117
+ result: "hasDataResult"
118
+
119
+ - name: "search-knowledge"
120
+ type: "chromadb"
121
+ action:
122
+ action: "search"
123
+ collection_name: "beddel_knowledge"
124
+ query_vector: "$queryVector.vector"
125
+ limit: 5
126
+ result: "searchResult"
127
+
128
+ - name: "generate-answer"
129
+ type: "rag"
130
+ action:
131
+ query: "$input.query"
132
+ documents: "$searchResult.documents"
133
+ history: "$input.messages"
134
+ result: "ragResult"
135
+
136
+ # Step 3: Deliver final response
137
+ - name: "deliver-response"
138
+ type: "output-generator"
139
+ action:
140
+ type: "generate"
141
+ output:
142
+ response: "$ragResult.response"
143
+ timestamp: "$ragResult.timestamp"
144
+
145
+ output:
146
+ schema:
147
+ response: "$ragResult.response"
148
+ timestamp: "$ragResult.timestamp"
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Chat Agent - Public exports (client-safe)
3
+ */
4
+
5
+ // Schema exports (client-safe)
6
+ export { ChatInputSchema, ChatOutputSchema } from './chat.schema';
7
+ export type { ChatInput, ChatOutput } from './chat.schema';
8
+
9
+ // Type exports (client-safe)
10
+ export type { ChatHandlerParams, ChatHandlerResult, ChatMetadata } from './chat.types';
11
+
12
+ // Metadata (client-safe)
13
+ export const chatMetadata = {
14
+ id: 'chat',
15
+ name: 'Q&A Context Chat Agent',
16
+ description: 'Orchestrates RAG pipeline: vectorization, storage, retrieval and answer generation',
17
+ category: 'chat',
18
+ route: '/agents/chat',
19
+ knowledge_sources: ['gitmcp-agent'],
20
+ tags: ['chat', 'orchestrator', 'rag', 'qa'],
21
+ } as const;
@@ -0,0 +1,130 @@
1
+ import 'server-only';
2
+
3
+ /**
4
+ * ChromaDB Agent Handler - Server-only execution logic
5
+ * Vector storage and retrieval using ChromaDB
6
+ */
7
+
8
+ import type { ExecutionContext } from '../../types/executionContext';
9
+ import type { ChromaDBHandlerParams, ChromaDBHandlerResult, ChromaDBSearchResult } from './chromadb.types';
10
+
11
+ // ChromaDB imports (lazy loaded)
12
+ let chromaClient: any = null;
13
+
14
+ /**
15
+ * Execute ChromaDB operations
16
+ */
17
+ export async function executeChromaDBHandler(
18
+ params: ChromaDBHandlerParams,
19
+ _props: Record<string, string>,
20
+ context: ExecutionContext
21
+ ): Promise<ChromaDBHandlerResult> {
22
+ const action = params.action;
23
+ const collectionName = params.collection_name;
24
+
25
+ if (!collectionName) {
26
+ throw new Error('Missing required ChromaDB input: collection_name');
27
+ }
28
+
29
+ try {
30
+ // Lazy load ChromaDB
31
+ if (!chromaClient) {
32
+ const chromaModule = await import('chromadb');
33
+
34
+ if (process.env.CHROMADB_API_KEY) {
35
+ context.log('[ChromaDB] Initializing CloudClient...');
36
+ chromaClient = new chromaModule.CloudClient({
37
+ apiKey: process.env.CHROMADB_API_KEY,
38
+ tenant: process.env.CHROMADB_TENANT || 'default_tenant',
39
+ database: process.env.CHROMADB_DATABASE || 'dev',
40
+ });
41
+ } else {
42
+ context.log('[ChromaDB] Initializing Local ChromaClient...');
43
+ chromaClient = new chromaModule.ChromaClient({
44
+ path: process.env.CHROMADB_URL || 'http://localhost:8000',
45
+ });
46
+ }
47
+ }
48
+
49
+ if (action === 'hasData') {
50
+ const minCount = params.min_count || 1;
51
+ context.log(`[ChromaDB] Checking data for collection: ${collectionName}`);
52
+
53
+ try {
54
+ const collection = await chromaClient.getCollection({
55
+ name: collectionName,
56
+ embeddingFunction: undefined,
57
+ });
58
+ const count = await collection.count();
59
+ const hasEnoughData = count >= minCount;
60
+
61
+ return { success: true, has_data: hasEnoughData, count };
62
+ } catch {
63
+ return { success: true, has_data: false, count: 0 };
64
+ }
65
+
66
+ } else if (action === 'store') {
67
+ const ids = params.ids;
68
+ const vectors = params.vectors;
69
+ const documents = params.documents;
70
+ const metadatas = params.metadatas;
71
+
72
+ context.log(`[ChromaDB] Storing ${ids?.length || 0} items in ${collectionName}...`);
73
+
74
+ const collection = await chromaClient.getOrCreateCollection({
75
+ name: collectionName,
76
+ embeddingFunction: undefined,
77
+ });
78
+
79
+ await collection.add({
80
+ ids,
81
+ embeddings: vectors,
82
+ documents,
83
+ metadatas,
84
+ });
85
+
86
+ return { success: true, stored_count: ids?.length || 0 };
87
+
88
+ } else if (action === 'search') {
89
+ const queryVector = params.query_vector;
90
+ const limit = params.limit || 5;
91
+
92
+ context.log(`[ChromaDB] Searching ${collectionName}...`);
93
+
94
+ try {
95
+ const collection = await chromaClient.getCollection({
96
+ name: collectionName,
97
+ embeddingFunction: undefined,
98
+ });
99
+
100
+ const results = await collection.query({
101
+ queryEmbeddings: [queryVector],
102
+ nResults: limit,
103
+ });
104
+
105
+ const flatResults: ChromaDBSearchResult[] = (results.documents[0] || []).map(
106
+ (doc: string | null, idx: number) => ({
107
+ text: doc,
108
+ metadata: results.metadatas[0]?.[idx] || null,
109
+ distance: results.distances?.[0]?.[idx] || null,
110
+ })
111
+ );
112
+
113
+ const documentsString = flatResults.map((r) => r.text).join('\n\n---\n\n');
114
+
115
+ return { success: true, results: flatResults, documents: documentsString };
116
+ } catch {
117
+ // Collection doesn't exist - return empty results
118
+ context.log(`[ChromaDB] Collection ${collectionName} not found, returning empty results`);
119
+ return { success: true, results: [], documents: '' };
120
+ }
121
+
122
+ } else {
123
+ throw new Error(`Unknown ChromaDB action: ${action}`);
124
+ }
125
+ } catch (error: unknown) {
126
+ const message = error instanceof Error ? error.message : String(error);
127
+ context.log(`[ChromaDB] Error: ${message}`);
128
+ return { success: false, error: message };
129
+ }
130
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ChromaDB Agent Schema - Zod validation schemas
3
+ * Safe for both client and server
4
+ */
5
+
6
+ import { z } from 'zod';
7
+
8
+ export const ChromaDBInputSchema = z.object({
9
+ action: z.enum(['hasData', 'store', 'search']),
10
+ collection_name: z.string().min(1),
11
+ min_count: z.number().optional(),
12
+ ids: z.array(z.string()).optional(),
13
+ vectors: z.array(z.array(z.number())).optional(),
14
+ documents: z.array(z.string()).optional(),
15
+ metadatas: z.array(z.record(z.string(), z.unknown())).optional(),
16
+ query_vector: z.array(z.number()).optional(),
17
+ limit: z.number().optional(),
18
+ });
19
+
20
+ export const ChromaDBOutputSchema = z.object({
21
+ success: z.boolean(),
22
+ has_data: z.boolean().optional(),
23
+ count: z.number().optional(),
24
+ stored_count: z.number().optional(),
25
+ results: z.array(z.object({
26
+ text: z.string().nullable(),
27
+ metadata: z.record(z.string(), z.unknown()).nullable(),
28
+ distance: z.number().nullable(),
29
+ })).optional(),
30
+ documents: z.string().optional(),
31
+ error: z.string().optional(),
32
+ });
33
+
34
+ export type ChromaDBInput = z.infer<typeof ChromaDBInputSchema>;
35
+ export type ChromaDBOutput = z.infer<typeof ChromaDBOutputSchema>;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * ChromaDB Agent Types - Shared between client and server
3
+ */
4
+
5
+ /**
6
+ * Parameters for ChromaDB operations
7
+ */
8
+ export interface ChromaDBHandlerParams {
9
+ action: 'hasData' | 'store' | 'search';
10
+ collection_name: string;
11
+ min_count?: number;
12
+ ids?: string[];
13
+ vectors?: number[][];
14
+ documents?: string[];
15
+ metadatas?: Record<string, unknown>[];
16
+ query_vector?: number[];
17
+ limit?: number;
18
+ }
19
+
20
+ /**
21
+ * Search result item
22
+ */
23
+ export interface ChromaDBSearchResult {
24
+ text: string | null;
25
+ metadata: Record<string, unknown> | null;
26
+ distance: number | null;
27
+ }
28
+
29
+ /**
30
+ * Result from ChromaDB operations
31
+ */
32
+ export interface ChromaDBHandlerResult {
33
+ success: boolean;
34
+ has_data?: boolean;
35
+ count?: number;
36
+ stored_count?: number;
37
+ results?: ChromaDBSearchResult[];
38
+ documents?: string;
39
+ error?: string;
40
+ }
41
+
42
+ /**
43
+ * ChromaDB agent metadata
44
+ */
45
+ export interface ChromaDBMetadata {
46
+ id: 'chromadb';
47
+ name: string;
48
+ description: string;
49
+ category: 'database';
50
+ route: '/agents/chromadb';
51
+ tags: string[];
52
+ }