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/README.md ADDED
@@ -0,0 +1,850 @@
1
+ # RuvBot
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@ruvector/ruvbot.svg)](https://www.npmjs.com/package/@ruvector/ruvbot)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.3+-blue.svg)](https://www.typescriptlang.org/)
6
+ [![Node.js](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)
7
+ [![Tests](https://img.shields.io/badge/Tests-560%2F571%20passing-brightgreen.svg)]()
8
+
9
+ **Enterprise-Grade Self-Learning AI Assistant with Military-Strength Security**
10
+
11
+ **Live Demo**: https://ruvbot-875130704813.us-central1.run.app
12
+
13
+ ## Table of Contents
14
+
15
+ - [Why RuvBot?](#why-ruvbot-over-clawdbot)
16
+ - [Comparison](#ruvbot-vs-clawdbot-comparison)
17
+ - [Requirements](#requirements)
18
+ - [Quick Start](#quick-start)
19
+ - [Configuration](#configuration)
20
+ - [API Usage](#api-usage)
21
+ - [Security](#security-architecture-6-layers---why-this-matters)
22
+ - [LLM Providers](#llm-providers---gemini-25-default)
23
+ - [TypeScript](#typescript-support)
24
+ - [Events & Hooks](#events--hooks)
25
+ - [Streaming](#streaming-responses)
26
+ - [Migration](#migration-from-clawdbot)
27
+ - [Troubleshooting](#troubleshooting)
28
+ - [Development](#development)
29
+
30
+ ---
31
+
32
+ RuvBot is a next-generation personal AI assistant powered by RuVector's WASM vector operations. It addresses **critical security gaps found in Clawdbot** while delivering 150x faster performance, self-learning neural architecture, and enterprise-grade multi-tenancy.
33
+
34
+ ## Why RuvBot Over Clawdbot?
35
+
36
+ **Clawdbot lacks essential security protections** that are mandatory for production AI deployments:
37
+
38
+ - **No prompt injection defense** - Clawdbot is vulnerable to adversarial prompts
39
+ - **No jailbreak detection** - Users can bypass system instructions
40
+ - **No PII protection** - Sensitive data leakage risk
41
+ - **No input sanitization** - Control character and unicode attacks possible
42
+ - **Single-tenant only** - No enterprise data isolation
43
+
44
+ **RuvBot solves all of these** with a 6-layer security architecture and AIDefence integration.
45
+
46
+ ## RuvBot vs Clawdbot Comparison
47
+
48
+ | Feature | Clawdbot | RuvBot | Improvement |
49
+ |---------|----------|--------|-------------|
50
+ | **Security** | Basic validation | 6-layer + AIDefence | **Critical upgrade** |
51
+ | **Prompt Injection** | Vulnerable | Protected (<5ms) | **Essential protection** |
52
+ | **PII Protection** | None | Full detection + masking | **Compliance-ready** |
53
+ | **Vector Search** | Linear search | HNSW-indexed | **150x-12,500x faster** |
54
+ | **Embeddings** | External API | Local WASM | **75x faster**, no network latency |
55
+ | **Learning** | Static | SONA adaptive | Self-improving with EWC++ |
56
+ | **Multi-tenancy** | Single-user | Full RLS | Enterprise isolation |
57
+ | **LLM Models** | Single provider | 12+ models (Gemini 2.5, Claude, GPT) | **Full flexibility** |
58
+ | **Cold Start** | ~3s | ~500ms | **6x faster** |
59
+
60
+ ## Performance Benchmarks
61
+
62
+ | Operation | Clawdbot | RuvBot | Speedup |
63
+ |-----------|----------|--------|---------|
64
+ | Embedding generation | 200ms (API) | 2.7ms (WASM) | **74x** |
65
+ | Vector search (10K) | 50ms | <1ms | **50x** |
66
+ | Vector search (100K) | 500ms+ | <5ms | **100x** |
67
+ | Session restore | 100ms | 10ms | **10x** |
68
+ | Skill invocation | 50ms | 5ms | **10x** |
69
+
70
+ ## Features
71
+
72
+ - **Self-Learning**: SONA adaptive learning with trajectory tracking and pattern extraction
73
+ - **WASM Embeddings**: High-performance vector operations using RuVector WASM bindings
74
+ - **Vector Memory**: HNSW-indexed semantic memory with 150x-12,500x faster search
75
+ - **Multi-Platform**: Slack, Discord, webhook, REST API, and CLI interfaces
76
+ - **Extensible Skills**: Plugin architecture for custom capabilities with hot-reload
77
+ - **Multi-Tenancy**: Enterprise-ready with PostgreSQL row-level security
78
+ - **Background Workers**: 12 specialized worker types via agentic-flow
79
+ - **LLM Routing**: Intelligent 3-tier routing for optimal cost/performance
80
+
81
+ ## Requirements
82
+
83
+ - **Node.js**: 18.0.0 or higher
84
+ - **npm**: 9.0.0 or higher
85
+ - **API Key**: OpenRouter (recommended) or Anthropic
86
+
87
+ ## Quick Start
88
+
89
+ ### Install via curl
90
+
91
+ ```bash
92
+ curl -fsSL https://get.ruvector.dev/ruvbot | bash
93
+ ```
94
+
95
+ Or with custom settings:
96
+
97
+ ```bash
98
+ RUVBOT_VERSION=0.1.0 \
99
+ RUVBOT_INSTALL_DIR=/opt/ruvbot \
100
+ curl -fsSL https://get.ruvector.dev/ruvbot | bash
101
+ ```
102
+
103
+ ### Install via npm/npx
104
+
105
+ ```bash
106
+ # Run directly
107
+ npx @ruvector/ruvbot start
108
+
109
+ # Or install globally
110
+ npm install -g @ruvector/ruvbot
111
+ ruvbot start
112
+ ```
113
+
114
+ ## Configuration
115
+
116
+ ### Environment Variables
117
+
118
+ ```bash
119
+ # LLM Provider (required - choose one)
120
+ # Option 1: OpenRouter (RECOMMENDED - access to Gemini 2.5, Claude, GPT, etc.)
121
+ export OPENROUTER_API_KEY=sk-or-xxx
122
+
123
+ # Option 2: Anthropic Direct
124
+ export ANTHROPIC_API_KEY=sk-ant-xxx
125
+
126
+ # Slack Integration (optional)
127
+ export SLACK_BOT_TOKEN=xoxb-xxx
128
+ export SLACK_SIGNING_SECRET=xxx
129
+ export SLACK_APP_TOKEN=xapp-xxx
130
+
131
+ # Discord Integration (optional)
132
+ export DISCORD_TOKEN=xxx
133
+ export DISCORD_CLIENT_ID=xxx
134
+
135
+ # Server Configuration
136
+ export RUVBOT_PORT=3000
137
+ export RUVBOT_LOG_LEVEL=info
138
+ ```
139
+
140
+ ### Configuration File
141
+
142
+ Create `ruvbot.config.json`:
143
+
144
+ ```json
145
+ {
146
+ "name": "my-ruvbot",
147
+ "api": {
148
+ "enabled": true,
149
+ "port": 3000,
150
+ "host": "0.0.0.0"
151
+ },
152
+ "storage": {
153
+ "type": "sqlite",
154
+ "path": "./data/ruvbot.db"
155
+ },
156
+ "memory": {
157
+ "dimensions": 384,
158
+ "maxVectors": 100000,
159
+ "indexType": "hnsw"
160
+ },
161
+ "skills": {
162
+ "enabled": ["search", "summarize", "code", "memory"]
163
+ },
164
+ "slack": {
165
+ "enabled": true,
166
+ "socketMode": true
167
+ }
168
+ }
169
+ ```
170
+
171
+ ## CLI Commands
172
+
173
+ ```bash
174
+ # Initialize in current directory
175
+ ruvbot init
176
+
177
+ # Start the bot server
178
+ ruvbot start [--port 3000] [--debug]
179
+
180
+ # Check status
181
+ ruvbot status
182
+
183
+ # Manage skills
184
+ ruvbot skills list
185
+ ruvbot skills add <name>
186
+
187
+ # Run diagnostics
188
+ ruvbot doctor
189
+
190
+ # Show configuration
191
+ ruvbot config --show
192
+ ```
193
+
194
+ ## API Usage
195
+
196
+ ### REST API Endpoints
197
+
198
+ | Endpoint | Method | Description |
199
+ |----------|--------|-------------|
200
+ | `/health` | GET | Health check (Cloud Run ready) |
201
+ | `/ready` | GET | Readiness check |
202
+ | `/api/status` | GET | Bot status and metrics |
203
+ | `/api/models` | GET | List available LLM models |
204
+ | `/api/agents` | GET/POST | Agent management |
205
+ | `/api/sessions` | GET/POST | Session management |
206
+ | `/api/sessions/:id/chat` | POST | Send message with AIDefence |
207
+
208
+ ### Quick Start
209
+
210
+ ```bash
211
+ # Check health
212
+ curl https://your-ruvbot.run.app/health
213
+
214
+ # List available models
215
+ curl https://your-ruvbot.run.app/api/models
216
+
217
+ # Create a session
218
+ curl -X POST https://your-ruvbot.run.app/api/sessions \
219
+ -H "Content-Type: application/json" \
220
+ -d '{"agentId": "default-agent"}'
221
+
222
+ # Chat (with automatic AIDefence protection)
223
+ curl -X POST https://your-ruvbot.run.app/api/sessions/{id}/chat \
224
+ -H "Content-Type: application/json" \
225
+ -d '{"message": "Hello, RuvBot!"}'
226
+ ```
227
+
228
+ ### Programmatic Usage
229
+
230
+ ```typescript
231
+ import { RuvBot, createRuvBot } from '@ruvector/ruvbot';
232
+
233
+ // Create bot instance
234
+ const bot = createRuvBot({
235
+ config: {
236
+ llm: {
237
+ provider: 'anthropic',
238
+ apiKey: process.env.ANTHROPIC_API_KEY,
239
+ },
240
+ memory: {
241
+ dimensions: 384,
242
+ maxVectors: 100000,
243
+ },
244
+ },
245
+ });
246
+
247
+ // Start the bot
248
+ await bot.start();
249
+
250
+ // Spawn an agent
251
+ const agent = await bot.spawnAgent({
252
+ id: 'assistant',
253
+ name: 'My Assistant',
254
+ });
255
+
256
+ // Create a session
257
+ const session = await bot.createSession(agent.id, {
258
+ userId: 'user-123',
259
+ platform: 'api',
260
+ });
261
+
262
+ // Chat
263
+ const response = await bot.chat(session.id, 'What can you help me with?');
264
+ console.log(response.content);
265
+ ```
266
+
267
+ ## Architecture
268
+
269
+ ```
270
+ ┌─────────────────────────────────────────────────────────────────┐
271
+ │ RuvBot │
272
+ ├─────────────────────────────────────────────────────────────────┤
273
+ │ REST API │ GraphQL │ Slack Adapter │ Discord │ Webhooks │
274
+ ├─────────────────────────────────────────────────────────────────┤
275
+ │ Core Application Layer │
276
+ │ AgentManager │ SessionStore │ SkillRegistry │ MemoryManager │
277
+ ├─────────────────────────────────────────────────────────────────┤
278
+ │ Learning Layer │
279
+ │ SONA Trainer │ Pattern Extractor │ Trajectory Store │ EWC++ │
280
+ ├─────────────────────────────────────────────────────────────────┤
281
+ │ Infrastructure Layer │
282
+ │ RuVector WASM │ PostgreSQL │ RuvLLM │ agentic-flow Workers │
283
+ └─────────────────────────────────────────────────────────────────┘
284
+ ```
285
+
286
+ ## Intelligent LLM Routing (3-Tier)
287
+
288
+ | Tier | Handler | Latency | Cost | Use Cases |
289
+ |------|---------|---------|------|-----------|
290
+ | **1** | Agent Booster | <1ms | $0 | Simple transforms, formatting |
291
+ | **2** | Haiku | ~500ms | $0.0002 | Simple tasks, bug fixes |
292
+ | **3** | Sonnet/Opus | 2-5s | $0.003-$0.015 | Complex reasoning, architecture |
293
+
294
+ Benefits: **75% cost reduction**, **352x faster** for Tier 1 tasks.
295
+
296
+ ## Security Architecture (6 Layers) - Why This Matters
297
+
298
+ **Clawdbot's security model is fundamentally insufficient for production AI:**
299
+
300
+ | Vulnerability | Clawdbot | RuvBot |
301
+ |--------------|----------|--------|
302
+ | Prompt Injection | **VULNERABLE** | Protected (<5ms) |
303
+ | Jailbreak Attacks | **VULNERABLE** | Detected + blocked |
304
+ | PII Data Leakage | **UNPROTECTED** | Auto-masked |
305
+ | Control Characters | **UNFILTERED** | Sanitized |
306
+ | Homoglyph Attacks | **VULNERABLE** | Normalized |
307
+ | Multi-tenant Isolation | **NONE** | PostgreSQL RLS |
308
+
309
+ **RuvBot's Defense-in-Depth Architecture:**
310
+
311
+ ```
312
+ ┌─────────────────────────────────────────────────────────────────┐
313
+ │ Layer 1: Transport (TLS 1.3, HSTS, cert pinning) │
314
+ │ Layer 2: Authentication (JWT RS256, OAuth 2.0, rate limiting) │
315
+ │ Layer 3: Authorization (RBAC, claims, tenant isolation) │
316
+ │ Layer 4: Data Protection (AES-256-GCM, key rotation) │
317
+ │ Layer 5: AIDefence (prompt injection, jailbreak, PII) │
318
+ │ Layer 6: WASM Sandbox (memory isolation, resource limits) │
319
+ └─────────────────────────────────────────────────────────────────┘
320
+ ```
321
+
322
+ Compliance Ready: **GDPR**, **SOC 2**, **HIPAA** (configurable).
323
+
324
+ ## AI Defense (aidefence Integration) - Critical for Production
325
+
326
+ **Every production AI system needs adversarial defense.** Clawdbot has none. RuvBot integrates [aidefence](https://www.npmjs.com/package/aidefence) for military-grade protection.
327
+
328
+ ### Threat Detection (<10ms latency)
329
+
330
+ - **Prompt Injection Detection** - 50+ injection pattern signatures
331
+ - **Jailbreak Prevention** - DAN, bypass, unlimited mode, roleplay attacks
332
+ - **PII Protection** - Email, phone, SSN, credit cards, API keys, IP addresses
333
+ - **Unicode Normalization** - Homoglyph and encoding attack prevention
334
+ - **Behavioral Analysis** - User baseline deviation detection
335
+ - **Response Validation** - Prevents LLM from leaking injected content
336
+ - **Audit Logging** - Full threat tracking for compliance
337
+
338
+ ### Usage
339
+
340
+ ```typescript
341
+ import { createAIDefenceGuard, createAIDefenceMiddleware } from '@ruvector/ruvbot';
342
+
343
+ // Create guard
344
+ const guard = createAIDefenceGuard({
345
+ detectPromptInjection: true,
346
+ detectJailbreak: true,
347
+ detectPII: true,
348
+ blockThreshold: 'medium',
349
+ });
350
+
351
+ // Analyze input
352
+ const result = await guard.analyze(userInput);
353
+ if (!result.safe) {
354
+ console.log('Threats:', result.threats);
355
+ const safeInput = result.sanitizedInput;
356
+ }
357
+
358
+ // Or use middleware
359
+ const middleware = createAIDefenceMiddleware();
360
+ const { allowed, sanitizedInput } = await middleware.validateInput(input);
361
+ ```
362
+
363
+ ### Threat Detection
364
+
365
+ | Threat | Severity | Latency |
366
+ |--------|----------|---------|
367
+ | Prompt Injection | High | <5ms |
368
+ | Jailbreak | Critical | <5ms |
369
+ | PII Exposure | Medium-Critical | <3ms |
370
+ | Control Characters | Medium | <1ms |
371
+
372
+ See [ADR-014: AIDefence Integration](docs/adr/ADR-014-aidefence-integration.md) for details.
373
+
374
+ ## Plugin System
375
+
376
+ RuvBot includes an extensible plugin system inspired by claude-flow's IPFS-based registry.
377
+
378
+ ### Features
379
+
380
+ - **Plugin Discovery**: Auto-load plugins from `./plugins` directory
381
+ - **Lifecycle Management**: Install, enable, disable, unload plugins
382
+ - **Hot-Reload**: Dynamic plugin loading without restart
383
+ - **Sandboxed Execution**: Permission-based access control
384
+ - **IPFS Registry**: Optional decentralized plugin distribution
385
+
386
+ ### Usage
387
+
388
+ ```typescript
389
+ import { createPluginManager } from '@ruvector/ruvbot';
390
+
391
+ // Create and initialize plugin manager
392
+ const plugins = createPluginManager({
393
+ pluginsDir: './plugins',
394
+ autoLoad: true,
395
+ });
396
+ await plugins.initialize();
397
+
398
+ // List plugins and skills
399
+ console.log(plugins.listPlugins());
400
+ const skills = plugins.getPluginSkills();
401
+ ```
402
+
403
+ ### Plugin Permissions
404
+
405
+ | Permission | Description |
406
+ |------------|-------------|
407
+ | `memory:read` | Read from memory store |
408
+ | `memory:write` | Write to memory store |
409
+ | `skill:register` | Register new skills |
410
+ | `llm:invoke` | Invoke LLM providers |
411
+ | `http:outbound` | Make external HTTP requests |
412
+
413
+ ## Background Workers
414
+
415
+ | Worker | Priority | Purpose |
416
+ |--------|----------|---------|
417
+ | `ultralearn` | normal | Deep knowledge acquisition |
418
+ | `optimize` | high | Performance optimization |
419
+ | `consolidate` | low | Memory consolidation (EWC++) |
420
+ | `predict` | normal | Predictive preloading |
421
+ | `audit` | critical | Security analysis |
422
+ | `map` | normal | Codebase/context mapping |
423
+ | `deepdive` | normal | Deep code analysis |
424
+ | `document` | normal | Auto-documentation |
425
+ | `refactor` | normal | Refactoring suggestions |
426
+ | `benchmark` | normal | Performance benchmarking |
427
+ | `testgaps` | normal | Test coverage analysis |
428
+ | `preload` | low | Resource preloading |
429
+
430
+ ## Skills
431
+
432
+ ### Built-in Skills
433
+
434
+ | Skill | Description | SOTA Feature |
435
+ |-------|-------------|--------------|
436
+ | `search` | Semantic search across memory | HNSW O(log n) search |
437
+ | `summarize` | Generate concise summaries | Multi-level summarization |
438
+ | `code` | Code generation & analysis | AST-aware with context |
439
+ | `memory` | Long-term memory storage | SONA learning integration |
440
+ | `reasoning` | Multi-step reasoning | Chain-of-thought |
441
+ | `extraction` | Entity & pattern extraction | Named entity recognition |
442
+
443
+ ### Self-Learning Pipeline
444
+
445
+ ```
446
+ ┌─────────────────────────────────────────────────────────────────┐
447
+ │ User Query ──► Agent Response ──► Outcome ──► Pattern Store │
448
+ │ │ │ │ │ │
449
+ │ ▼ ▼ ▼ ▼ │
450
+ │ Embedding Action Log Reward Score Neural Update │
451
+ │ │
452
+ │ SONA 4-Step: RETRIEVE → JUDGE → DISTILL → CONSOLIDATE │
453
+ └─────────────────────────────────────────────────────────────────┘
454
+ ```
455
+
456
+ ### Custom Skills
457
+
458
+ Create custom skills in the `skills/` directory:
459
+
460
+ ```typescript
461
+ // skills/my-skill.ts
462
+ import { defineSkill } from '@ruvector/ruvbot';
463
+
464
+ export default defineSkill({
465
+ name: 'my-skill',
466
+ description: 'Custom skill description',
467
+ inputs: [
468
+ { name: 'query', type: 'string', required: true }
469
+ ],
470
+ async execute(params, context) {
471
+ return {
472
+ success: true,
473
+ data: `Processed: ${params.query}`,
474
+ };
475
+ },
476
+ });
477
+ ```
478
+
479
+ ## Memory System
480
+
481
+ RuvBot uses HNSW-indexed vector memory for fast semantic search:
482
+
483
+ ```typescript
484
+ import { MemoryManager, createWasmEmbedder } from '@ruvector/ruvbot/learning';
485
+
486
+ const embedder = createWasmEmbedder({ dimensions: 384 });
487
+ const memory = new MemoryManager({
488
+ config: { dimensions: 384, maxVectors: 100000, indexType: 'hnsw' },
489
+ embedder,
490
+ });
491
+
492
+ // Store a memory
493
+ await memory.store('Important information', {
494
+ source: 'user',
495
+ tags: ['important'],
496
+ importance: 0.9,
497
+ });
498
+
499
+ // Search memories
500
+ const results = await memory.search('find important info', {
501
+ topK: 5,
502
+ threshold: 0.7,
503
+ });
504
+ ```
505
+
506
+ ## Docker
507
+
508
+ ```yaml
509
+ # docker-compose.yml
510
+ version: '3.8'
511
+ services:
512
+ ruvbot:
513
+ image: ruvector/ruvbot:latest
514
+ ports:
515
+ - "3000:3000"
516
+ environment:
517
+ - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
518
+ - SLACK_BOT_TOKEN=${SLACK_BOT_TOKEN}
519
+ volumes:
520
+ - ./data:/app/data
521
+ - ./skills:/app/skills
522
+ ```
523
+
524
+ ## Google Cloud Deployment
525
+
526
+ RuvBot includes cost-optimized Google Cloud Platform deployment (~$15-20/month for low traffic).
527
+
528
+ ### Quick Deploy
529
+
530
+ ```bash
531
+ # Set environment variables
532
+ export ANTHROPIC_API_KEY="sk-ant-..."
533
+ export PROJECT_ID="my-gcp-project"
534
+
535
+ # Deploy with script
536
+ ./deploy/gcp/deploy.sh --project-id $PROJECT_ID
537
+ ```
538
+
539
+ ### Terraform (Infrastructure as Code)
540
+
541
+ ```bash
542
+ cd deploy/gcp/terraform
543
+ terraform init
544
+ terraform apply \
545
+ -var="project_id=my-project" \
546
+ -var="anthropic_api_key=$ANTHROPIC_API_KEY"
547
+ ```
548
+
549
+ ### Cost Breakdown
550
+
551
+ | Service | Configuration | Monthly Cost |
552
+ |---------|---------------|--------------|
553
+ | Cloud Run | 0-10 instances, 512Mi | ~$0-5 (free tier) |
554
+ | Cloud SQL | db-f1-micro PostgreSQL | ~$10-15 |
555
+ | Secret Manager | 3-5 secrets | ~$0.18 |
556
+ | Cloud Storage | Standard | ~$0.02/GB |
557
+ | **Total** | | **~$15-20/month** |
558
+
559
+ ### Features
560
+
561
+ - **Serverless**: Scale to zero when not in use
562
+ - **Managed Database**: Cloud SQL PostgreSQL with automatic backups
563
+ - **Secure Secrets**: Secret Manager for API keys
564
+ - **CI/CD**: Cloud Build pipeline included
565
+ - **Terraform**: Full infrastructure as code support
566
+
567
+ See [ADR-013: GCP Deployment](docs/adr/ADR-013-gcp-deployment.md) for architecture details.
568
+
569
+ ## LLM Providers - Gemini 2.5 Default
570
+
571
+ RuvBot supports 12+ models with **Gemini 2.5 Pro as the recommended default** for optimal cost/performance.
572
+
573
+ ### Available Models (via REST API)
574
+
575
+ ```bash
576
+ curl https://your-ruvbot.run.app/api/models
577
+ ```
578
+
579
+ | Model | Provider | Use Case | Recommended |
580
+ |-------|----------|----------|-------------|
581
+ | **Gemini 2.5 Pro** | OpenRouter | General + Reasoning | **Default** |
582
+ | Gemini 2.0 Flash | OpenRouter | Fast responses | Speed-critical |
583
+ | Gemini 2.0 Flash Thinking | OpenRouter | Reasoning (FREE) | Budget |
584
+ | Claude 3.5 Sonnet | Anthropic/OpenRouter | Complex analysis | Quality |
585
+ | Claude 3 Opus | Anthropic/OpenRouter | Deep reasoning | Premium |
586
+ | GPT-4o | OpenRouter | General | Alternative |
587
+ | O1 Preview | OpenRouter | Advanced reasoning | Complex |
588
+ | Qwen QwQ-32B | OpenRouter | Math + Reasoning | Cost-effective |
589
+ | DeepSeek R1 | OpenRouter | Open-source reasoning | Privacy |
590
+ | Llama 3.1 405B | OpenRouter | Large context | Enterprise |
591
+
592
+ ### OpenRouter (Default - 200+ Models)
593
+
594
+ ```typescript
595
+ import { createOpenRouterProvider } from '@ruvector/ruvbot';
596
+
597
+ // Gemini 2.5 Pro (recommended)
598
+ const provider = createOpenRouterProvider({
599
+ apiKey: process.env.OPENROUTER_API_KEY,
600
+ model: 'google/gemini-2.5-pro-preview-05-06',
601
+ });
602
+ ```
603
+
604
+ ### Anthropic (Direct)
605
+
606
+ ```typescript
607
+ import { createAnthropicProvider } from '@ruvector/ruvbot';
608
+
609
+ const provider = createAnthropicProvider({
610
+ apiKey: process.env.ANTHROPIC_API_KEY,
611
+ model: 'claude-3-5-sonnet-20241022',
612
+ });
613
+ ```
614
+
615
+ See [ADR-012: LLM Providers](docs/adr/ADR-012-llm-providers.md) for details.
616
+
617
+ ## TypeScript Support
618
+
619
+ RuvBot is written in TypeScript and provides full type definitions:
620
+
621
+ ```typescript
622
+ import type {
623
+ RuvBot,
624
+ RuvBotOptions,
625
+ Agent,
626
+ AgentConfig,
627
+ Session,
628
+ Message,
629
+ BotConfig,
630
+ } from '@ruvector/ruvbot';
631
+
632
+ // Full IntelliSense support
633
+ const bot = createRuvBot({
634
+ config: {
635
+ name: 'MyBot',
636
+ llm: { provider: 'anthropic', apiKey: '...' },
637
+ },
638
+ });
639
+ ```
640
+
641
+ ## Events & Hooks
642
+
643
+ RuvBot emits events for lifecycle and message handling:
644
+
645
+ ```typescript
646
+ import { createRuvBot } from '@ruvector/ruvbot';
647
+
648
+ const bot = createRuvBot();
649
+
650
+ // Lifecycle events
651
+ bot.on('ready', () => console.log('Bot is ready'));
652
+ bot.on('shutdown', () => console.log('Bot shutting down'));
653
+ bot.on('error', (error) => console.error('Error:', error));
654
+
655
+ // Agent events
656
+ bot.on('agent:spawn', (agent) => console.log('Agent spawned:', agent.id));
657
+ bot.on('agent:stop', (agentId) => console.log('Agent stopped:', agentId));
658
+
659
+ // Session events
660
+ bot.on('session:create', (session) => console.log('Session created:', session.id));
661
+ bot.on('session:end', (sessionId) => console.log('Session ended:', sessionId));
662
+
663
+ // Message events
664
+ bot.on('message', (message, session) => {
665
+ console.log(`[${message.role}]: ${message.content}`);
666
+ });
667
+ ```
668
+
669
+ ## Streaming Responses
670
+
671
+ RuvBot supports streaming for real-time responses:
672
+
673
+ ```typescript
674
+ import { createRuvBot } from '@ruvector/ruvbot';
675
+
676
+ const bot = createRuvBot({
677
+ config: {
678
+ llm: {
679
+ provider: 'anthropic',
680
+ apiKey: process.env.ANTHROPIC_API_KEY,
681
+ streaming: true, // Enable streaming
682
+ },
683
+ },
684
+ });
685
+
686
+ // Streaming is handled automatically in chat responses
687
+ const response = await bot.chat(sessionId, 'Tell me a story');
688
+ ```
689
+
690
+ ## Migration from Clawdbot
691
+
692
+ RuvBot provides a seamless migration path from Clawdbot:
693
+
694
+ ### 1. Export Clawdbot Data
695
+
696
+ ```bash
697
+ # Export your Clawdbot data
698
+ clawdbot export --format json > clawdbot-data.json
699
+ ```
700
+
701
+ ### 2. Install RuvBot
702
+
703
+ ```bash
704
+ npm install -g @ruvector/ruvbot
705
+ ```
706
+
707
+ ### 3. Import Data
708
+
709
+ ```bash
710
+ ruvbot import --from-clawdbot clawdbot-data.json
711
+ ```
712
+
713
+ ### 4. Verify Migration
714
+
715
+ ```bash
716
+ ruvbot doctor --verify-migration
717
+ ```
718
+
719
+ ### Key Differences
720
+
721
+ | Aspect | Clawdbot | RuvBot |
722
+ |--------|----------|--------|
723
+ | Config file | `clawdbot.config.json` | `ruvbot.config.json` |
724
+ | Environment prefix | `CLAWDBOT_` | `RUVBOT_` |
725
+ | Skills directory | `./skills` | `./skills` (compatible) |
726
+ | Memory storage | SQLite | SQLite + PostgreSQL + HNSW |
727
+
728
+ ### Skill Compatibility
729
+
730
+ All 52 Clawdbot skills are compatible with RuvBot. Simply copy your `skills/` directory.
731
+
732
+ ## Troubleshooting
733
+
734
+ ### Common Issues
735
+
736
+ **LLM not configured**
737
+ ```
738
+ [RuvBot] LLM not configured. Received: "..."
739
+ ```
740
+ Solution: Set `OPENROUTER_API_KEY` or `ANTHROPIC_API_KEY` environment variable.
741
+
742
+ **Agent not found**
743
+ ```
744
+ Error: Agent with ID xxx not found
745
+ ```
746
+ Solution: Create an agent first with `bot.spawnAgent()` or use `default-agent`.
747
+
748
+ **Session expired**
749
+ ```
750
+ Error: Session with ID xxx not found
751
+ ```
752
+ Solution: Sessions expire after 1 hour by default. Create a new session.
753
+
754
+ **Memory search returns empty**
755
+ ```
756
+ No results found
757
+ ```
758
+ Solution: Ensure you've stored memories first and the HNSW index is initialized.
759
+
760
+ ### Debug Mode
761
+
762
+ ```bash
763
+ # Enable debug logging
764
+ export LOG_LEVEL=debug
765
+ ruvbot start --debug
766
+ ```
767
+
768
+ ### Health Check
769
+
770
+ ```bash
771
+ # Check service health
772
+ curl https://your-ruvbot.run.app/health
773
+
774
+ # Run diagnostics
775
+ ruvbot doctor
776
+ ```
777
+
778
+ ## Development
779
+
780
+ ```bash
781
+ # Clone the repository
782
+ git clone https://github.com/ruvnet/ruvector.git
783
+ cd ruvector/npm/packages/ruvbot
784
+
785
+ # Install dependencies
786
+ npm install
787
+
788
+ # Run in development mode
789
+ npm run dev
790
+
791
+ # Run tests
792
+ npm test
793
+
794
+ # Run tests with coverage
795
+ npm run test:coverage
796
+
797
+ # Type check
798
+ npm run typecheck
799
+
800
+ # Build
801
+ npm run build
802
+ ```
803
+
804
+ ## Dependencies
805
+
806
+ | Package | Purpose |
807
+ |---------|---------|
808
+ | `@ruvector/ruvllm` | LLM orchestration with SONA learning |
809
+ | `@ruvector/wasm-unified` | WASM vector operations |
810
+ | `@ruvector/postgres-cli` | PostgreSQL vector storage |
811
+ | `fastify` | REST API server |
812
+ | `@slack/bolt` | Slack integration |
813
+
814
+ ## What's New in v0.1.0
815
+
816
+ - **Gemini 2.5 Pro Support** - Default model with state-of-the-art reasoning
817
+ - **12+ LLM Models** - Gemini, Claude, GPT, Qwen, DeepSeek, Llama
818
+ - **AIDefence Integration** - Military-grade adversarial protection
819
+ - **6-Layer Security** - Defense-in-depth architecture
820
+ - **HNSW Vector Search** - 150x-12,500x faster than linear search
821
+ - **SONA Learning** - Self-optimizing neural architecture
822
+ - **Cloud Run Ready** - Serverless deployment with scale-to-zero
823
+ - **Multi-tenancy** - PostgreSQL RLS for enterprise isolation
824
+
825
+ ## License
826
+
827
+ MIT License - see [LICENSE](LICENSE) for details.
828
+
829
+ ## Contributing
830
+
831
+ See [CONTRIBUTING.md](../../CONTRIBUTING.md) for contribution guidelines.
832
+
833
+ ## Links
834
+
835
+ - **Live Demo**: https://ruvbot-875130704813.us-central1.run.app
836
+ - **npm Package**: https://www.npmjs.com/package/@ruvector/ruvbot
837
+ - **Repository**: https://github.com/ruvnet/ruvector
838
+ - **Issues**: https://github.com/ruvnet/ruvector/issues
839
+ - **Documentation**: https://github.com/ruvnet/ruvector/tree/main/npm/packages/ruvbot
840
+ - **Feature Comparison**: [docs/FEATURE_COMPARISON.md](docs/FEATURE_COMPARISON.md)
841
+ - **ADR Documents**: [docs/adr/](docs/adr/)
842
+
843
+ ## Support
844
+
845
+ - **GitHub Issues**: https://github.com/ruvnet/ruvector/issues
846
+ - **Discussions**: https://github.com/ruvnet/ruvector/discussions
847
+
848
+ ---
849
+
850
+ Made with security in mind by the RuVector Team