totem-llm 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 (800) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +81 -0
  3. package/bin/totem-llm.js +80 -0
  4. package/collector/.env +9 -0
  5. package/collector/.env.example +9 -0
  6. package/collector/.nvmrc +1 -0
  7. package/collector/extensions/index.js +239 -0
  8. package/collector/extensions/resync/index.js +197 -0
  9. package/collector/hotdir/__HOTDIR__.md +3 -0
  10. package/collector/index.js +202 -0
  11. package/collector/middleware/httpLogger.js +29 -0
  12. package/collector/middleware/setDataSigner.js +44 -0
  13. package/collector/middleware/verifyIntegrity.js +32 -0
  14. package/collector/package.json +67 -0
  15. package/collector/processLink/convert/generic.js +240 -0
  16. package/collector/processLink/helpers/index.js +190 -0
  17. package/collector/processLink/index.js +47 -0
  18. package/collector/processRawText/index.js +83 -0
  19. package/collector/processSingleFile/convert/asAudio.js +79 -0
  20. package/collector/processSingleFile/convert/asDocx.js +63 -0
  21. package/collector/processSingleFile/convert/asEPub.js +61 -0
  22. package/collector/processSingleFile/convert/asImage.js +56 -0
  23. package/collector/processSingleFile/convert/asMbox.js +83 -0
  24. package/collector/processSingleFile/convert/asOfficeMime.js +59 -0
  25. package/collector/processSingleFile/convert/asPDF/PDFLoader/index.js +97 -0
  26. package/collector/processSingleFile/convert/asPDF/index.js +86 -0
  27. package/collector/processSingleFile/convert/asTxt.js +59 -0
  28. package/collector/processSingleFile/convert/asXlsx.js +193 -0
  29. package/collector/processSingleFile/index.js +95 -0
  30. package/collector/utils/EncryptionWorker/index.js +77 -0
  31. package/collector/utils/OCRLoader/index.js +355 -0
  32. package/collector/utils/OCRLoader/validLangs.js +155 -0
  33. package/collector/utils/WhisperProviders/OpenAiWhisper.js +49 -0
  34. package/collector/utils/WhisperProviders/ffmpeg/index.js +114 -0
  35. package/collector/utils/WhisperProviders/localWhisper.js +197 -0
  36. package/collector/utils/comKey/index.js +54 -0
  37. package/collector/utils/constants.js +92 -0
  38. package/collector/utils/downloadURIToFile/index.js +90 -0
  39. package/collector/utils/extensions/Confluence/ConfluenceLoader/index.js +154 -0
  40. package/collector/utils/extensions/Confluence/index.js +292 -0
  41. package/collector/utils/extensions/DrupalWiki/DrupalWiki/index.js +338 -0
  42. package/collector/utils/extensions/DrupalWiki/index.js +102 -0
  43. package/collector/utils/extensions/ObsidianVault/index.js +95 -0
  44. package/collector/utils/extensions/PaperlessNgx/PaperlessNgxLoader/index.js +157 -0
  45. package/collector/utils/extensions/PaperlessNgx/index.js +128 -0
  46. package/collector/utils/extensions/RepoLoader/GithubRepo/RepoLoader/index.js +265 -0
  47. package/collector/utils/extensions/RepoLoader/GithubRepo/index.js +159 -0
  48. package/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js +447 -0
  49. package/collector/utils/extensions/RepoLoader/GitlabRepo/index.js +261 -0
  50. package/collector/utils/extensions/RepoLoader/index.js +41 -0
  51. package/collector/utils/extensions/WebsiteDepth/index.js +211 -0
  52. package/collector/utils/extensions/YoutubeTranscript/YoutubeLoader/index.js +99 -0
  53. package/collector/utils/extensions/YoutubeTranscript/YoutubeLoader/youtube-transcript.js +246 -0
  54. package/collector/utils/extensions/YoutubeTranscript/index.js +219 -0
  55. package/collector/utils/files/index.js +240 -0
  56. package/collector/utils/files/mime.js +64 -0
  57. package/collector/utils/http/index.js +54 -0
  58. package/collector/utils/logger/index.js +68 -0
  59. package/collector/utils/runtimeSettings/index.js +97 -0
  60. package/collector/utils/shell.js +25 -0
  61. package/collector/utils/tokenizer/index.js +66 -0
  62. package/collector/utils/url/index.js +137 -0
  63. package/collector/yarn.lock +4413 -0
  64. package/lib/config.js +79 -0
  65. package/lib/launcher.js +116 -0
  66. package/lib/setup.js +143 -0
  67. package/package.json +64 -0
  68. package/scripts/postinstall.mjs +117 -0
  69. package/server/.env +489 -0
  70. package/server/.env.example +496 -0
  71. package/server/.flowconfig +30 -0
  72. package/server/.nvmrc +1 -0
  73. package/server/endpoints/admin.js +566 -0
  74. package/server/endpoints/agentFileServer.js +174 -0
  75. package/server/endpoints/agentFlows.js +192 -0
  76. package/server/endpoints/agentSkillWhitelist.js +82 -0
  77. package/server/endpoints/agentWebsocket.js +62 -0
  78. package/server/endpoints/api/admin/index.js +775 -0
  79. package/server/endpoints/api/auth/index.js +33 -0
  80. package/server/endpoints/api/document/index.js +1210 -0
  81. package/server/endpoints/api/embed/index.js +409 -0
  82. package/server/endpoints/api/index.js +29 -0
  83. package/server/endpoints/api/openai/compatibility-test-script.cjs +79 -0
  84. package/server/endpoints/api/openai/helpers.js +50 -0
  85. package/server/endpoints/api/openai/index.js +321 -0
  86. package/server/endpoints/api/system/index.js +275 -0
  87. package/server/endpoints/api/userManagement/index.js +124 -0
  88. package/server/endpoints/api/workspace/index.js +1008 -0
  89. package/server/endpoints/api/workspaceThread/index.js +627 -0
  90. package/server/endpoints/browserExtension.js +221 -0
  91. package/server/endpoints/chat.js +193 -0
  92. package/server/endpoints/communityHub.js +214 -0
  93. package/server/endpoints/document.js +111 -0
  94. package/server/endpoints/embed/index.js +103 -0
  95. package/server/endpoints/embedManagement.js +131 -0
  96. package/server/endpoints/experimental/imported-agent-plugins.js +65 -0
  97. package/server/endpoints/experimental/index.js +12 -0
  98. package/server/endpoints/experimental/liveSync.js +110 -0
  99. package/server/endpoints/extensions/index.js +175 -0
  100. package/server/endpoints/invite.js +81 -0
  101. package/server/endpoints/mcpServers.js +127 -0
  102. package/server/endpoints/memory.js +196 -0
  103. package/server/endpoints/mobile/index.js +160 -0
  104. package/server/endpoints/mobile/middleware/index.js +97 -0
  105. package/server/endpoints/mobile/utils/index.js +195 -0
  106. package/server/endpoints/modelRouter.js +205 -0
  107. package/server/endpoints/scheduledJobs.js +374 -0
  108. package/server/endpoints/system.js +1490 -0
  109. package/server/endpoints/telegram.js +333 -0
  110. package/server/endpoints/utils/dockerModelRunnerUtils.js +94 -0
  111. package/server/endpoints/utils/googleAgentSkillEndpoints.js +70 -0
  112. package/server/endpoints/utils/lemonadeUtilsEndpoints.js +170 -0
  113. package/server/endpoints/utils/outlookAgentUtils.js +190 -0
  114. package/server/endpoints/utils.js +220 -0
  115. package/server/endpoints/webPush.js +27 -0
  116. package/server/endpoints/workspaceThreads.js +245 -0
  117. package/server/endpoints/workspaces.js +1159 -0
  118. package/server/endpoints/workspacesParsedFiles.js +208 -0
  119. package/server/index.js +178 -0
  120. package/server/jobs/cleanup-generated-files.js +160 -0
  121. package/server/jobs/cleanup-orphan-documents.js +79 -0
  122. package/server/jobs/embedding-worker.js +197 -0
  123. package/server/jobs/extract-memories.js +192 -0
  124. package/server/jobs/handle-telegram-chat.js +67 -0
  125. package/server/jobs/helpers/index.js +54 -0
  126. package/server/jobs/helpers/memory-extraction-utils.js +366 -0
  127. package/server/jobs/helpers/scheduled-job-helper.js +111 -0
  128. package/server/jobs/run-scheduled-job.js +157 -0
  129. package/server/jobs/sync-watched-documents.js +209 -0
  130. package/server/jsconfig.json +14 -0
  131. package/server/middleware/httpLogger.js +23 -0
  132. package/server/models/agentSkillWhitelist.js +100 -0
  133. package/server/models/apiKeys.js +99 -0
  134. package/server/models/browserExtensionApiKey.js +190 -0
  135. package/server/models/cacheData.js +69 -0
  136. package/server/models/communityHub.js +213 -0
  137. package/server/models/documentSyncQueue.js +252 -0
  138. package/server/models/documentSyncRun.js +88 -0
  139. package/server/models/documents.js +356 -0
  140. package/server/models/embedChats.js +199 -0
  141. package/server/models/embedConfig.js +251 -0
  142. package/server/models/eventLogs.js +129 -0
  143. package/server/models/externalCommunicationConnector.js +110 -0
  144. package/server/models/invite.js +144 -0
  145. package/server/models/memory.js +451 -0
  146. package/server/models/mobileDevice.js +251 -0
  147. package/server/models/modelRouter.js +259 -0
  148. package/server/models/modelRouterRule.js +336 -0
  149. package/server/models/passwordRecovery.js +115 -0
  150. package/server/models/promptHistory.js +107 -0
  151. package/server/models/scheduledJob.js +499 -0
  152. package/server/models/scheduledJobRun.js +362 -0
  153. package/server/models/slashCommandsPresets.js +143 -0
  154. package/server/models/systemPromptVariables.js +361 -0
  155. package/server/models/systemSettings.js +1183 -0
  156. package/server/models/temporaryAuthToken.js +104 -0
  157. package/server/models/user.js +381 -0
  158. package/server/models/vectors.js +79 -0
  159. package/server/models/workspace.js +720 -0
  160. package/server/models/workspaceAgentInvocation.js +97 -0
  161. package/server/models/workspaceChats.js +386 -0
  162. package/server/models/workspaceParsedFiles.js +246 -0
  163. package/server/models/workspaceThread.js +151 -0
  164. package/server/models/workspaceUsers.js +103 -0
  165. package/server/models/workspacesSuggestedMessages.js +83 -0
  166. package/server/package.json +130 -0
  167. package/server/prisma/migrations/20230921191814_init/migration.sql +125 -0
  168. package/server/prisma/migrations/20231101001441_init/migration.sql +2 -0
  169. package/server/prisma/migrations/20231101195421_init/migration.sql +11 -0
  170. package/server/prisma/migrations/20231129012019_add/migration.sql +2 -0
  171. package/server/prisma/migrations/20240113013409_init/migration.sql +2 -0
  172. package/server/prisma/migrations/20240118201333_init/migration.sql +2 -0
  173. package/server/prisma/migrations/20240202002020_init/migration.sql +37 -0
  174. package/server/prisma/migrations/20240206181106_init/migration.sql +13 -0
  175. package/server/prisma/migrations/20240206211916_init/migration.sql +11 -0
  176. package/server/prisma/migrations/20240208224848_init/migration.sql +24 -0
  177. package/server/prisma/migrations/20240210004405_init/migration.sql +2 -0
  178. package/server/prisma/migrations/20240216214639_init/migration.sql +2 -0
  179. package/server/prisma/migrations/20240219211018_init/migration.sql +2 -0
  180. package/server/prisma/migrations/20240301002308_init/migration.sql +2 -0
  181. package/server/prisma/migrations/20240326231053_init/migration.sql +2 -0
  182. package/server/prisma/migrations/20240405015034_init/migration.sql +2 -0
  183. package/server/prisma/migrations/20240412183346_init/migration.sql +24 -0
  184. package/server/prisma/migrations/20240425004220_init/migration.sql +30 -0
  185. package/server/prisma/migrations/20240430230707_init/migration.sql +2 -0
  186. package/server/prisma/migrations/20240510032311_init/migration.sql +15 -0
  187. package/server/prisma/migrations/20240618224346_init/migration.sql +26 -0
  188. package/server/prisma/migrations/20240821215625_init/migration.sql +2 -0
  189. package/server/prisma/migrations/20240824005054_init/migration.sql +15 -0
  190. package/server/prisma/migrations/20241003192954_init/migration.sql +2 -0
  191. package/server/prisma/migrations/20241029203722_init/migration.sql +12 -0
  192. package/server/prisma/migrations/20241029233509_init/migration.sql +5 -0
  193. package/server/prisma/migrations/20250102204948_init/migration.sql +2 -0
  194. package/server/prisma/migrations/20250226005538_init/migration.sql +2 -0
  195. package/server/prisma/migrations/20250318154720_init/migration.sql +18 -0
  196. package/server/prisma/migrations/20250506214129_init/migration.sql +13 -0
  197. package/server/prisma/migrations/20250709230835_init/migration.sql +2 -0
  198. package/server/prisma/migrations/20250725194841_init/migration.sql +17 -0
  199. package/server/prisma/migrations/20250808171557_init/migration.sql +23 -0
  200. package/server/prisma/migrations/20260130040204_init/migration.sql +2 -0
  201. package/server/prisma/migrations/20260313192859_init/migration.sql +10 -0
  202. package/server/prisma/migrations/20260319202916_init/migration.sql +12 -0
  203. package/server/prisma/migrations/20260406120000_init/migration.sql +2 -0
  204. package/server/prisma/migrations/20260423191158_init/migration.sql +29 -0
  205. package/server/prisma/migrations/20260424013043_init/migration.sql +22 -0
  206. package/server/prisma/migrations/20260520160208_init/migration.sql +46 -0
  207. package/server/prisma/migrations/migration_lock.toml +3 -0
  208. package/server/prisma/schema.prisma +484 -0
  209. package/server/prisma/seed.js +31 -0
  210. package/server/public/KaTeX_AMS-Regular.eot +0 -0
  211. package/server/public/KaTeX_AMS-Regular.ttf +0 -0
  212. package/server/public/KaTeX_AMS-Regular.woff +0 -0
  213. package/server/public/KaTeX_AMS-Regular.woff2 +0 -0
  214. package/server/public/KaTeX_Caligraphic-Bold.eot +0 -0
  215. package/server/public/KaTeX_Caligraphic-Bold.ttf +0 -0
  216. package/server/public/KaTeX_Caligraphic-Bold.woff +0 -0
  217. package/server/public/KaTeX_Caligraphic-Bold.woff2 +0 -0
  218. package/server/public/KaTeX_Caligraphic-Regular.eot +0 -0
  219. package/server/public/KaTeX_Caligraphic-Regular.ttf +0 -0
  220. package/server/public/KaTeX_Caligraphic-Regular.woff +0 -0
  221. package/server/public/KaTeX_Caligraphic-Regular.woff2 +0 -0
  222. package/server/public/KaTeX_Fraktur-Bold.eot +0 -0
  223. package/server/public/KaTeX_Fraktur-Bold.ttf +0 -0
  224. package/server/public/KaTeX_Fraktur-Bold.woff +0 -0
  225. package/server/public/KaTeX_Fraktur-Bold.woff2 +0 -0
  226. package/server/public/KaTeX_Fraktur-Regular.eot +0 -0
  227. package/server/public/KaTeX_Fraktur-Regular.ttf +0 -0
  228. package/server/public/KaTeX_Fraktur-Regular.woff +0 -0
  229. package/server/public/KaTeX_Fraktur-Regular.woff2 +0 -0
  230. package/server/public/KaTeX_Main-Bold.eot +0 -0
  231. package/server/public/KaTeX_Main-Bold.ttf +0 -0
  232. package/server/public/KaTeX_Main-Bold.woff +0 -0
  233. package/server/public/KaTeX_Main-Bold.woff2 +0 -0
  234. package/server/public/KaTeX_Main-Italic.eot +0 -0
  235. package/server/public/KaTeX_Main-Italic.ttf +0 -0
  236. package/server/public/KaTeX_Main-Italic.woff +0 -0
  237. package/server/public/KaTeX_Main-Italic.woff2 +0 -0
  238. package/server/public/KaTeX_Main-Regular.eot +0 -0
  239. package/server/public/KaTeX_Main-Regular.ttf +0 -0
  240. package/server/public/KaTeX_Main-Regular.woff +0 -0
  241. package/server/public/KaTeX_Main-Regular.woff2 +0 -0
  242. package/server/public/KaTeX_Math-Italic.eot +0 -0
  243. package/server/public/KaTeX_Math-Italic.ttf +0 -0
  244. package/server/public/KaTeX_Math-Italic.woff +0 -0
  245. package/server/public/KaTeX_Math-Italic.woff2 +0 -0
  246. package/server/public/KaTeX_SansSerif-Regular.eot +0 -0
  247. package/server/public/KaTeX_SansSerif-Regular.ttf +0 -0
  248. package/server/public/KaTeX_SansSerif-Regular.woff +0 -0
  249. package/server/public/KaTeX_SansSerif-Regular.woff2 +0 -0
  250. package/server/public/KaTeX_Script-Regular.eot +0 -0
  251. package/server/public/KaTeX_Script-Regular.ttf +0 -0
  252. package/server/public/KaTeX_Script-Regular.woff +0 -0
  253. package/server/public/KaTeX_Script-Regular.woff2 +0 -0
  254. package/server/public/KaTeX_Size1-Regular.eot +0 -0
  255. package/server/public/KaTeX_Size1-Regular.ttf +0 -0
  256. package/server/public/KaTeX_Size1-Regular.woff +0 -0
  257. package/server/public/KaTeX_Size1-Regular.woff2 +0 -0
  258. package/server/public/KaTeX_Size2-Regular.eot +0 -0
  259. package/server/public/KaTeX_Size2-Regular.ttf +0 -0
  260. package/server/public/KaTeX_Size2-Regular.woff +0 -0
  261. package/server/public/KaTeX_Size2-Regular.woff2 +0 -0
  262. package/server/public/KaTeX_Size3-Regular.eot +0 -0
  263. package/server/public/KaTeX_Size3-Regular.ttf +0 -0
  264. package/server/public/KaTeX_Size3-Regular.woff +0 -0
  265. package/server/public/KaTeX_Size4-Regular.eot +0 -0
  266. package/server/public/KaTeX_Size4-Regular.ttf +0 -0
  267. package/server/public/KaTeX_Size4-Regular.woff +0 -0
  268. package/server/public/KaTeX_Size4-Regular.woff2 +0 -0
  269. package/server/public/KaTeX_Typewriter-Regular.eot +0 -0
  270. package/server/public/KaTeX_Typewriter-Regular.ttf +0 -0
  271. package/server/public/KaTeX_Typewriter-Regular.woff +0 -0
  272. package/server/public/KaTeX_Typewriter-Regular.woff2 +0 -0
  273. package/server/public/PlusJakartaSans.ttf +0 -0
  274. package/server/public/_index.html +45 -0
  275. package/server/public/agent-animation.webm +0 -0
  276. package/server/public/agent-static.png +0 -0
  277. package/server/public/anthropic.png +0 -0
  278. package/server/public/anything-llm-dark.png +0 -0
  279. package/server/public/anything-llm-light.png +0 -0
  280. package/server/public/anything-llm.png +0 -0
  281. package/server/public/apipie.png +0 -0
  282. package/server/public/assets/404-aca8e9d6.js +1 -0
  283. package/server/public/assets/Brain-24e386d5.js +1 -0
  284. package/server/public/assets/Browser-1820fad0.js +1 -0
  285. package/server/public/assets/ChatText-35275002.js +1 -0
  286. package/server/public/assets/Check-7e83fb0d.js +1 -0
  287. package/server/public/assets/Copy-d323e545.js +1 -0
  288. package/server/public/assets/Database-f1a76329.js +1 -0
  289. package/server/public/assets/Eye-9f033dc0.js +1 -0
  290. package/server/public/assets/File-b92df2f3.js +1 -0
  291. package/server/public/assets/Gauge-e6762f4d.js +1 -0
  292. package/server/public/assets/Hammer-05b5ccc7.js +1 -0
  293. package/server/public/assets/Plug-7d951c7d.js +1 -0
  294. package/server/public/assets/PlusCircle-31c6a8d8.js +1 -0
  295. package/server/public/assets/RunDetailPage-edfdbd4d.js +1 -0
  296. package/server/public/assets/RunHistoryPage-732dae26.js +1 -0
  297. package/server/public/assets/Stop-4b47ae05.js +1 -0
  298. package/server/public/assets/Trans-36b04c7b.js +1 -0
  299. package/server/public/assets/WarningCircle-27467274.js +1 -0
  300. package/server/public/assets/XCircle-edfe554c.js +1 -0
  301. package/server/public/assets/admin-04b020fe.js +1 -0
  302. package/server/public/assets/agentFlows-e4124dd3.js +1 -0
  303. package/server/public/assets/anything-llm-infinity-0d7244a1.js +1 -0
  304. package/server/public/assets/communityHub-aba61686.js +1 -0
  305. package/server/public/assets/cron-2ad9194f.js +1 -0
  306. package/server/public/assets/files-493643b0.js +23 -0
  307. package/server/public/assets/github-dark-57c241de.js +1 -0
  308. package/server/public/assets/index-08cd0bc2.js +9 -0
  309. package/server/public/assets/index-0bf8ea25.js +1 -0
  310. package/server/public/assets/index-25b2660c.js +1 -0
  311. package/server/public/assets/index-2a7c0b04.js +1 -0
  312. package/server/public/assets/index-3643e990.js +1 -0
  313. package/server/public/assets/index-3761d55d.js +1 -0
  314. package/server/public/assets/index-4b5e1c76.js +5 -0
  315. package/server/public/assets/index-4fb4d421.js +2 -0
  316. package/server/public/assets/index-56bb11a0.js +1 -0
  317. package/server/public/assets/index-5c320a5d.js +1 -0
  318. package/server/public/assets/index-62160652.js +3 -0
  319. package/server/public/assets/index-62fee0f9.js +4 -0
  320. package/server/public/assets/index-65801ac6.js +1 -0
  321. package/server/public/assets/index-71027183.js +1 -0
  322. package/server/public/assets/index-72832304.js +18 -0
  323. package/server/public/assets/index-7b0ea06b.js +14 -0
  324. package/server/public/assets/index-8132c765.js +1 -0
  325. package/server/public/assets/index-837868b3.js +1 -0
  326. package/server/public/assets/index-86e8a6b4.js +1 -0
  327. package/server/public/assets/index-8ba96f42.js +1 -0
  328. package/server/public/assets/index-8e43159f.js +1 -0
  329. package/server/public/assets/index-92574f3a.js +1 -0
  330. package/server/public/assets/index-925792fe.js +2 -0
  331. package/server/public/assets/index-92d3b7bc.js +1 -0
  332. package/server/public/assets/index-994c849a.js +1 -0
  333. package/server/public/assets/index-9f71774b.js +1 -0
  334. package/server/public/assets/index-9f7dabd6.js +1 -0
  335. package/server/public/assets/index-a0e2be61.js +1 -0
  336. package/server/public/assets/index-a6ac5511.js +1 -0
  337. package/server/public/assets/index-a6c0d98a.js +1 -0
  338. package/server/public/assets/index-aa687cfe.js +3 -0
  339. package/server/public/assets/index-ab35fb74.js +1 -0
  340. package/server/public/assets/index-ab72b353.js +4 -0
  341. package/server/public/assets/index-ad8e77d2.js +5 -0
  342. package/server/public/assets/index-c07cc087.js +110 -0
  343. package/server/public/assets/index-c22f7da1.js +1 -0
  344. package/server/public/assets/index-c9b59c35.js +1 -0
  345. package/server/public/assets/index-d59c6d7f.js +1 -0
  346. package/server/public/assets/index-d69f2e09.js +1 -0
  347. package/server/public/assets/index-e5b911ea.js +1 -0
  348. package/server/public/assets/index-e6c540e1.js +1 -0
  349. package/server/public/assets/index-f86e167c.js +4 -0
  350. package/server/public/assets/index-f984ef26.js +1 -0
  351. package/server/public/assets/index-fb26b60a.js +1 -0
  352. package/server/public/assets/index-fd922432.js +1 -0
  353. package/server/public/assets/main-8ad4162f.js +1 -0
  354. package/server/public/assets/mcpServers-957b1f1c.js +1 -0
  355. package/server/public/assets/moment-3ad2e1a6.js +10 -0
  356. package/server/public/assets/ort.min-faca3c2b.js +1827 -0
  357. package/server/public/assets/piper-o91UDS6e-0c78e94e.js +4 -0
  358. package/server/public/assets/purify-6b86d6dc.js +26 -0
  359. package/server/public/assets/react-beautiful-dnd.esm-86e87aba.js +68 -0
  360. package/server/public/assets/truncate-352eb33b.js +1 -0
  361. package/server/public/assets/types-e90e1137.js +1 -0
  362. package/server/public/assets/usePolling-417bb099.js +1 -0
  363. package/server/public/assets/voices_static-D_OtJDHM-5cdb0950.js +1 -0
  364. package/server/public/assets/worker-8f433525.js +1 -0
  365. package/server/public/azure.png +0 -0
  366. package/server/public/baidu.png +0 -0
  367. package/server/public/bedrock.png +0 -0
  368. package/server/public/bg.png +0 -0
  369. package/server/public/bing.png +0 -0
  370. package/server/public/cerebras.png +0 -0
  371. package/server/public/cohere.png +0 -0
  372. package/server/public/cometapi.png +0 -0
  373. package/server/public/community-hub.png +0 -0
  374. package/server/public/confluence.jpeg +0 -0
  375. package/server/public/deepseek.png +0 -0
  376. package/server/public/docker-model-runner.png +0 -0
  377. package/server/public/dpais.png +0 -0
  378. package/server/public/drupalwiki.jpg +0 -0
  379. package/server/public/duckduckgo.png +0 -0
  380. package/server/public/elevenlabs.png +0 -0
  381. package/server/public/embed/anythingllm-chat-widget.min.css +1 -0
  382. package/server/public/embed/anythingllm-chat-widget.min.js +37 -0
  383. package/server/public/exa.png +0 -0
  384. package/server/public/favicon.ico +0 -0
  385. package/server/public/favicon.png +0 -0
  386. package/server/public/file-system.png +0 -0
  387. package/server/public/files.css +1 -0
  388. package/server/public/fonts/PlusJakartaSans.ttf +0 -0
  389. package/server/public/foundry-local.png +0 -0
  390. package/server/public/gemini.png +0 -0
  391. package/server/public/generate-charts.png +0 -0
  392. package/server/public/generate-save-files.png +0 -0
  393. package/server/public/generic-openai.png +0 -0
  394. package/server/public/giteeai.png +0 -0
  395. package/server/public/github-dark.css +10 -0
  396. package/server/public/github.css +19 -0
  397. package/server/public/github.svg +4 -0
  398. package/server/public/gitlab.svg +7 -0
  399. package/server/public/gmail.png +0 -0
  400. package/server/public/google-calendar.png +0 -0
  401. package/server/public/gplay-badge.svg +55 -0
  402. package/server/public/huggingface.png +0 -0
  403. package/server/public/index.css +1 -0
  404. package/server/public/index.js +1739 -0
  405. package/server/public/koboldcpp.png +0 -0
  406. package/server/public/lancedb.png +0 -0
  407. package/server/public/lemonade.png +0 -0
  408. package/server/public/link.svg +1 -0
  409. package/server/public/litellm.png +0 -0
  410. package/server/public/lmstudio.png +0 -0
  411. package/server/public/localai.png +0 -0
  412. package/server/public/login-logo-light.svg +45 -0
  413. package/server/public/login-logo.svg +45 -0
  414. package/server/public/manifest.json +13 -0
  415. package/server/public/mcp-logo.svg +1 -0
  416. package/server/public/milvus.png +0 -0
  417. package/server/public/minimax.png +0 -0
  418. package/server/public/mistral.jpeg +0 -0
  419. package/server/public/moonshotai.png +0 -0
  420. package/server/public/mssql.png +0 -0
  421. package/server/public/mysql.png +0 -0
  422. package/server/public/nvidia-nim.png +0 -0
  423. package/server/public/obsidian.png +0 -0
  424. package/server/public/ollama.png +0 -0
  425. package/server/public/openai.png +0 -0
  426. package/server/public/openrouter.jpeg +0 -0
  427. package/server/public/outlook.png +0 -0
  428. package/server/public/paperless-ngx.jpeg +0 -0
  429. package/server/public/perplexity.png +0 -0
  430. package/server/public/pgvector.png +0 -0
  431. package/server/public/piper.png +0 -0
  432. package/server/public/privatemode.png +0 -0
  433. package/server/public/qdrant.png +0 -0
  434. package/server/public/rag-memory.png +0 -0
  435. package/server/public/robots.txt +2 -0
  436. package/server/public/router-animation.webm +0 -0
  437. package/server/public/sambanova.png +0 -0
  438. package/server/public/scrape-websites.png +0 -0
  439. package/server/public/searchapi.png +0 -0
  440. package/server/public/searxng.png +0 -0
  441. package/server/public/serpapi.png +0 -0
  442. package/server/public/serper.png +0 -0
  443. package/server/public/serply.png +0 -0
  444. package/server/public/service-workers/push-notifications.js +26 -0
  445. package/server/public/sql-agent.png +0 -0
  446. package/server/public/tavily.svg +1 -0
  447. package/server/public/text-generation-webui.png +0 -0
  448. package/server/public/thinking-animation.webm +0 -0
  449. package/server/public/thinking-static.png +0 -0
  450. package/server/public/togetherai.png +0 -0
  451. package/server/public/view-summarize.png +0 -0
  452. package/server/public/voyageai.png +0 -0
  453. package/server/public/weaviate.png +0 -0
  454. package/server/public/xai.png +0 -0
  455. package/server/public/youtube.svg +10 -0
  456. package/server/public/zai.png +0 -0
  457. package/server/public/zilliz.png +0 -0
  458. package/server/utils/AiProviders/anthropic/index.js +372 -0
  459. package/server/utils/AiProviders/apipie/index.js +386 -0
  460. package/server/utils/AiProviders/azureOpenAi/index.js +232 -0
  461. package/server/utils/AiProviders/bedrock/index.js +787 -0
  462. package/server/utils/AiProviders/bedrock/utils.js +166 -0
  463. package/server/utils/AiProviders/cerebras/index.js +314 -0
  464. package/server/utils/AiProviders/cohere/index.js +251 -0
  465. package/server/utils/AiProviders/cometapi/constants.js +39 -0
  466. package/server/utils/AiProviders/cometapi/index.js +445 -0
  467. package/server/utils/AiProviders/deepseek/index.js +180 -0
  468. package/server/utils/AiProviders/dellProAiStudio/index.js +217 -0
  469. package/server/utils/AiProviders/dockerModelRunner/index.js +520 -0
  470. package/server/utils/AiProviders/fireworksAi/index.js +273 -0
  471. package/server/utils/AiProviders/foundry/index.js +475 -0
  472. package/server/utils/AiProviders/gemini/defaultModels.js +74 -0
  473. package/server/utils/AiProviders/gemini/index.js +457 -0
  474. package/server/utils/AiProviders/gemini/syncStaticLists.mjs +48 -0
  475. package/server/utils/AiProviders/genericOpenAi/index.js +485 -0
  476. package/server/utils/AiProviders/giteeai/index.js +245 -0
  477. package/server/utils/AiProviders/groq/index.js +257 -0
  478. package/server/utils/AiProviders/huggingface/index.js +165 -0
  479. package/server/utils/AiProviders/koboldCPP/index.js +264 -0
  480. package/server/utils/AiProviders/lemonade/index.js +463 -0
  481. package/server/utils/AiProviders/liteLLM/index.js +201 -0
  482. package/server/utils/AiProviders/lmStudio/index.js +383 -0
  483. package/server/utils/AiProviders/localAi/index.js +198 -0
  484. package/server/utils/AiProviders/minimax/index.js +165 -0
  485. package/server/utils/AiProviders/mistral/index.js +191 -0
  486. package/server/utils/AiProviders/modelMap/index.js +212 -0
  487. package/server/utils/AiProviders/modelMap/legacy.js +162 -0
  488. package/server/utils/AiProviders/modelRouter/index.js +170 -0
  489. package/server/utils/AiProviders/moonshotAi/index.js +176 -0
  490. package/server/utils/AiProviders/novita/index.js +460 -0
  491. package/server/utils/AiProviders/nvidiaNim/index.js +253 -0
  492. package/server/utils/AiProviders/ollama/index.js +516 -0
  493. package/server/utils/AiProviders/openAi/index.js +301 -0
  494. package/server/utils/AiProviders/openRouter/index.js +567 -0
  495. package/server/utils/AiProviders/perplexity/index.js +304 -0
  496. package/server/utils/AiProviders/perplexity/models.js +24 -0
  497. package/server/utils/AiProviders/perplexity/scripts/chat_models.txt +6 -0
  498. package/server/utils/AiProviders/perplexity/scripts/parse.mjs +49 -0
  499. package/server/utils/AiProviders/ppio/index.js +274 -0
  500. package/server/utils/AiProviders/privatemode/index.js +220 -0
  501. package/server/utils/AiProviders/sambanova/index.js +273 -0
  502. package/server/utils/AiProviders/textGenWebUI/index.js +197 -0
  503. package/server/utils/AiProviders/togetherAi/index.js +263 -0
  504. package/server/utils/AiProviders/xai/index.js +200 -0
  505. package/server/utils/AiProviders/zai/index.js +184 -0
  506. package/server/utils/BackgroundWorkers/index.js +432 -0
  507. package/server/utils/DocumentManager/index.js +72 -0
  508. package/server/utils/EmbeddingEngines/azureOpenAi/index.js +115 -0
  509. package/server/utils/EmbeddingEngines/cohere/index.js +91 -0
  510. package/server/utils/EmbeddingEngines/gemini/index.js +136 -0
  511. package/server/utils/EmbeddingEngines/genericOpenAi/index.js +128 -0
  512. package/server/utils/EmbeddingEngines/lemonade/index.js +99 -0
  513. package/server/utils/EmbeddingEngines/liteLLM/index.js +102 -0
  514. package/server/utils/EmbeddingEngines/lmstudio/index.js +122 -0
  515. package/server/utils/EmbeddingEngines/localAi/index.js +122 -0
  516. package/server/utils/EmbeddingEngines/mistral/index.js +40 -0
  517. package/server/utils/EmbeddingEngines/native/constants.js +63 -0
  518. package/server/utils/EmbeddingEngines/native/index.js +290 -0
  519. package/server/utils/EmbeddingEngines/ollama/index.js +136 -0
  520. package/server/utils/EmbeddingEngines/openAi/index.js +102 -0
  521. package/server/utils/EmbeddingEngines/openRouter/index.js +131 -0
  522. package/server/utils/EmbeddingEngines/voyageAi/index.js +71 -0
  523. package/server/utils/EmbeddingRerankers/native/index.js +257 -0
  524. package/server/utils/EmbeddingWorkerManager.js +202 -0
  525. package/server/utils/EncryptionManager/index.js +85 -0
  526. package/server/utils/MCP/hypervisor/index.js +554 -0
  527. package/server/utils/MCP/index.js +269 -0
  528. package/server/utils/PasswordRecovery/index.js +103 -0
  529. package/server/utils/PushNotifications/index.js +228 -0
  530. package/server/utils/TextSplitter/index.js +206 -0
  531. package/server/utils/TextToSpeech/elevenLabs/index.js +54 -0
  532. package/server/utils/TextToSpeech/index.js +18 -0
  533. package/server/utils/TextToSpeech/openAi/index.js +29 -0
  534. package/server/utils/TextToSpeech/openAiGeneric/index.js +58 -0
  535. package/server/utils/agentFlows/executor.js +233 -0
  536. package/server/utils/agentFlows/executors/api-call.js +60 -0
  537. package/server/utils/agentFlows/executors/llm-instruction.js +47 -0
  538. package/server/utils/agentFlows/executors/web-scraping.js +110 -0
  539. package/server/utils/agentFlows/flowTypes.js +85 -0
  540. package/server/utils/agentFlows/index.js +288 -0
  541. package/server/utils/agents/aibitat/error.js +18 -0
  542. package/server/utils/agents/aibitat/example/beginner-chat.js +56 -0
  543. package/server/utils/agents/aibitat/example/blog-post-coding.js +55 -0
  544. package/server/utils/agents/aibitat/example/websocket/index.html +67 -0
  545. package/server/utils/agents/aibitat/example/websocket/websock-branding-collab.js +100 -0
  546. package/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js +91 -0
  547. package/server/utils/agents/aibitat/index.js +1437 -0
  548. package/server/utils/agents/aibitat/plugins/chat-history.js +210 -0
  549. package/server/utils/agents/aibitat/plugins/cli.js +134 -0
  550. package/server/utils/agents/aibitat/plugins/create-files/assets/anything-llm-invert.png +0 -0
  551. package/server/utils/agents/aibitat/plugins/create-files/assets/anything-llm.png +0 -0
  552. package/server/utils/agents/aibitat/plugins/create-files/docx/create-docx-file.js +301 -0
  553. package/server/utils/agents/aibitat/plugins/create-files/docx/test-themes.js +298 -0
  554. package/server/utils/agents/aibitat/plugins/create-files/docx/utils.js +1095 -0
  555. package/server/utils/agents/aibitat/plugins/create-files/index.js +23 -0
  556. package/server/utils/agents/aibitat/plugins/create-files/lib.js +300 -0
  557. package/server/utils/agents/aibitat/plugins/create-files/pdf/create-pdf-file.js +138 -0
  558. package/server/utils/agents/aibitat/plugins/create-files/pdf/utils.js +70 -0
  559. package/server/utils/agents/aibitat/plugins/create-files/pptx/create-presentation.js +342 -0
  560. package/server/utils/agents/aibitat/plugins/create-files/pptx/section-agent.js +257 -0
  561. package/server/utils/agents/aibitat/plugins/create-files/pptx/test-themes.js +143 -0
  562. package/server/utils/agents/aibitat/plugins/create-files/pptx/themes.js +181 -0
  563. package/server/utils/agents/aibitat/plugins/create-files/pptx/utils.js +378 -0
  564. package/server/utils/agents/aibitat/plugins/create-files/text/create-text-file.js +158 -0
  565. package/server/utils/agents/aibitat/plugins/create-files/xlsx/create-excel-file.js +362 -0
  566. package/server/utils/agents/aibitat/plugins/create-files/xlsx/utils.js +333 -0
  567. package/server/utils/agents/aibitat/plugins/file-history.js +37 -0
  568. package/server/utils/agents/aibitat/plugins/filesystem/copy-file.js +127 -0
  569. package/server/utils/agents/aibitat/plugins/filesystem/create-directory.js +84 -0
  570. package/server/utils/agents/aibitat/plugins/filesystem/edit-file.js +133 -0
  571. package/server/utils/agents/aibitat/plugins/filesystem/get-file-info.js +75 -0
  572. package/server/utils/agents/aibitat/plugins/filesystem/index.js +33 -0
  573. package/server/utils/agents/aibitat/plugins/filesystem/lib.js +787 -0
  574. package/server/utils/agents/aibitat/plugins/filesystem/list-directory.js +175 -0
  575. package/server/utils/agents/aibitat/plugins/filesystem/move-file.js +95 -0
  576. package/server/utils/agents/aibitat/plugins/filesystem/read-multiple-files.js +157 -0
  577. package/server/utils/agents/aibitat/plugins/filesystem/read-text-file.js +142 -0
  578. package/server/utils/agents/aibitat/plugins/filesystem/search-files.js +469 -0
  579. package/server/utils/agents/aibitat/plugins/filesystem/write-text-file.js +90 -0
  580. package/server/utils/agents/aibitat/plugins/gmail/account/gmail-get-mailbox-stats.js +75 -0
  581. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-create-draft-reply.js +220 -0
  582. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-create-draft.js +217 -0
  583. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-delete-draft.js +87 -0
  584. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-get-draft.js +84 -0
  585. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-list-drafts.js +96 -0
  586. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-send-draft.js +94 -0
  587. package/server/utils/agents/aibitat/plugins/gmail/drafts/gmail-update-draft.js +217 -0
  588. package/server/utils/agents/aibitat/plugins/gmail/index.js +73 -0
  589. package/server/utils/agents/aibitat/plugins/gmail/lib.js +573 -0
  590. package/server/utils/agents/aibitat/plugins/gmail/search/gmail-get-inbox.js +104 -0
  591. package/server/utils/agents/aibitat/plugins/gmail/search/gmail-read-thread.js +122 -0
  592. package/server/utils/agents/aibitat/plugins/gmail/search/gmail-search.js +121 -0
  593. package/server/utils/agents/aibitat/plugins/gmail/send/gmail-reply-to-thread.js +238 -0
  594. package/server/utils/agents/aibitat/plugins/gmail/send/gmail-send-email.js +242 -0
  595. package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-mark-read.js +87 -0
  596. package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-mark-unread.js +87 -0
  597. package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-archive.js +89 -0
  598. package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-inbox.js +89 -0
  599. package/server/utils/agents/aibitat/plugins/gmail/threads/gmail-move-to-trash.js +89 -0
  600. package/server/utils/agents/aibitat/plugins/google-calendar/calendars/gcal-get-calendar.js +79 -0
  601. package/server/utils/agents/aibitat/plugins/google-calendar/calendars/gcal-list-calendars.js +82 -0
  602. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-create-event.js +233 -0
  603. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-event.js +116 -0
  604. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-events-for-day.js +117 -0
  605. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-events.js +159 -0
  606. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-get-upcoming-events.js +249 -0
  607. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-quick-add.js +114 -0
  608. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-set-my-status.js +125 -0
  609. package/server/utils/agents/aibitat/plugins/google-calendar/events/gcal-update-event.js +173 -0
  610. package/server/utils/agents/aibitat/plugins/google-calendar/index.js +40 -0
  611. package/server/utils/agents/aibitat/plugins/google-calendar/lib.js +288 -0
  612. package/server/utils/agents/aibitat/plugins/http-socket.js +249 -0
  613. package/server/utils/agents/aibitat/plugins/index.js +47 -0
  614. package/server/utils/agents/aibitat/plugins/memory.js +167 -0
  615. package/server/utils/agents/aibitat/plugins/outlook/account/outlook-get-mailbox-stats.js +78 -0
  616. package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-create-draft.js +232 -0
  617. package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-delete-draft.js +86 -0
  618. package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-list-drafts.js +80 -0
  619. package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-send-draft.js +82 -0
  620. package/server/utils/agents/aibitat/plugins/outlook/drafts/outlook-update-draft.js +132 -0
  621. package/server/utils/agents/aibitat/plugins/outlook/index.js +45 -0
  622. package/server/utils/agents/aibitat/plugins/outlook/lib.js +1413 -0
  623. package/server/utils/agents/aibitat/plugins/outlook/search/outlook-get-inbox.js +75 -0
  624. package/server/utils/agents/aibitat/plugins/outlook/search/outlook-read-thread.js +131 -0
  625. package/server/utils/agents/aibitat/plugins/outlook/search/outlook-search.js +101 -0
  626. package/server/utils/agents/aibitat/plugins/outlook/send/outlook-send-email.js +222 -0
  627. package/server/utils/agents/aibitat/plugins/rechart.js +114 -0
  628. package/server/utils/agents/aibitat/plugins/request-user-input.js +265 -0
  629. package/server/utils/agents/aibitat/plugins/router-classifier.js +122 -0
  630. package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/MSSQL.js +114 -0
  631. package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/MySQL.js +83 -0
  632. package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/Postgresql.js +75 -0
  633. package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/index.js +80 -0
  634. package/server/utils/agents/aibitat/plugins/sql-agent/SQLConnectors/utils.js +182 -0
  635. package/server/utils/agents/aibitat/plugins/sql-agent/get-table-schema.js +115 -0
  636. package/server/utils/agents/aibitat/plugins/sql-agent/index.js +21 -0
  637. package/server/utils/agents/aibitat/plugins/sql-agent/list-database.js +49 -0
  638. package/server/utils/agents/aibitat/plugins/sql-agent/list-table.js +105 -0
  639. package/server/utils/agents/aibitat/plugins/sql-agent/query.js +101 -0
  640. package/server/utils/agents/aibitat/plugins/summarize.js +189 -0
  641. package/server/utils/agents/aibitat/plugins/web-browsing.js +1182 -0
  642. package/server/utils/agents/aibitat/plugins/web-scraping.js +158 -0
  643. package/server/utils/agents/aibitat/plugins/websocket.js +361 -0
  644. package/server/utils/agents/aibitat/providers/ai-provider.js +706 -0
  645. package/server/utils/agents/aibitat/providers/anthropic.js +490 -0
  646. package/server/utils/agents/aibitat/providers/apipie.js +99 -0
  647. package/server/utils/agents/aibitat/providers/azure.js +122 -0
  648. package/server/utils/agents/aibitat/providers/bedrock.js +456 -0
  649. package/server/utils/agents/aibitat/providers/cerebras.js +208 -0
  650. package/server/utils/agents/aibitat/providers/cohere.js +269 -0
  651. package/server/utils/agents/aibitat/providers/cometapi.js +104 -0
  652. package/server/utils/agents/aibitat/providers/deepseek.js +223 -0
  653. package/server/utils/agents/aibitat/providers/dellProAiStudio.js +106 -0
  654. package/server/utils/agents/aibitat/providers/dockerModelRunner.js +189 -0
  655. package/server/utils/agents/aibitat/providers/fireworksai.js +101 -0
  656. package/server/utils/agents/aibitat/providers/foundry.js +112 -0
  657. package/server/utils/agents/aibitat/providers/gemini.js +450 -0
  658. package/server/utils/agents/aibitat/providers/genericOpenAi.js +206 -0
  659. package/server/utils/agents/aibitat/providers/giteeai.js +94 -0
  660. package/server/utils/agents/aibitat/providers/groq.js +184 -0
  661. package/server/utils/agents/aibitat/providers/helpers/classes.js +16 -0
  662. package/server/utils/agents/aibitat/providers/helpers/tooled.js +384 -0
  663. package/server/utils/agents/aibitat/providers/helpers/untooled.js +437 -0
  664. package/server/utils/agents/aibitat/providers/index.js +77 -0
  665. package/server/utils/agents/aibitat/providers/koboldcpp.js +103 -0
  666. package/server/utils/agents/aibitat/providers/lemonade.js +213 -0
  667. package/server/utils/agents/aibitat/providers/litellm.js +186 -0
  668. package/server/utils/agents/aibitat/providers/lmstudio.js +195 -0
  669. package/server/utils/agents/aibitat/providers/localai.js +190 -0
  670. package/server/utils/agents/aibitat/providers/minimax.js +194 -0
  671. package/server/utils/agents/aibitat/providers/mistral.js +103 -0
  672. package/server/utils/agents/aibitat/providers/moonshotAi.js +97 -0
  673. package/server/utils/agents/aibitat/providers/novita.js +188 -0
  674. package/server/utils/agents/aibitat/providers/nvidiaNim.js +101 -0
  675. package/server/utils/agents/aibitat/providers/ollama.js +606 -0
  676. package/server/utils/agents/aibitat/providers/openai.js +345 -0
  677. package/server/utils/agents/aibitat/providers/openrouter.js +195 -0
  678. package/server/utils/agents/aibitat/providers/perplexity.js +99 -0
  679. package/server/utils/agents/aibitat/providers/ppio.js +104 -0
  680. package/server/utils/agents/aibitat/providers/privatemode.js +107 -0
  681. package/server/utils/agents/aibitat/providers/sambanova.js +94 -0
  682. package/server/utils/agents/aibitat/providers/textgenwebui.js +99 -0
  683. package/server/utils/agents/aibitat/providers/togetherai.js +100 -0
  684. package/server/utils/agents/aibitat/providers/xai.js +99 -0
  685. package/server/utils/agents/aibitat/providers/zai.js +97 -0
  686. package/server/utils/agents/aibitat/utils/dedupe.js +152 -0
  687. package/server/utils/agents/aibitat/utils/summarize.js +63 -0
  688. package/server/utils/agents/aibitat/utils/toolReranker.js +225 -0
  689. package/server/utils/agents/defaults.js +196 -0
  690. package/server/utils/agents/ephemeral.js +790 -0
  691. package/server/utils/agents/imported-manifest.schema.json +158 -0
  692. package/server/utils/agents/imported.js +317 -0
  693. package/server/utils/agents/index.js +883 -0
  694. package/server/utils/boot/MetaGenerator.js +376 -0
  695. package/server/utils/boot/eagerLoadContextWindows.js +40 -0
  696. package/server/utils/boot/index.js +90 -0
  697. package/server/utils/boot/markOnboarded.js +52 -0
  698. package/server/utils/chats/agents.js +111 -0
  699. package/server/utils/chats/apiChatHandler.js +864 -0
  700. package/server/utils/chats/commands/reset.js +37 -0
  701. package/server/utils/chats/embed.js +301 -0
  702. package/server/utils/chats/index.js +128 -0
  703. package/server/utils/chats/openaiCompatible.js +537 -0
  704. package/server/utils/chats/stream.js +376 -0
  705. package/server/utils/collectorApi/index.js +319 -0
  706. package/server/utils/comKey/index.js +86 -0
  707. package/server/utils/database/index.js +83 -0
  708. package/server/utils/files/index.js +519 -0
  709. package/server/utils/files/logo.js +117 -0
  710. package/server/utils/files/multer.js +178 -0
  711. package/server/utils/files/pfp.js +63 -0
  712. package/server/utils/files/purgeDocument.js +91 -0
  713. package/server/utils/helpers/admin/index.js +56 -0
  714. package/server/utils/helpers/agents.js +35 -0
  715. package/server/utils/helpers/camelcase.js +143 -0
  716. package/server/utils/helpers/chat/LLMPerformanceMonitor.js +113 -0
  717. package/server/utils/helpers/chat/convertTo.js +256 -0
  718. package/server/utils/helpers/chat/index.js +448 -0
  719. package/server/utils/helpers/chat/responses.js +383 -0
  720. package/server/utils/helpers/customModels.js +1142 -0
  721. package/server/utils/helpers/index.js +716 -0
  722. package/server/utils/helpers/portAvailabilityChecker.js +46 -0
  723. package/server/utils/helpers/search.js +94 -0
  724. package/server/utils/helpers/shell.js +25 -0
  725. package/server/utils/helpers/tiktoken.js +107 -0
  726. package/server/utils/helpers/updateENV.js +1399 -0
  727. package/server/utils/http/index.js +141 -0
  728. package/server/utils/logger/index.js +66 -0
  729. package/server/utils/memories/index.js +139 -0
  730. package/server/utils/middleware/chatHistoryViewable.js +18 -0
  731. package/server/utils/middleware/communityHubDownloadsEnabled.js +77 -0
  732. package/server/utils/middleware/embedMiddleware.js +178 -0
  733. package/server/utils/middleware/featureFlagEnabled.js +24 -0
  734. package/server/utils/middleware/isSupportedRepoProviders.js +12 -0
  735. package/server/utils/middleware/multiUserProtected.js +107 -0
  736. package/server/utils/middleware/requireFeature.js +46 -0
  737. package/server/utils/middleware/simpleSSOEnabled.js +84 -0
  738. package/server/utils/middleware/validApiKey.js +29 -0
  739. package/server/utils/middleware/validBrowserExtensionApiKey.js +51 -0
  740. package/server/utils/middleware/validWorkspace.js +52 -0
  741. package/server/utils/middleware/validatedRequest.js +111 -0
  742. package/server/utils/middleware/workspaceDeletionProtection.js +18 -0
  743. package/server/utils/prisma/PRISMA.md +47 -0
  744. package/server/utils/prisma/index.js +13 -0
  745. package/server/utils/router/index.js +653 -0
  746. package/server/utils/telegramBot/chat/agent.js +425 -0
  747. package/server/utils/telegramBot/chat/stream.js +471 -0
  748. package/server/utils/telegramBot/constants.js +23 -0
  749. package/server/utils/telegramBot/index.js +844 -0
  750. package/server/utils/telegramBot/utils/commands/handlers/handleAbort.js +15 -0
  751. package/server/utils/telegramBot/utils/commands/handlers/handleHelp.js +15 -0
  752. package/server/utils/telegramBot/utils/commands/handlers/handleHistory.js +80 -0
  753. package/server/utils/telegramBot/utils/commands/handlers/handleNewThread.js +35 -0
  754. package/server/utils/telegramBot/utils/commands/handlers/handleProof.js +202 -0
  755. package/server/utils/telegramBot/utils/commands/handlers/handleReset.js +32 -0
  756. package/server/utils/telegramBot/utils/commands/handlers/handleStart.js +19 -0
  757. package/server/utils/telegramBot/utils/commands/handlers/handleStatus.js +80 -0
  758. package/server/utils/telegramBot/utils/commands/handlers/showModelMenu.js +98 -0
  759. package/server/utils/telegramBot/utils/commands/handlers/showThreadMenu.js +120 -0
  760. package/server/utils/telegramBot/utils/commands/handlers/showWorkspaceMenu.js +84 -0
  761. package/server/utils/telegramBot/utils/commands/index.js +125 -0
  762. package/server/utils/telegramBot/utils/format.js +225 -0
  763. package/server/utils/telegramBot/utils/index.js +203 -0
  764. package/server/utils/telegramBot/utils/media.js +163 -0
  765. package/server/utils/telegramBot/utils/messageQueue.js +53 -0
  766. package/server/utils/telegramBot/utils/navigation/callbacks/handleBackSources.js +16 -0
  767. package/server/utils/telegramBot/utils/navigation/callbacks/handleBackWorkspaces.js +18 -0
  768. package/server/utils/telegramBot/utils/navigation/callbacks/handleModelCancel.js +14 -0
  769. package/server/utils/telegramBot/utils/navigation/callbacks/handleModelPagination.js +24 -0
  770. package/server/utils/telegramBot/utils/navigation/callbacks/handleModelSelect.js +52 -0
  771. package/server/utils/telegramBot/utils/navigation/callbacks/handleSourcePagination.js +24 -0
  772. package/server/utils/telegramBot/utils/navigation/callbacks/handleSourceSelect.js +106 -0
  773. package/server/utils/telegramBot/utils/navigation/callbacks/handleThreadPagination.js +26 -0
  774. package/server/utils/telegramBot/utils/navigation/callbacks/handleThreadSelect.js +43 -0
  775. package/server/utils/telegramBot/utils/navigation/callbacks/handleToolApproval.js +104 -0
  776. package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspaceCreate.js +33 -0
  777. package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspacePagination.js +26 -0
  778. package/server/utils/telegramBot/utils/navigation/callbacks/handleWorkspaceSelect.js +24 -0
  779. package/server/utils/telegramBot/utils/navigation/callbacks/index.js +59 -0
  780. package/server/utils/telegramBot/utils/navigation/index.js +36 -0
  781. package/server/utils/telegramBot/utils/verification.js +171 -0
  782. package/server/utils/vectorDbProviders/astra/ASTRA_SETUP.md +22 -0
  783. package/server/utils/vectorDbProviders/astra/index.js +474 -0
  784. package/server/utils/vectorDbProviders/base.js +202 -0
  785. package/server/utils/vectorDbProviders/chroma/index.js +484 -0
  786. package/server/utils/vectorDbProviders/chromacloud/index.js +158 -0
  787. package/server/utils/vectorDbProviders/lance/index.js +506 -0
  788. package/server/utils/vectorDbProviders/milvus/MILVUS_SETUP.md +40 -0
  789. package/server/utils/vectorDbProviders/milvus/index.js +434 -0
  790. package/server/utils/vectorDbProviders/pgvector/SETUP.md +125 -0
  791. package/server/utils/vectorDbProviders/pgvector/index.js +850 -0
  792. package/server/utils/vectorDbProviders/pinecone/PINECONE_SETUP.md +24 -0
  793. package/server/utils/vectorDbProviders/pinecone/index.js +317 -0
  794. package/server/utils/vectorDbProviders/qdrant/QDRANT_SETUP.md +17 -0
  795. package/server/utils/vectorDbProviders/qdrant/index.js +442 -0
  796. package/server/utils/vectorDbProviders/weaviate/WEAVIATE_SETUP.md +17 -0
  797. package/server/utils/vectorDbProviders/weaviate/index.js +510 -0
  798. package/server/utils/vectorDbProviders/zilliz/index.js +36 -0
  799. package/server/utils/vectorStore/resetAllVectorStores.js +59 -0
  800. package/server/yarn.lock +10702 -0
@@ -0,0 +1,883 @@
1
+ const AIbitat = require("./aibitat");
2
+ const AgentPlugins = require("./aibitat/plugins");
3
+ const {
4
+ WorkspaceAgentInvocation,
5
+ } = require("../../models/workspaceAgentInvocation");
6
+ const { WorkspaceParsedFiles } = require("../../models/workspaceParsedFiles");
7
+ const { User } = require("../../models/user");
8
+ const { Workspace } = require("../../models/workspace");
9
+ const { WorkspaceChats } = require("../../models/workspaceChats");
10
+ const { safeJsonParse } = require("../http");
11
+ const { USER_AGENT, WORKSPACE_AGENT } = require("./defaults");
12
+ const ImportedPlugin = require("./imported");
13
+ const { AgentFlows } = require("../agentFlows");
14
+ const MCPCompatibilityLayer = require("../MCP");
15
+ const { getAndClearInvocationAttachments } = require("../chats/agents");
16
+ const { DocumentManager } = require("../DocumentManager");
17
+
18
+ class AgentHandler {
19
+ #invocationUUID;
20
+ #funcsToLoad = [];
21
+ invocation = null;
22
+ aibitat = null;
23
+ channel = null;
24
+ provider = null;
25
+ model = null;
26
+ attachments = [];
27
+
28
+ constructor({ uuid }) {
29
+ this.#invocationUUID = uuid;
30
+ }
31
+
32
+ log(text, ...args) {
33
+ console.log(`\x1b[36m[AgentHandler]\x1b[0m ${text}`, ...args);
34
+ }
35
+
36
+ closeAlert() {
37
+ this.log(`End ${this.#invocationUUID}::${this.provider}:${this.model}`);
38
+ }
39
+
40
+ /**
41
+ * Determine if the message should invoke the agent handler.
42
+ * This is true when the user explicitly invokes an agent (via @agent prefix)
43
+ * or when the workspace is in automatic mode **and** the provider supports native tool calling.
44
+ * @param {object} parameters
45
+ * @param {string} parameters.message - The message to check for agent invocation.
46
+ * @param { import("@prisma/client").workspaces} parameters.workspace - The workspace to check for agent invocation.
47
+ * @param {string} parameters.chatMode - The chat mode to check for agent invocation.
48
+ * @returns {Promise<boolean>}
49
+ */
50
+ static async isAgentInvocation({
51
+ message,
52
+ workspace = null,
53
+ chatMode = null,
54
+ }) {
55
+ if (this.#isAgentCommandInvocation({ message })) return true;
56
+ if (chatMode === "automatic") {
57
+ if (!workspace) return false;
58
+ if (await Workspace.supportsNativeToolCalling(workspace)) return true;
59
+ return false;
60
+ }
61
+ return false;
62
+ }
63
+
64
+ /**
65
+ * Determine if the message provided is an agent invocation.
66
+ * @param {{message:string}} parameters
67
+ * @returns {boolean}
68
+ */
69
+ static #isAgentCommandInvocation({ message }) {
70
+ const agentHandles = WorkspaceAgentInvocation.parseAgents(message);
71
+ if (agentHandles.length > 0) return true;
72
+ return false;
73
+ }
74
+
75
+ async #chatHistory(limit = 10) {
76
+ try {
77
+ const rawHistory = (
78
+ await WorkspaceChats.where(
79
+ {
80
+ workspaceId: this.invocation.workspace_id,
81
+ user_id: this.invocation.user_id || null,
82
+ thread_id: this.invocation.thread_id || null,
83
+ api_session_id: null,
84
+ include: true,
85
+ },
86
+ limit,
87
+ { id: "desc" }
88
+ )
89
+ ).reverse();
90
+
91
+ const agentHistory = [];
92
+ rawHistory.forEach((chatLog) => {
93
+ agentHistory.push(
94
+ {
95
+ from: USER_AGENT.name,
96
+ to: WORKSPACE_AGENT.name,
97
+ content: chatLog.prompt,
98
+ state: "success",
99
+ },
100
+ {
101
+ from: WORKSPACE_AGENT.name,
102
+ to: USER_AGENT.name,
103
+ content: safeJsonParse(chatLog.response)?.text || "",
104
+ state: "success",
105
+ }
106
+ );
107
+ });
108
+ return agentHistory;
109
+ } catch (e) {
110
+ this.log("Error loading chat history", e.message);
111
+ return [];
112
+ }
113
+ }
114
+
115
+ checkSetup() {
116
+ switch (this.provider) {
117
+ case "openai":
118
+ if (!process.env.OPEN_AI_KEY)
119
+ throw new Error("OpenAI API key must be provided to use agents.");
120
+ break;
121
+ case "anthropic":
122
+ if (!process.env.ANTHROPIC_API_KEY)
123
+ throw new Error("Anthropic API key must be provided to use agents.");
124
+ break;
125
+ case "lmstudio":
126
+ if (!process.env.LMSTUDIO_BASE_PATH)
127
+ throw new Error("LMStudio base path must be provided to use agents.");
128
+ break;
129
+ case "ollama":
130
+ if (!process.env.OLLAMA_BASE_PATH)
131
+ throw new Error("Ollama base path must be provided to use agents.");
132
+ break;
133
+ case "groq":
134
+ if (!process.env.GROQ_API_KEY)
135
+ throw new Error("Groq API key must be provided to use agents.");
136
+ break;
137
+ case "togetherai":
138
+ if (!process.env.TOGETHER_AI_API_KEY)
139
+ throw new Error("TogetherAI API key must be provided to use agents.");
140
+ break;
141
+ case "azure":
142
+ if (!process.env.AZURE_OPENAI_ENDPOINT || !process.env.AZURE_OPENAI_KEY)
143
+ throw new Error(
144
+ "Azure OpenAI API endpoint and key must be provided to use agents."
145
+ );
146
+ break;
147
+ case "koboldcpp":
148
+ if (!process.env.KOBOLD_CPP_BASE_PATH)
149
+ throw new Error(
150
+ "KoboldCPP must have a valid base path to use for the api."
151
+ );
152
+ break;
153
+ case "localai":
154
+ if (!process.env.LOCAL_AI_BASE_PATH)
155
+ throw new Error(
156
+ "LocalAI must have a valid base path to use for the api."
157
+ );
158
+ break;
159
+ case "openrouter":
160
+ if (!process.env.OPENROUTER_API_KEY)
161
+ throw new Error("OpenRouter API key must be provided to use agents.");
162
+ break;
163
+ case "mistral":
164
+ if (!process.env.MISTRAL_API_KEY)
165
+ throw new Error("Mistral API key must be provided to use agents.");
166
+ break;
167
+ case "generic-openai":
168
+ if (!process.env.GENERIC_OPEN_AI_BASE_PATH)
169
+ throw new Error("API base path must be provided to use agents.");
170
+ break;
171
+ case "perplexity":
172
+ if (!process.env.PERPLEXITY_API_KEY)
173
+ throw new Error("Perplexity API key must be provided to use agents.");
174
+ break;
175
+ case "textgenwebui":
176
+ if (!process.env.TEXT_GEN_WEB_UI_BASE_PATH)
177
+ throw new Error(
178
+ "TextWebGenUI API base path must be provided to use agents."
179
+ );
180
+ break;
181
+ case "bedrock":
182
+ // No validations since there are many possible authentication methods
183
+ break;
184
+ case "fireworksai":
185
+ if (!process.env.FIREWORKS_AI_LLM_API_KEY)
186
+ throw new Error(
187
+ "FireworksAI API Key must be provided to use agents."
188
+ );
189
+ break;
190
+ case "deepseek":
191
+ if (!process.env.DEEPSEEK_API_KEY)
192
+ throw new Error("DeepSeek API Key must be provided to use agents.");
193
+ break;
194
+ case "litellm":
195
+ if (!process.env.LITE_LLM_BASE_PATH)
196
+ throw new Error(
197
+ "LiteLLM API base path and key must be provided to use agents."
198
+ );
199
+ break;
200
+ case "apipie":
201
+ if (!process.env.APIPIE_LLM_API_KEY)
202
+ throw new Error("ApiPie API Key must be provided to use agents.");
203
+ break;
204
+ case "xai":
205
+ if (!process.env.XAI_LLM_API_KEY)
206
+ throw new Error("xAI API Key must be provided to use agents.");
207
+ break;
208
+ case "zai":
209
+ if (!process.env.ZAI_API_KEY)
210
+ throw new Error("Z.AI API Key must be provided to use agents.");
211
+ break;
212
+ case "novita":
213
+ if (!process.env.NOVITA_LLM_API_KEY)
214
+ throw new Error("Novita API Key must be provided to use agents.");
215
+ break;
216
+ case "nvidia-nim":
217
+ if (!process.env.NVIDIA_NIM_LLM_BASE_PATH)
218
+ throw new Error(
219
+ "NVIDIA NIM base path must be provided to use agents."
220
+ );
221
+ break;
222
+ case "ppio":
223
+ if (!process.env.PPIO_API_KEY)
224
+ throw new Error("PPIO API Key must be provided to use agents.");
225
+ break;
226
+ case "gemini":
227
+ if (!process.env.GEMINI_API_KEY)
228
+ throw new Error("Gemini API key must be provided to use agents.");
229
+ break;
230
+ case "dpais":
231
+ if (!process.env.DPAIS_LLM_BASE_PATH)
232
+ throw new Error(
233
+ "Dell Pro AI Studio base path must be provided to use agents."
234
+ );
235
+ if (!process.env.DPAIS_LLM_MODEL_PREF)
236
+ throw new Error(
237
+ "Dell Pro AI Studio model must be set to use agents."
238
+ );
239
+ break;
240
+ case "moonshotai":
241
+ if (!process.env.MOONSHOT_AI_MODEL_PREF)
242
+ throw new Error("Moonshot AI model must be set to use agents.");
243
+ break;
244
+ case "cometapi":
245
+ if (!process.env.COMETAPI_LLM_API_KEY)
246
+ throw new Error("CometAPI API Key must be provided to use agents.");
247
+ break;
248
+ case "foundry":
249
+ if (!process.env.FOUNDRY_BASE_PATH)
250
+ throw new Error("Foundry base path must be provided to use agents.");
251
+ break;
252
+ case "giteeai":
253
+ if (!process.env.GITEE_AI_API_KEY)
254
+ throw new Error("GiteeAI API Key must be provided to use agents.");
255
+ break;
256
+ case "cohere":
257
+ if (!process.env.COHERE_API_KEY)
258
+ throw new Error("Cohere API key must be provided to use agents.");
259
+ break;
260
+ case "docker-model-runner":
261
+ if (!process.env.DOCKER_MODEL_RUNNER_BASE_PATH)
262
+ throw new Error(
263
+ "Docker Model Runner base path must be provided to use agents."
264
+ );
265
+ break;
266
+ case "privatemode":
267
+ if (!process.env.PRIVATEMODE_LLM_BASE_PATH)
268
+ throw new Error(
269
+ "Privatemode base path must be provided to use agents."
270
+ );
271
+ break;
272
+ case "sambanova":
273
+ if (!process.env.SAMBANOVA_LLM_API_KEY)
274
+ throw new Error("SambaNova API key must be provided to use agents.");
275
+ break;
276
+ case "lemonade":
277
+ if (!process.env.LEMONADE_LLM_BASE_PATH)
278
+ throw new Error("Lemonade base path must be provided to use agents.");
279
+ break;
280
+ case "minimax":
281
+ if (!process.env.MINIMAX_API_KEY)
282
+ throw new Error("Minimax API key must be provided to use agents.");
283
+ break;
284
+ case "cerebras":
285
+ if (!process.env.CEREBRAS_API_KEY)
286
+ throw new Error("Cerebras API key must be provided to use agents.");
287
+ break;
288
+ default:
289
+ throw new Error(
290
+ "No workspace agent provider set. Please set your agent provider in the workspace's settings"
291
+ );
292
+ }
293
+ }
294
+
295
+ /**
296
+ * Finds the default model for a given provider. If no default model is set for it's associated ENV then
297
+ * it will return a reasonable base model for the provider if one exists.
298
+ * @param {string} provider - The provider to find the default model for.
299
+ * @returns {string|null} The default model for the provider.
300
+ */
301
+ providerDefault(provider = this.provider) {
302
+ switch (provider) {
303
+ case "openai":
304
+ return process.env.OPEN_MODEL_PREF ?? "gpt-4o";
305
+ case "anthropic":
306
+ return process.env.ANTHROPIC_MODEL_PREF ?? "claude-3-sonnet-20240229";
307
+ case "lmstudio":
308
+ return process.env.LMSTUDIO_MODEL_PREF ?? null;
309
+ case "ollama":
310
+ return process.env.OLLAMA_MODEL_PREF ?? "llama3:latest";
311
+ case "groq":
312
+ return process.env.GROQ_MODEL_PREF ?? "llama3-70b-8192";
313
+ case "togetherai":
314
+ return (
315
+ process.env.TOGETHER_AI_MODEL_PREF ??
316
+ "mistralai/Mixtral-8x7B-Instruct-v0.1"
317
+ );
318
+ case "azure":
319
+ return (
320
+ process.env.AZURE_OPENAI_MODEL_PREF || process.env.OPEN_MODEL_PREF
321
+ );
322
+ case "koboldcpp":
323
+ return process.env.KOBOLD_CPP_MODEL_PREF ?? null;
324
+ case "localai":
325
+ return process.env.LOCAL_AI_MODEL_PREF ?? null;
326
+ case "openrouter":
327
+ return process.env.OPENROUTER_MODEL_PREF ?? "openrouter/auto";
328
+ case "mistral":
329
+ return process.env.MISTRAL_MODEL_PREF ?? "mistral-medium";
330
+ case "generic-openai":
331
+ return process.env.GENERIC_OPEN_AI_MODEL_PREF ?? null;
332
+ case "perplexity":
333
+ return process.env.PERPLEXITY_MODEL_PREF ?? "sonar-small-online";
334
+ case "textgenwebui":
335
+ return "text-generation-webui";
336
+ case "bedrock":
337
+ return process.env.AWS_BEDROCK_LLM_MODEL_PREFERENCE ?? null;
338
+ case "fireworksai":
339
+ return process.env.FIREWORKS_AI_LLM_MODEL_PREF ?? null;
340
+ case "deepseek":
341
+ return process.env.DEEPSEEK_MODEL_PREF ?? "deepseek-chat";
342
+ case "litellm":
343
+ return process.env.LITE_LLM_MODEL_PREF ?? null;
344
+ case "moonshotai":
345
+ return process.env.MOONSHOT_AI_MODEL_PREF ?? "moonshot-v1-32k";
346
+ case "apipie":
347
+ return process.env.APIPIE_LLM_MODEL_PREF ?? null;
348
+ case "xai":
349
+ return process.env.XAI_LLM_MODEL_PREF ?? "grok-beta";
350
+ case "zai":
351
+ return process.env.ZAI_MODEL_PREF ?? "glm-4.5";
352
+ case "novita":
353
+ return process.env.NOVITA_LLM_MODEL_PREF ?? "deepseek/deepseek-r1";
354
+ case "nvidia-nim":
355
+ return process.env.NVIDIA_NIM_LLM_MODEL_PREF ?? null;
356
+ case "ppio":
357
+ return process.env.PPIO_MODEL_PREF ?? "qwen/qwen2.5-32b-instruct";
358
+ case "gemini":
359
+ return process.env.GEMINI_LLM_MODEL_PREF ?? "gemini-2.0-flash-lite";
360
+ case "dpais":
361
+ return process.env.DPAIS_LLM_MODEL_PREF;
362
+ case "cometapi":
363
+ return process.env.COMETAPI_LLM_MODEL_PREF ?? "gpt-5-mini";
364
+ case "foundry":
365
+ return process.env.FOUNDRY_MODEL_PREF ?? null;
366
+ case "giteeai":
367
+ return process.env.GITEE_AI_MODEL_PREF ?? null;
368
+ case "cohere":
369
+ return process.env.COHERE_MODEL_PREF ?? "command-r-08-2024";
370
+ case "docker-model-runner":
371
+ return process.env.DOCKER_MODEL_RUNNER_LLM_MODEL_PREF ?? null;
372
+ case "privatemode":
373
+ return process.env.PRIVATEMODE_LLM_MODEL_PREF ?? null;
374
+ case "sambanova":
375
+ return process.env.SAMBANOVA_LLM_MODEL_PREF ?? null;
376
+ case "lemonade":
377
+ return process.env.LEMONADE_LLM_MODEL_PREF ?? null;
378
+ case "minimax":
379
+ return process.env.MINIMAX_MODEL_PREF ?? "MiniMax-M2.7";
380
+ case "cerebras":
381
+ return process.env.CEREBRAS_MODEL_PREF ?? "gpt-oss-120b";
382
+ default:
383
+ return null;
384
+ }
385
+ }
386
+
387
+ /**
388
+ * Attempts to find a fallback provider and model to use if the workspace
389
+ * does not have an explicit `agentProvider` and `agentModel` set.
390
+ * 1. Fallback to the workspace `chatProvider` and `chatModel` if they exist.
391
+ * 2. Fallback to the system `LLM_PROVIDER` and try to load the associated default model via ENV params or a base available model.
392
+ * 3. Otherwise, return null - will likely throw an error the user can act on.
393
+ * @returns {object|null} - An object with provider and model keys.
394
+ */
395
+ #getFallbackProvider() {
396
+ // If workspace chat uses the model router, fall back to it.
397
+ // Model is null here since the router determines it at resolve time.
398
+ if (this.invocation.workspace.chatProvider === "anythingllm-router") {
399
+ return { provider: "anythingllm-router", model: null };
400
+ }
401
+
402
+ // First, fallback to the workspace chat provider and model if they exist
403
+ if (
404
+ this.invocation.workspace.chatProvider &&
405
+ this.invocation.workspace.chatModel
406
+ ) {
407
+ return {
408
+ provider: this.invocation.workspace.chatProvider,
409
+ model: this.invocation.workspace.chatModel,
410
+ };
411
+ }
412
+
413
+ // If workspace does not have chat provider and model fallback
414
+ // to system provider and try to load provider default model
415
+ const systemProvider = process.env.LLM_PROVIDER;
416
+ if (systemProvider === "anythingllm-router") {
417
+ return { provider: "anythingllm-router", model: null };
418
+ }
419
+
420
+ const systemModel = this.providerDefault(systemProvider);
421
+ if (systemProvider && systemModel) {
422
+ return {
423
+ provider: systemProvider,
424
+ model: systemModel,
425
+ };
426
+ }
427
+
428
+ return null;
429
+ }
430
+
431
+ /**
432
+ * Finds or assumes the model preference value to use for API calls.
433
+ * If multi-model loading is supported, we use their agent model selection of the workspace
434
+ * If not supported, we attempt to fallback to the system provider value for the LLM preference
435
+ * and if that fails - we assume a reasonable base model to exist.
436
+ * @returns {string|null} the model preference value to use in API calls
437
+ */
438
+ #fetchModel() {
439
+ // Provider was not explicitly set for workspace, so we are going to run our fallback logic
440
+ // that will set a provider and model for us to use.
441
+ if (!this.provider) {
442
+ const fallback = this.#getFallbackProvider();
443
+ if (!fallback) throw new Error("No valid provider found for the agent.");
444
+ this.provider = fallback.provider; // re-set the provider to the fallback provider so it is not null.
445
+ return fallback.model; // set its defined model based on fallback logic.
446
+ }
447
+
448
+ // The provider was explicitly set, so check if the workspace has an agent model set.
449
+ if (this.invocation.workspace.agentModel)
450
+ return this.invocation.workspace.agentModel;
451
+
452
+ // Otherwise, we have no model to use - so guess a default model to use via the provider
453
+ // and it's system ENV params and if that fails - we return either a base model or null.
454
+ return this.providerDefault();
455
+ }
456
+
457
+ async #providerSetupAndCheck() {
458
+ this.provider = this.invocation.workspace.agentProvider ?? null; // set provider to workspace agent provider if it exists
459
+ this.model = this.#fetchModel();
460
+
461
+ // If provider resolved to model router, resolve the actual provider/model
462
+ if (this.provider === "anythingllm-router") {
463
+ await this.#resolveRouterProvider();
464
+ }
465
+
466
+ if (!this.provider)
467
+ throw new Error("No valid provider found for the agent.");
468
+ this.log(`Start ${this.#invocationUUID}::${this.provider}:${this.model}`);
469
+ this.checkSetup();
470
+ }
471
+
472
+ async #resolveRouterProvider(prompt = null) {
473
+ const { AnythingLLMModelRouter } = require("../AiProviders/modelRouter");
474
+ const routerWorkspace = this.invocation.workspace.router_id
475
+ ? this.invocation.workspace
476
+ : {
477
+ ...this.invocation.workspace,
478
+ router_id: process.env.MODEL_ROUTER_ID
479
+ ? Number(process.env.MODEL_ROUTER_ID)
480
+ : null,
481
+ };
482
+
483
+ // Resolve the thread slug from the numeric thread_id so the route cache key
484
+ // matches the key used everywhere else.
485
+ let thread = null;
486
+ if (this.invocation.thread_id) {
487
+ if (!this._threadSlug) {
488
+ const { WorkspaceThread } = require("../../models/workspaceThread");
489
+ const threadRecord = await WorkspaceThread.get({
490
+ id: this.invocation.thread_id,
491
+ });
492
+ this._threadSlug = threadRecord?.slug || null;
493
+ }
494
+ thread = this._threadSlug ? { slug: this._threadSlug } : null;
495
+ }
496
+
497
+ const router = new AnythingLLMModelRouter(routerWorkspace);
498
+ const { ModelRouterService } = require("../router");
499
+ const workspace = this.invocation.workspace;
500
+ const user = this.invocation.user_id
501
+ ? { id: this.invocation.user_id }
502
+ : null;
503
+ const effectivePrompt = prompt || this.invocation.prompt;
504
+ const ctx = await ModelRouterService.gatherRoutingContext({
505
+ workspace,
506
+ user,
507
+ thread: this.invocation.thread_id
508
+ ? { id: this.invocation.thread_id }
509
+ : null,
510
+ message: effectivePrompt,
511
+ });
512
+
513
+ await router.resolve(
514
+ {
515
+ prompt: effectivePrompt,
516
+ conversationTokenCount: ctx.conversationTokenCount,
517
+ conversationMessageCount: ctx.conversationMessageCount,
518
+ attachments: this.attachments || [],
519
+ },
520
+ { user, thread }
521
+ );
522
+
523
+ this.provider = router.resolvedRoute.provider;
524
+ this.model = router.resolvedRoute.model;
525
+ this.routingMetadata = router.routingMetadata;
526
+ }
527
+
528
+ async #validInvocation() {
529
+ const invocation = await WorkspaceAgentInvocation.getWithWorkspace({
530
+ uuid: String(this.#invocationUUID),
531
+ });
532
+ if (invocation?.closed)
533
+ throw new Error("This agent invocation is already closed");
534
+ this.invocation = invocation ?? null;
535
+ }
536
+
537
+ parseCallOptions(args, config = {}, pluginName) {
538
+ const callOpts = {};
539
+ for (const [param, definition] of Object.entries(config)) {
540
+ if (
541
+ definition.required &&
542
+ (!Object.prototype.hasOwnProperty.call(args, param) ||
543
+ args[param] === null)
544
+ ) {
545
+ this.log(
546
+ `'${param}' required parameter for '${pluginName}' plugin is missing. Plugin may not function or crash agent.`
547
+ );
548
+ continue;
549
+ }
550
+ callOpts[param] = Object.prototype.hasOwnProperty.call(args, param)
551
+ ? args[param]
552
+ : definition.default || null;
553
+ }
554
+ return callOpts;
555
+ }
556
+
557
+ async #attachPlugins(args) {
558
+ for (const name of this.#funcsToLoad) {
559
+ // Load child plugin
560
+ if (name.includes("#")) {
561
+ const [parent, childPluginName] = name.split("#");
562
+ if (!Object.prototype.hasOwnProperty.call(AgentPlugins, parent)) {
563
+ this.log(
564
+ `${parent} is not a valid plugin. Skipping inclusion to agent cluster.`
565
+ );
566
+ continue;
567
+ }
568
+
569
+ const childPlugin = AgentPlugins[parent].plugin.find(
570
+ (child) => child.name === childPluginName
571
+ );
572
+ if (!childPlugin) {
573
+ this.log(
574
+ `${parent} does not have child plugin named ${childPluginName}. Skipping inclusion to agent cluster.`
575
+ );
576
+ continue;
577
+ }
578
+
579
+ const callOpts = this.parseCallOptions(
580
+ args,
581
+ childPlugin?.startupConfig?.params,
582
+ name
583
+ );
584
+ this.aibitat.use(childPlugin.plugin(callOpts));
585
+ this.log(
586
+ `Attached ${parent}:${childPluginName} plugin to Agent cluster`
587
+ );
588
+ continue;
589
+ }
590
+
591
+ // Load flow plugin. This is marked by `@@flow_` in the array of functions to load.
592
+ // Replace the @@flow_ placeholder in the agent's function list with the actual
593
+ // tool name so the function lookup in reply() can find it.
594
+ if (name.startsWith("@@flow_")) {
595
+ const uuid = name.replace("@@flow_", "");
596
+ const plugin = AgentFlows.loadFlowPlugin(uuid, this.aibitat);
597
+ if (!plugin) {
598
+ this.log(
599
+ `Flow ${uuid} not found in flows directory. Skipping inclusion to agent cluster.`
600
+ );
601
+ continue;
602
+ }
603
+
604
+ this.aibitat.agents.get("@agent").functions = this.aibitat.agents
605
+ .get("@agent")
606
+ .functions.filter((f) => f !== name);
607
+ this.aibitat.agents.get("@agent").functions.push(plugin.name);
608
+
609
+ this.aibitat.use(plugin.plugin());
610
+ this.log(
611
+ `Attached flow ${plugin.name} (${plugin.flowName}) plugin to Agent cluster`
612
+ );
613
+ continue;
614
+ }
615
+
616
+ // Load MCP plugin. This is marked by `@@mcp_` in the array of functions to load.
617
+ // All sub-tools are loaded here and are denoted by `pluginName:toolName` as their identifier.
618
+ // This will replace the parent MCP server plugin with the sub-tools as child plugins so they
619
+ // can be called directly by the agent when invoked.
620
+ // Since to get to this point, the `activeMCPServers` method has already been called, we can
621
+ // safely assume that the MCP server is running and the tools are available/loaded.
622
+ if (name.startsWith("@@mcp_")) {
623
+ const mcpPluginName = name.replace("@@mcp_", "");
624
+ const plugins =
625
+ await new MCPCompatibilityLayer().convertServerToolsToPlugins(
626
+ mcpPluginName,
627
+ this.aibitat
628
+ );
629
+ if (!plugins) {
630
+ this.log(
631
+ `MCP ${mcpPluginName} not found in MCP server config. Skipping inclusion to agent cluster.`
632
+ );
633
+ continue;
634
+ }
635
+
636
+ // Remove the old function from the agent functions directly
637
+ // and push the new ones onto the end of the array so that they are loaded properly.
638
+ this.aibitat.agents.get("@agent").functions = this.aibitat.agents
639
+ .get("@agent")
640
+ .functions.filter((f) => f.name !== name);
641
+ for (const plugin of plugins)
642
+ this.aibitat.agents.get("@agent").functions.push(plugin.name);
643
+
644
+ plugins.forEach((plugin) => {
645
+ this.aibitat.use(plugin.plugin());
646
+ this.log(
647
+ `Attached MCP::${plugin.toolName} MCP tool to Agent cluster`
648
+ );
649
+ });
650
+ continue;
651
+ }
652
+
653
+ // Load imported plugin. This is marked by `@@` in the array of functions to load.
654
+ // and is the @@hubID of the plugin.
655
+ if (name.startsWith("@@")) {
656
+ const hubId = name.replace("@@", "");
657
+ const valid = ImportedPlugin.validateImportedPluginHandler(hubId);
658
+ if (!valid) {
659
+ this.log(
660
+ `Imported plugin by hubId ${hubId} not found in plugin directory. Skipping inclusion to agent cluster.`
661
+ );
662
+ continue;
663
+ }
664
+
665
+ const plugin = ImportedPlugin.loadPluginByHubId(hubId);
666
+ const callOpts = plugin.parseCallOptions();
667
+ this.aibitat.use(plugin.plugin(callOpts));
668
+ this.log(
669
+ `Attached ${plugin.name} (${hubId}) imported plugin to Agent cluster`
670
+ );
671
+ continue;
672
+ }
673
+
674
+ // Load single-stage plugin.
675
+ if (!Object.prototype.hasOwnProperty.call(AgentPlugins, name)) {
676
+ this.log(
677
+ `${name} is not a valid plugin. Skipping inclusion to agent cluster.`
678
+ );
679
+ continue;
680
+ }
681
+
682
+ const callOpts = this.parseCallOptions(
683
+ args,
684
+ AgentPlugins[name].startupConfig.params
685
+ );
686
+ const AIbitatPlugin = AgentPlugins[name];
687
+ this.aibitat.use(AIbitatPlugin.plugin(callOpts));
688
+ this.log(`Attached ${name} plugin to Agent cluster`);
689
+ }
690
+ }
691
+
692
+ async #loadAgents() {
693
+ // Default User agent and workspace agent
694
+ this.log(`Attaching user and default agent to Agent cluster.`);
695
+ const user = this.invocation.user_id
696
+ ? await User.get({ id: Number(this.invocation.user_id) })
697
+ : null;
698
+ const userAgentDef = await USER_AGENT.getDefinition();
699
+ const workspaceAgentDef = await WORKSPACE_AGENT.getDefinition(
700
+ this.provider,
701
+ this.invocation.workspace,
702
+ user,
703
+ this.invocation.prompt
704
+ );
705
+
706
+ this.aibitat.agent(USER_AGENT.name, userAgentDef);
707
+ this.aibitat.agent(WORKSPACE_AGENT.name, workspaceAgentDef);
708
+ this.#funcsToLoad = [
709
+ ...(userAgentDef?.functions || []),
710
+ ...(workspaceAgentDef?.functions || []),
711
+ ];
712
+ }
713
+
714
+ async init() {
715
+ await this.#validInvocation();
716
+ await this.#providerSetupAndCheck();
717
+
718
+ // Retrieve cached attachments (images, etc.) from the HTTP request
719
+ this.attachments = getAndClearInvocationAttachments(this.#invocationUUID);
720
+
721
+ return this;
722
+ }
723
+
724
+ /**
725
+ * Fetch fresh parsed files and pinned documents, format them for injection into user messages.
726
+ * Called on every chat turn to ensure context is always up-to-date.
727
+ * @returns {Promise<string>} Formatted context string to append to user message
728
+ */
729
+ async #fetchParsedFileContext() {
730
+ const user = this.invocation.user_id
731
+ ? { id: this.invocation.user_id }
732
+ : null;
733
+ const thread = this.invocation.thread_id
734
+ ? { id: this.invocation.thread_id }
735
+ : null;
736
+ const documentManager = new DocumentManager({
737
+ workspace: this.invocation.workspace,
738
+ });
739
+
740
+ return Promise.all([
741
+ WorkspaceParsedFiles.getContextFiles(
742
+ this.invocation.workspace,
743
+ thread,
744
+ user
745
+ ),
746
+ documentManager.pinnedDocs(),
747
+ ])
748
+ .then(([parsedFiles, pinnedDocs]) => {
749
+ const allDocuments = [
750
+ ...(parsedFiles || []).map((doc) => ({
751
+ name: doc.title || "Uploaded Document",
752
+ content: doc.pageContent,
753
+ })),
754
+ ...(pinnedDocs || []).map((doc) => ({
755
+ name: doc.title || doc.metadata?.title || "Pinned Document",
756
+ content: doc.pageContent,
757
+ })),
758
+ ];
759
+
760
+ if (allDocuments.length === 0) return "";
761
+ if (parsedFiles?.length > 0)
762
+ this.log(
763
+ `Injecting ${parsedFiles.length} parsed file(s) into user message`
764
+ );
765
+ if (pinnedDocs?.length > 0)
766
+ this.log(
767
+ `Injecting ${pinnedDocs.length} pinned document(s) into user message`
768
+ );
769
+
770
+ return (
771
+ "\n\n<attached_documents>\n" +
772
+ allDocuments
773
+ .map((doc, i) => {
774
+ const filename = doc.name || `Document ${i + 1}`;
775
+ return `<document name="${filename}">\n${doc.content}\n</document>`;
776
+ })
777
+ .join("\n") +
778
+ "\n</attached_documents>"
779
+ );
780
+ })
781
+ .catch((e) => {
782
+ this.log("Error fetching parsed file context", e.message);
783
+ return "";
784
+ });
785
+ }
786
+
787
+ async createAIbitat(
788
+ args = {
789
+ socket: null,
790
+ }
791
+ ) {
792
+ this.aibitat = new AIbitat({
793
+ provider: this.provider ?? "openai",
794
+ model: this.model ?? "gpt-4o",
795
+ chats: await this.#chatHistory(20),
796
+ handlerProps: {
797
+ invocation: this.invocation,
798
+ log: this.log,
799
+ routingMetadata: this.routingMetadata || null,
800
+ },
801
+ });
802
+
803
+ // Register callback to fetch fresh parsed file context on each chat turn
804
+ // This injects parsed files into user messages instead of system prompt
805
+ this.aibitat.fetchParsedFileContext = () => this.#fetchParsedFileContext();
806
+
807
+ // If the workspace uses the model router, attach a resolver so routing
808
+ // is re-evaluated on every agent turn instead of only at initialization.
809
+ // Skip the first invocation since routing was already resolved during init()
810
+ // and re-resolving would cause shouldNotify to return false (route already recorded).
811
+ if (this.routingMetadata) {
812
+ let isFirstCall = true;
813
+ this.aibitat.resolveRoute = async (prompt) => {
814
+ if (isFirstCall) {
815
+ isFirstCall = false;
816
+ return { provider: this.provider, model: this.model };
817
+ }
818
+ try {
819
+ await this.#resolveRouterProvider(prompt);
820
+ this.aibitat.handlerProps.routingMetadata =
821
+ this.routingMetadata || null;
822
+ return { provider: this.provider, model: this.model };
823
+ } catch (e) {
824
+ this.log(
825
+ "Router re-resolution failed, keeping current route",
826
+ e.message
827
+ );
828
+ return null;
829
+ }
830
+ };
831
+ }
832
+
833
+ // Attach standard websocket plugin for frontend communication.
834
+ this.log(`Attached ${AgentPlugins.websocket.name} plugin to Agent cluster`);
835
+ this.aibitat.use(
836
+ AgentPlugins.websocket.plugin({
837
+ socket: args.socket,
838
+ muteUserReply: true,
839
+ introspection: true,
840
+ userId: this.invocation.user_id || null,
841
+ })
842
+ );
843
+
844
+ // Attach standard chat-history plugin for message storage.
845
+ this.log(
846
+ `Attached ${AgentPlugins.chatHistory.name} plugin to Agent cluster`
847
+ );
848
+ this.aibitat.use(AgentPlugins.chatHistory.plugin());
849
+
850
+ // Load required agents (Default + custom)
851
+ await this.#loadAgents();
852
+
853
+ // Attach all required plugins for functions to operate.
854
+ await this.#attachPlugins(args);
855
+ }
856
+
857
+ /**
858
+ * Strip the @agent command from the message if it exists.
859
+ * Prevents hallucination by the agent when the @agent command is used from the model thinking
860
+ * it is an agent or something itself.
861
+ * If the user sent nothing after the @agent command - assume its a greeting.
862
+ * @param {string} message - The message to strip the @agent command from.
863
+ * @returns {string} The message with the @agent command stripped.
864
+ */
865
+ #stripAgentCommand(message = "") {
866
+ const stripped = String(message)
867
+ .replace(/^@agent\s*/, "")
868
+ .trim();
869
+ if (!stripped) return "Hello!";
870
+ return stripped;
871
+ }
872
+
873
+ startAgentCluster() {
874
+ return this.aibitat.start({
875
+ from: USER_AGENT.name,
876
+ to: this.channel ?? WORKSPACE_AGENT.name,
877
+ content: this.#stripAgentCommand(this.invocation.prompt),
878
+ attachments: this.attachments,
879
+ });
880
+ }
881
+ }
882
+
883
+ module.exports.AgentHandler = AgentHandler;