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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.3] - 2025-12-20
4
+
5
+ ### Added
6
+ - **Client-Safe Type Exports**: Exposed shared types for frontend consumption
7
+ - `AgentMetadata`, `AgentResponse`, `ExecutionStep` from shared agent types
8
+ - `WorkflowStepType`, `AgentCategory` for workflow typing
9
+ - `ChatHandlerParams`, `ChatHandlerResult`, `ChatMetadata` for chat agent
10
+ - `ConversationMessage` from RAG types
11
+ - `chatMetadata` constant for chat agent metadata
12
+
13
+ ### Purpose
14
+ - Enable frontend applications to import types directly from `beddel` package
15
+ - Support type-safe chat UI development without duplicating type definitions
16
+ - All exported types are client-safe (no server-only dependencies)
17
+
3
18
  ## [0.2.2] - 2025-12-19
4
19
 
5
20
  ### Changed
package/README.md CHANGED
@@ -132,10 +132,29 @@ your-app/
132
132
  │ └── translator-custom/
133
133
  │ └── translator-custom.yaml # Override built-in
134
134
 
135
- └── packages/beddel/src/agents/ # Built-in agents (package)
136
- ├── joker-agent.yaml
137
- ├── translator-agent.yaml
138
- └── image-agent.yaml
135
+ └── packages/beddel/src/agents/ # Built-in agents (sharded structure)
136
+ ├── joker/
137
+ ├── joker.yaml # Agent definition
138
+ │ ├── joker.handler.ts # Server-only handler
139
+ │ ├── joker.schema.ts # Zod validation
140
+ │ ├── joker.types.ts # TypeScript types
141
+ │ └── index.ts # Public exports
142
+ ├── translator/
143
+ │ └── ...
144
+ ├── image/
145
+ │ └── ...
146
+ ├── mcp-tool/
147
+ │ └── ...
148
+ ├── gemini-vectorize/
149
+ │ └── ...
150
+ ├── chromadb/
151
+ │ └── ...
152
+ ├── gitmcp/
153
+ │ └── ...
154
+ ├── rag/
155
+ │ └── ...
156
+ └── chat/
157
+ └── ...
139
158
  ```
140
159
 
141
160
  ### Agent Loading Flow
@@ -409,7 +428,7 @@ const result = await agentRegistry.executeAgent(
409
428
  | **Security** | `SecurityScanner`, `ThreatDetectionEngine` | Static scanning, scoring |
410
429
  | **Compliance** | `GDPRCompliance`, `LGPDCompliance` | Audit, anonymization |
411
430
  | **Performance** | `PerformanceMonitor`, `AutoScaler` | Metrics, scaling |
412
- | **Multi-tenancy** | `MultiTenantFirebaseManager` | Firebase tenant isolation |
431
+ | **Multi-tenancy** | `TenantManager`, `ITenantProvider` | Provider-agnostic tenant isolation |
413
432
 
414
433
  ### Secure YAML Parsing
415
434
 
@@ -495,6 +514,65 @@ Supported types: `string`, `number`, `boolean`, `object`, `array`
495
514
 
496
515
  ---
497
516
 
517
+ ## Multi-Tenant Architecture
518
+
519
+ Beddel provides a provider-agnostic multi-tenant system with a dynamic registry for external providers.
520
+
521
+ ### Built-in Providers
522
+
523
+ | Provider | Type | Use Case |
524
+ |----------|------|----------|
525
+ | `InMemoryTenantProvider` | `memory` | Testing, development |
526
+
527
+ ### External Providers
528
+
529
+ Provider implementations that handle credentials (Firebase, Supabase, etc.) should be implemented in the consuming application. Use `ProviderRegistry` to register custom providers:
530
+
531
+ ```typescript
532
+ import { ProviderRegistry } from "beddel";
533
+ import { FirebaseTenantProvider } from "./providers/FirebaseTenantProvider";
534
+
535
+ // Register during application bootstrap
536
+ ProviderRegistry.register('firebase', () => new FirebaseTenantProvider());
537
+ ```
538
+
539
+ ### Quick Start
540
+
541
+ ```typescript
542
+ import { TenantManager } from "beddel";
543
+
544
+ const manager = TenantManager.getInstance();
545
+
546
+ // Initialize tenant
547
+ const result = await manager.initializeTenant({
548
+ tenantId: "tenant-123",
549
+ securityProfile: "tenant-isolated",
550
+ dataRetentionDays: 365,
551
+ lgpdEnabled: true,
552
+ gdprEnabled: true,
553
+ provider: "memory", // or registered external provider like "firebase"
554
+ providerConfig: {}
555
+ });
556
+
557
+ // Execute in tenant context
558
+ await manager.executeInTenant("tenant-123", "operation", data, async () => {
559
+ const app = manager.getTenantApp("tenant-123");
560
+ const db = app.getDatabase();
561
+ await db.collection("users").add({ name: "Alice" });
562
+ });
563
+ ```
564
+
565
+ ### Core Interfaces
566
+
567
+ - `ITenantProvider` — Abstract provider for tenant management
568
+ - `ITenantApp` — Isolated tenant instance
569
+ - `ITenantDatabase` — Database operations
570
+ - `ITenantCollection` — Collection operations
571
+ - `ITenantDocument` — Document CRUD
572
+ - `ProviderRegistry` — Dynamic provider registration
573
+
574
+ ---
575
+
498
576
  ## Security
499
577
 
500
578
  ### Multi-Layer Security Model
@@ -520,20 +598,45 @@ const result = await runtime.execute({
520
598
 
521
599
  ```
522
600
  src/
523
- ├── agents/ # Agent registry and built-in agents
524
- │ ├── agentRegistry.ts # Agent management
525
- │ ├── joker-agent.yaml # Built-in: Joker
526
- ├── translator-agent.yaml
527
- └── image-agent.yaml
528
- ├── parser/ # Secure YAML parsing
601
+ ├── agents/ # Agent registry and sharded agent modules
602
+ │ ├── registry/ # Agent registry
603
+ ├── agentRegistry.ts
604
+ │ └── index.ts
605
+ ├── joker/ # Joker agent
606
+ │ │ ├── joker.yaml
607
+ │ │ ├── joker.handler.ts
608
+ │ │ ├── joker.schema.ts
609
+ │ │ ├── joker.types.ts
610
+ │ │ └── index.ts
611
+ │ ├── translator/ # Translator agent
612
+ │ ├── image/ # Image generator agent
613
+ │ ├── mcp-tool/ # MCP tool agent
614
+ │ ├── gemini-vectorize/ # Embeddings agent
615
+ │ ├── chromadb/ # Vector storage agent
616
+ │ ├── gitmcp/ # GitHub docs agent
617
+ │ ├── rag/ # RAG agent
618
+ │ ├── chat/ # Chat orchestrator agent
619
+ │ └── index.ts # Public exports
529
620
  ├── runtime/ # Execution environments
530
- │ ├── isolatedRuntime.ts
531
621
  │ ├── declarativeAgentRuntime.ts
532
- └── schemaCompiler.ts
622
+ ├── workflowExecutor.ts # Workflow step execution
623
+ │ ├── schemaCompiler.ts
624
+ │ └── index.ts
625
+ ├── shared/ # Client-safe types and utilities
626
+ │ ├── types/
627
+ │ └── utils/
628
+ ├── client/ # Client-safe exports
629
+ ├── parser/ # Secure YAML parsing
533
630
  ├── security/ # Scanning and threat detection
534
631
  ├── compliance/ # GDPR/LGPD utilities
535
632
  ├── performance/ # Monitoring and autoscaling
536
- ├── firebase/ # Multi-tenant management
633
+ ├── tenant/ # Provider-agnostic multi-tenant management
634
+ │ ├── TenantManager.ts # Singleton tenant orchestrator
635
+ │ ├── interfaces.ts # ITenantProvider, ITenantApp, etc.
636
+ │ ├── providerFactory.ts # Provider instantiation
637
+ │ ├── providerRegistry.ts # Dynamic provider registration
638
+ │ └── providers/ # Built-in provider implementations
639
+ │ └── InMemoryTenantProvider.ts
537
640
  └── index.ts # Public exports
538
641
  ```
539
642
 
@@ -0,0 +1,12 @@
1
+ import 'server-only';
2
+ /**
3
+ * Chat Agent Handler - Server-only execution logic
4
+ * Orchestrates RAG pipeline or simple chat based on mode
5
+ */
6
+ import type { ExecutionContext } from '../../types/executionContext';
7
+ import type { ChatHandlerParams, ChatHandlerResult } from './chat.types';
8
+ /**
9
+ * Execute chat orchestration
10
+ */
11
+ export declare function executeChatHandler(params: ChatHandlerParams, props: Record<string, string>, context: ExecutionContext): Promise<ChatHandlerResult>;
12
+ //# sourceMappingURL=chat.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.handler.d.ts","sourceRoot":"","sources":["../../../src/agents/chat/chat.handler.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAY,MAAM,cAAc,CAAC;AAqKnF;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeChatHandler = executeChatHandler;
4
+ require("server-only");
5
+ const gemini_vectorize_handler_1 = require("../gemini-vectorize/gemini-vectorize.handler");
6
+ const chromadb_handler_1 = require("../chromadb/chromadb.handler");
7
+ const rag_handler_1 = require("../rag/rag.handler");
8
+ const KNOWLEDGE_COLLECTION = 'beddel_knowledge';
9
+ /**
10
+ * Execute simple chat mode - direct LLM with conversation history
11
+ */
12
+ async function executeSimpleChat(query, messages, props, context, executionSteps) {
13
+ const startTime = Date.now();
14
+ context.log(`[Chat:Simple] Processing query: "${query.substring(0, 50)}..."`);
15
+ const chatStep = {
16
+ agent: 'rag',
17
+ action: 'chat',
18
+ status: 'running',
19
+ startTime: Date.now(),
20
+ phase: 'generation',
21
+ };
22
+ executionSteps.push(chatStep);
23
+ const result = await (0, rag_handler_1.executeRagHandler)({ query, history: messages, mode: 'simple' }, props, context);
24
+ chatStep.status = result.error ? 'error' : 'success';
25
+ chatStep.endTime = Date.now();
26
+ chatStep.duration = chatStep.endTime - chatStep.startTime;
27
+ if (result.error)
28
+ chatStep.error = result.error;
29
+ return {
30
+ response: result.response,
31
+ timestamp: result.timestamp,
32
+ execution_steps: executionSteps,
33
+ total_duration: Date.now() - startTime,
34
+ };
35
+ }
36
+ /**
37
+ * Execute RAG chat mode - full pipeline with knowledge base
38
+ */
39
+ async function executeRagChat(query, messages, props, context, executionSteps) {
40
+ const startTime = Date.now();
41
+ context.log(`[Chat:RAG] Processing query: "${query.substring(0, 50)}..."`);
42
+ // Step 1: Vectorize user query
43
+ const vectorizeStep = {
44
+ agent: 'gemini-vectorize',
45
+ action: 'embedSingle',
46
+ status: 'running',
47
+ startTime: Date.now(),
48
+ phase: 'vectorization',
49
+ };
50
+ executionSteps.push(vectorizeStep);
51
+ const vectorResult = await (0, gemini_vectorize_handler_1.executeVectorizeHandler)({ action: 'embedSingle', text: query }, props, context);
52
+ vectorizeStep.status = vectorResult.success ? 'success' : 'error';
53
+ vectorizeStep.endTime = Date.now();
54
+ vectorizeStep.duration = vectorizeStep.endTime - vectorizeStep.startTime;
55
+ if (!vectorResult.success || !vectorResult.vector) {
56
+ throw new Error(`Vectorization failed: ${vectorResult.error}`);
57
+ }
58
+ // Step 2: Check if knowledge base has data
59
+ const checkStep = {
60
+ agent: 'chromadb',
61
+ action: 'hasData',
62
+ status: 'running',
63
+ startTime: Date.now(),
64
+ phase: 'retrieval',
65
+ };
66
+ executionSteps.push(checkStep);
67
+ const hasDataResult = await (0, chromadb_handler_1.executeChromaDBHandler)({ action: 'hasData', collection_name: KNOWLEDGE_COLLECTION, min_count: 5 }, props, context);
68
+ checkStep.status = hasDataResult.success ? 'success' : 'error';
69
+ checkStep.endTime = Date.now();
70
+ checkStep.duration = checkStep.endTime - checkStep.startTime;
71
+ // Step 3: Search knowledge base
72
+ const searchStep = {
73
+ agent: 'chromadb',
74
+ action: 'search',
75
+ status: 'running',
76
+ startTime: Date.now(),
77
+ phase: 'retrieval',
78
+ };
79
+ executionSteps.push(searchStep);
80
+ const searchResult = await (0, chromadb_handler_1.executeChromaDBHandler)({
81
+ action: 'search',
82
+ collection_name: KNOWLEDGE_COLLECTION,
83
+ query_vector: vectorResult.vector,
84
+ limit: 5,
85
+ }, props, context);
86
+ searchStep.status = searchResult.success ? 'success' : 'error';
87
+ searchStep.endTime = Date.now();
88
+ searchStep.duration = searchStep.endTime - searchStep.startTime;
89
+ // Step 4: Generate answer
90
+ const ragStep = {
91
+ agent: 'rag',
92
+ action: 'generate',
93
+ status: 'running',
94
+ startTime: Date.now(),
95
+ phase: 'generation',
96
+ };
97
+ executionSteps.push(ragStep);
98
+ const hasDocuments = searchResult.documents && searchResult.documents.trim().length > 0;
99
+ const ragResult = hasDocuments
100
+ ? await (0, rag_handler_1.executeRagHandler)({ query, documents: searchResult.documents, history: messages }, props, context)
101
+ : await (0, rag_handler_1.executeRagHandler)({ query, documents: 'No specific documentation available. Answer based on general knowledge.', history: messages }, props, context);
102
+ ragStep.status = ragResult.error ? 'error' : 'success';
103
+ ragStep.endTime = Date.now();
104
+ ragStep.duration = ragStep.endTime - ragStep.startTime;
105
+ if (ragResult.error)
106
+ ragStep.error = ragResult.error;
107
+ return {
108
+ response: ragResult.response,
109
+ timestamp: ragResult.timestamp,
110
+ execution_steps: executionSteps,
111
+ total_duration: Date.now() - startTime,
112
+ };
113
+ }
114
+ /**
115
+ * Execute chat orchestration
116
+ */
117
+ async function executeChatHandler(params, props, context) {
118
+ const executionSteps = [];
119
+ const messages = params.messages || [];
120
+ const lastUserMessage = [...messages].reverse().find((m) => m.role === 'user');
121
+ const query = params.query || lastUserMessage?.content || '';
122
+ const mode = params.mode || 'rag';
123
+ if (!query) {
124
+ throw new Error('No query found in messages or query parameter');
125
+ }
126
+ try {
127
+ return mode === 'simple'
128
+ ? await executeSimpleChat(query, messages, props, context, executionSteps)
129
+ : await executeRagChat(query, messages, props, context, executionSteps);
130
+ }
131
+ catch (error) {
132
+ const message = error instanceof Error ? error.message : String(error);
133
+ context.log(`[Chat] Error: ${message}`);
134
+ context.setError(message);
135
+ return {
136
+ response: `Error processing your request: ${message}`,
137
+ timestamp: new Date().toISOString(),
138
+ execution_steps: executionSteps,
139
+ total_duration: 0,
140
+ };
141
+ }
142
+ }
143
+ //# sourceMappingURL=chat.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.handler.js","sourceRoot":"","sources":["../../../src/agents/chat/chat.handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Chat Agent Schema - Zod validation schemas
3
+ * Safe for both client and server
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const ChatInputSchema: z.ZodObject<{
7
+ messages: z.ZodArray<z.ZodObject<{
8
+ role: z.ZodEnum<{
9
+ user: "user";
10
+ assistant: "assistant";
11
+ system: "system";
12
+ }>;
13
+ content: z.ZodString;
14
+ }, z.core.$strip>>;
15
+ query: z.ZodOptional<z.ZodString>;
16
+ knowledge_sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
+ }, z.core.$strip>;
18
+ export declare const ChatOutputSchema: z.ZodObject<{
19
+ response: z.ZodString;
20
+ timestamp: z.ZodString;
21
+ execution_steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
22
+ agent: z.ZodString;
23
+ action: z.ZodString;
24
+ status: z.ZodEnum<{
25
+ error: "error";
26
+ success: "success";
27
+ running: "running";
28
+ }>;
29
+ startTime: z.ZodNumber;
30
+ endTime: z.ZodOptional<z.ZodNumber>;
31
+ duration: z.ZodOptional<z.ZodNumber>;
32
+ error: z.ZodOptional<z.ZodString>;
33
+ }, z.core.$strip>>>;
34
+ total_duration: z.ZodOptional<z.ZodNumber>;
35
+ }, z.core.$strip>;
36
+ export type ChatInput = z.infer<typeof ChatInputSchema>;
37
+ export type ChatOutput = z.infer<typeof ChatOutputSchema>;
38
+ //# sourceMappingURL=chat.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.schema.d.ts","sourceRoot":"","sources":["../../../src/agents/chat/chat.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;iBAO1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;iBAa3B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Chat Agent Schema - Zod validation schemas
4
+ * Safe for both client and server
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ChatOutputSchema = exports.ChatInputSchema = void 0;
8
+ const zod_1 = require("zod");
9
+ exports.ChatInputSchema = zod_1.z.object({
10
+ messages: zod_1.z.array(zod_1.z.object({
11
+ role: zod_1.z.enum(['user', 'assistant', 'system']),
12
+ content: zod_1.z.string(),
13
+ })),
14
+ query: zod_1.z.string().optional(),
15
+ knowledge_sources: zod_1.z.array(zod_1.z.string()).optional(),
16
+ });
17
+ exports.ChatOutputSchema = zod_1.z.object({
18
+ response: zod_1.z.string(),
19
+ timestamp: zod_1.z.string(),
20
+ execution_steps: zod_1.z.array(zod_1.z.object({
21
+ agent: zod_1.z.string(),
22
+ action: zod_1.z.string(),
23
+ status: zod_1.z.enum(['running', 'success', 'error']),
24
+ startTime: zod_1.z.number(),
25
+ endTime: zod_1.z.number().optional(),
26
+ duration: zod_1.z.number().optional(),
27
+ error: zod_1.z.string().optional(),
28
+ })).optional(),
29
+ total_duration: zod_1.z.number().optional(),
30
+ });
31
+ //# sourceMappingURL=chat.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.schema.js","sourceRoot":"","sources":["../../../src/agents/chat/chat.schema.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAAwB;AAEX,QAAA,eAAe,GAAG,OAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC;IACH,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,eAAe,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,CAAC;QAChC,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAC,CAAC,QAAQ,EAAE;IACd,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Chat Agent Types - Shared between client and server
3
+ */
4
+ import type { ConversationMessage } from '../rag/rag.types';
5
+ import type { ExecutionStep } from '../../shared/types/agent.types';
6
+ /**
7
+ * Chat mode determines the execution flow
8
+ * - 'rag': Full RAG pipeline with knowledge base (default)
9
+ * - 'simple': Direct LLM chat maintaining conversation context only
10
+ */
11
+ export type ChatMode = 'rag' | 'simple';
12
+ /**
13
+ * Parameters for chat orchestration
14
+ */
15
+ export interface ChatHandlerParams {
16
+ messages: ConversationMessage[];
17
+ query?: string;
18
+ mode?: ChatMode;
19
+ knowledge_sources?: string[];
20
+ }
21
+ /**
22
+ * Result from chat orchestration
23
+ */
24
+ export interface ChatHandlerResult {
25
+ response: string;
26
+ timestamp: string;
27
+ execution_steps?: ExecutionStep[];
28
+ total_duration?: number;
29
+ }
30
+ /**
31
+ * Chat agent metadata
32
+ */
33
+ export interface ChatMetadata {
34
+ id: 'chat';
35
+ name: string;
36
+ description: string;
37
+ category: 'chat';
38
+ route: '/agents/chat';
39
+ knowledge_sources: string[];
40
+ tags: string[];
41
+ }
42
+ //# sourceMappingURL=chat.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.types.d.ts","sourceRoot":"","sources":["../../../src/agents/chat/chat.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,cAAc,CAAC;IACtB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Chat Agent Types - Shared between client and server
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=chat.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.types.js","sourceRoot":"","sources":["../../../src/agents/chat/chat.types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,150 @@
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 simple 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
+ - "qa"
22
+ - "simple"
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 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
96
+ - name: "simple-chat"
97
+ type: "rag"
98
+ action:
99
+ query: "$input.query"
100
+ history: "$input.messages"
101
+ mode: "simple"
102
+ result: "ragResult"
103
+ else:
104
+ # RAG mode: Full pipeline with knowledge base
105
+ - name: "vectorize-query"
106
+ type: "gemini-vectorize"
107
+ action:
108
+ action: "embedSingle"
109
+ text: "$input.query"
110
+ result: "queryVector"
111
+
112
+ - name: "check-knowledge"
113
+ type: "chromadb"
114
+ action:
115
+ action: "hasData"
116
+ collection_name: "beddel_knowledge"
117
+ min_count: 5
118
+ result: "hasDataResult"
119
+
120
+ - name: "search-knowledge"
121
+ type: "chromadb"
122
+ action:
123
+ action: "search"
124
+ collection_name: "beddel_knowledge"
125
+ query_vector: "$queryVector.vector"
126
+ limit: 5
127
+ result: "searchResult"
128
+
129
+ - name: "generate-answer"
130
+ type: "rag"
131
+ action:
132
+ query: "$input.query"
133
+ documents: "$searchResult.documents"
134
+ history: "$input.messages"
135
+ mode: "rag"
136
+ result: "ragResult"
137
+
138
+ # Step 3: Deliver final response
139
+ - name: "deliver-response"
140
+ type: "output-generator"
141
+ action:
142
+ type: "generate"
143
+ output:
144
+ response: "$ragResult.response"
145
+ timestamp: "$ragResult.timestamp"
146
+
147
+ output:
148
+ schema:
149
+ response: "$ragResult.response"
150
+ timestamp: "$ragResult.timestamp"
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Chat Agent - Public exports (client-safe)
3
+ */
4
+ export { ChatInputSchema, ChatOutputSchema } from './chat.schema';
5
+ export type { ChatInput, ChatOutput } from './chat.schema';
6
+ export type { ChatHandlerParams, ChatHandlerResult, ChatMetadata } from './chat.types';
7
+ export declare const chatMetadata: {
8
+ readonly id: "chat";
9
+ readonly name: "Q&A Context Chat Agent";
10
+ readonly description: "Orchestrates RAG pipeline: vectorization, storage, retrieval and answer generation";
11
+ readonly category: "chat";
12
+ readonly route: "/agents/chat";
13
+ readonly knowledge_sources: readonly ["gitmcp-agent"];
14
+ readonly tags: readonly ["chat", "orchestrator", "rag", "qa"];
15
+ };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/chat/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3D,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGvF,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC"}