ruvbot 0.1.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 (493) hide show
  1. package/.env.example +234 -0
  2. package/README.md +850 -0
  3. package/bin/cli.js +19 -0
  4. package/bin/ruvbot.js +47 -0
  5. package/dist/RuvBot.d.ts +125 -0
  6. package/dist/RuvBot.d.ts.map +1 -0
  7. package/dist/RuvBot.js +461 -0
  8. package/dist/RuvBot.js.map +1 -0
  9. package/dist/api/index.d.ts +27 -0
  10. package/dist/api/index.d.ts.map +1 -0
  11. package/dist/api/index.js +11 -0
  12. package/dist/api/index.js.map +1 -0
  13. package/dist/channels/ChannelRegistry.d.ts +94 -0
  14. package/dist/channels/ChannelRegistry.d.ts.map +1 -0
  15. package/dist/channels/ChannelRegistry.js +231 -0
  16. package/dist/channels/ChannelRegistry.js.map +1 -0
  17. package/dist/channels/adapters/BaseAdapter.d.ts +120 -0
  18. package/dist/channels/adapters/BaseAdapter.d.ts.map +1 -0
  19. package/dist/channels/adapters/BaseAdapter.js +104 -0
  20. package/dist/channels/adapters/BaseAdapter.js.map +1 -0
  21. package/dist/channels/adapters/DiscordAdapter.d.ts +67 -0
  22. package/dist/channels/adapters/DiscordAdapter.d.ts.map +1 -0
  23. package/dist/channels/adapters/DiscordAdapter.js +164 -0
  24. package/dist/channels/adapters/DiscordAdapter.js.map +1 -0
  25. package/dist/channels/adapters/SlackAdapter.d.ts +62 -0
  26. package/dist/channels/adapters/SlackAdapter.d.ts.map +1 -0
  27. package/dist/channels/adapters/SlackAdapter.js +160 -0
  28. package/dist/channels/adapters/SlackAdapter.js.map +1 -0
  29. package/dist/channels/adapters/TelegramAdapter.d.ts +93 -0
  30. package/dist/channels/adapters/TelegramAdapter.d.ts.map +1 -0
  31. package/dist/channels/adapters/TelegramAdapter.js +171 -0
  32. package/dist/channels/adapters/TelegramAdapter.js.map +1 -0
  33. package/dist/channels/index.d.ts +11 -0
  34. package/dist/channels/index.d.ts.map +1 -0
  35. package/dist/channels/index.js +26 -0
  36. package/dist/channels/index.js.map +1 -0
  37. package/dist/cli/commands/agent.d.ts +15 -0
  38. package/dist/cli/commands/agent.d.ts.map +1 -0
  39. package/dist/cli/commands/agent.js +271 -0
  40. package/dist/cli/commands/agent.js.map +1 -0
  41. package/dist/cli/commands/doctor.d.ts +17 -0
  42. package/dist/cli/commands/doctor.d.ts.map +1 -0
  43. package/dist/cli/commands/doctor.js +425 -0
  44. package/dist/cli/commands/doctor.js.map +1 -0
  45. package/dist/cli/commands/index.d.ts +11 -0
  46. package/dist/cli/commands/index.d.ts.map +1 -0
  47. package/dist/cli/commands/index.js +19 -0
  48. package/dist/cli/commands/index.js.map +1 -0
  49. package/dist/cli/commands/memory.d.ts +11 -0
  50. package/dist/cli/commands/memory.d.ts.map +1 -0
  51. package/dist/cli/commands/memory.js +180 -0
  52. package/dist/cli/commands/memory.js.map +1 -0
  53. package/dist/cli/commands/plugins.d.ts +12 -0
  54. package/dist/cli/commands/plugins.d.ts.map +1 -0
  55. package/dist/cli/commands/plugins.js +315 -0
  56. package/dist/cli/commands/plugins.js.map +1 -0
  57. package/dist/cli/commands/security.d.ts +14 -0
  58. package/dist/cli/commands/security.d.ts.map +1 -0
  59. package/dist/cli/commands/security.js +285 -0
  60. package/dist/cli/commands/security.js.map +1 -0
  61. package/dist/cli/index.d.ts +25 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +415 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/core/BotConfig.d.ts +611 -0
  66. package/dist/core/BotConfig.d.ts.map +1 -0
  67. package/dist/core/BotConfig.js +224 -0
  68. package/dist/core/BotConfig.js.map +1 -0
  69. package/dist/core/BotState.d.ts +59 -0
  70. package/dist/core/BotState.d.ts.map +1 -0
  71. package/dist/core/BotState.js +224 -0
  72. package/dist/core/BotState.js.map +1 -0
  73. package/dist/core/agent/index.d.ts +51 -0
  74. package/dist/core/agent/index.d.ts.map +1 -0
  75. package/dist/core/agent/index.js +6 -0
  76. package/dist/core/agent/index.js.map +1 -0
  77. package/dist/core/entities/Agent.d.ts +42 -0
  78. package/dist/core/entities/Agent.d.ts.map +1 -0
  79. package/dist/core/entities/Agent.js +88 -0
  80. package/dist/core/entities/Agent.js.map +1 -0
  81. package/dist/core/entities/Message.d.ts +85 -0
  82. package/dist/core/entities/Message.d.ts.map +1 -0
  83. package/dist/core/entities/Message.js +158 -0
  84. package/dist/core/entities/Message.js.map +1 -0
  85. package/dist/core/entities/Session.d.ts +86 -0
  86. package/dist/core/entities/Session.d.ts.map +1 -0
  87. package/dist/core/entities/Session.js +186 -0
  88. package/dist/core/entities/Session.js.map +1 -0
  89. package/dist/core/entities/Skill.d.ts +83 -0
  90. package/dist/core/entities/Skill.d.ts.map +1 -0
  91. package/dist/core/entities/Skill.js +192 -0
  92. package/dist/core/entities/Skill.js.map +1 -0
  93. package/dist/core/entities/index.d.ts +8 -0
  94. package/dist/core/entities/index.d.ts.map +1 -0
  95. package/dist/core/entities/index.js +24 -0
  96. package/dist/core/entities/index.js.map +1 -0
  97. package/dist/core/entities/types.d.ts +677 -0
  98. package/dist/core/entities/types.d.ts.map +1 -0
  99. package/dist/core/entities/types.js +198 -0
  100. package/dist/core/entities/types.js.map +1 -0
  101. package/dist/core/errors.d.ts +76 -0
  102. package/dist/core/errors.d.ts.map +1 -0
  103. package/dist/core/errors.js +136 -0
  104. package/dist/core/errors.js.map +1 -0
  105. package/dist/core/index.d.ts +10 -0
  106. package/dist/core/index.d.ts.map +1 -0
  107. package/dist/core/index.js +25 -0
  108. package/dist/core/index.js.map +1 -0
  109. package/dist/core/session/index.d.ts +59 -0
  110. package/dist/core/session/index.d.ts.map +1 -0
  111. package/dist/core/session/index.js +6 -0
  112. package/dist/core/session/index.js.map +1 -0
  113. package/dist/core/skill/index.d.ts +75 -0
  114. package/dist/core/skill/index.d.ts.map +1 -0
  115. package/dist/core/skill/index.js +32 -0
  116. package/dist/core/skill/index.js.map +1 -0
  117. package/dist/core/types.d.ts +248 -0
  118. package/dist/core/types.d.ts.map +1 -0
  119. package/dist/core/types.js +14 -0
  120. package/dist/core/types.js.map +1 -0
  121. package/dist/esm/RuvBot.d.ts +125 -0
  122. package/dist/esm/RuvBot.d.ts.map +1 -0
  123. package/dist/esm/RuvBot.js +452 -0
  124. package/dist/esm/RuvBot.js.map +1 -0
  125. package/dist/esm/api/index.d.ts +27 -0
  126. package/dist/esm/api/index.d.ts.map +1 -0
  127. package/dist/esm/api/index.js +8 -0
  128. package/dist/esm/api/index.js.map +1 -0
  129. package/dist/esm/channels/ChannelRegistry.d.ts +94 -0
  130. package/dist/esm/channels/ChannelRegistry.d.ts.map +1 -0
  131. package/dist/esm/channels/ChannelRegistry.js +226 -0
  132. package/dist/esm/channels/ChannelRegistry.js.map +1 -0
  133. package/dist/esm/channels/adapters/BaseAdapter.d.ts +120 -0
  134. package/dist/esm/channels/adapters/BaseAdapter.d.ts.map +1 -0
  135. package/dist/esm/channels/adapters/BaseAdapter.js +100 -0
  136. package/dist/esm/channels/adapters/BaseAdapter.js.map +1 -0
  137. package/dist/esm/channels/adapters/DiscordAdapter.d.ts +67 -0
  138. package/dist/esm/channels/adapters/DiscordAdapter.d.ts.map +1 -0
  139. package/dist/esm/channels/adapters/DiscordAdapter.js +159 -0
  140. package/dist/esm/channels/adapters/DiscordAdapter.js.map +1 -0
  141. package/dist/esm/channels/adapters/SlackAdapter.d.ts +62 -0
  142. package/dist/esm/channels/adapters/SlackAdapter.d.ts.map +1 -0
  143. package/dist/esm/channels/adapters/SlackAdapter.js +155 -0
  144. package/dist/esm/channels/adapters/SlackAdapter.js.map +1 -0
  145. package/dist/esm/channels/adapters/TelegramAdapter.d.ts +93 -0
  146. package/dist/esm/channels/adapters/TelegramAdapter.d.ts.map +1 -0
  147. package/dist/esm/channels/adapters/TelegramAdapter.js +166 -0
  148. package/dist/esm/channels/adapters/TelegramAdapter.js.map +1 -0
  149. package/dist/esm/channels/index.d.ts +11 -0
  150. package/dist/esm/channels/index.d.ts.map +1 -0
  151. package/dist/esm/channels/index.js +14 -0
  152. package/dist/esm/channels/index.js.map +1 -0
  153. package/dist/esm/cli/commands/agent.d.ts +15 -0
  154. package/dist/esm/cli/commands/agent.d.ts.map +1 -0
  155. package/dist/esm/cli/commands/agent.js +265 -0
  156. package/dist/esm/cli/commands/agent.js.map +1 -0
  157. package/dist/esm/cli/commands/doctor.d.ts +17 -0
  158. package/dist/esm/cli/commands/doctor.d.ts.map +1 -0
  159. package/dist/esm/cli/commands/doctor.js +419 -0
  160. package/dist/esm/cli/commands/doctor.js.map +1 -0
  161. package/dist/esm/cli/commands/index.d.ts +11 -0
  162. package/dist/esm/cli/commands/index.d.ts.map +1 -0
  163. package/dist/esm/cli/commands/index.js +11 -0
  164. package/dist/esm/cli/commands/index.js.map +1 -0
  165. package/dist/esm/cli/commands/memory.d.ts +11 -0
  166. package/dist/esm/cli/commands/memory.d.ts.map +1 -0
  167. package/dist/esm/cli/commands/memory.js +174 -0
  168. package/dist/esm/cli/commands/memory.js.map +1 -0
  169. package/dist/esm/cli/commands/plugins.d.ts +12 -0
  170. package/dist/esm/cli/commands/plugins.d.ts.map +1 -0
  171. package/dist/esm/cli/commands/plugins.js +309 -0
  172. package/dist/esm/cli/commands/plugins.js.map +1 -0
  173. package/dist/esm/cli/commands/security.d.ts +14 -0
  174. package/dist/esm/cli/commands/security.d.ts.map +1 -0
  175. package/dist/esm/cli/commands/security.js +279 -0
  176. package/dist/esm/cli/commands/security.js.map +1 -0
  177. package/dist/esm/cli/index.d.ts +25 -0
  178. package/dist/esm/cli/index.d.ts.map +1 -0
  179. package/dist/esm/cli/index.js +408 -0
  180. package/dist/esm/cli/index.js.map +1 -0
  181. package/dist/esm/core/BotConfig.d.ts +611 -0
  182. package/dist/esm/core/BotConfig.d.ts.map +1 -0
  183. package/dist/esm/core/BotConfig.js +220 -0
  184. package/dist/esm/core/BotConfig.js.map +1 -0
  185. package/dist/esm/core/BotState.d.ts +59 -0
  186. package/dist/esm/core/BotState.d.ts.map +1 -0
  187. package/dist/esm/core/BotState.js +220 -0
  188. package/dist/esm/core/BotState.js.map +1 -0
  189. package/dist/esm/core/agent/index.d.ts +51 -0
  190. package/dist/esm/core/agent/index.d.ts.map +1 -0
  191. package/dist/esm/core/agent/index.js +5 -0
  192. package/dist/esm/core/agent/index.js.map +1 -0
  193. package/dist/esm/core/entities/Agent.d.ts +42 -0
  194. package/dist/esm/core/entities/Agent.d.ts.map +1 -0
  195. package/dist/esm/core/entities/Agent.js +84 -0
  196. package/dist/esm/core/entities/Agent.js.map +1 -0
  197. package/dist/esm/core/entities/Message.d.ts +85 -0
  198. package/dist/esm/core/entities/Message.d.ts.map +1 -0
  199. package/dist/esm/core/entities/Message.js +154 -0
  200. package/dist/esm/core/entities/Message.js.map +1 -0
  201. package/dist/esm/core/entities/Session.d.ts +86 -0
  202. package/dist/esm/core/entities/Session.d.ts.map +1 -0
  203. package/dist/esm/core/entities/Session.js +182 -0
  204. package/dist/esm/core/entities/Session.js.map +1 -0
  205. package/dist/esm/core/entities/Skill.d.ts +83 -0
  206. package/dist/esm/core/entities/Skill.d.ts.map +1 -0
  207. package/dist/esm/core/entities/Skill.js +188 -0
  208. package/dist/esm/core/entities/Skill.js.map +1 -0
  209. package/dist/esm/core/entities/index.d.ts +8 -0
  210. package/dist/esm/core/entities/index.d.ts.map +1 -0
  211. package/dist/esm/core/entities/index.js +8 -0
  212. package/dist/esm/core/entities/index.js.map +1 -0
  213. package/dist/esm/core/entities/types.d.ts +677 -0
  214. package/dist/esm/core/entities/types.d.ts.map +1 -0
  215. package/dist/esm/core/entities/types.js +195 -0
  216. package/dist/esm/core/entities/types.js.map +1 -0
  217. package/dist/esm/core/errors.d.ts +76 -0
  218. package/dist/esm/core/errors.d.ts.map +1 -0
  219. package/dist/esm/core/errors.js +120 -0
  220. package/dist/esm/core/errors.js.map +1 -0
  221. package/dist/esm/core/index.d.ts +10 -0
  222. package/dist/esm/core/index.d.ts.map +1 -0
  223. package/dist/esm/core/index.js +9 -0
  224. package/dist/esm/core/index.js.map +1 -0
  225. package/dist/esm/core/session/index.d.ts +59 -0
  226. package/dist/esm/core/session/index.d.ts.map +1 -0
  227. package/dist/esm/core/session/index.js +5 -0
  228. package/dist/esm/core/session/index.js.map +1 -0
  229. package/dist/esm/core/skill/index.d.ts +75 -0
  230. package/dist/esm/core/skill/index.d.ts.map +1 -0
  231. package/dist/esm/core/skill/index.js +28 -0
  232. package/dist/esm/core/skill/index.js.map +1 -0
  233. package/dist/esm/core/types.d.ts +248 -0
  234. package/dist/esm/core/types.d.ts.map +1 -0
  235. package/dist/esm/core/types.js +10 -0
  236. package/dist/esm/core/types.js.map +1 -0
  237. package/dist/esm/index.d.ts +26 -0
  238. package/dist/esm/index.d.ts.map +1 -0
  239. package/dist/esm/index.js +32 -0
  240. package/dist/esm/index.js.map +1 -0
  241. package/dist/esm/infrastructure/index.d.ts +9 -0
  242. package/dist/esm/infrastructure/index.d.ts.map +1 -0
  243. package/dist/esm/infrastructure/index.js +10 -0
  244. package/dist/esm/infrastructure/index.js.map +1 -0
  245. package/dist/esm/infrastructure/messaging/index.d.ts +43 -0
  246. package/dist/esm/infrastructure/messaging/index.d.ts.map +1 -0
  247. package/dist/esm/infrastructure/messaging/index.js +5 -0
  248. package/dist/esm/infrastructure/messaging/index.js.map +1 -0
  249. package/dist/esm/infrastructure/persistence/index.d.ts +62 -0
  250. package/dist/esm/infrastructure/persistence/index.d.ts.map +1 -0
  251. package/dist/esm/infrastructure/persistence/index.js +5 -0
  252. package/dist/esm/infrastructure/persistence/index.js.map +1 -0
  253. package/dist/esm/infrastructure/workers/index.d.ts +47 -0
  254. package/dist/esm/infrastructure/workers/index.d.ts.map +1 -0
  255. package/dist/esm/infrastructure/workers/index.js +13 -0
  256. package/dist/esm/infrastructure/workers/index.js.map +1 -0
  257. package/dist/esm/integration/index.d.ts +9 -0
  258. package/dist/esm/integration/index.d.ts.map +1 -0
  259. package/dist/esm/integration/index.js +9 -0
  260. package/dist/esm/integration/index.js.map +1 -0
  261. package/dist/esm/integration/providers/AnthropicProvider.d.ts +48 -0
  262. package/dist/esm/integration/providers/AnthropicProvider.d.ts.map +1 -0
  263. package/dist/esm/integration/providers/AnthropicProvider.js +292 -0
  264. package/dist/esm/integration/providers/AnthropicProvider.js.map +1 -0
  265. package/dist/esm/integration/providers/OpenRouterProvider.d.ts +62 -0
  266. package/dist/esm/integration/providers/OpenRouterProvider.d.ts.map +1 -0
  267. package/dist/esm/integration/providers/OpenRouterProvider.js +445 -0
  268. package/dist/esm/integration/providers/OpenRouterProvider.js.map +1 -0
  269. package/dist/esm/integration/providers/index.d.ts +67 -0
  270. package/dist/esm/integration/providers/index.d.ts.map +1 -0
  271. package/dist/esm/integration/providers/index.js +7 -0
  272. package/dist/esm/integration/providers/index.js.map +1 -0
  273. package/dist/esm/integration/slack/index.d.ts +67 -0
  274. package/dist/esm/integration/slack/index.d.ts.map +1 -0
  275. package/dist/esm/integration/slack/index.js +5 -0
  276. package/dist/esm/integration/slack/index.js.map +1 -0
  277. package/dist/esm/integration/webhooks/index.d.ts +43 -0
  278. package/dist/esm/integration/webhooks/index.d.ts.map +1 -0
  279. package/dist/esm/integration/webhooks/index.js +5 -0
  280. package/dist/esm/integration/webhooks/index.js.map +1 -0
  281. package/dist/esm/integrations/index.d.ts +38 -0
  282. package/dist/esm/integrations/index.d.ts.map +1 -0
  283. package/dist/esm/integrations/index.js +8 -0
  284. package/dist/esm/integrations/index.js.map +1 -0
  285. package/dist/esm/learning/embeddings/WasmEmbedder.d.ts +61 -0
  286. package/dist/esm/learning/embeddings/WasmEmbedder.d.ts.map +1 -0
  287. package/dist/esm/learning/embeddings/WasmEmbedder.js +219 -0
  288. package/dist/esm/learning/embeddings/WasmEmbedder.js.map +1 -0
  289. package/dist/esm/learning/embeddings/index.d.ts +35 -0
  290. package/dist/esm/learning/embeddings/index.d.ts.map +1 -0
  291. package/dist/esm/learning/embeddings/index.js +5 -0
  292. package/dist/esm/learning/embeddings/index.js.map +1 -0
  293. package/dist/esm/learning/index.d.ts +12 -0
  294. package/dist/esm/learning/index.d.ts.map +1 -0
  295. package/dist/esm/learning/index.js +12 -0
  296. package/dist/esm/learning/index.js.map +1 -0
  297. package/dist/esm/learning/memory/MemoryManager.d.ts +155 -0
  298. package/dist/esm/learning/memory/MemoryManager.d.ts.map +1 -0
  299. package/dist/esm/learning/memory/MemoryManager.js +327 -0
  300. package/dist/esm/learning/memory/MemoryManager.js.map +1 -0
  301. package/dist/esm/learning/patterns/index.d.ts +64 -0
  302. package/dist/esm/learning/patterns/index.d.ts.map +1 -0
  303. package/dist/esm/learning/patterns/index.js +5 -0
  304. package/dist/esm/learning/patterns/index.js.map +1 -0
  305. package/dist/esm/learning/search/BM25Index.d.ts +88 -0
  306. package/dist/esm/learning/search/BM25Index.d.ts.map +1 -0
  307. package/dist/esm/learning/search/BM25Index.js +246 -0
  308. package/dist/esm/learning/search/BM25Index.js.map +1 -0
  309. package/dist/esm/learning/search/HybridSearch.d.ts +85 -0
  310. package/dist/esm/learning/search/HybridSearch.d.ts.map +1 -0
  311. package/dist/esm/learning/search/HybridSearch.js +238 -0
  312. package/dist/esm/learning/search/HybridSearch.js.map +1 -0
  313. package/dist/esm/learning/search/index.d.ts +10 -0
  314. package/dist/esm/learning/search/index.d.ts.map +1 -0
  315. package/dist/esm/learning/search/index.js +8 -0
  316. package/dist/esm/learning/search/index.js.map +1 -0
  317. package/dist/esm/learning/training/index.d.ts +95 -0
  318. package/dist/esm/learning/training/index.d.ts.map +1 -0
  319. package/dist/esm/learning/training/index.js +5 -0
  320. package/dist/esm/learning/training/index.js.map +1 -0
  321. package/dist/esm/plugins/PluginManager.d.ts +316 -0
  322. package/dist/esm/plugins/PluginManager.d.ts.map +1 -0
  323. package/dist/esm/plugins/PluginManager.js +481 -0
  324. package/dist/esm/plugins/PluginManager.js.map +1 -0
  325. package/dist/esm/plugins/index.d.ts +8 -0
  326. package/dist/esm/plugins/index.d.ts.map +1 -0
  327. package/dist/esm/plugins/index.js +8 -0
  328. package/dist/esm/plugins/index.js.map +1 -0
  329. package/dist/esm/security/AIDefenceGuard.d.ts +212 -0
  330. package/dist/esm/security/AIDefenceGuard.d.ts.map +1 -0
  331. package/dist/esm/security/AIDefenceGuard.js +570 -0
  332. package/dist/esm/security/AIDefenceGuard.js.map +1 -0
  333. package/dist/esm/security/index.d.ts +8 -0
  334. package/dist/esm/security/index.d.ts.map +1 -0
  335. package/dist/esm/security/index.js +8 -0
  336. package/dist/esm/security/index.js.map +1 -0
  337. package/dist/esm/server.d.ts +11 -0
  338. package/dist/esm/server.d.ts.map +1 -0
  339. package/dist/esm/server.js +405 -0
  340. package/dist/esm/server.js.map +1 -0
  341. package/dist/esm/skills/index.d.ts +15 -0
  342. package/dist/esm/skills/index.d.ts.map +1 -0
  343. package/dist/esm/skills/index.js +9 -0
  344. package/dist/esm/skills/index.js.map +1 -0
  345. package/dist/esm/swarm/ByzantineConsensus.d.ts +110 -0
  346. package/dist/esm/swarm/ByzantineConsensus.d.ts.map +1 -0
  347. package/dist/esm/swarm/ByzantineConsensus.js +267 -0
  348. package/dist/esm/swarm/ByzantineConsensus.js.map +1 -0
  349. package/dist/esm/swarm/SwarmCoordinator.d.ts +141 -0
  350. package/dist/esm/swarm/SwarmCoordinator.d.ts.map +1 -0
  351. package/dist/esm/swarm/SwarmCoordinator.js +381 -0
  352. package/dist/esm/swarm/SwarmCoordinator.js.map +1 -0
  353. package/dist/esm/swarm/index.d.ts +8 -0
  354. package/dist/esm/swarm/index.d.ts.map +1 -0
  355. package/dist/esm/swarm/index.js +8 -0
  356. package/dist/esm/swarm/index.js.map +1 -0
  357. package/dist/esm/types.d.ts +120 -0
  358. package/dist/esm/types.d.ts.map +1 -0
  359. package/dist/esm/types.js +10 -0
  360. package/dist/esm/types.js.map +1 -0
  361. package/dist/esm/utils/logger.d.ts +23 -0
  362. package/dist/esm/utils/logger.d.ts.map +1 -0
  363. package/dist/esm/utils/logger.js +77 -0
  364. package/dist/esm/utils/logger.js.map +1 -0
  365. package/dist/index.d.ts +26 -0
  366. package/dist/index.d.ts.map +1 -0
  367. package/dist/index.js +52 -0
  368. package/dist/index.js.map +1 -0
  369. package/dist/infrastructure/index.d.ts +9 -0
  370. package/dist/infrastructure/index.d.ts.map +1 -0
  371. package/dist/infrastructure/index.js +28 -0
  372. package/dist/infrastructure/index.js.map +1 -0
  373. package/dist/infrastructure/messaging/index.d.ts +43 -0
  374. package/dist/infrastructure/messaging/index.d.ts.map +1 -0
  375. package/dist/infrastructure/messaging/index.js +6 -0
  376. package/dist/infrastructure/messaging/index.js.map +1 -0
  377. package/dist/infrastructure/persistence/index.d.ts +62 -0
  378. package/dist/infrastructure/persistence/index.d.ts.map +1 -0
  379. package/dist/infrastructure/persistence/index.js +6 -0
  380. package/dist/infrastructure/persistence/index.js.map +1 -0
  381. package/dist/infrastructure/workers/index.d.ts +47 -0
  382. package/dist/infrastructure/workers/index.d.ts.map +1 -0
  383. package/dist/infrastructure/workers/index.js +16 -0
  384. package/dist/infrastructure/workers/index.js.map +1 -0
  385. package/dist/integration/index.d.ts +9 -0
  386. package/dist/integration/index.d.ts.map +1 -0
  387. package/dist/integration/index.js +25 -0
  388. package/dist/integration/index.js.map +1 -0
  389. package/dist/integration/providers/AnthropicProvider.d.ts +48 -0
  390. package/dist/integration/providers/AnthropicProvider.d.ts.map +1 -0
  391. package/dist/integration/providers/AnthropicProvider.js +297 -0
  392. package/dist/integration/providers/AnthropicProvider.js.map +1 -0
  393. package/dist/integration/providers/OpenRouterProvider.d.ts +62 -0
  394. package/dist/integration/providers/OpenRouterProvider.d.ts.map +1 -0
  395. package/dist/integration/providers/OpenRouterProvider.js +452 -0
  396. package/dist/integration/providers/OpenRouterProvider.js.map +1 -0
  397. package/dist/integration/providers/index.d.ts +67 -0
  398. package/dist/integration/providers/index.d.ts.map +1 -0
  399. package/dist/integration/providers/index.js +16 -0
  400. package/dist/integration/providers/index.js.map +1 -0
  401. package/dist/integration/slack/index.d.ts +67 -0
  402. package/dist/integration/slack/index.d.ts.map +1 -0
  403. package/dist/integration/slack/index.js +6 -0
  404. package/dist/integration/slack/index.js.map +1 -0
  405. package/dist/integration/webhooks/index.d.ts +43 -0
  406. package/dist/integration/webhooks/index.d.ts.map +1 -0
  407. package/dist/integration/webhooks/index.js +6 -0
  408. package/dist/integration/webhooks/index.js.map +1 -0
  409. package/dist/integrations/index.d.ts +38 -0
  410. package/dist/integrations/index.d.ts.map +1 -0
  411. package/dist/integrations/index.js +11 -0
  412. package/dist/integrations/index.js.map +1 -0
  413. package/dist/learning/embeddings/WasmEmbedder.d.ts +61 -0
  414. package/dist/learning/embeddings/WasmEmbedder.d.ts.map +1 -0
  415. package/dist/learning/embeddings/WasmEmbedder.js +224 -0
  416. package/dist/learning/embeddings/WasmEmbedder.js.map +1 -0
  417. package/dist/learning/embeddings/index.d.ts +35 -0
  418. package/dist/learning/embeddings/index.d.ts.map +1 -0
  419. package/dist/learning/embeddings/index.js +6 -0
  420. package/dist/learning/embeddings/index.js.map +1 -0
  421. package/dist/learning/index.d.ts +12 -0
  422. package/dist/learning/index.d.ts.map +1 -0
  423. package/dist/learning/index.js +28 -0
  424. package/dist/learning/index.js.map +1 -0
  425. package/dist/learning/memory/MemoryManager.d.ts +155 -0
  426. package/dist/learning/memory/MemoryManager.d.ts.map +1 -0
  427. package/dist/learning/memory/MemoryManager.js +332 -0
  428. package/dist/learning/memory/MemoryManager.js.map +1 -0
  429. package/dist/learning/patterns/index.d.ts +64 -0
  430. package/dist/learning/patterns/index.d.ts.map +1 -0
  431. package/dist/learning/patterns/index.js +6 -0
  432. package/dist/learning/patterns/index.js.map +1 -0
  433. package/dist/learning/search/BM25Index.d.ts +88 -0
  434. package/dist/learning/search/BM25Index.d.ts.map +1 -0
  435. package/dist/learning/search/BM25Index.js +251 -0
  436. package/dist/learning/search/BM25Index.js.map +1 -0
  437. package/dist/learning/search/HybridSearch.d.ts +85 -0
  438. package/dist/learning/search/HybridSearch.d.ts.map +1 -0
  439. package/dist/learning/search/HybridSearch.js +243 -0
  440. package/dist/learning/search/HybridSearch.js.map +1 -0
  441. package/dist/learning/search/index.d.ts +10 -0
  442. package/dist/learning/search/index.d.ts.map +1 -0
  443. package/dist/learning/search/index.js +16 -0
  444. package/dist/learning/search/index.js.map +1 -0
  445. package/dist/learning/training/index.d.ts +95 -0
  446. package/dist/learning/training/index.d.ts.map +1 -0
  447. package/dist/learning/training/index.js +6 -0
  448. package/dist/learning/training/index.js.map +1 -0
  449. package/dist/plugins/PluginManager.d.ts +316 -0
  450. package/dist/plugins/PluginManager.d.ts.map +1 -0
  451. package/dist/plugins/PluginManager.js +488 -0
  452. package/dist/plugins/PluginManager.js.map +1 -0
  453. package/dist/plugins/index.d.ts +8 -0
  454. package/dist/plugins/index.d.ts.map +1 -0
  455. package/dist/plugins/index.js +17 -0
  456. package/dist/plugins/index.js.map +1 -0
  457. package/dist/security/AIDefenceGuard.d.ts +212 -0
  458. package/dist/security/AIDefenceGuard.d.ts.map +1 -0
  459. package/dist/security/AIDefenceGuard.js +578 -0
  460. package/dist/security/AIDefenceGuard.js.map +1 -0
  461. package/dist/security/index.d.ts +8 -0
  462. package/dist/security/index.d.ts.map +1 -0
  463. package/dist/security/index.js +18 -0
  464. package/dist/security/index.js.map +1 -0
  465. package/dist/server.d.ts +11 -0
  466. package/dist/server.d.ts.map +1 -0
  467. package/dist/server.js +410 -0
  468. package/dist/server.js.map +1 -0
  469. package/dist/skills/index.d.ts +15 -0
  470. package/dist/skills/index.d.ts.map +1 -0
  471. package/dist/skills/index.js +13 -0
  472. package/dist/skills/index.js.map +1 -0
  473. package/dist/swarm/ByzantineConsensus.d.ts +110 -0
  474. package/dist/swarm/ByzantineConsensus.d.ts.map +1 -0
  475. package/dist/swarm/ByzantineConsensus.js +272 -0
  476. package/dist/swarm/ByzantineConsensus.js.map +1 -0
  477. package/dist/swarm/SwarmCoordinator.d.ts +141 -0
  478. package/dist/swarm/SwarmCoordinator.d.ts.map +1 -0
  479. package/dist/swarm/SwarmCoordinator.js +386 -0
  480. package/dist/swarm/SwarmCoordinator.js.map +1 -0
  481. package/dist/swarm/index.d.ts +8 -0
  482. package/dist/swarm/index.d.ts.map +1 -0
  483. package/dist/swarm/index.js +16 -0
  484. package/dist/swarm/index.js.map +1 -0
  485. package/dist/types.d.ts +120 -0
  486. package/dist/types.d.ts.map +1 -0
  487. package/dist/types.js +14 -0
  488. package/dist/types.js.map +1 -0
  489. package/dist/utils/logger.d.ts +23 -0
  490. package/dist/utils/logger.d.ts.map +1 -0
  491. package/dist/utils/logger.js +80 -0
  492. package/dist/utils/logger.js.map +1 -0
  493. package/package.json +139 -0
package/bin/cli.js ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * RuvBot CLI entry point
5
+ *
6
+ * Usage:
7
+ * npx @ruvector/ruvbot init
8
+ * npx @ruvector/ruvbot start
9
+ * npx @ruvector/ruvbot config
10
+ * npx @ruvector/ruvbot skills list
11
+ * npx @ruvector/ruvbot status
12
+ */
13
+
14
+ import { main } from '../dist/cli/index.mjs';
15
+
16
+ main().catch((error) => {
17
+ console.error('Error:', error.message);
18
+ process.exit(1);
19
+ });
package/bin/ruvbot.js ADDED
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * RuvBot CLI Entry Point
5
+ *
6
+ * Usage:
7
+ * npx ruvbot <command> [options]
8
+ * ruvbot <command> [options]
9
+ *
10
+ * Commands:
11
+ * start Start the RuvBot server
12
+ * init Initialize RuvBot in current directory
13
+ * doctor Run diagnostics and health checks
14
+ * config Manage configuration
15
+ * memory Memory management commands
16
+ * security Security scanning and audit
17
+ * plugins Plugin management
18
+ * agent Agent management
19
+ * status Show bot status
20
+ */
21
+
22
+ require('dotenv/config');
23
+
24
+ async function run() {
25
+ try {
26
+ // Try CJS build first
27
+ const { main } = require('../dist/cli/index.js');
28
+ await main();
29
+ } catch (cjsError) {
30
+ // Fall back to dynamic import for ESM
31
+ try {
32
+ const { main } = await import('../dist/esm/cli/index.js');
33
+ await main();
34
+ } catch (esmError) {
35
+ console.error('Failed to load RuvBot CLI');
36
+ console.error('CJS Error:', cjsError.message);
37
+ console.error('ESM Error:', esmError.message);
38
+ console.error('\nTry running: npm run build');
39
+ process.exit(1);
40
+ }
41
+ }
42
+ }
43
+
44
+ run().catch((error) => {
45
+ console.error('Fatal error:', error.message);
46
+ process.exit(1);
47
+ });
@@ -0,0 +1,125 @@
1
+ /**
2
+ * RuvBot - Self-learning AI Assistant with RuVector Backend
3
+ *
4
+ * Main entry point for the RuvBot framework.
5
+ * Combines Clawdbot-style personal AI with RuVector's WASM vector operations.
6
+ */
7
+ import { EventEmitter } from 'eventemitter3';
8
+ import { type BotConfig } from './core/BotConfig.js';
9
+ import { type BotStatus } from './core/BotState.js';
10
+ import type { Agent, AgentConfig, Session, Message } from './core/types.js';
11
+ type BotState = BotStatus;
12
+ export interface RuvBotOptions {
13
+ config?: Partial<BotConfig>;
14
+ configPath?: string;
15
+ autoStart?: boolean;
16
+ }
17
+ export interface RuvBotEvents {
18
+ ready: () => void;
19
+ shutdown: () => void;
20
+ error: (error: Error) => void;
21
+ message: (message: Message, session: Session) => void;
22
+ 'agent:spawn': (agent: Agent) => void;
23
+ 'agent:stop': (agentId: string) => void;
24
+ 'session:create': (session: Session) => void;
25
+ 'session:end': (sessionId: string) => void;
26
+ 'memory:store': (entryId: string) => void;
27
+ 'skill:invoke': (skillName: string, params: Record<string, unknown>) => void;
28
+ }
29
+ export declare class RuvBot extends EventEmitter<RuvBotEvents> {
30
+ private readonly id;
31
+ private readonly configManager;
32
+ private readonly stateManager;
33
+ private readonly logger;
34
+ private agents;
35
+ private sessions;
36
+ private isRunning;
37
+ private startTime?;
38
+ private llmProvider;
39
+ constructor(options?: RuvBotOptions);
40
+ /**
41
+ * Start the bot and all configured services
42
+ */
43
+ start(): Promise<void>;
44
+ /**
45
+ * Stop the bot and cleanup resources
46
+ */
47
+ stop(): Promise<void>;
48
+ /**
49
+ * Spawn a new agent with the given configuration
50
+ */
51
+ spawnAgent(config: AgentConfig): Promise<Agent>;
52
+ /**
53
+ * Stop an agent by ID
54
+ */
55
+ stopAgent(agentId: string): Promise<void>;
56
+ /**
57
+ * Get an agent by ID
58
+ */
59
+ getAgent(agentId: string): Agent | undefined;
60
+ /**
61
+ * List all active agents
62
+ */
63
+ listAgents(): Agent[];
64
+ /**
65
+ * Create a new session for an agent
66
+ */
67
+ createSession(agentId: string, options?: {
68
+ userId?: string;
69
+ channelId?: string;
70
+ platform?: Session['platform'];
71
+ metadata?: Record<string, unknown>;
72
+ }): Promise<Session>;
73
+ /**
74
+ * End a session by ID
75
+ */
76
+ endSession(sessionId: string): Promise<void>;
77
+ /**
78
+ * Get a session by ID
79
+ */
80
+ getSession(sessionId: string): Session | undefined;
81
+ /**
82
+ * List all active sessions
83
+ */
84
+ listSessions(): Session[];
85
+ /**
86
+ * Send a message to an agent in a session
87
+ */
88
+ chat(sessionId: string, content: string, options?: {
89
+ userId?: string;
90
+ attachments?: Message['attachments'];
91
+ metadata?: Message['metadata'];
92
+ }): Promise<Message>;
93
+ /**
94
+ * Get the current bot status
95
+ */
96
+ getStatus(): {
97
+ id: string;
98
+ name: string;
99
+ state: BotState;
100
+ isRunning: boolean;
101
+ uptime?: number;
102
+ agents: number;
103
+ sessions: number;
104
+ };
105
+ /**
106
+ * Get the current configuration
107
+ */
108
+ getConfig(): Readonly<BotConfig>;
109
+ private initializeServices;
110
+ private startIntegrations;
111
+ private stopIntegrations;
112
+ private startApiServer;
113
+ private stopApiServer;
114
+ private generateResponse;
115
+ }
116
+ /**
117
+ * Create a new RuvBot instance
118
+ */
119
+ export declare function createRuvBot(options?: RuvBotOptions): RuvBot;
120
+ /**
121
+ * Create a RuvBot instance from environment variables
122
+ */
123
+ export declare function createRuvBotFromEnv(): RuvBot;
124
+ export default RuvBot;
125
+ //# sourceMappingURL=RuvBot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuvBot.d.ts","sourceRoot":"","sources":["../src/RuvBot.ts"],"names":[],"mappings":"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"}
package/dist/RuvBot.js ADDED
@@ -0,0 +1,461 @@
1
+ "use strict";
2
+ /**
3
+ * RuvBot - Self-learning AI Assistant with RuVector Backend
4
+ *
5
+ * Main entry point for the RuvBot framework.
6
+ * Combines Clawdbot-style personal AI with RuVector's WASM vector operations.
7
+ */
8
+ var __importDefault = (this && this.__importDefault) || function (mod) {
9
+ return (mod && mod.__esModule) ? mod : { "default": mod };
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RuvBot = void 0;
13
+ exports.createRuvBot = createRuvBot;
14
+ exports.createRuvBotFromEnv = createRuvBotFromEnv;
15
+ const eventemitter3_1 = require("eventemitter3");
16
+ const pino_1 = __importDefault(require("pino"));
17
+ const uuid_1 = require("uuid");
18
+ const BotConfig_js_1 = require("./core/BotConfig.js");
19
+ const BotState_js_1 = require("./core/BotState.js");
20
+ const errors_js_1 = require("./core/errors.js");
21
+ const index_js_1 = require("./integration/providers/index.js");
22
+ // ============================================================================
23
+ // RuvBot Main Class
24
+ // ============================================================================
25
+ class RuvBot extends eventemitter3_1.EventEmitter {
26
+ id;
27
+ configManager;
28
+ stateManager;
29
+ logger;
30
+ agents = new Map();
31
+ sessions = new Map();
32
+ isRunning = false;
33
+ startTime;
34
+ llmProvider = null;
35
+ constructor(options = {}) {
36
+ super();
37
+ this.id = (0, uuid_1.v4)();
38
+ // Initialize configuration
39
+ if (options.config) {
40
+ this.configManager = new BotConfig_js_1.ConfigManager(options.config);
41
+ }
42
+ else {
43
+ this.configManager = BotConfig_js_1.ConfigManager.fromEnv();
44
+ }
45
+ // Validate configuration
46
+ const validation = this.configManager.validate();
47
+ if (!validation.valid) {
48
+ throw new errors_js_1.ConfigurationError(`Invalid configuration: ${validation.errors.join(', ')}`);
49
+ }
50
+ // Initialize logger
51
+ const config = this.configManager.getConfig();
52
+ this.logger = (0, pino_1.default)({
53
+ level: config.logging.level,
54
+ transport: config.logging.pretty
55
+ ? { target: 'pino-pretty', options: { colorize: true } }
56
+ : undefined,
57
+ });
58
+ // Initialize state manager
59
+ this.stateManager = new BotState_js_1.BotStateManager();
60
+ this.logger.info({ botId: this.id }, 'RuvBot instance created');
61
+ // Auto-start if requested
62
+ if (options.autoStart) {
63
+ this.start().catch((error) => {
64
+ this.logger.error({ error }, 'Auto-start failed');
65
+ this.emit('error', error);
66
+ });
67
+ }
68
+ }
69
+ // ==========================================================================
70
+ // Lifecycle Methods
71
+ // ==========================================================================
72
+ /**
73
+ * Start the bot and all configured services
74
+ */
75
+ async start() {
76
+ if (this.isRunning) {
77
+ this.logger.warn('RuvBot is already running');
78
+ return;
79
+ }
80
+ this.logger.info('Starting RuvBot...');
81
+ this.stateManager.setStatus('starting');
82
+ try {
83
+ const config = this.configManager.getConfig();
84
+ // Initialize core services
85
+ await this.initializeServices();
86
+ // Start integrations
87
+ await this.startIntegrations(config);
88
+ // Start API server if enabled
89
+ if (config.api.enabled) {
90
+ await this.startApiServer(config);
91
+ }
92
+ // Mark as running
93
+ this.isRunning = true;
94
+ this.startTime = new Date();
95
+ this.stateManager.setStatus('running');
96
+ this.logger.info({ botId: this.id, name: config.name }, 'RuvBot started successfully');
97
+ this.emit('ready');
98
+ }
99
+ catch (error) {
100
+ this.stateManager.setStatus('error');
101
+ this.logger.error({ error }, 'Failed to start RuvBot');
102
+ throw new errors_js_1.InitializationError(`Failed to start RuvBot: ${error instanceof Error ? error.message : 'Unknown error'}`);
103
+ }
104
+ }
105
+ /**
106
+ * Stop the bot and cleanup resources
107
+ */
108
+ async stop() {
109
+ if (!this.isRunning) {
110
+ this.logger.warn('RuvBot is not running');
111
+ return;
112
+ }
113
+ this.logger.info('Stopping RuvBot...');
114
+ this.stateManager.setStatus('stopping');
115
+ try {
116
+ // Stop all agents
117
+ for (const [agentId] of this.agents) {
118
+ await this.stopAgent(agentId);
119
+ }
120
+ // End all sessions
121
+ for (const [sessionId] of this.sessions) {
122
+ await this.endSession(sessionId);
123
+ }
124
+ // Stop integrations
125
+ await this.stopIntegrations();
126
+ // Stop API server
127
+ await this.stopApiServer();
128
+ this.isRunning = false;
129
+ this.stateManager.setStatus('stopped');
130
+ this.logger.info('RuvBot stopped successfully');
131
+ this.emit('shutdown');
132
+ }
133
+ catch (error) {
134
+ this.stateManager.setStatus('error');
135
+ this.logger.error({ error }, 'Error during shutdown');
136
+ throw error;
137
+ }
138
+ }
139
+ // ==========================================================================
140
+ // Agent Management
141
+ // ==========================================================================
142
+ /**
143
+ * Spawn a new agent with the given configuration
144
+ */
145
+ async spawnAgent(config) {
146
+ const agentId = config.id || (0, uuid_1.v4)();
147
+ if (this.agents.has(agentId)) {
148
+ throw new errors_js_1.RuvBotError(`Agent with ID ${agentId} already exists`, 'AGENT_EXISTS');
149
+ }
150
+ const agent = {
151
+ id: agentId,
152
+ name: config.name,
153
+ config,
154
+ status: 'idle',
155
+ createdAt: new Date(),
156
+ lastActiveAt: new Date(),
157
+ };
158
+ this.agents.set(agentId, agent);
159
+ this.logger.info({ agentId, name: config.name }, 'Agent spawned');
160
+ this.emit('agent:spawn', agent);
161
+ return agent;
162
+ }
163
+ /**
164
+ * Stop an agent by ID
165
+ */
166
+ async stopAgent(agentId) {
167
+ const agent = this.agents.get(agentId);
168
+ if (!agent) {
169
+ throw new errors_js_1.RuvBotError(`Agent with ID ${agentId} not found`, 'AGENT_NOT_FOUND');
170
+ }
171
+ // End all sessions for this agent
172
+ for (const [sessionId, session] of this.sessions) {
173
+ if (session.agentId === agentId) {
174
+ await this.endSession(sessionId);
175
+ }
176
+ }
177
+ this.agents.delete(agentId);
178
+ this.logger.info({ agentId }, 'Agent stopped');
179
+ this.emit('agent:stop', agentId);
180
+ }
181
+ /**
182
+ * Get an agent by ID
183
+ */
184
+ getAgent(agentId) {
185
+ return this.agents.get(agentId);
186
+ }
187
+ /**
188
+ * List all active agents
189
+ */
190
+ listAgents() {
191
+ return Array.from(this.agents.values());
192
+ }
193
+ // ==========================================================================
194
+ // Session Management
195
+ // ==========================================================================
196
+ /**
197
+ * Create a new session for an agent
198
+ */
199
+ async createSession(agentId, options = {}) {
200
+ const agent = this.agents.get(agentId);
201
+ if (!agent) {
202
+ throw new errors_js_1.RuvBotError(`Agent with ID ${agentId} not found`, 'AGENT_NOT_FOUND');
203
+ }
204
+ const sessionId = (0, uuid_1.v4)();
205
+ const config = this.configManager.getConfig();
206
+ const session = {
207
+ id: sessionId,
208
+ agentId,
209
+ userId: options.userId,
210
+ channelId: options.channelId,
211
+ platform: options.platform || 'api',
212
+ messages: [],
213
+ context: {
214
+ topics: [],
215
+ entities: [],
216
+ },
217
+ metadata: options.metadata || {},
218
+ createdAt: new Date(),
219
+ updatedAt: new Date(),
220
+ expiresAt: new Date(Date.now() + config.session.defaultTTL),
221
+ };
222
+ this.sessions.set(sessionId, session);
223
+ this.logger.info({ sessionId, agentId }, 'Session created');
224
+ this.emit('session:create', session);
225
+ return session;
226
+ }
227
+ /**
228
+ * End a session by ID
229
+ */
230
+ async endSession(sessionId) {
231
+ const session = this.sessions.get(sessionId);
232
+ if (!session) {
233
+ throw new errors_js_1.RuvBotError(`Session with ID ${sessionId} not found`, 'SESSION_NOT_FOUND');
234
+ }
235
+ this.sessions.delete(sessionId);
236
+ this.logger.info({ sessionId }, 'Session ended');
237
+ this.emit('session:end', sessionId);
238
+ }
239
+ /**
240
+ * Get a session by ID
241
+ */
242
+ getSession(sessionId) {
243
+ return this.sessions.get(sessionId);
244
+ }
245
+ /**
246
+ * List all active sessions
247
+ */
248
+ listSessions() {
249
+ return Array.from(this.sessions.values());
250
+ }
251
+ // ==========================================================================
252
+ // Message Handling
253
+ // ==========================================================================
254
+ /**
255
+ * Send a message to an agent in a session
256
+ */
257
+ async chat(sessionId, content, options = {}) {
258
+ const session = this.sessions.get(sessionId);
259
+ if (!session) {
260
+ throw new errors_js_1.RuvBotError(`Session with ID ${sessionId} not found`, 'SESSION_NOT_FOUND');
261
+ }
262
+ const agent = this.agents.get(session.agentId);
263
+ if (!agent) {
264
+ throw new errors_js_1.RuvBotError(`Agent with ID ${session.agentId} not found`, 'AGENT_NOT_FOUND');
265
+ }
266
+ // Create user message
267
+ const userMessage = {
268
+ id: (0, uuid_1.v4)(),
269
+ sessionId,
270
+ role: 'user',
271
+ content,
272
+ attachments: options.attachments,
273
+ metadata: options.metadata,
274
+ createdAt: new Date(),
275
+ };
276
+ // Add to session
277
+ session.messages.push(userMessage);
278
+ session.updatedAt = new Date();
279
+ // Update agent status
280
+ agent.status = 'processing';
281
+ agent.lastActiveAt = new Date();
282
+ this.logger.debug({ sessionId, messageId: userMessage.id }, 'User message received');
283
+ this.emit('message', userMessage, session);
284
+ try {
285
+ // Generate response (placeholder for LLM integration)
286
+ const responseContent = await this.generateResponse(session, agent, content);
287
+ // Create assistant message
288
+ const assistantMessage = {
289
+ id: (0, uuid_1.v4)(),
290
+ sessionId,
291
+ role: 'assistant',
292
+ content: responseContent,
293
+ createdAt: new Date(),
294
+ };
295
+ session.messages.push(assistantMessage);
296
+ session.updatedAt = new Date();
297
+ agent.status = 'idle';
298
+ this.logger.debug({ sessionId, messageId: assistantMessage.id }, 'Assistant response generated');
299
+ this.emit('message', assistantMessage, session);
300
+ return assistantMessage;
301
+ }
302
+ catch (error) {
303
+ agent.status = 'error';
304
+ throw error;
305
+ }
306
+ }
307
+ // ==========================================================================
308
+ // Status & Info
309
+ // ==========================================================================
310
+ /**
311
+ * Get the current bot status
312
+ */
313
+ getStatus() {
314
+ const config = this.configManager.getConfig();
315
+ return {
316
+ id: this.id,
317
+ name: config.name,
318
+ state: this.stateManager.getStatus(),
319
+ isRunning: this.isRunning,
320
+ uptime: this.startTime
321
+ ? Date.now() - this.startTime.getTime()
322
+ : undefined,
323
+ agents: this.agents.size,
324
+ sessions: this.sessions.size,
325
+ };
326
+ }
327
+ /**
328
+ * Get the current configuration
329
+ */
330
+ getConfig() {
331
+ return this.configManager.getConfig();
332
+ }
333
+ // ==========================================================================
334
+ // Private Methods
335
+ // ==========================================================================
336
+ async initializeServices() {
337
+ this.logger.debug('Initializing core services...');
338
+ const config = this.configManager.getConfig();
339
+ // Initialize LLM provider based on configuration
340
+ const { provider, apiKey, model } = config.llm;
341
+ // Check for OpenRouter API key first for multi-model access
342
+ const openrouterKey = process.env.OPENROUTER_API_KEY;
343
+ const anthropicKey = process.env.ANTHROPIC_API_KEY || apiKey;
344
+ if (openrouterKey) {
345
+ // Use OpenRouter for Gemini 2.5 and other models
346
+ this.llmProvider = (0, index_js_1.createOpenRouterProvider)({
347
+ apiKey: openrouterKey,
348
+ model: model || 'google/gemini-2.5-pro-preview-05-06',
349
+ siteName: 'RuvBot',
350
+ });
351
+ this.logger.info({ provider: 'openrouter', model: model || 'google/gemini-2.5-pro-preview-05-06' }, 'LLM provider initialized');
352
+ }
353
+ else if (provider === 'anthropic' && anthropicKey) {
354
+ this.llmProvider = (0, index_js_1.createAnthropicProvider)({
355
+ apiKey: anthropicKey,
356
+ model: model || 'claude-3-5-sonnet-20241022',
357
+ });
358
+ this.logger.info({ provider: 'anthropic', model }, 'LLM provider initialized');
359
+ }
360
+ else if (anthropicKey) {
361
+ // Fallback to Anthropic if only that key is available
362
+ this.llmProvider = (0, index_js_1.createAnthropicProvider)({
363
+ apiKey: anthropicKey,
364
+ model: model || 'claude-3-5-sonnet-20241022',
365
+ });
366
+ this.logger.info({ provider: 'anthropic', model }, 'LLM provider initialized');
367
+ }
368
+ // TODO: Initialize memory manager, skill registry, etc.
369
+ }
370
+ async startIntegrations(config) {
371
+ this.logger.debug('Starting integrations...');
372
+ if (config.slack.enabled) {
373
+ this.logger.info('Slack integration enabled');
374
+ // TODO: Initialize Slack adapter
375
+ }
376
+ if (config.discord.enabled) {
377
+ this.logger.info('Discord integration enabled');
378
+ // TODO: Initialize Discord adapter
379
+ }
380
+ if (config.webhook.enabled) {
381
+ this.logger.info('Webhook integration enabled');
382
+ // TODO: Initialize webhook handler
383
+ }
384
+ }
385
+ async stopIntegrations() {
386
+ this.logger.debug('Stopping integrations...');
387
+ // TODO: Stop all integration adapters
388
+ }
389
+ async startApiServer(config) {
390
+ this.logger.info({ port: config.api.port, host: config.api.host }, 'Starting API server...');
391
+ // TODO: Initialize Fastify server
392
+ }
393
+ async stopApiServer() {
394
+ this.logger.debug('Stopping API server...');
395
+ // TODO: Stop Fastify server
396
+ }
397
+ async generateResponse(session, agent, userMessage) {
398
+ // If no LLM provider, return fallback
399
+ if (!this.llmProvider) {
400
+ this.logger.warn('No LLM provider configured');
401
+ return `[RuvBot] LLM not configured. Received: "${userMessage}"`;
402
+ }
403
+ // Build message history for context
404
+ const messages = [];
405
+ // Add system prompt from agent config
406
+ if (agent.config.systemPrompt) {
407
+ messages.push({
408
+ role: 'system',
409
+ content: agent.config.systemPrompt,
410
+ });
411
+ }
412
+ // Add recent message history (last 20 messages for context)
413
+ const recentMessages = session.messages.slice(-20);
414
+ for (const msg of recentMessages) {
415
+ messages.push({
416
+ role: msg.role === 'user' ? 'user' : 'assistant',
417
+ content: msg.content,
418
+ });
419
+ }
420
+ // Add current user message
421
+ messages.push({
422
+ role: 'user',
423
+ content: userMessage,
424
+ });
425
+ try {
426
+ // Call LLM provider
427
+ const completion = await this.llmProvider.complete(messages, {
428
+ temperature: agent.config.temperature ?? 0.7,
429
+ maxTokens: agent.config.maxTokens ?? 4096,
430
+ });
431
+ this.logger.debug({
432
+ inputTokens: completion.usage.inputTokens,
433
+ outputTokens: completion.usage.outputTokens,
434
+ finishReason: completion.finishReason,
435
+ }, 'LLM response received');
436
+ return completion.content;
437
+ }
438
+ catch (error) {
439
+ this.logger.error({ error }, 'LLM completion failed');
440
+ throw new errors_js_1.RuvBotError(`Failed to generate response: ${error instanceof Error ? error.message : 'Unknown error'}`, 'LLM_ERROR');
441
+ }
442
+ }
443
+ }
444
+ exports.RuvBot = RuvBot;
445
+ // ============================================================================
446
+ // Factory Functions
447
+ // ============================================================================
448
+ /**
449
+ * Create a new RuvBot instance
450
+ */
451
+ function createRuvBot(options) {
452
+ return new RuvBot(options);
453
+ }
454
+ /**
455
+ * Create a RuvBot instance from environment variables
456
+ */
457
+ function createRuvBotFromEnv() {
458
+ return new RuvBot();
459
+ }
460
+ exports.default = RuvBot;
461
+ //# sourceMappingURL=RuvBot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuvBot.js","sourceRoot":"","sources":["../src/RuvBot.ts"],"names":[],"mappings":"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"}