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
@@ -0,0 +1,419 @@
1
+ /**
2
+ * Doctor Command - System diagnostics and health checks
3
+ *
4
+ * Checks:
5
+ * - Node.js version
6
+ * - Required dependencies
7
+ * - Environment variables
8
+ * - Database connectivity
9
+ * - LLM provider connectivity
10
+ * - Memory system
11
+ * - Security configuration
12
+ * - Plugin system
13
+ */
14
+ import { Command } from 'commander';
15
+ import chalk from 'chalk';
16
+ import ora from 'ora';
17
+ export function createDoctorCommand() {
18
+ const doctor = new Command('doctor');
19
+ doctor
20
+ .description('Run diagnostics and health checks')
21
+ .option('--fix', 'Attempt to fix issues automatically')
22
+ .option('--json', 'Output results as JSON')
23
+ .option('-v, --verbose', 'Show detailed information')
24
+ .action(async (options) => {
25
+ const results = [];
26
+ const spinner = ora('Running diagnostics...').start();
27
+ try {
28
+ // Check Node.js version
29
+ results.push(await checkNodeVersion());
30
+ // Check environment variables
31
+ results.push(...await checkEnvironment());
32
+ // Check dependencies
33
+ results.push(...await checkDependencies());
34
+ // Check database connectivity
35
+ results.push(await checkDatabase());
36
+ // Check LLM providers
37
+ results.push(...await checkLLMProviders());
38
+ // Check memory system
39
+ results.push(await checkMemorySystem());
40
+ // Check security configuration
41
+ results.push(await checkSecurity());
42
+ // Check plugin system
43
+ results.push(await checkPlugins());
44
+ // Check disk space
45
+ results.push(await checkDiskSpace());
46
+ spinner.stop();
47
+ if (options.json) {
48
+ console.log(JSON.stringify(results, null, 2));
49
+ return;
50
+ }
51
+ // Display results
52
+ console.log(chalk.bold('\n🏥 RuvBot Doctor Results\n'));
53
+ console.log('─'.repeat(60));
54
+ let passCount = 0;
55
+ let warnCount = 0;
56
+ let failCount = 0;
57
+ for (const result of results) {
58
+ const icon = result.status === 'pass' ? '✓' : result.status === 'warn' ? '⚠' : '✗';
59
+ const color = result.status === 'pass' ? chalk.green : result.status === 'warn' ? chalk.yellow : chalk.red;
60
+ console.log(color(`${icon} ${result.name}`));
61
+ if (options.verbose || result.status !== 'pass') {
62
+ console.log(chalk.gray(` ${result.message}`));
63
+ }
64
+ if (result.fix && result.status !== 'pass') {
65
+ console.log(chalk.cyan(` Fix: ${result.fix}`));
66
+ }
67
+ if (result.status === 'pass')
68
+ passCount++;
69
+ else if (result.status === 'warn')
70
+ warnCount++;
71
+ else
72
+ failCount++;
73
+ }
74
+ console.log('─'.repeat(60));
75
+ console.log(`\nSummary: ${chalk.green(passCount + ' passed')}, ` +
76
+ `${chalk.yellow(warnCount + ' warnings')}, ` +
77
+ `${chalk.red(failCount + ' failed')}`);
78
+ if (failCount > 0) {
79
+ console.log(chalk.red('\n⚠ Some checks failed. Run with --fix to attempt automatic fixes.'));
80
+ process.exit(1);
81
+ }
82
+ else if (warnCount > 0) {
83
+ console.log(chalk.yellow('\n⚠ Some warnings detected. Review and address if needed.'));
84
+ }
85
+ else {
86
+ console.log(chalk.green('\n✓ All checks passed! RuvBot is healthy.'));
87
+ }
88
+ }
89
+ catch (error) {
90
+ spinner.fail(chalk.red('Diagnostics failed'));
91
+ console.error(error);
92
+ process.exit(1);
93
+ }
94
+ });
95
+ return doctor;
96
+ }
97
+ async function checkNodeVersion() {
98
+ const version = process.version;
99
+ const major = parseInt(version.slice(1).split('.')[0], 10);
100
+ if (major >= 20) {
101
+ return { name: 'Node.js Version', status: 'pass', message: `${version} (recommended)` };
102
+ }
103
+ else if (major >= 18) {
104
+ return { name: 'Node.js Version', status: 'warn', message: `${version} (18+ supported, 20+ recommended)` };
105
+ }
106
+ else {
107
+ return {
108
+ name: 'Node.js Version',
109
+ status: 'fail',
110
+ message: `${version} (requires 18+)`,
111
+ fix: 'Install Node.js 20 LTS from https://nodejs.org',
112
+ };
113
+ }
114
+ }
115
+ async function checkEnvironment() {
116
+ const results = [];
117
+ // Check for .env file
118
+ const fs = await import('fs/promises');
119
+ try {
120
+ await fs.access('.env');
121
+ results.push({ name: 'Environment File', status: 'pass', message: '.env file found' });
122
+ }
123
+ catch {
124
+ results.push({
125
+ name: 'Environment File',
126
+ status: 'warn',
127
+ message: 'No .env file found',
128
+ fix: 'Copy .env.example to .env and configure',
129
+ });
130
+ }
131
+ // Check critical environment variables
132
+ const criticalVars = ['ANTHROPIC_API_KEY', 'OPENROUTER_API_KEY', 'OPENAI_API_KEY'];
133
+ const hasApiKey = criticalVars.some((v) => process.env[v]);
134
+ if (hasApiKey) {
135
+ results.push({ name: 'LLM API Key', status: 'pass', message: 'At least one LLM API key configured' });
136
+ }
137
+ else {
138
+ results.push({
139
+ name: 'LLM API Key',
140
+ status: 'warn',
141
+ message: 'No LLM API key found',
142
+ fix: 'Set ANTHROPIC_API_KEY or OPENROUTER_API_KEY in .env',
143
+ });
144
+ }
145
+ return results;
146
+ }
147
+ async function checkDependencies() {
148
+ const results = [];
149
+ // Check if package.json exists
150
+ const fs = await import('fs/promises');
151
+ try {
152
+ const pkg = JSON.parse(await fs.readFile('package.json', 'utf-8'));
153
+ const hasRuvbot = pkg.dependencies?.['@ruvector/ruvbot'] || pkg.devDependencies?.['@ruvector/ruvbot'];
154
+ if (hasRuvbot) {
155
+ results.push({ name: 'RuvBot Package', status: 'pass', message: '@ruvector/ruvbot installed' });
156
+ }
157
+ }
158
+ catch {
159
+ // Not in a project directory, skip this check
160
+ }
161
+ // Check for optional dependencies
162
+ const optionalDeps = [
163
+ { name: '@slack/bolt', desc: 'Slack integration' },
164
+ { name: 'pg', desc: 'PostgreSQL support' },
165
+ { name: 'ioredis', desc: 'Redis caching' },
166
+ ];
167
+ for (const dep of optionalDeps) {
168
+ try {
169
+ await import(dep.name);
170
+ results.push({ name: dep.desc, status: 'pass', message: `${dep.name} available` });
171
+ }
172
+ catch {
173
+ results.push({
174
+ name: dep.desc,
175
+ status: 'warn',
176
+ message: `${dep.name} not installed (optional)`,
177
+ fix: `npm install ${dep.name}`,
178
+ });
179
+ }
180
+ }
181
+ return results;
182
+ }
183
+ async function checkDatabase() {
184
+ const storageType = process.env.RUVBOT_STORAGE_TYPE || 'sqlite';
185
+ if (storageType === 'sqlite') {
186
+ const fs = await import('fs/promises');
187
+ const dbPath = process.env.RUVBOT_SQLITE_PATH || './data/ruvbot.db';
188
+ try {
189
+ await fs.access(dbPath);
190
+ return { name: 'Database (SQLite)', status: 'pass', message: `Database found at ${dbPath}` };
191
+ }
192
+ catch {
193
+ return {
194
+ name: 'Database (SQLite)',
195
+ status: 'warn',
196
+ message: `Database not found at ${dbPath}`,
197
+ fix: 'Run `ruvbot init` to create database',
198
+ };
199
+ }
200
+ }
201
+ else if (storageType === 'postgres') {
202
+ const dbUrl = process.env.DATABASE_URL;
203
+ if (!dbUrl) {
204
+ return {
205
+ name: 'Database (PostgreSQL)',
206
+ status: 'fail',
207
+ message: 'DATABASE_URL not configured',
208
+ fix: 'Set DATABASE_URL in .env',
209
+ };
210
+ }
211
+ try {
212
+ const { default: pg } = await import('pg');
213
+ const client = new pg.Client(dbUrl);
214
+ await client.connect();
215
+ await client.query('SELECT 1');
216
+ await client.end();
217
+ return { name: 'Database (PostgreSQL)', status: 'pass', message: 'Connection successful' };
218
+ }
219
+ catch (error) {
220
+ return {
221
+ name: 'Database (PostgreSQL)',
222
+ status: 'fail',
223
+ message: `Connection failed: ${error.message}`,
224
+ fix: 'Check DATABASE_URL and ensure PostgreSQL is running',
225
+ };
226
+ }
227
+ }
228
+ return { name: 'Database', status: 'pass', message: `Using ${storageType} storage` };
229
+ }
230
+ async function checkLLMProviders() {
231
+ const results = [];
232
+ // Check Anthropic
233
+ if (process.env.ANTHROPIC_API_KEY) {
234
+ try {
235
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
236
+ method: 'POST',
237
+ headers: {
238
+ 'x-api-key': process.env.ANTHROPIC_API_KEY,
239
+ 'anthropic-version': '2023-06-01',
240
+ 'content-type': 'application/json',
241
+ },
242
+ body: JSON.stringify({
243
+ model: 'claude-3-haiku-20240307',
244
+ max_tokens: 1,
245
+ messages: [{ role: 'user', content: 'hi' }],
246
+ }),
247
+ });
248
+ if (response.ok || response.status === 400) {
249
+ // 400 means API key is valid but request is bad (expected with minimal request)
250
+ results.push({ name: 'Anthropic API', status: 'pass', message: 'API key valid' });
251
+ }
252
+ else if (response.status === 401) {
253
+ results.push({
254
+ name: 'Anthropic API',
255
+ status: 'fail',
256
+ message: 'Invalid API key',
257
+ fix: 'Check ANTHROPIC_API_KEY in .env',
258
+ });
259
+ }
260
+ else {
261
+ results.push({ name: 'Anthropic API', status: 'warn', message: `Status: ${response.status}` });
262
+ }
263
+ }
264
+ catch (error) {
265
+ results.push({
266
+ name: 'Anthropic API',
267
+ status: 'fail',
268
+ message: `Connection failed: ${error.message}`,
269
+ fix: 'Check network connectivity',
270
+ });
271
+ }
272
+ }
273
+ // Check OpenRouter
274
+ if (process.env.OPENROUTER_API_KEY) {
275
+ try {
276
+ const response = await fetch('https://openrouter.ai/api/v1/models', {
277
+ headers: { Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}` },
278
+ });
279
+ if (response.ok) {
280
+ results.push({ name: 'OpenRouter API', status: 'pass', message: 'API key valid' });
281
+ }
282
+ else {
283
+ results.push({
284
+ name: 'OpenRouter API',
285
+ status: 'fail',
286
+ message: 'Invalid API key',
287
+ fix: 'Check OPENROUTER_API_KEY in .env',
288
+ });
289
+ }
290
+ }
291
+ catch (error) {
292
+ results.push({
293
+ name: 'OpenRouter API',
294
+ status: 'fail',
295
+ message: `Connection failed: ${error.message}`,
296
+ });
297
+ }
298
+ }
299
+ if (results.length === 0) {
300
+ results.push({
301
+ name: 'LLM Providers',
302
+ status: 'warn',
303
+ message: 'No LLM providers configured',
304
+ fix: 'Set ANTHROPIC_API_KEY or OPENROUTER_API_KEY',
305
+ });
306
+ }
307
+ return results;
308
+ }
309
+ async function checkMemorySystem() {
310
+ const memoryPath = process.env.RUVBOT_MEMORY_PATH || './data/memory';
311
+ const fs = await import('fs/promises');
312
+ try {
313
+ await fs.access(memoryPath);
314
+ const stats = await fs.stat(memoryPath);
315
+ if (stats.isDirectory()) {
316
+ return { name: 'Memory System', status: 'pass', message: `Memory directory exists at ${memoryPath}` };
317
+ }
318
+ }
319
+ catch {
320
+ return {
321
+ name: 'Memory System',
322
+ status: 'warn',
323
+ message: `Memory directory not found at ${memoryPath}`,
324
+ fix: 'Run `ruvbot init` to create directories',
325
+ };
326
+ }
327
+ return { name: 'Memory System', status: 'pass', message: 'Ready' };
328
+ }
329
+ async function checkSecurity() {
330
+ const aidefenceEnabled = process.env.RUVBOT_AIDEFENCE_ENABLED !== 'false';
331
+ const piiEnabled = process.env.RUVBOT_PII_DETECTION !== 'false';
332
+ const auditEnabled = process.env.RUVBOT_AUDIT_LOG !== 'false';
333
+ const features = [];
334
+ if (aidefenceEnabled)
335
+ features.push('AI Defense');
336
+ if (piiEnabled)
337
+ features.push('PII Detection');
338
+ if (auditEnabled)
339
+ features.push('Audit Logging');
340
+ if (features.length === 0) {
341
+ return {
342
+ name: 'Security Configuration',
343
+ status: 'warn',
344
+ message: 'All security features disabled',
345
+ fix: 'Enable RUVBOT_AIDEFENCE_ENABLED=true in .env',
346
+ };
347
+ }
348
+ return {
349
+ name: 'Security Configuration',
350
+ status: 'pass',
351
+ message: `Enabled: ${features.join(', ')}`,
352
+ };
353
+ }
354
+ async function checkPlugins() {
355
+ const pluginsEnabled = process.env.RUVBOT_PLUGINS_ENABLED !== 'false';
356
+ const pluginsDir = process.env.RUVBOT_PLUGINS_DIR || './plugins';
357
+ if (!pluginsEnabled) {
358
+ return { name: 'Plugin System', status: 'pass', message: 'Disabled' };
359
+ }
360
+ const fs = await import('fs/promises');
361
+ try {
362
+ const files = await fs.readdir(pluginsDir);
363
+ const plugins = files.filter((f) => f.endsWith('.js') || f.endsWith('.ts'));
364
+ return {
365
+ name: 'Plugin System',
366
+ status: 'pass',
367
+ message: `${plugins.length} plugin(s) found in ${pluginsDir}`,
368
+ };
369
+ }
370
+ catch {
371
+ return {
372
+ name: 'Plugin System',
373
+ status: 'warn',
374
+ message: `Plugin directory not found at ${pluginsDir}`,
375
+ fix: `mkdir -p ${pluginsDir}`,
376
+ };
377
+ }
378
+ }
379
+ async function checkDiskSpace() {
380
+ try {
381
+ const os = await import('os');
382
+ const { execSync } = await import('child_process');
383
+ // Get disk space (works on Unix-like systems)
384
+ const df = execSync('df -h . 2>/dev/null || echo "N/A"').toString().trim();
385
+ const lines = df.split('\n');
386
+ if (lines.length > 1) {
387
+ const parts = lines[1].split(/\s+/);
388
+ const available = parts[3];
389
+ const usePercent = parts[4];
390
+ const useNum = parseInt(usePercent, 10);
391
+ if (useNum > 90) {
392
+ return {
393
+ name: 'Disk Space',
394
+ status: 'fail',
395
+ message: `${usePercent} used, ${available} available`,
396
+ fix: 'Free up disk space',
397
+ };
398
+ }
399
+ else if (useNum > 80) {
400
+ return {
401
+ name: 'Disk Space',
402
+ status: 'warn',
403
+ message: `${usePercent} used, ${available} available`,
404
+ };
405
+ }
406
+ return {
407
+ name: 'Disk Space',
408
+ status: 'pass',
409
+ message: `${available} available`,
410
+ };
411
+ }
412
+ }
413
+ catch {
414
+ // Disk check not available
415
+ }
416
+ return { name: 'Disk Space', status: 'pass', message: 'Check not available on this platform' };
417
+ }
418
+ export default createDoctorCommand;
419
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI Commands Index
3
+ *
4
+ * Exports all CLI command modules
5
+ */
6
+ export { createDoctorCommand } from './doctor.js';
7
+ export { createMemoryCommand } from './memory.js';
8
+ export { createSecurityCommand } from './security.js';
9
+ export { createPluginsCommand } from './plugins.js';
10
+ export { createAgentCommand } from './agent.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI Commands Index
3
+ *
4
+ * Exports all CLI command modules
5
+ */
6
+ export { createDoctorCommand } from './doctor.js';
7
+ export { createMemoryCommand } from './memory.js';
8
+ export { createSecurityCommand } from './security.js';
9
+ export { createPluginsCommand } from './plugins.js';
10
+ export { createAgentCommand } from './agent.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Memory Command - Vector memory management
3
+ *
4
+ * Note: Full memory operations require initialized MemoryManager with
5
+ * vector index and embedder. This CLI provides basic operations and
6
+ * demonstrates the memory system capabilities.
7
+ */
8
+ import { Command } from 'commander';
9
+ export declare function createMemoryCommand(): Command;
10
+ export default createMemoryCommand;
11
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,IAAI,OAAO,CA4K7C;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Memory Command - Vector memory management
3
+ *
4
+ * Note: Full memory operations require initialized MemoryManager with
5
+ * vector index and embedder. This CLI provides basic operations and
6
+ * demonstrates the memory system capabilities.
7
+ */
8
+ import { Command } from 'commander';
9
+ import chalk from 'chalk';
10
+ export function createMemoryCommand() {
11
+ const memory = new Command('memory');
12
+ memory.description('Memory management commands');
13
+ // Stats command (doesn't require initialization)
14
+ memory
15
+ .command('stats')
16
+ .description('Show memory configuration')
17
+ .option('--json', 'Output as JSON')
18
+ .action(async (options) => {
19
+ try {
20
+ // Get stats from environment/config
21
+ const stats = {
22
+ configured: true,
23
+ dimensions: parseInt(process.env.RUVBOT_EMBEDDING_DIM || '384', 10),
24
+ maxVectors: parseInt(process.env.RUVBOT_MAX_VECTORS || '100000', 10),
25
+ indexType: 'HNSW',
26
+ hnswM: parseInt(process.env.RUVBOT_HNSW_M || '16', 10),
27
+ efConstruction: parseInt(process.env.RUVBOT_HNSW_EF_CONSTRUCTION || '200', 10),
28
+ memoryPath: process.env.RUVBOT_MEMORY_PATH || './data/memory',
29
+ };
30
+ if (options.json) {
31
+ console.log(JSON.stringify(stats, null, 2));
32
+ return;
33
+ }
34
+ console.log(chalk.bold('\n📊 Memory Configuration\n'));
35
+ console.log('─'.repeat(40));
36
+ console.log(`Dimensions: ${chalk.cyan(stats.dimensions)}`);
37
+ console.log(`Max Vectors: ${chalk.cyan(stats.maxVectors.toLocaleString())}`);
38
+ console.log(`Index Type: ${chalk.cyan(stats.indexType)}`);
39
+ console.log(`HNSW M: ${chalk.cyan(stats.hnswM)}`);
40
+ console.log(`EF Construction: ${chalk.cyan(stats.efConstruction)}`);
41
+ console.log(`Memory Path: ${chalk.cyan(stats.memoryPath)}`);
42
+ console.log('─'.repeat(40));
43
+ console.log(chalk.gray('\nNote: Start RuvBot server for full memory operations'));
44
+ }
45
+ catch (error) {
46
+ console.error(chalk.red(`Stats failed: ${error.message}`));
47
+ process.exit(1);
48
+ }
49
+ });
50
+ // Store command
51
+ memory
52
+ .command('store')
53
+ .description('Store content in memory (requires running server)')
54
+ .requiredOption('-c, --content <content>', 'Content to store')
55
+ .option('-t, --tags <tags>', 'Comma-separated tags')
56
+ .option('-i, --importance <importance>', 'Importance score (0-1)', '0.5')
57
+ .action(async (options) => {
58
+ console.log(chalk.yellow('\n⚠ Memory store requires a running RuvBot server'));
59
+ console.log(chalk.gray('\nTo store memory programmatically:'));
60
+ console.log(chalk.cyan(`
61
+ import { RuvBot } from '@ruvector/ruvbot';
62
+
63
+ const bot = new RuvBot(config);
64
+ await bot.start();
65
+
66
+ const entry = await bot.memory.store('${options.content}', {
67
+ tags: [${(options.tags || '').split(',').map((t) => `'${t.trim()}'`).join(', ')}],
68
+ importance: ${options.importance}
69
+ });
70
+ `));
71
+ console.log(chalk.gray('Or use the REST API:'));
72
+ console.log(chalk.cyan(`
73
+ curl -X POST http://localhost:3000/api/memory \\
74
+ -H "Content-Type: application/json" \\
75
+ -d '{"content": "${options.content}", "tags": [${(options.tags || '').split(',').map((t) => `"${t.trim()}"`).join(', ')}]}'
76
+ `));
77
+ });
78
+ // Search command
79
+ memory
80
+ .command('search')
81
+ .description('Search memory (requires running server)')
82
+ .requiredOption('-q, --query <query>', 'Search query')
83
+ .option('-l, --limit <limit>', 'Maximum results', '10')
84
+ .option('--threshold <threshold>', 'Similarity threshold (0-1)', '0.5')
85
+ .action(async (options) => {
86
+ console.log(chalk.yellow('\n⚠ Memory search requires a running RuvBot server'));
87
+ console.log(chalk.gray('\nTo search memory programmatically:'));
88
+ console.log(chalk.cyan(`
89
+ const results = await bot.memory.search('${options.query}', {
90
+ topK: ${options.limit},
91
+ threshold: ${options.threshold}
92
+ });
93
+ `));
94
+ console.log(chalk.gray('Or use the REST API:'));
95
+ console.log(chalk.cyan(`
96
+ curl "http://localhost:3000/api/memory/search?q=${encodeURIComponent(options.query)}&limit=${options.limit}"
97
+ `));
98
+ });
99
+ // Export command
100
+ memory
101
+ .command('export')
102
+ .description('Export memory to file (requires running server)')
103
+ .requiredOption('-o, --output <path>', 'Output file path')
104
+ .option('--format <format>', 'Format: json, jsonl', 'json')
105
+ .action(async (options) => {
106
+ console.log(chalk.yellow('\n⚠ Memory export requires a running RuvBot server'));
107
+ console.log(chalk.gray('\nTo export memory:'));
108
+ console.log(chalk.cyan(`
109
+ const data = await bot.memory.export();
110
+ await fs.writeFile('${options.output}', JSON.stringify(data, null, 2));
111
+ `));
112
+ });
113
+ // Import command
114
+ memory
115
+ .command('import')
116
+ .description('Import memory from file (requires running server)')
117
+ .requiredOption('-i, --input <path>', 'Input file path')
118
+ .action(async (options) => {
119
+ console.log(chalk.yellow('\n⚠ Memory import requires a running RuvBot server'));
120
+ console.log(chalk.gray('\nTo import memory:'));
121
+ console.log(chalk.cyan(`
122
+ const data = JSON.parse(await fs.readFile('${options.input}', 'utf-8'));
123
+ const count = await bot.memory.import(data);
124
+ console.log('Imported', count, 'entries');
125
+ `));
126
+ });
127
+ // Clear command
128
+ memory
129
+ .command('clear')
130
+ .description('Clear all memory (DANGEROUS - requires running server)')
131
+ .option('-y, --yes', 'Skip confirmation')
132
+ .action(async (options) => {
133
+ if (!options.yes) {
134
+ console.log(chalk.red('\n⚠ DANGER: This will clear ALL memory entries!'));
135
+ console.log(chalk.yellow('Use --yes flag to confirm'));
136
+ return;
137
+ }
138
+ console.log(chalk.yellow('\n⚠ Memory clear requires a running RuvBot server'));
139
+ console.log(chalk.gray('\nTo clear memory:'));
140
+ console.log(chalk.cyan(`
141
+ await bot.memory.clear();
142
+ `));
143
+ });
144
+ // Info command
145
+ memory
146
+ .command('info')
147
+ .description('Show memory system information')
148
+ .action(async () => {
149
+ console.log(chalk.bold('\n🧠 RuvBot Memory System\n'));
150
+ console.log('─'.repeat(50));
151
+ console.log(chalk.cyan('Features:'));
152
+ console.log(' • HNSW vector indexing (150x-12,500x faster search)');
153
+ console.log(' • Semantic similarity search');
154
+ console.log(' • Multi-source memory (conversation, learning, skill, user)');
155
+ console.log(' • Importance-based eviction');
156
+ console.log(' • TTL support for temporary memories');
157
+ console.log(' • Tag-based filtering');
158
+ console.log('');
159
+ console.log(chalk.cyan('Supported Embeddings:'));
160
+ console.log(' • MiniLM-L6-v2 (384 dimensions, default)');
161
+ console.log(' • Custom embedders via WASM');
162
+ console.log('');
163
+ console.log(chalk.cyan('Configuration (via .env):'));
164
+ console.log(' RUVBOT_EMBEDDING_DIM=384');
165
+ console.log(' RUVBOT_MAX_VECTORS=100000');
166
+ console.log(' RUVBOT_HNSW_M=16');
167
+ console.log(' RUVBOT_HNSW_EF_CONSTRUCTION=200');
168
+ console.log(' RUVBOT_MEMORY_PATH=./data/memory');
169
+ console.log('─'.repeat(50));
170
+ });
171
+ return memory;
172
+ }
173
+ export default createMemoryCommand;
174
+ //# sourceMappingURL=memory.js.map